From 2c3ed954626dc642a02b6cd0f74e5b7c775048f1 Mon Sep 17 00:00:00 2001 From: 3mmaRand <7593411+3mmaRand@users.noreply.github.com> Date: Wed, 2 Oct 2024 14:13:18 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=203mmaRand?= =?UTF-8?q?/BIO00088H-data@5c1b007336822fe1a661bd3b7813adcd35dbab28=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/core.html | 2 +- core/week-1-old/overview.html | 2 +- core/week-1-old/study_after_workshop.html | 2 +- core/week-1-old/study_before_workshop.html | 2 +- core/week-1-old/workshop.html | 4 +- core/week-2-old/overview.html | 2 +- core/week-2-old/study_after_workshop.html | 2 +- core/week-2-old/study_before_workshop.html | 2 +- core/week-2-old/workshop.html | 76 +- core/week-2/overview.html | 3 +- core/week-2/study_after_workshop.html | 2 +- core/week-2/study_before_workshop.html | 2 +- core/week-2/workshop.html | 256 +- core/week-6-old/overview.html | 2 +- core/week-6-old/study_after_workshop.html | 2 +- core/week-6-old/study_before_workshop.html | 2 +- core/week-6-old/workshop.html | 2 +- core/week-6/overview.html | 2 +- core/week-6/study_after_workshop.html | 2 +- core/week-6/study_before_workshop.html | 2 +- core/week-6/workshop.html | 4 +- images/images.html | 2 +- index.html | 2 +- search.json | 3174 +++++++++-------- site_libs/bootstrap/bootstrap.min.css | 2 +- .../crosstalk-1.2.1/css/crosstalk.min.css | 1 - site_libs/crosstalk-1.2.1/js/crosstalk.js | 1474 -------- site_libs/crosstalk-1.2.1/js/crosstalk.js.map | 37 - site_libs/crosstalk-1.2.1/js/crosstalk.min.js | 2 - .../crosstalk-1.2.1/js/crosstalk.min.js.map | 1 - site_libs/crosstalk-1.2.1/scss/crosstalk.scss | 75 - site_libs/htmltools-fill-0.5.8.1/fill.css | 21 - site_libs/htmlwidgets-1.6.4/htmlwidgets.js | 901 ----- site_libs/plotly-binding-4.10.4/plotly.js | 941 ----- structures/structures.html | 2 +- transcriptomics/transcriptomics.html | 2 +- .../week-3/data-raw/xlaevis_counts_S14.csv | 2 +- .../week-3/data-raw/xlaevis_counts_S20.csv | 2 +- transcriptomics/week-3/overview.html | 8 +- .../week-3/study_after_workshop.html | 15 +- .../week-3/study_before_workshop.html | 125 +- transcriptomics/week-3/workshop.html | 1798 +--------- .../figure-html/unnamed-chunk-10-1.png | Bin 0 -> 50106 bytes ...-chunk-23-1.png => unnamed-chunk-12-1.png} | Bin .../figure-html/unnamed-chunk-14-1.png | Bin 33829 -> 0 bytes .../figure-html/unnamed-chunk-15-1.png | Bin 48315 -> 0 bytes .../figure-html/unnamed-chunk-19-1.png | Bin 23882 -> 0 bytes .../figure-html/unnamed-chunk-20-1.png | Bin 24141 -> 0 bytes .../figure-html/unnamed-chunk-26-1.png | Bin 35073 -> 0 bytes ...ed-chunk-5-1.png => unnamed-chunk-3-1.png} | Bin .../figure-html/unnamed-chunk-4-1.png | Bin 0 -> 18093 bytes .../figure-html/unnamed-chunk-6-1.png | Bin 17493 -> 0 bytes .../figure-html/unnamed-chunk-7-1.png | Bin 14547 -> 0 bytes .../images/Xenbase-Logo-Medium.png | Bin .../week-4/meta/frog_meta_data.txt | 36 +- .../{week-5 => week-4}/meta/xenbase_info.xlsx | Bin transcriptomics/week-4/overview.html | 16 +- .../week-4/study_after_workshop.html | 14 +- .../week-4/study_before_workshop.html | 148 +- transcriptomics/week-4/workshop.html | 778 ++-- .../week-5/figures/frog-s30-pca.png | Bin 36856 -> 0 bytes .../week-5/figures/prog-hspc-volcano.png | Bin 8381 -> 0 bytes .../week-5/figures/prog_hspc-pca.png | Bin 364864 -> 0 bytes transcriptomics/week-5/images/frog-heat.png | Bin 56413 -> 0 bytes .../week-5/images/frog-s30-pca.png | Bin 0 -> 39272 bytes .../week-5/images/prog_hspc-pca.png | Bin 0 -> 369731 bytes .../week-5/images/volcano-why-1.png | Bin 0 -> 5517 bytes .../week-5/images/volcano-why-2.png | Bin 0 -> 3370 bytes transcriptomics/week-5/images/volcano-why.png | Bin 65064 -> 0 bytes transcriptomics/week-5/overview.html | 18 +- .../week-5/study_after_workshop.html | 4 +- .../week-5/study_before_workshop.html | 209 +- transcriptomics/week-5/workshop.html | 744 ++-- .../figure-html/unnamed-chunk-21-1.png | Bin 29002 -> 0 bytes .../figure-html/unnamed-chunk-37-1.png | Bin 0 -> 25654 bytes .../figure-html/unnamed-chunk-38-1.png | Bin 0 -> 30363 bytes .../figure-html/unnamed-chunk-40-1.png | Bin 0 -> 31519 bytes .../figure-html/unnamed-chunk-42-1.png | Bin 0 -> 64084 bytes .../figure-html/unnamed-chunk-44-1.png | Bin 0 -> 132586 bytes .../figure-html/unnamed-chunk-45-1.png | Bin 0 -> 67885 bytes .../figure-html/unnamed-chunk-47-1.png | Bin 351172 -> 0 bytes 81 files changed, 2942 insertions(+), 7987 deletions(-) delete mode 100644 site_libs/crosstalk-1.2.1/css/crosstalk.min.css delete mode 100644 site_libs/crosstalk-1.2.1/js/crosstalk.js delete mode 100644 site_libs/crosstalk-1.2.1/js/crosstalk.js.map delete mode 100644 site_libs/crosstalk-1.2.1/js/crosstalk.min.js delete mode 100644 site_libs/crosstalk-1.2.1/js/crosstalk.min.js.map delete mode 100644 site_libs/crosstalk-1.2.1/scss/crosstalk.scss delete mode 100644 site_libs/htmltools-fill-0.5.8.1/fill.css delete mode 100644 site_libs/htmlwidgets-1.6.4/htmlwidgets.js delete mode 100644 site_libs/plotly-binding-4.10.4/plotly.js create mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-10-1.png rename transcriptomics/week-3/workshop_files/figure-html/{unnamed-chunk-23-1.png => unnamed-chunk-12-1.png} (100%) delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-14-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-15-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-19-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-20-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-26-1.png rename transcriptomics/week-3/workshop_files/figure-html/{unnamed-chunk-5-1.png => unnamed-chunk-3-1.png} (100%) create mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-4-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-6-1.png delete mode 100644 transcriptomics/week-3/workshop_files/figure-html/unnamed-chunk-7-1.png rename transcriptomics/{week-5 => week-4}/images/Xenbase-Logo-Medium.png (100%) rename transcriptomics/{week-5 => week-4}/meta/xenbase_info.xlsx (100%) delete mode 100644 transcriptomics/week-5/figures/frog-s30-pca.png delete mode 100644 transcriptomics/week-5/figures/prog-hspc-volcano.png delete mode 100644 transcriptomics/week-5/figures/prog_hspc-pca.png delete mode 100644 transcriptomics/week-5/images/frog-heat.png create mode 100644 transcriptomics/week-5/images/frog-s30-pca.png create mode 100644 transcriptomics/week-5/images/prog_hspc-pca.png create mode 100644 transcriptomics/week-5/images/volcano-why-1.png create mode 100644 transcriptomics/week-5/images/volcano-why-2.png delete mode 100644 transcriptomics/week-5/images/volcano-why.png delete mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-21-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-37-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-38-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-40-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-42-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-44-1.png create mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-45-1.png delete mode 100644 transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-47-1.png diff --git a/core/core.html b/core/core.html index 42c2a25..b84de82 100644 --- a/core/core.html +++ b/core/core.html @@ -253,7 +253,7 @@

Core: Supporting Information

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-1-old/overview.html b/core/week-1-old/overview.html index 41a8853..4b15b7c 100644 --- a/core/week-1-old/overview.html +++ b/core/week-1-old/overview.html @@ -158,7 +158,7 @@

Overview

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-1-old/study_after_workshop.html b/core/week-1-old/study_after_workshop.html index c5ea864..b63c8d1 100644 --- a/core/week-1-old/study_after_workshop.html +++ b/core/week-1-old/study_after_workshop.html @@ -158,7 +158,7 @@

Independent Study to consolidate this week

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-1-old/study_before_workshop.html b/core/week-1-old/study_before_workshop.html index 4d5b280..5527dc6 100644 --- a/core/week-1-old/study_before_workshop.html +++ b/core/week-1-old/study_before_workshop.html @@ -151,7 +151,7 @@

Independent Study to prepare for workshop

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-1-old/workshop.html b/core/week-1-old/workshop.html index 9c79684..7b653ff 100644 --- a/core/week-1-old/workshop.html +++ b/core/week-1-old/workshop.html @@ -212,7 +212,7 @@

Workshop

Published
-

18 September, 2024

+

2 October, 2024

@@ -455,7 +455,7 @@

Independent study following the workshop

References

-Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. https://doi.org/10.2307/27801549. +Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. http://www.jstor.org/stable/27801549.
Markowetz, Florian. 2015. “Five Selfish Reasons to Work Reproducibly.” Genome Biol. 16 (December): 274. https://doi.org/10.1186/s13059-015-0850-7. diff --git a/core/week-2-old/overview.html b/core/week-2-old/overview.html index 0b7c94b..115fd4a 100644 --- a/core/week-2-old/overview.html +++ b/core/week-2-old/overview.html @@ -149,7 +149,7 @@

Overview

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-2-old/study_after_workshop.html b/core/week-2-old/study_after_workshop.html index e90239e..4d94f79 100644 --- a/core/week-2-old/study_after_workshop.html +++ b/core/week-2-old/study_after_workshop.html @@ -149,7 +149,7 @@

Independent Study to consolidate this week

Published
-

18 September, 2024

+

2 October, 2024

diff --git a/core/week-2-old/study_before_workshop.html b/core/week-2-old/study_before_workshop.html index e25ba84..995ccd8 100644 --- a/core/week-2-old/study_before_workshop.html +++ b/core/week-2-old/study_before_workshop.html @@ -431,7 +431,7 @@
-

18 September, 2024

+

2 October, 2024

Overview

-

18 September, 2024

+

2 October, 2024

Introduction

Session overview

In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:

-

What is reproducibility How to achieve reproducibility Rationale for scripting Project-oriented workflow

-

Reproducibility

+
+
    +
  • What is reproducibility
  • +
  • How to achieve reproducibility
  • +
  • Rationale for scripting
  • +
  • Project-oriented workflow
  • +
  • Code formatting and style
  • +
  • Coding algorithmically
  • +
  • Naming things
  • +
  • And some handy workflow tips
  • +
+
+

Slide navigation

+ +

Reproducibility

What is reproducibility?

-
    -
  • Reproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)

  • -
  • Replicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.

  • -
  • Robust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.

  • -
  • Generalisable: Different data + different analysis = qualitatively similar results and same conclusions.

  • -

What is reproducibility?

Two by Two cell matrix. Columns are Data, either same or different. Rows are Analysis either same or different. Each of cells contain one of the definitions for reproducibility

The Turing Way's definitions of reproducible research
+

Definitions

+
+

Two by Two cell matrix. Columns are Data, either same or different. Rows are Analysis either same or different. Each of cells contain one of the definitions for reproducibility

+
The Turing Way's definitions of reproducible research
+
+
+

Reproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019). This is what we are concentrating on in the Supporting Information.

+
+

Definitions

+
+

Two by Two cell matrix. Columns are Data, either same or different. Rows are Analysis either same or different. Each of cells contain one of the definitions for reproducibility

+
The Turing Way's definitions of reproducible research
+
+
+

Replicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.

+
+

Definitions

+
+

Two by Two cell matrix. Columns are Data, either same or different. Rows are Analysis either same or different. Each of cells contain one of the definitions for reproducibility

+
The Turing Way's definitions of reproducible research
+
+
+

Robust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.

+
+

Definitions

+
+

Two by Two cell matrix. Columns are Data, either same or different. Rows are Analysis either same or different. Each of cells contain one of the definitions for reproducibility

+
The Turing Way's definitions of reproducible research
+
+
+

Generalisable: Different data + different analysis = qualitatively similar results and same conclusions.

+

Why does it matter?

    -
  • Five selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk

  • Many high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)

  • +
  • Five selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk

  • Will become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)

@@ -464,7 +503,8 @@
  • Script everything

  • Organisation: Project-oriented workflows with file and folder structure, naming things

  • Code: follow a consistent style, organise into sections and scripts (be modular), Code algorithmically

  • -
  • Documentation: Readme files, code comments, metadata, version control, continuous integration

  • +
  • Documentation: Readme files, code comments, metadata,

  • +
  • More advanced: version, control, continuous integration and testing (not required for SI)

  • Scripting

    Rationale for scripting

    @@ -495,58 +535,27 @@ |__functions/ |__theme_volcano.R |__normalise.R
    -
    -
    bash: --: invalid option
    -Usage:  bash [GNU long option] [option] ...
    -    bash [GNU long option] [option] script-file ...
    -GNU long options:
    -    --debug
    -    --debugger
    -    --dump-po-strings
    -    --dump-strings
    -    --help
    -    --init-file
    -    --login
    -    --noediting
    -    --noprofile
    -    --norc
    -    --posix
    -    --pretty-print
    -    --rcfile
    -    --restricted
    -    --verbose
    -    --version
    -Shell options:
    -    -ilrsD or -c command or -O shopt_option     (invocation only)
    -    -abefhkmnptuvxBCHP or -o option
    -

    Example: SI includes an RSP

    -
    
    --- stem_cell_rna
    -   |__data_processing/
    -      |__01_data_processing.py
    -      |__02_exploratory.py
    -      |__raw_data/
    -         |__2019-03-21_donor_1.csv
    -         |__2019-03-21_donor_2.csv
    -         |__2019-03-21_donor_3.csv
    -   |__README. md
    -   |__statistical_analysis
    -      |__statistical_analysis.Rproj   
    -      |__processed_data/
    -      |__R/
    -         |__01_DGE.R
    -         |__02_visualisation.R
    -         |__functions/
    -            |__theme_volcano.R
    -            |__normalise.R
    -
    -
    bash: line 2: --: command not found
    -bash: -c: line 3: syntax error near unexpected token `|'
    -bash: -c: line 3: `   |__data_processing/'
    -
    +
    -- stem_cell_rna
    +   |__data_processing/
    +      |__01_data_processing.py
    +      |__02_exploratory.py
    +      |__raw_data/
    +         |__2019-03-21_donor_1.csv
    +         |__2019-03-21_donor_2.csv
    +         |__2019-03-21_donor_3.csv
    +   |__README. md
    +   |__statistical_analysis
    +      |__statistical_analysis.Rproj   
    +      |__processed_data/
    +      |__R/
    +         |__01_DGE.R
    +         |__02_visualisation.R
    +         |__functions/
    +            |__theme_volcano.R
    +            |__normalise.R

    RStudio Projects revisited

    @@ -560,41 +569,41 @@
    -
    -- stem_cell_rna
    -   |__stem_cell_rna.Rproj   
    -   |__raw_ data/            
    -      |__2019-03-21_donor_1.csv
    -   |__README. md
    -   |__R/
    -      |__01_data_processing.R
    -      |__02_exploratory.R
    -      |__functions/
    -         |__theme_volcano.R
    -         |__normalise.R
    +
    -- stem_cell_rna
    +   |__stem_cell_rna.Rproj   
    +   |__raw_ data/            
    +      |__2019-03-21_donor_1.csv
    +   |__README. md
    +   |__R/
    +      |__01_data_processing.R
    +      |__02_exploratory.R
    +      |__functions/
    +         |__theme_volcano.R
    +         |__normalise.R
    -

    The project directory is the folder at the top 1

    +

    The project directory is the folder at the top

    -

    RStudio Projects

    +

    RStudio Projects

    -
    -- stem_cell_rna
    -   |__stem_cell_rna.Rproj   
    -   |__raw_ data/            
    -      |__2019-03-21_donor_1.csv
    -   |__README. md
    -   |__R/
    -      |__01_data_processing.R
    -      |__02_exploratory.R
    -      |__functions/
    -         |__theme_volcano.R
    -         |__normalise.R
    +
    -- stem_cell_rna
    +   |__stem_cell_rna.Rproj   
    +   |__raw_ data/            
    +      |__2019-03-21_donor_1.csv
    +   |__README. md
    +   |__R/
    +      |__01_data_processing.R
    +      |__02_exploratory.R
    +      |__functions/
    +         |__theme_volcano.R
    +         |__normalise.R
    -

    the .RProj file is directly under the project folder. Its presence is what makes the folder an RStudio Project

    +

    the .RProj file is directly under the project folder1. Its presence is what makes the folder an RStudio Project

    -

    RStudio Projects

    +

    RStudio Projects

    • When you open an RStudio Project, the working directory is set to the Project directory (i.e., the location of the .Rproj file).

    • @@ -615,9 +624,11 @@
    • Top Right, drop-down indicated by the .RProj icon

    • They both do the same thing.

      -

      In both cases you choose: New Project | New Directory | New Project

      +

    Creating an RStudio Project

    +

    Then Choose: New Project | New Directory | New Project

    Make sure you “Browse” to the folder you want to create the project.

    ❔ Is your working directory a good place to create a Project folder?

    +

    Creating an RStudio Project

    When you create a new RStudio Project

      @@ -629,13 +640,12 @@

    Opening and closing

    -

    You can close an RStudio Project with ONE of:

    +

    You can close an RStudio Project with ONE of:

    1. File | Close Project
    2. Using the drop-down option on the far right of the tool bar where you see the Project name
    3. -
    -
    -

    You can open an RStudio Project with ONE of:

    +

    Opening and closing

    +

    You can open an RStudio Project with ONE of:

    1. File | Open Project or File | Recent Projects
    2. @@ -644,14 +654,17 @@
    3. Double-clicking an .Rproj file from your file explorer/finder

    When you open project, a new R session starts.

    -

    Code formatting and style

    Code formatting and style

    -

    “Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.”

    +

    “Good coding style is like correct punctuation: you can manage without it butitsuremakesthingseasiertoread.”

    The tidyverse style guide

    +
    +

    Code is not write only.

    +

    Code is communication!

    +

    Code formatting and style

    We have all written code which is hard to read!

    We all improve over time.

    @@ -665,12 +678,13 @@

    Code formatting and style

    Some keys points:

    +
    • be consistent, emulate experienced coders
    • use snake_case for variable names (not CamelCase, dot.case)
    • -
    • use <- not = for assignment
      +
    • use <- (not =) for assignment
    • use spacing around most operators and after commas
    • @@ -678,11 +692,15 @@
    • avoid long lines, break up code blocks with new lines
    • -
    • use " for quoting text (not ') unless the text contains double quotes
    • -

    😩 Ugly code 😩

    -
    +
  • use " for quoting text (not ') unless the text contains double quotes
    +
  • +
  • space after # for comments
  • + +
    +

    😩 Ugly code 😩

    +
    -
    data<-read_csv('../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv',skip=2)
    +
    data<-read_csv('../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv',skip=2)
     library(janitor);sol<-clean_names(data)
     data=data|>filter(str_detect(description,"OS=Homo sapiens"))|>filter(x1pep=='x')
     data=data|>
    @@ -702,9 +720,9 @@
     
  • multiple commands on a line
  • library statement in the middle of the analysis
  • 😎 Cool code 😎

    -
    +
    -
    # Packages ----------------------------------------------------------------
    +
    # Packages ----------------------------------------------------------------
     library(tidyverse)
     library(janitor)
     
    @@ -765,12 +783,12 @@
     

    😩 Hard coding numbers.

    -
    # mean number of eggs per nest
    +
    # mean number of eggs per nest
     sum(3, 5, 6, 7, 8) / 5
    [1] 5.8
    -
    # ss(x) of number of eggs
    +
    # ss(x) of number of eggs
     (3 - 5.8)^2 + (5 - 5.8)^2 + (6 - 5.8)^2 + (7 - 5.8)^2 + (8 - 5.8)^2
    [1] 14.8
    @@ -789,7 +807,7 @@

    😎 Better

    -
    # eggs each nest
    +
    # eggs each nest
     eggs <- c(3, 5, 6, 7, 8)
     
     # mean eggs per nest
    @@ -811,13 +829,21 @@
     
     

    Naming things

    - -A comic figure is looking over the shoulder of another and is shocked by a list of files with names like 'Untitled 138 copy.docx' and 'Untitled 243.doc'. Caption: 'Protip: Never look in someone else's documents folder'

    documents, CC-BY-NC, https://xkcd.com/1459/

    Guiding principle - Have a convention! Good file names are:

    +
    +
    +
    +

    A comic figure is looking over the shoulder of another and is shocked by a list of files with names like 'Untitled 138 copy.docx' and 'Untitled 243.doc'. Caption: 'Protip: Never look in someone else's documents folder'

    +
    documents, CC-BY-NC, https://xkcd.com/1459/
    +
    +
    +

    Guiding principle - Have a convention! Good file names are:

    • machine readable

    • human readable

    • play nicely with sorting

    • -

    Naming suggestions

    + + +

    Naming suggestions

    • no spaces in names

    • use snake_case or kebab-case rather than CamelCase or dot.case

    • @@ -826,7 +852,7 @@
    • dates ISO 8601 format: 2020-10-16

    • write down your conventions

    Workflow tips

    -
    +
    • multiple cursors

    • open a file/function or find a variable CONTROL+.

    • @@ -838,6 +864,8 @@
    • Tools | Global options | Code | Display | Show margin

    • Tools | Global options | Code | Diagnostic | Provide R style diagnostics

    • GitHub Copilot in RStudio, it’s finally here!

    • +
    • It’s all gone wrong, Restart R CONTROL+SHIFT+F10

    • +
    • Fira Code

    Summary

    @@ -851,6 +879,7 @@

    Reading

    Completely optional suggestions for further reading

    +
    -

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)

    +

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)

    +

    References

    @@ -874,7 +904,7 @@ Allaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. Quarto.” https://doi.org/10.5281/zenodo.5960048.
    -Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. https://doi.org/10.2307/27801549. +Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. http://www.jstor.org/stable/27801549.
    Bryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk about Version Control?” Am. Stat. 72 (1): 20–27. https://doi.org/10.1080/00031305.2017.1399928. @@ -900,8 +930,14 @@
    Wilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K Teal. 2017. “Good Enough Practices in Scientific Computing.” PLoS Comput. Biol. 13 (6): e1005510. https://doi.org/10.1371/journal.pcbi.1005510.
    +
    +Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. +
    +
    +———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/. +
    -Xie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/. +———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
    Zhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra. diff --git a/core/week-6-old/overview.html b/core/week-6-old/overview.html index 2d5d7fd..a614a00 100644 --- a/core/week-6-old/overview.html +++ b/core/week-6-old/overview.html @@ -157,7 +157,7 @@

    Overview

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6-old/study_after_workshop.html b/core/week-6-old/study_after_workshop.html index d4db631..11f0b20 100644 --- a/core/week-6-old/study_after_workshop.html +++ b/core/week-6-old/study_after_workshop.html @@ -151,7 +151,7 @@

    Independent Study to consolidate this week

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6-old/study_before_workshop.html b/core/week-6-old/study_before_workshop.html index 1985413..652a72b 100644 --- a/core/week-6-old/study_before_workshop.html +++ b/core/week-6-old/study_before_workshop.html @@ -151,7 +151,7 @@

    Independent Study to prepare for workshop

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6-old/workshop.html b/core/week-6-old/workshop.html index a4cd295..d019f4a 100644 --- a/core/week-6-old/workshop.html +++ b/core/week-6-old/workshop.html @@ -187,7 +187,7 @@

    Workshop

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6/overview.html b/core/week-6/overview.html index 13271b5..4938a4a 100644 --- a/core/week-6/overview.html +++ b/core/week-6/overview.html @@ -251,7 +251,7 @@

    Overview

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6/study_after_workshop.html b/core/week-6/study_after_workshop.html index f04b5e8..3c37765 100644 --- a/core/week-6/study_after_workshop.html +++ b/core/week-6/study_after_workshop.html @@ -251,7 +251,7 @@

    Independent Study to consolidate this week

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6/study_before_workshop.html b/core/week-6/study_before_workshop.html index b393844..41c599a 100644 --- a/core/week-6/study_before_workshop.html +++ b/core/week-6/study_before_workshop.html @@ -244,7 +244,7 @@

    Independent Study to prepare for workshop

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/core/week-6/workshop.html b/core/week-6/workshop.html index 5516707..95ec623 100644 --- a/core/week-6/workshop.html +++ b/core/week-6/workshop.html @@ -305,7 +305,7 @@

    Workshop

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    @@ -551,7 +551,7 @@

    Independent study following the workshop

    Allaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. Quarto.” https://doi.org/10.5281/zenodo.5960048.
    -Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. https://doi.org/10.2307/27801549. +Baggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. http://www.jstor.org/stable/27801549.
    Markowetz, Florian. 2015. “Five Selfish Reasons to Work Reproducibly.” Genome Biol. 16 (December): 274. https://doi.org/10.1186/s13059-015-0850-7. diff --git a/images/images.html b/images/images.html index 1b1c97c..548fe45 100644 --- a/images/images.html +++ b/images/images.html @@ -201,7 +201,7 @@

    Image Data Analysis for Group Project

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/index.html b/index.html index 002d0eb..ea8b30e 100644 --- a/index.html +++ b/index.html @@ -181,7 +181,7 @@

    Data Analysis for the Group Research Project

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/search.json b/search.json index e10091f..505d186 100644 --- a/search.json +++ b/search.json @@ -1,613 +1,404 @@ [ { - "objectID": "index.html", - "href": "index.html", - "title": "Data Analysis for the Group Research Project", + "objectID": "structures/structures.html", + "href": "structures/structures.html", + "title": "Structure Data Analysis for Group Project", "section": "", - "text": "You are either\n\nan integrated masters student doing BIO00088H Group Research Project or\nan MSc Bioinformatics student doing BIO00070M Research, Professional and Team Skills\n\nIntegrated masters students doing 88H will be doing one of these projects:\nThe project types are:\n\n\n\n\n\n\n\n\nTitle\nDirector\nData analysis strand\n\n\n\n\nIdentifying transcriptional targets of FGF signalling in Xenopus embryos.\nBetsy Pownall\nTranscriptomics, Emma Rand\n\n\nInvestigating the differentiation of stem cells in healthy bone marrow\nJillian Barlow\nTranscriptomics, Emma Rand\n\n\nInvestigating  pathways involved in the Nickel detoxification in Willow\nLiz Rylott\nTranscriptomics, Emma Rand\n\n\nInvestigating differential RNA expression through the Leishmania lifecycle\nPegine Walrad\nTranscriptomics, Emma Rand\n\n\nIdentifying novel proteins regulating synaptophagy\nRichard Maguire\nImage analysis, Richard Bingham\n\n\nDefining pathological cascades in dopaminergic neurons in a Parkinson’s model\nSean Sweeney\nImage analysis, Richard Bingham\n\n\nDiscovery proteins for biotech applications: new classes of antibody mimetics\nMichael Plevin\nStructure Analysis, Jon Agirre\n\n\n\nData Analysis compromises five workshops covering computational skills needed in your project. MSc Bioinformatics students do the Core workshops and the transcriptomics workshops as part of BIO00070M. The data analysis workshops are:\n\n\n\n\n\n\n\nWeek\nData Strand\n\n\n\n\n2\nCore 1 Supporting Information - reproducibility, project-oriented workflow, naming things, cool code, handy shortcuts\n\n\n3\nStrand specific 1\n\n\n4\nStrand specific 2\n\n\n5\nStrand specific 3\n\n\n6\nCore 2 Supporting Information - documenting with a README, curating code, non-coded processes\n\n\n\n\n\n\n\n\n\nStudents who successfully complete this module will be able to\n\nuse appropriate computational techniques to reproducibly process, analyse and visualise data and generate scientific reports based on project work.\n\n\n\n\nAll material is on the VLE so why is this site useful? This site collects everything together in a searchable way. The search icon is on the top right.\n\n\n\nRand E (2024). Data Analysis for Group Project. https://3mmarand.github.io/BIO00088H-data/.\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)\nReferences" + "text": "There is an RStudio project containing a Quarto version of the the Antibody Mimetics Workshop by Michael Plevin & Jon Agirre. Instructions to obtain the RStudio project are at the bottom of this document after the set up instructions.\nYou might find RStudio useful for Python because you are already familiar with it. It is also a good way to create Quarto documents with code chunks in more than one language. Quarto documents can be used in RStudio, VS Code or Jupyter notebooks\nSome set up is required before you will be able to execute code in antibody_mimetics_workshop_3.qmd. This in contrast to the Colab notebook which is a cloud-based Jupyter notebook and does not require any set up (except installing packages).\n\n🎬 If using your own machine, install Python from https://www.python.org/downloads/. This should not be necessary if you are using a university machine where Python is already installed.\n🎬 If using your own machine and you did not install Quarto in the Core 1 workshop, install it now from https://quarto.org/docs/get-started/. This should not be necessary if you are using a university machine where quarto is already installed.\n🎬 Open RStudio and check you are using a “Git bash” Terminal: Tools | Global Options| Terminal | New Terminal opens with… . If the option to choose Git bash, you will need to install Git from https://git-scm.com/downloads. Quit RStudio first. This should not be necessary if you are using a university machine where Git bash is already installed.\n🎬 If on your own machine: In RStudio, install the quarto and the recticulate packages. This should not be necessary if you are using a university machine where these packages are already installed.\n🎬 Whether you are using your own machine or a university machine, you need to install some python packages. In RStudio and go to the Terminal window (behind the Console window). Run the following commands in the Terminal window:\npython -m pip install --upgrade pip setuptools wheel\nYou may get these warnings about scripts not being on the path. You can ignore these.\n WARNING: The script wheel.exe is installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n WARNING: The scripts pip.exe, pip3.11.exe, pip3.9.exe and pip3.exe are installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nspyder 5.1.5 requires pyqt5<5.13, which is not installed.\nspyder 5.1.5 requires pyqtwebengine<5.13, which is not installed.\nconda-repo-cli 1.0.4 requires pathlib, which is not installed.\nanaconda-project 0.10.2 requires ruamel-yaml, which is not installed.\nSuccessfully installed pip-23.3.1 setuptools-69.0.2 wheel-0.41.3\npython -m pip install session_info\npython -m pip install wget\npython -m pip install gemmi\nNote: On my windows laptop at home, I also had to install C++ Build Tools to be able to install the gemmi python package. If this is true for you, you will get a fail message telling you to install C++ build tools if you need them. These are from https://visualstudio.microsoft.com/visual-cpp-build-tools/ You need to check the Workloads tab and select C++ build tools.\n\nYou can then install the gemmi package again.\nI think that’s it! You can now download the RStudio project and run each chunk in the quarto document.\nThere is an example RStudio project here: structure-analysis. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/structure-analysis\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called structure-analysis-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded.\nYou should be able to open the antibody_mimetics_workshop_3.qmd file and run each chunk. You can also knit the document to html.", + "crumbs": [ + "Structure Analysis", + "Structure Data Analysis for Group Project" + ] }, { - "objectID": "index.html#module-learning-outcome-linked-to-this-content", - "href": "index.html#module-learning-outcome-linked-to-this-content", - "title": "Data Analysis for the Group Research Project", + "objectID": "structures/structures.html#programmatic-protein-structure-analysis", + "href": "structures/structures.html#programmatic-protein-structure-analysis", + "title": "Structure Data Analysis for Group Project", "section": "", - "text": "Students who successfully complete this module will be able to\n\nuse appropriate computational techniques to reproducibly process, analyse and visualise data and generate scientific reports based on project work." + "text": "There is an RStudio project containing a Quarto version of the the Antibody Mimetics Workshop by Michael Plevin & Jon Agirre. Instructions to obtain the RStudio project are at the bottom of this document after the set up instructions.\nYou might find RStudio useful for Python because you are already familiar with it. It is also a good way to create Quarto documents with code chunks in more than one language. Quarto documents can be used in RStudio, VS Code or Jupyter notebooks\nSome set up is required before you will be able to execute code in antibody_mimetics_workshop_3.qmd. This in contrast to the Colab notebook which is a cloud-based Jupyter notebook and does not require any set up (except installing packages).\n\n🎬 If using your own machine, install Python from https://www.python.org/downloads/. This should not be necessary if you are using a university machine where Python is already installed.\n🎬 If using your own machine and you did not install Quarto in the Core 1 workshop, install it now from https://quarto.org/docs/get-started/. This should not be necessary if you are using a university machine where quarto is already installed.\n🎬 Open RStudio and check you are using a “Git bash” Terminal: Tools | Global Options| Terminal | New Terminal opens with… . If the option to choose Git bash, you will need to install Git from https://git-scm.com/downloads. Quit RStudio first. This should not be necessary if you are using a university machine where Git bash is already installed.\n🎬 If on your own machine: In RStudio, install the quarto and the recticulate packages. This should not be necessary if you are using a university machine where these packages are already installed.\n🎬 Whether you are using your own machine or a university machine, you need to install some python packages. In RStudio and go to the Terminal window (behind the Console window). Run the following commands in the Terminal window:\npython -m pip install --upgrade pip setuptools wheel\nYou may get these warnings about scripts not being on the path. You can ignore these.\n WARNING: The script wheel.exe is installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n WARNING: The scripts pip.exe, pip3.11.exe, pip3.9.exe and pip3.exe are installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nspyder 5.1.5 requires pyqt5<5.13, which is not installed.\nspyder 5.1.5 requires pyqtwebengine<5.13, which is not installed.\nconda-repo-cli 1.0.4 requires pathlib, which is not installed.\nanaconda-project 0.10.2 requires ruamel-yaml, which is not installed.\nSuccessfully installed pip-23.3.1 setuptools-69.0.2 wheel-0.41.3\npython -m pip install session_info\npython -m pip install wget\npython -m pip install gemmi\nNote: On my windows laptop at home, I also had to install C++ Build Tools to be able to install the gemmi python package. If this is true for you, you will get a fail message telling you to install C++ build tools if you need them. These are from https://visualstudio.microsoft.com/visual-cpp-build-tools/ You need to check the Workloads tab and select C++ build tools.\n\nYou can then install the gemmi package again.\nI think that’s it! You can now download the RStudio project and run each chunk in the quarto document.\nThere is an example RStudio project here: structure-analysis. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/structure-analysis\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called structure-analysis-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded.\nYou should be able to open the antibody_mimetics_workshop_3.qmd file and run each chunk. You can also knit the document to html.", + "crumbs": [ + "Structure Analysis", + "Structure Data Analysis for Group Project" + ] }, { - "objectID": "index.html#what-is-this-site-for", - "href": "index.html#what-is-this-site-for", - "title": "Data Analysis for the Group Research Project", + "objectID": "core/week-6-old/study_before_workshop.html", + "href": "core/week-6-old/study_before_workshop.html", + "title": "Independent Study to prepare for workshop", "section": "", - "text": "All material is on the VLE so why is this site useful? This site collects everything together in a searchable way. The search icon is on the top right." + "text": "📖 Read materials from Core 1 Organising reproducible data analyses and make a note of questions you have\n📖 Read materials from Core 2 File types, workflow tips and other tools and make a note of questions you have.\n📖 Review Stage 1 and 2 (88H students) or 52M (70M students) content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions, particularly for stage 1.\n\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n52M\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto." }, { - "objectID": "index.html#please-cite-as", - "href": "index.html#please-cite-as", - "title": "Data Analysis for the Group Research Project", + "objectID": "core/week-6-old/overview.html", + "href": "core/week-6-old/overview.html", + "title": "Overview", "section": "", - "text": "Rand E (2024). Data Analysis for Group Project. https://3mmarand.github.io/BIO00088H-data/.\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)\nReferences" + "text": "This week’s session is a drop-in and introduces no new material. Instead, it is an opportunity to ask questions about the content from Core 1 and 2 and to revise skills from stage 1 and 2 as needed.\n\nInstructions\n\nPrepare\n\n📖 Review content from Core 1 and 2\n\nWorkshop\n\n💻 Ask questions about the content from Core 1 and 2 as needed\n💻 Revise skills from stage 1 and 2 (88H students) or 52M (70M students) as needed\n\nConsolidate\n\nThere is no consolidation work for this drop-in" }, { - "objectID": "transcriptomics/week-4/study_after_workshop.html", - "href": "transcriptomics/week-4/study_after_workshop.html", + "objectID": "core/week-6/study_after_workshop.html", + "href": "core/week-6/study_after_workshop.html", "title": "Independent Study to consolidate this week", "section": "", - "text": "You need only do the section for your own project data\n🐸 Frogs\n🎬 Open your frogs-88H Project and script you began in the Consolidation study last week. This is likely to be cont-fgf-s20.R or cont-fgf-s14.R. Use the differential expression analysis you did in the workshop (in cont-fgf-s30.R) as a template to continue your script.\n🐭 Mice\n🎬 Open your mice-88H Project. Make a new script and, using hspc-prog.R as a template, repeat the analysis on a different comparisons.\n🍂 xxxx\n🎬 Follow one of the other examples", + "text": "These are suggestions", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", + "Core Supporting Info", + "Week 6: Supporting Information 2", "Consolidate!" ] }, { - "objectID": "transcriptomics/week-4/overview.html", - "href": "transcriptomics/week-4/overview.html", - "title": "Overview", - "section": "", - "text": "This week we cover differential expression analysis on raw counts or log normalised values. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It will also summarise the concepts and methods we will use in the workshop. In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nverify they have the required RStudio Project set up and the data and code files from the previous Workshop and Consolidation study\nexplain the goal of differential expression analysis and the importance of normalisation\nexplain why and how the nature of the input values determines the analysis package used\ndescribe the metadata needed to carry out differential expression analysis and the statistical models used by DESeq2 and scran\nfind genes that are unexpressed or expressed in a a single cell type or treatment group\nperform differential expression analysis on raw counts using DESeq2 or on logged normalised expression values using scran or both.\nexplain the output of differential expression: log fold change, p-value, adjusted p-value,\n\n\n\nInstructions\n\nPrepare\n\n📖 Read what you should have so far and about concepts in differential expression analysis.\n\nWorkshop\n\n💻 Find unexpressed genes and those expressed in a single cell type or treatment group.\n💻 Set up the metadata for differential expression analysis.\n💻 Perform differential expression analysis on raw counts using DESeq2 or on logged normalised expression values using scran or both.\nLook after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.\n\n\n\n\n\n\n\n\n\n\nReferences\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.", + "objectID": "core/week-6/study_after_workshop.html#bio00088h-group-research-project-students", + "href": "core/week-6/study_after_workshop.html#bio00088h-group-research-project-students", + "title": "Independent Study to consolidate this week", + "section": "BIO00088H Group Research Project students", + "text": "BIO00088H Group Research Project students\n\nRevise previous Data Analysis materials. You can find the version you took on the VLE site for 17C / 08C. However, my latest versions (in development) are here: Data Analysis in R. The Becoming a Bioscientist (BABS) modules replace the Laboratory and Professional Skills modules. BABS1 and BABS2 are stage one, and I’ve tried to improve them over 17C / 08C. The site is also searchable (icon top right)", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "About" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-5/study_after_workshop.html", - "href": "transcriptomics/week-5/study_after_workshop.html", + "objectID": "core/week-6/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", + "href": "core/week-6/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", "title": "Independent Study to consolidate this week", - "section": "", - "text": "You need only do the section for one of the examples.\n🐸 Frogs\n🎬 Open your frogs-88H Project and script you began in the Consolidation study of Transcriptomics 1 and continued to work on in Transcriptomics 2. This is likely to be cont-fgf-s20.R or cont-fgf-s14.R. Use the code you used in the workshop (in cont-fgf-s30.R) as a template to visualise the s20/s14 results.\n🐭 Mice\n🎬 Open your mice-88H Project and the script you began in the Consolidation study of Transcriptomics 2. This is likely to be hspc-lthsc.R or lthsc-prog.R. Use the code you used in the workshop (in hspc-prog.R) as a template to visualise the hspc-lthsc/lthsc-prog results.\n🍂 xxxx\n🎬 Follow one of the other examples", + "section": "MSc Bioinformatics students doing BIO00070M", + "text": "MSc Bioinformatics students doing BIO00070M\n\nMake sure you carry out the preparatory work for week 2 of 52M", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Core Supporting Info", + "Week 6: Supporting Information 2", "Consolidate!" ] }, { - "objectID": "transcriptomics/week-5/overview.html", - "href": "transcriptomics/week-5/overview.html", - "title": "Overview", + "objectID": "core/week-6/workshop.html", + "href": "core/week-6/workshop.html", + "title": "Workshop", "section": "", - "text": "This week we cover how to visualise and interpret the results of your differential expression analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. It will also summarise the the methods and plots we will go through in the workshop. In the workshop, we will learn how to merge gene information into our results, conduct a Principle Component Analysis (PCA) and plot the results as well as how to create a nicely formatted Volcano plot and heatmap.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nverify they have the required RStudio Project set up and the data and code files from the previous Workshop and Consolidation study\nexplain where gene information came from and add it to their results\nperform a PCA and understand how to interpret them\ncreate a heatmap and understand how to interpret them\ncreate a volcano plot and understand how to interpret them\n\n\n\nInstructions\n\nPrepare\n\n📖 Read what you should have so far and about concepts in PCA, volcano plots and heatmaps.\n\nWorkshop\n\n💻 Add gene information to the results of DE\n💻 Perform and plot a PCA\n💻 Visualise results with a heatmap\n💻 Visualise all the results with a volcano plot\nLook after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.\n\n\n\n\nReferences", + "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "About" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/transcriptomics.html", - "href": "transcriptomics/transcriptomics.html", - "title": "Transcriptomics Data Analysis for Group Project", + "objectID": "core/week-6/workshop.html#session-overview", + "href": "core/week-6/workshop.html#session-overview", + "title": "Workshop", "section": "", - "text": "This week you will meet your data. There are four datasets, one for each project in this strand. The independent study will concisely cover how each of these four data sets were generated and how they have been processed before being given to you. It will also give an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transciptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It will give you the understanding of the data and R data structures that you will need to code and trouble-shoot code. It will also allow you to spot failed or problematic samples and will inform your decisions on quality control. At the end of this workshop and the following independent study you will have performed quality control by filtering out uninformative genes and samples, and saved this filtered data for use in the next workshop. You will also have a script that you can use to repeat this process on other datasets.\n\n\n\nThis week we cover differential expression analysis on your quality controlled data. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It then summarises the concepts and methods used to carry out differential expression analysis in workshop. In the workshop, you will perform the differential expression and learn how to compuationally annotate your genes with more information from the databases. This will include the Gene Ontology (GO) terms that describe the biological processes, molecular functions and cellular components that the gene is involved in. At the end of this workshop and the following independent study you will have files containing the genes which are differentially expressed, along with the statistical information, summary information and annotation. You will be able to consider which genes you want to investigates with your Project director and have what you need for the next workshop. You will also have a script that you can use to repeat this process on other datasets.\n\n\n\nThis week you will learn some how to do some common data visualisations for transcriptomic data. You will conduct and present a Principal Component Analysis (PCA) and a Volcano plot. We will also conduct a GO enrichment analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. At the end of this workshop and the following independent study you will at least two figures suitable for including in your report, along with an understanding of the results you can report on. You will also have a script that you can use to repeat this process on other datasets.\nReferences", + "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:", "crumbs": [ - "Transcriptomics", - "Transcriptomics Data Analysis for Group Project" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/transcriptomics.html#transcriptomics-1-hello-data", - "href": "transcriptomics/transcriptomics.html#transcriptomics-1-hello-data", - "title": "Transcriptomics Data Analysis for Group Project", - "section": "", - "text": "This week you will meet your data. There are four datasets, one for each project in this strand. The independent study will concisely cover how each of these four data sets were generated and how they have been processed before being given to you. It will also give an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transciptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It will give you the understanding of the data and R data structures that you will need to code and trouble-shoot code. It will also allow you to spot failed or problematic samples and will inform your decisions on quality control. At the end of this workshop and the following independent study you will have performed quality control by filtering out uninformative genes and samples, and saved this filtered data for use in the next workshop. You will also have a script that you can use to repeat this process on other datasets.", + "objectID": "core/week-6/workshop.html#what-is-reproducibility", + "href": "core/week-6/workshop.html#what-is-reproducibility", + "title": "Workshop", + "section": "What is reproducibility?", + "text": "What is reproducibility?\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions. The findings can be generalised\n\n\n\n\nThe Turing Way's definitions of reproducible research", "crumbs": [ - "Transcriptomics", - "Transcriptomics Data Analysis for Group Project" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/transcriptomics.html#transcriptomics-2-statistical-analysis", - "href": "transcriptomics/transcriptomics.html#transcriptomics-2-statistical-analysis", - "title": "Transcriptomics Data Analysis for Group Project", - "section": "", - "text": "This week we cover differential expression analysis on your quality controlled data. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It then summarises the concepts and methods used to carry out differential expression analysis in workshop. In the workshop, you will perform the differential expression and learn how to compuationally annotate your genes with more information from the databases. This will include the Gene Ontology (GO) terms that describe the biological processes, molecular functions and cellular components that the gene is involved in. At the end of this workshop and the following independent study you will have files containing the genes which are differentially expressed, along with the statistical information, summary information and annotation. You will be able to consider which genes you want to investigates with your Project director and have what you need for the next workshop. You will also have a script that you can use to repeat this process on other datasets.", + "objectID": "core/week-6/workshop.html#why-does-it-matter", + "href": "core/week-6/workshop.html#why-does-it-matter", + "title": "Workshop", + "section": "Why does it matter?", + "text": "Why does it matter?\n\n\n\nfutureself, CC-BY-NC, by Julen Colomb\n\n\n\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)", "crumbs": [ - "Transcriptomics", - "Transcriptomics Data Analysis for Group Project" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/transcriptomics.html#transcriptomics-3-visualising-and-interpreting", - "href": "transcriptomics/transcriptomics.html#transcriptomics-3-visualising-and-interpreting", - "title": "Transcriptomics Data Analysis for Group Project", - "section": "", - "text": "This week you will learn some how to do some common data visualisations for transcriptomic data. You will conduct and present a Principal Component Analysis (PCA) and a Volcano plot. We will also conduct a GO enrichment analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. At the end of this workshop and the following independent study you will at least two figures suitable for including in your report, along with an understanding of the results you can report on. You will also have a script that you can use to repeat this process on other datasets.\nReferences", + "objectID": "core/week-6/workshop.html#how-to-achieve-reproducibility", + "href": "core/week-6/workshop.html#how-to-achieve-reproducibility", + "title": "Workshop", + "section": "How to achieve reproducibility", + "text": "How to achieve reproducibility\n\nScripting\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nDocumentation: Readme files, code comments, metadata, version control", "crumbs": [ - "Transcriptomics", - "Transcriptomics Data Analysis for Group Project" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#overview", - "href": "transcriptomics/week-3/study_before_workshop.html#overview", - "title": "Independent Study to prepare for workshop", - "section": "Overview", - "text": "Overview\n\n\nConcise summary of the experimental design and aims\nWhat the raw data consist of\nWhat has been done to the data so far\nWhat steps we will take in the workshop", + "objectID": "core/week-6/workshop.html#rationale-for-scripting", + "href": "core/week-6/workshop.html#rationale-for-scripting", + "title": "Workshop", + "section": "Rationale for scripting?", + "text": "Rationale for scripting?\n\nScience is the generation of ideas, designing work to test them and reporting the results.\nWe ensure laboratory and field work is replicable, robust and generalisable by planning and recording in lab books and using standard protocols. Repeating results is still hard.\nWorkflows for computational projects, and the data analysis and reporting of other work can, and should, be 100% reproducible!\nScripting is the way to achieve this.", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#the-data", - "href": "transcriptomics/week-3/study_before_workshop.html#the-data", - "title": "Independent Study to prepare for workshop", - "section": "The Data", - "text": "The Data\nThere are three datasets\n\n🐸 transcriptomic data (bulk RNA-seq) from frog embryos.\n🐭 transcriptomic data (single cell RNA-seq) from stemcells\n🍂 ??????? Metabolomic / Metagenomic data from anaerobic digesters", + "objectID": "core/week-6/workshop.html#project-oriented-workflow", + "href": "core/week-6/workshop.html#project-oriented-workflow", + "title": "Workshop", + "section": "Project-oriented workflow", + "text": "Project-oriented workflow\n\nuse folders to organise your work\nyou are aiming for structured, systematic and repeatable.\ninputs and outputs should be clearly identifiable from structure and/or naming\n\nExamples\n-- liver_transcriptome/\n |__data\n |__raw/\n |__processed/\n |__images/\n |__code/\n |__reports/\n |__figures/", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-1", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-1", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Experimental design", - "text": "🐸 Experimental design\n\nSchematic of frog development experiment", + "objectID": "core/week-6/workshop.html#naming-things", + "href": "core/week-6/workshop.html#naming-things", + "title": "Workshop", + "section": "Naming things", + "text": "Naming things\n\n\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/\n\n\nGuiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting\n\nI suggest\n\nno spaces in names\nuse snake_case or kebab-case rather than CamelCase or dot.case\nuse all lower case except very occasionally where convention is otherwise, e.g., README, LICENSE\nordering: use left-padded numbers e.g., 01, 02….99 or 001, 002….999\ndates ISO 8601 format: 2020-10-16\nwrite down your conventions\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-2", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-2", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Experimental design", - "text": "🐸 Experimental design\n\nSchematic of frog development experiment\n\n3 fertilisations\ntwo siblings from each fertilisation one control, on FGF treated\nsequenced at three time points\n3 x 2 x 3 = 18 groups", + "objectID": "core/week-6/workshop.html#readme-files", + "href": "core/week-6/workshop.html#readme-files", + "title": "Workshop", + "section": "Readme files", + "text": "Readme files\nREADMEs are a form of documentation which have been widely used for a long time. They contain all the information about the other files in a directory. They can be extensive but need not be. Concise is good. Bullet points are good\n\nGive a project title and description, brief\nstart date, last updated date and contact information\nOutline the folder structure\nGive software requirements: programs and versions used or required. There are packages that give session information in R Wickham et al. (2021) and Python Ostblom, Joel (2019)\n\nR:\nsessioninfo::session_info()\nPython:\nimport session_info\nsession_info.show()\n\nInstructions run the code, build reports, and reproduce the figures etc\nWhere to find the data, outputs\nAny other information that needed to understand and recreate the work\nIdeally, a summary of changes with the date\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__README.md\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-3", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-3", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Experimental design", - "text": "🐸 Experimental design\n\nSchematic of frog development experiment\n\n3 fertilisations. These are the replicates, 1, 2, 3\ntwo siblings from each fertilisation one control, one FGF treated. The treatments are paired\nsequenced at three time points. S14, S20, S30\n3 x 2 x 3 = 18 groups", + "objectID": "core/week-6/workshop.html#code-comments", + "href": "core/week-6/workshop.html#code-comments", + "title": "Workshop", + "section": "Code comments", + "text": "Code comments\n\nComments are notes in the code which are not executed. They are ignored by the computer but are read by humans. They are used to explain what the code is doing and why. They are also used to temporarily remove code from execution.", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#aim", - "href": "transcriptomics/week-3/study_before_workshop.html#aim", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Aim", - "text": "🐸 Aim\n\n\nfind genes important in frog development\nImportant means the genes that are differentially expressed between the control-treated and the FGF-treated siblings\nDifferentially expressed means the expression in one group is significantly higher than in the other", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/study_after_workshop.html", + "href": "core/week-1-old/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "These are suggestions" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#guided-analysis", - "href": "transcriptomics/week-3/study_before_workshop.html#guided-analysis", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Guided analysis", - "text": "🐸 Guided analysis\n\n\nThe workshops will take you through comparing the control and FGF treated sibling at S30\nThis is the “least interesting” comparison\nYou will be guided to carefully document your work so you can apply the same methods to other comparisons", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/study_after_workshop.html#bio00088h-group-research-project-students", + "href": "core/week-1-old/study_after_workshop.html#bio00088h-group-research-project-students", + "title": "Independent Study to consolidate this week", + "section": "BIO00088H Group Research Project students", + "text": "BIO00088H Group Research Project students\n\nRevise previous Data Analysis materials. You can find the version you took on the VLE site for 17C / 08C. However, my latest versions (in development) are here: Data Analysis in R. The Becoming a Bioscientist (BABS) modules replace the Laboratory and Professional Skills modules. BABS1 and BABS2 are stage one, and I’ve tried to improve them over 17C / 08C. The site is also searchable (icon top right)" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-4", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-4", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Experimental design", - "text": "🐭 Experimental design\n\nSchematic of stem cell experiment", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", + "href": "core/week-1-old/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", + "title": "Independent Study to consolidate this week", + "section": "MSc Bioinformatics students doing BIO00070M", + "text": "MSc Bioinformatics students doing BIO00070M\n\nMake sure you carry out the preparatory work for week 2 of 52M" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-5", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-5", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Experimental design", - "text": "🐭 Experimental design\n\nSchematic of stem cell experiment\n\nCells were sorted using flow cytometry on the basis of cell surface markers\nThere are three cell types: LT-HSCs, HSPCs, Progs\nMany cells of each cell type were sequenced", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html", + "href": "core/week-1-old/workshop.html", + "title": "Workshop", + "section": "", + "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-6", - "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-6", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Experimental design", - "text": "🐭 Experimental design\n\nSchematic of stem cell experiment\n\nThere are three cell types: LT-HSCs, HSPCs, Progs These are the “treaments”\nMany cells of each type were sequenced: These are the replicates\n155 LT-HSCs, 701 HSPCs, 798 Progs", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#session-overview", + "href": "core/week-1-old/workshop.html#session-overview", + "title": "Workshop", + "section": "", + "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#aim-1", - "href": "transcriptomics/week-3/study_before_workshop.html#aim-1", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Aim", - "text": "🐭 Aim\n\n\nfind genes for cell surface proteins that are important in stem cell identity\nImportant means genes that are differentially expressed between at least two cell types\nDifferentially expressed means the expression in one group is significantly higher than in the other", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#what-is-reproducibility", + "href": "core/week-1-old/workshop.html#what-is-reproducibility", + "title": "Workshop", + "section": "What is reproducibility?", + "text": "What is reproducibility?\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions. The findings can be generalised\n\n\n\n\nThe Turing Way's definitions of reproducible research" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#guided-analysis-1", - "href": "transcriptomics/week-3/study_before_workshop.html#guided-analysis-1", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Guided analysis", - "text": "🐭 Guided analysis\n\n\nThe workshops will take you through comparing the HSPC and Prog cells\nThis is the “least interesting” comparison\nYou will be guided to carefully document your work so you can apply the same methods to other comparisons", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#why-does-it-matter", + "href": "core/week-1-old/workshop.html#why-does-it-matter", + "title": "Workshop", + "section": "Why does it matter?", + "text": "Why does it matter?\n\n\n\nfutureself, CC-BY-NC, by Julen Colomb\n\n\n\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data", - "href": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data", - "title": "Independent Study to prepare for workshop", - "section": "Raw Sequence data", - "text": "Raw Sequence data\n\n\nThe raw data are “reads” from a sequencing machine.\nA read is sequence of DNA or RNA shorter than the whole genome or transcriptome\nThe length of the reads depends on the type of sequencing machine\n\nShort-read technologies e.g. Illumina have higher base accuracy but are harder to align\nLong-read technologies e.g. Nanopore have lower base accuracy but are easier to align", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#how-to-achieve-reproducibility", + "href": "core/week-1-old/workshop.html#how-to-achieve-reproducibility", + "title": "Workshop", + "section": "How to achieve reproducibility", + "text": "How to achieve reproducibility\n\nScripting\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nDocumentation: Readme files, code comments, metadata, version control" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data-1", - "href": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data-1", - "title": "Independent Study to prepare for workshop", - "section": "Raw Sequence data", - "text": "Raw Sequence data\n\n\nSequencing technology is constantly improving\nOptional: You can read more about Sequencing technologies in Statistically useful experimental design (Rand and Forrester 2022)", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#rationale-for-scripting", + "href": "core/week-1-old/workshop.html#rationale-for-scripting", + "title": "Workshop", + "section": "Rationale for scripting?", + "text": "Rationale for scripting?\n\nScience is the generation of ideas, designing work to test them and reporting the results.\nWe ensure laboratory and field work is replicable, robust and generalisable by planning and recording in lab books and using standard protocols. Repeating results is still hard.\nWorkflows for computational projects, and the data analysis and reporting of other work can, and should, be 100% reproducible!\nScripting is the way to achieve this." }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data-2", - "href": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data-2", - "title": "Independent Study to prepare for workshop", - "section": "Raw Sequence data", - "text": "Raw Sequence data\n\n\nThe RNA-seq data are from an Illumina machine 150-300bp\nReads are in FASTQ files\nFASTQ files contain the sequence of each read and a quality score for each base", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#project-oriented-workflow", + "href": "core/week-1-old/workshop.html#project-oriented-workflow", + "title": "Workshop", + "section": "Project-oriented workflow", + "text": "Project-oriented workflow\n\nuse folders to organise your work\nyou are aiming for structured, systematic and repeatable.\ninputs and outputs should be clearly identifiable from structure and/or naming\n\nExamples\n-- liver_transcriptome/\n |__data\n |__raw/\n |__processed/\n |__images/\n |__code/\n |__reports/\n |__figures/" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#general-steps", - "href": "transcriptomics/week-3/study_before_workshop.html#general-steps", - "title": "Independent Study to prepare for workshop", - "section": "General steps", - "text": "General steps\n\n\nReads are filtered and trimmed on the basis of the quality score\nThey are then aligned/pseudo-aligned to a reference genome/transcriptome\nReads are then counted to quantify the expression\nCounts will need to be normalised to account for differences in sequencing depth and gene/transcript/ length before, or as part of, statistical analysis.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#naming-things", + "href": "core/week-1-old/workshop.html#naming-things", + "title": "Workshop", + "section": "Naming things", + "text": "Naming things\n\n\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/\n\n\nGuiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting\n\nI suggest\n\nno spaces in names\nuse snake_case or kebab-case rather than CamelCase or dot.case\nuse all lower case except very occasionally where convention is otherwise, e.g., README, LICENSE\nordering: use left-padded numbers e.g., 01, 02….99 or 001, 002….999\ndates ISO 8601 format: 2020-10-16\nwrite down your conventions\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#data", - "href": "transcriptomics/week-3/study_before_workshop.html#data", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Data", - "text": "🐸 Data\n\nUnpublished (so far!)\nExpression for the whole transcriptome X. laevis v10.1 genome assembly\nValues are raw counts\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#readme-files", + "href": "core/week-1-old/workshop.html#readme-files", + "title": "Workshop", + "section": "Readme files", + "text": "Readme files\nREADMEs are a form of documentation which have been widely used for a long time. They contain all the information about the other files in a directory. They can be extensive but need not be. Concise is good. Bullet points are good\n\nGive a project title and description, brief\nstart date, last updated date and contact information\nOutline the folder structure\nGive software requirements: programs and versions used or required. There are packages that give session information in R Wickham et al. (2021) and Python Ostblom, Joel (2019)\n\nR:\nsessioninfo::session_info()\nPython:\nimport session_info\nsession_info.show()\n\nInstructions run the code, build reports, and reproduce the figures etc\nWhere to find the data, outputs\nAny other information that needed to understand and recreate the work\nIdeally, a summary of changes with the date\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__README.md\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#data-1", - "href": "transcriptomics/week-3/study_before_workshop.html#data-1", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Data", - "text": "🐭 Data\n\nPublished in Nestorowa et al. (2016)\nExpression for a subset of genes, the surfaceome\nValues are log2 normalised values\nThe statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-1-old/workshop.html#code-comments", + "href": "core/week-1-old/workshop.html#code-comments", + "title": "Workshop", + "section": "Code comments", + "text": "Code comments\n\nComments are notes in the code which are not executed. They are ignored by the computer but are read by humans. They are used to explain what the code is doing and why. They are also used to temporarily remove code from execution." }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#workshops-1", - "href": "transcriptomics/week-3/study_before_workshop.html#workshops-1", - "title": "Independent Study to prepare for workshop", - "section": "Workshops", - "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across samples and across genes to check things are as we expect and detect genes/samples that need to be removed\nTranscriptomics 2: Statistical Analysis Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.\nTranscriptomics 3: Visualising and Interpreting Production of volcano plots and heatmaps to visualise the results of the statistical analysis. We will also look at how to interpret the results and how to find out more about the genes of interest.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-2-old/study_after_workshop.html", + "href": "core/week-2-old/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "bbbb" }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#references", - "href": "transcriptomics/week-3/study_before_workshop.html#references", - "title": "Independent Study to prepare for workshop", - "section": "References", - "text": "References\n\n\n\n🔗 About Transcriptomics 1: Hello data!\n\n\n\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.\n\n\nNestorowa, Sonia, Fiona K. Hamey, Blanca Pijuan Sala, Evangelia Diamanti, Mairi Shepherd, Elisa Laurenti, Nicola K. Wilson, David G. Kent, and Berthold Göttgens. 2016. “A Single-Cell Resolution Map of Mouse Hematopoietic Stem and Progenitor Cell Differentiation.” Blood 128 (8): e20–31. https://doi.org/10.1182/blood-2016-05-716480.\n\n\nRand, Emma, and Sarah Forrester. 2022. “Statistically Useful Experimental Design.” https://cloud-span.github.io/experimental_design00-overview/.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" - ] + "objectID": "core/week-2-old/workshop.html", + "href": "core/week-2-old/workshop.html", + "title": "Workshop", + "section": "", + "text": "In this workshop you will" }, { - "objectID": "transcriptomics/week-3/workshop.html", - "href": "transcriptomics/week-3/workshop.html", + "objectID": "core/week-2-old/workshop.html#session-overview", + "href": "core/week-2-old/workshop.html#session-overview", "title": "Workshop", "section": "", - "text": "In this workshop you will learn what steps to take to get a good understanding of your transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nYou should examine all three data sets because the comparisons will give you a stronger understanding of your own project data.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "text": "In this workshop you will" }, { - "objectID": "transcriptomics/week-3/workshop.html#session-overview", - "href": "transcriptomics/week-3/workshop.html#session-overview", + "objectID": "core/week-2-old/workshop.html#omics", + "href": "core/week-2-old/workshop.html#omics", "title": "Workshop", - "section": "", - "text": "In this workshop you will learn what steps to take to get a good understanding of your transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nYou should examine all three data sets because the comparisons will give you a stronger understanding of your own project data.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "section": "Omics", + "text": "Omics\n\ngene/transcript/protein/metabolite expression\ntranscriptomics 1\ntranscriptomics 2\nproteomics" }, { - "objectID": "transcriptomics/week-3/workshop.html#set-up-a-project", - "href": "transcriptomics/week-3/workshop.html#set-up-a-project", + "objectID": "core/week-2-old/workshop.html#images", + "href": "core/week-2-old/workshop.html#images", "title": "Workshop", - "section": "Set up a Project", - "text": "Set up a Project\n🎬 Start RStudio from the Start menu\n🎬 Make an RStudio project. Be deliberate about where you create it so that it is a good place for you\n🎬 Use the Files pane to make new folders for the data. I suggest data-raw and data-processed\n🎬 Make a new script called workshop-1.R to carry out the rest of the work.\n🎬 Record what you do and what you find out. All of it!\n🎬 Load tidyverse (Wickham et al. 2019) for importing, summarising, plotting and filtering.\n\nlibrary(tidyverse)", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "section": "Images", + "text": "Images\ncontrol_merged.tif\nlibrary(ijtiff)\nimg <- read_tif(\"data/control_merged.tif\")\nimg\n\nan image at least one and usually more matrices of numbers representing the intensity of light at each pixel in the image\nthe number of matrices depends on the number of ‘channels’ in the image\na channel is a colour in the image\na frame is a single image in a series of images\nwe might normally call this a multi-dimensional array: x and y coordinates of the pixels are 2 dimensions, the channel is the third dimension and time is the forth dimension\n\ndisplay(img)" }, { - "objectID": "transcriptomics/week-3/workshop.html#examine-the-data-in-a-spreadsheet", - "href": "transcriptomics/week-3/workshop.html#examine-the-data-in-a-spreadsheet", + "objectID": "core/week-2-old/workshop.html#structure", + "href": "core/week-2-old/workshop.html#structure", "title": "Workshop", - "section": "Examine the data in a spreadsheet", - "text": "Examine the data in a spreadsheet\nThese are the three datasets. Each set compromises several files.\n🐸 Frog development data:\n\nxlaevis_counts_S14.csv\nxlaevis_counts_S20.csv\nxlaevis_counts_S30.csv\n\n🐭 Stem cell data:\n\nsurfaceome_hspc.csv\nsurfaceome_prog.csv\nsurfaceome_lthsc.csv\n\n🍂 xxxx data:\n\nxxx\nxxx\n\n🎬 Save the files to data-raw and open them in Excel\n🎬 Answer the following questions:\n\nDescribe how the sets of data are similar and how they are different.\nWhat is in the rows and columns of each file?\nHow many rows and columns are there in each file? Are these the same? In all cases or some cases? Why?\nGoogle an id. Where does your search take you? How much information is available?\n\n🎬 Did you record all that??", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "section": "Structure", + "text": "Structure\n1cq2.pdb" }, { - "objectID": "transcriptomics/week-3/workshop.html#import", - "href": "transcriptomics/week-3/workshop.html#import", + "objectID": "core/week-2-old/workshop.html#the-command-line", + "href": "core/week-2-old/workshop.html#the-command-line", "title": "Workshop", - "section": "Import", - "text": "Import\nNow let’s get the data into R and visualise it.\n🎬 Import xlaevis_counts_S30.csv, surfaceome_hspc.csv and xxxxxxxx\n\n# 🐸 import the s30 data\ns30 <- read_csv(\"data-raw/xlaevis_counts_S30.csv\")\n\n\n# 🐭 import the hspc data\nhspc <- read_csv(\"data-raw/surfaceome_hspc.csv\")\n\n\n# 🍂 xxxx import the xxxx data\n# prog <- read_csv(\"\")\n\n🎬 Check these have the number of rows and column you were expecting and that column types and names are as expected.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "section": "The command line", + "text": "The command line\nThe command line - or shell - is a text interface for your computer. It’s a program that takes in commands, which it passes on to the computer’s operating system to run.\n\nWindows PowerShell is a command-line in windows. It uses bash-like commands unlike the Command Prompt which uses dos commands (a sort of windows only language). You can open is by going to Start | Windows PowerShell or by searching for it in the search bar.\nTerminal is the command line in Mac OS X. You can open it by going to Applications | Utilities | Terminal or by searching for it in the Spotlight search bar.\ngit bash. I used the bash shell that comes with Git" }, { - "objectID": "transcriptomics/week-3/workshop.html#explore", - "href": "transcriptomics/week-3/workshop.html#explore", + "objectID": "core/week-2-old/workshop.html#rstudio-terminal", + "href": "core/week-2-old/workshop.html#rstudio-terminal", "title": "Workshop", - "section": "Explore", - "text": "Explore\nThe first task is to get an overview. We want to know\n\nare there any missing values? If so, how many and how are they distributed?\nhow may zeros are there and how are they distributed\ndoes it look as tough all the samples/cells were equally “successful”? Can we spot any problematic anomalies?\nwhat is the distribution of values?\n\nIf our data collection has gone well we would hope to see approximately the same average expression in each sample or cell of the same type. That is replicates should be similar. We would also expect to see that the average expression of genes varies. We might have genes which are zero in every cell/sample. We will want to to filter those out.\nWe get this overview by looking at:\n\nThe distribution of values across the whole dataset\nThe distribution of values across the sample/cells (i.e., averaged across genes). This allows us to see variation between samples/cells:\nThe distribution of values across the genes (i.e., averaged across samples/cells). This allows us to see variation between genes.\n\nDistribution of values across the whole dataset\nIn all data sets, the values are spread over multiple columns so in order to plot the distribution as a whole, we will need to first use pivot_longer() to put the data in ‘tidy’ format (Wickham2014-nl?) by stacking the columns. We could save a copy of the stacked data and then plot it, but here, I have just piped the stacked data straight into ggplot().\n🐸 Frogs\n🎬 Pivot the counts (stack the columns) so all the counts are in a single column (count) and pipe into ggplot() to create a histogram:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(x = count)) +\n geom_histogram()\n\n\n\n\n\n\n\nThis data is very skewed - there are so many low values that we can’t see the tiny bars for the higher values. Logging the counts is a way to make the distribution more visible.\n🎬 Repeat the plot on log of the counts.\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(x = log10(count))) +\n geom_histogram()\n\n\n\n\n\n\n\nI’ve used base 10 only because it easy to convert to the original scale (1 is 10, 2 is 100, 3 is 1000 etc). The warning about rows being removed is expected - these are the counts of 0 since you can’t log a value of 0. The peak at zero suggests quite a few counts of 1. We would expect we would expect the distribution of counts to be roughly log normal because this is expression of all the genes in the genome1. That small peak near the low end suggests that these lower counts might be anomalies.\nThe excess number of low counts indicates we might want to create a cut off for quality control. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across samples and genes.\n🐭 Mice\n🎬 Pivot the expression values (stack the columns) so all the counts are in a single column (expr) and pipe into ggplot() to create a histogram:\n\nhspc |>\n pivot_longer(cols = -ensembl_gene_id,\n names_to = \"cell\",\n values_to = \"expr\") |> \n ggplot(aes(x = expr)) +\n geom_histogram()\n\n\n\n\n\n\n\nThis is a very striking distribution. Is it what we are expecting? Again,the excess number of low values is almost certainly anomalous. They will be inaccurate measure and we will want to exclude expression values below (about) 1. We will revisit this after we have considered the distribution of expression across cells and genes.\nWhat about the bimodal appearance of the the ‘real’ values? If we had the whole genome we would not expect to see such a pattern - we’d expect to see a roughly normal distribution2. However, this is a subset of the genome and the nature of the subsetting has had an influence here. These are a subset of cell surface proteins that show a significant difference between at least two of twelve cell subtypes. That is, all of these genes are either high or low.\nDistribution of values across the sample/cells\n🐸 Frog samples\nSummary statistics including the the number of NAs can be seen using the summary(). It is most helpful which you have up to about 30 columns. There is nothing special about the number 30, it is just that text summaries of a larger number of columns are difficult to grasp.\n🎬 Get a quick overview of the columns:\n\n# examine all the columns quickly\n# works well with smaller numbers of column\nsummary(s30)\n\n xenbase_gene_id S30_C_1 S30_C_2 S30_C_3 \n Length:11893 Min. : 0.0 Min. : 0.0 Min. : 0.0 \n Class :character 1st Qu.: 14.0 1st Qu.: 14.0 1st Qu.: 23.0 \n Mode :character Median : 70.0 Median : 75.0 Median : 107.0 \n Mean : 317.1 Mean : 335.8 Mean : 426.3 \n 3rd Qu.: 205.0 3rd Qu.: 220.0 3rd Qu.: 301.0 \n Max. :101746.0 Max. :118708.0 Max. :117945.0 \n S30_F_1 S30_F_2 S30_F_3 \n Min. : 0.0 Min. : 0.0 Min. : 0.0 \n 1st Qu.: 19.0 1st Qu.: 17.0 1st Qu.: 16.0 \n Median : 88.0 Median : 84.0 Median : 69.0 \n Mean : 376.2 Mean : 376.5 Mean : 260.4 \n 3rd Qu.: 251.0 3rd Qu.: 246.0 3rd Qu.: 187.0 \n Max. :117573.0 Max. :130672.0 Max. :61531.0 \n\n\nNotice that: - the minimum count is 0 and the maximums are very high in all the columns - the medians are quite a lot lower than the means so the data are skewed (hump to the left, tail to the right) - there must be quite a lot of zeros - the columns are roughly similar and it doesn’t look like there is an anomalous replicate.\nTo find out how may zeros there are in a column we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. This means sum(S30_C_1 == 0) gives the number of 0 in the S30_C_1 column\n🎬 Find the number of zeros in all six columns:\n\ns30 |>\n summarise(sum(S30_C_1 == 0),\n sum(S30_C_2 == 0),\n sum(S30_C_3 == 0),\n sum(S30_F_1 == 0),\n sum(S30_F_2 == 0),\n sum(S30_F_3 == 0))\n\n# A tibble: 1 × 6\n `sum(S30_C_1 == 0)` `sum(S30_C_2 == 0)` `sum(S30_C_3 == 0)`\n <int> <int> <int>\n1 1340 1361 998\n# ℹ 3 more variables: `sum(S30_F_1 == 0)` <int>, `sum(S30_F_2 == 0)` <int>,\n# `sum(S30_F_3 == 0)` <int>\n\n\nThere is a better way of doing this that saves you having to repeat so much code - especially useful if you have a lot more than 6 columns. We can use pivot_longer() to put the data in tidy format and then use the group_by() and summarise() approach we have used extensively before.\n🎬 Find the number of zeros in all columns:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n group_by(sample) |>\n summarise(n_zero = sum(count == 0))\n\n# A tibble: 6 × 2\n sample n_zero\n <chr> <int>\n1 S30_C_1 1340\n2 S30_C_2 1361\n3 S30_C_3 998\n4 S30_F_1 1210\n5 S30_F_2 1199\n6 S30_F_3 963\n\n\nYou could expand to get all the summary information\n🎬 Summarise all the samples:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n group_by(sample) |>\n summarise(min = min(count),\n lowerq = quantile(count, 0.25),\n mean = mean(count),\n median = median(count),\n upperq = quantile(count, 0.75),\n max = max(count),\n n_zero = sum(count == 0))\n\n# A tibble: 6 × 8\n sample min lowerq mean median upperq max n_zero\n <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>\n1 S30_C_1 0 14 317. 70 205 101746 1340\n2 S30_C_2 0 14 336. 75 220 118708 1361\n3 S30_C_3 0 23 426. 107 301 117945 998\n4 S30_F_1 0 19 376. 88 251 117573 1210\n5 S30_F_2 0 17 376. 84 246 130672 1199\n6 S30_F_3 0 16 260. 69 187 61531 963\n\n\nThe mean count ranges from 260 to 426.\nOne advantage this has over using summary() is that the output is a dataframe. For results, this is useful, and makes it easier to:\n\nwrite to file\nuse in ggplot()\n\nformat in a Quarto report\n\n🎬 Save the summary as a dataframe, s30_summary_samp.\nWe can write to file using write_csv()\n🎬 Write s30_summary_samp to a file called “s30_summary_samp.csv”:\n\nwrite_csv(s30_summary_samp, \n file = \"data-processed/s30_summary_samp.csv\")\n\nPlotting the distribution of values is perhaps the easiest way to understand the data. We could plot each column separately or we can pipe the tidy format of data into ggplot() and make use of facet_wrap()\n🎬 Pivot the data and pipe into ggplot:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(count)) +\n geom_density() +\n facet_wrap(. ~ sample, nrow = 3)\n\n\n\n\n\n\n\nWe have many values (11893) so we are not limited to using geom_histogram(). geom_density() gives us a smooth distribution.\nWe have many low values and a few very high ones which makes it tricky to see the distributions. Logging the counts will make these clearer.\n🎬 Repeat the graph but taking the base 10 log of the counts:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(log10(count))) +\n geom_density() +\n facet_wrap(. ~ sample, nrow = 3)\n\n\n\n\n\n\n\nThe key information to take from these plots is:\n\nthe distributions are roughly similar in width, height, location and overall shape so it doesn’t look as though we have any suspect samples\nthe peak at zero suggests quite a few counts of 1.\nsince we would expect the distribution of counts in each sample to be roughly log normal so that the small rise near the low end, even before the peak at zero, suggests that these lower counts might be anomalies.\n\nThe excess number of low counts indicates we might want to create a cut off for quality control. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across genes (averaged over the samples).\n🐭 Mouse cells\nWe used the summary() function to get an overview of the columns in the frog data. Let’s try that here.\n🎬 Get a quick overview of the columns:\n\nsummary(hspc)\n\n ensembl_gene_id HSPC_001 HSPC_002 HSPC_003 \n Length:280 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n Class :character 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Mode :character Median : 0.000 Median : 0.000 Median : 0.9929 \n Mean : 2.143 Mean : 1.673 Mean : 2.5964 \n 3rd Qu.: 2.120 3rd Qu.: 2.239 3rd Qu.: 6.1559 \n Max. :12.567 Max. :11.976 Max. :11.1138 \n HSPC_004 HSPC_006 HSPC_008 HSPC_009 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. :0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 \n Median : 0.000 Median : 1.276 Median : 0.000 Median :0.000 \n Mean : 1.851 Mean : 2.338 Mean : 2.375 Mean :2.220 \n 3rd Qu.: 2.466 3rd Qu.: 3.536 3rd Qu.: 3.851 3rd Qu.:3.594 \n Max. :11.133 Max. :10.014 Max. :11.574 Max. :9.997 \n HSPC_011 HSPC_012 HSPC_014 HSPC_015 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.750 Median : 0.000 Median : 0.000 \n Mean : 2.285 Mean : 2.431 Mean : 2.295 Mean : 2.515 \n 3rd Qu.: 3.193 3rd Qu.: 3.741 3rd Qu.: 3.150 3rd Qu.: 3.789 \n Max. :11.260 Max. :10.905 Max. :11.051 Max. :10.751 \n HSPC_016 HSPC_017 HSPC_018 HSPC_020 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.9488 Median : 0.000 Median : 1.248 Median : 0.000 \n Mean : 2.6115 Mean : 2.146 Mean : 2.710 Mean : 2.509 \n 3rd Qu.: 5.9412 3rd Qu.: 2.357 3rd Qu.: 6.006 3rd Qu.: 4.470 \n Max. :11.3082 Max. :12.058 Max. :11.894 Max. :11.281 \n HSPC_021 HSPC_022 HSPC_023 HSPC_024 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.170 Mean : 2.287 Mean : 2.314 Mean : 2.195 \n 3rd Qu.: 2.996 3rd Qu.: 3.351 3rd Qu.: 2.749 3rd Qu.: 2.944 \n Max. :10.709 Max. :11.814 Max. :12.113 Max. :11.279 \n HSPC_025 HSPC_026 HSPC_027 HSPC_028 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.572 Median : 1.385 Median : 0.000 Median : 0.000 \n Mean : 2.710 Mean : 2.721 Mean : 2.458 Mean : 1.906 \n 3rd Qu.: 5.735 3rd Qu.: 6.392 3rd Qu.: 5.496 3rd Qu.: 2.037 \n Max. :11.309 Max. :10.865 Max. :11.266 Max. :10.777 \n HSPC_030 HSPC_031 HSPC_033 HSPC_034 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.119 Median : 0.9026 Median : 0.000 Median : 0.7984 \n Mean : 2.338 Mean : 2.3049 Mean : 1.938 Mean : 2.3220 \n 3rd Qu.: 3.005 3rd Qu.: 2.9919 3rd Qu.: 2.434 3rd Qu.: 4.8324 \n Max. :11.391 Max. :11.1748 Max. :10.808 Max. :10.6707 \n HSPC_035 HSPC_036 HSPC_037 HSPC_038 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.8879 Median : 1.517 Median : 0.000 \n Mean : 1.810 Mean : 2.6918 Mean : 2.327 Mean : 2.212 \n 3rd Qu.: 2.175 3rd Qu.: 5.9822 3rd Qu.: 3.079 3rd Qu.: 2.867 \n Max. :11.221 Max. :11.3018 Max. :11.399 Max. :12.275 \n HSPC_040 HSPC_041 HSPC_042 HSPC_043 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.8673 Median : 1.342 \n Mean : 2.509 Mean : 2.492 Mean : 2.3673 Mean : 2.420 \n 3rd Qu.: 3.995 3rd Qu.: 3.943 3rd Qu.: 3.8371 3rd Qu.: 3.731 \n Max. :11.863 Max. :11.016 Max. :11.4852 Max. :11.123 \n HSPC_044 HSPC_045 HSPC_046 HSPC_047 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.8452 Median : 2.195 \n Mean : 2.382 Mean : 2.277 Mean : 1.9707 Mean : 2.498 \n 3rd Qu.: 3.998 3rd Qu.: 2.843 3rd Qu.: 2.0656 3rd Qu.: 3.937 \n Max. :10.782 Max. :10.629 Max. :11.0311 Max. :10.180 \n HSPC_048 HSPC_049 HSPC_050 HSPC_051 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.108 Median : 1.275 Median : 0.000 Median : 0.9757 \n Mean : 2.289 Mean : 2.453 Mean : 2.673 Mean : 2.2693 \n 3rd Qu.: 2.988 3rd Qu.: 3.819 3rd Qu.: 5.772 3rd Qu.: 3.1644 \n Max. :10.335 Max. :11.844 Max. :11.301 Max. :10.8692 \n HSPC_052 HSPC_053 HSPC_054 HSPC_055 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.509 Median : 0.818 Median : 0.000 Median : 0.000 \n Mean : 2.561 Mean : 2.684 Mean : 2.107 Mean : 1.959 \n 3rd Qu.: 4.644 3rd Qu.: 5.937 3rd Qu.: 2.568 3rd Qu.: 2.573 \n Max. :11.674 Max. :11.624 Max. :10.770 Max. :11.105 \n HSPC_056 HSPC_057 HSPC_058 HSPC_060 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.399 Median : 0.000 \n Mean : 2.295 Mean : 2.430 Mean : 2.296 Mean : 2.112 \n 3rd Qu.: 3.721 3rd Qu.: 3.806 3rd Qu.: 3.199 3rd Qu.: 2.201 \n Max. :11.627 Max. :10.575 Max. :11.134 Max. :10.631 \n HSPC_061 HSPC_062 HSPC_063 HSPC_064 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.515 Median : 1.101 \n Mean : 1.934 Mean : 2.129 Mean : 2.508 Mean : 2.696 \n 3rd Qu.: 2.489 3rd Qu.: 2.875 3rd Qu.: 4.895 3rd Qu.: 6.412 \n Max. :11.190 Max. :10.433 Max. :10.994 Max. :10.873 \n HSPC_065 HSPC_066 HSPC_067 HSPC_068 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.4852 Median : 0.000 Median : 1.441 Median : 0.000 \n Mean : 2.2676 Mean : 2.136 Mean : 2.480 Mean : 2.449 \n 3rd Qu.: 3.8217 3rd Qu.: 2.632 3rd Qu.: 3.548 3rd Qu.: 4.517 \n Max. :10.9023 Max. :11.608 Max. :11.147 Max. :10.901 \n HSPC_069 HSPC_070 HSPC_071 HSPC_072 \n Min. : 0.000 Min. : 0.0000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.8949 Median : 0.9272 Median : 1.121 \n Mean : 2.406 Mean : 2.5826 Mean : 2.2844 Mean : 2.545 \n 3rd Qu.: 4.705 3rd Qu.: 5.4749 3rd Qu.: 3.2531 3rd Qu.: 4.939 \n Max. :11.258 Max. :11.6715 Max. :10.7886 Max. :11.397 \n HSPC_073 HSPC_074 HSPC_075 HSPC_076 \n Min. : 0.000 Min. : 0.00 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.00 Median : 1.674 Median : 0.000 \n Mean : 2.491 Mean : 2.46 Mean : 2.413 Mean : 2.289 \n 3rd Qu.: 4.134 3rd Qu.: 3.40 3rd Qu.: 3.013 3rd Qu.: 2.550 \n Max. :11.844 Max. :11.66 Max. :11.976 Max. :12.136 \n HSPC_077 HSPC_078 HSPC_079 HSPC_080 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.6624 Median : 1.492 Median : 1.384 Median : 1.013 \n Mean : 2.4336 Mean : 2.637 Mean : 2.432 Mean : 2.881 \n 3rd Qu.: 5.4937 3rd Qu.: 5.472 3rd Qu.: 3.617 3rd Qu.: 7.220 \n Max. :11.6020 Max. :10.673 Max. :11.199 Max. :11.836 \n HSPC_081 HSPC_082 HSPC_083 HSPC_084 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.7671 Median : 0.000 Median : 1.896 Median : 1.128 \n Mean : 1.9227 Mean : 2.474 Mean : 2.864 Mean : 2.289 \n 3rd Qu.: 1.6349 3rd Qu.: 3.488 3rd Qu.: 5.101 3rd Qu.: 2.792 \n Max. :11.4681 Max. :11.962 Max. :10.865 Max. :11.834 \n HSPC_085 HSPC_087 HSPC_088 HSPC_089 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.157 Mean : 2.314 Mean : 2.202 Mean : 2.329 \n 3rd Qu.: 3.010 3rd Qu.: 3.245 3rd Qu.: 2.092 3rd Qu.: 3.246 \n Max. :10.809 Max. :10.976 Max. :11.362 Max. :11.301 \n HSPC_090 HSPC_094 HSPC_095 HSPC_096 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. :0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 \n Median : 0.000 Median : 0.000 Median : 2.055 Median :0.000 \n Mean : 2.286 Mean : 2.186 Mean : 2.756 Mean :2.348 \n 3rd Qu.: 4.174 3rd Qu.: 2.002 3rd Qu.: 4.370 3rd Qu.:4.482 \n Max. :11.124 Max. :11.694 Max. :11.385 Max. :9.601 \n HSPC_098 HSPC_099 HSPC_100 HSPC_101 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.007 \n Mean : 2.209 Mean : 2.082 Mean : 2.313 Mean : 2.587 \n 3rd Qu.: 3.354 3rd Qu.: 2.505 3rd Qu.: 2.775 3rd Qu.: 5.334 \n Max. :11.070 Max. :10.200 Max. :11.452 Max. :11.456 \n HSPC_102 HSPC_103 HSPC_104 HSPC_105 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.111 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.210 Mean : 2.853 Mean : 2.099 Mean : 1.893 \n 3rd Qu.: 2.993 3rd Qu.: 6.123 3rd Qu.: 2.720 3rd Qu.: 2.129 \n Max. :11.153 Max. :11.328 Max. :10.746 Max. :10.721 \n HSPC_106 HSPC_107 HSPC_108 HSPC_109 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.595 \n Mean : 1.980 Mean : 2.279 Mean : 2.296 Mean : 2.420 \n 3rd Qu.: 2.425 3rd Qu.: 3.396 3rd Qu.: 3.361 3rd Qu.: 4.006 \n Max. :10.919 Max. :10.982 Max. :11.744 Max. :10.463 \n HSPC_110 HSPC_111 HSPC_114 HSPC_115 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.9173 Median : 2.349 \n Mean : 2.159 Mean : 1.800 Mean : 1.8376 Mean : 2.943 \n 3rd Qu.: 2.667 3rd Qu.: 2.214 3rd Qu.: 1.8741 3rd Qu.: 6.223 \n Max. :11.121 Max. :11.109 Max. :10.4645 Max. :11.124 \n HSPC_117 HSPC_118 HSPC_119 HSPC_120 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.187 \n Mean : 1.919 Mean : 1.855 Mean : 2.289 Mean : 2.041 \n 3rd Qu.: 2.306 3rd Qu.: 2.387 3rd Qu.: 3.292 3rd Qu.: 2.610 \n Max. :14.579 Max. :11.119 Max. :12.534 Max. :11.438 \n HSPC_121 HSPC_122 HSPC_123 HSPC_125 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.803 Mean : 2.072 Mean : 2.200 Mean : 2.116 \n 3rd Qu.: 5.798 3rd Qu.: 2.140 3rd Qu.: 3.215 3rd Qu.: 2.409 \n Max. :11.320 Max. :11.013 Max. :11.163 Max. :11.368 \n HSPC_126 HSPC_127 HSPC_130 HSPC_131 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.9381 Median : 1.147 Median : 0.000 Median : 0.000 \n Mean : 2.0014 Mean : 2.287 Mean : 2.551 Mean : 2.240 \n 3rd Qu.: 2.2215 3rd Qu.: 3.051 3rd Qu.: 3.968 3rd Qu.: 3.773 \n Max. :10.9622 Max. :11.028 Max. :10.585 Max. :11.216 \n HSPC_132 HSPC_133 HSPC_134 HSPC_135 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.4438 Median : 2.234 Median : 0.000 Median : 0.000 \n Mean : 2.1659 Mean : 2.582 Mean : 2.335 Mean : 2.402 \n 3rd Qu.: 1.8512 3rd Qu.: 4.591 3rd Qu.: 3.659 3rd Qu.: 4.134 \n Max. :10.6431 Max. :10.730 Max. :11.995 Max. :11.573 \n HSPC_136 HSPC_138 HSPC_139 HSPC_140 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.7062 Median : 2.078 Median : 0.000 \n Mean : 2.546 Mean : 2.1054 Mean : 2.876 Mean : 2.220 \n 3rd Qu.: 5.219 3rd Qu.: 1.8181 3rd Qu.: 4.604 3rd Qu.: 3.716 \n Max. :11.281 Max. :11.1177 Max. :11.013 Max. :10.893 \n HSPC_141 HSPC_142 HSPC_143 HSPC_144 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.075 \n Mean : 2.385 Mean : 2.232 Mean : 2.592 Mean : 2.004 \n 3rd Qu.: 4.149 3rd Qu.: 2.523 3rd Qu.: 4.248 3rd Qu.: 2.441 \n Max. :11.099 Max. :11.902 Max. :12.932 Max. :11.121 \n HSPC_146 HSPC_148 HSPC_149 HSPC_151 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.9711 \n Mean : 2.418 Mean : 2.385 Mean : 2.314 Mean : 2.4375 \n 3rd Qu.: 4.430 3rd Qu.: 3.288 3rd Qu.: 3.139 3rd Qu.: 3.2523 \n Max. :10.385 Max. :12.823 Max. :10.910 Max. :11.7148 \n HSPC_152 HSPC_153 HSPC_154 HSPC_155 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.247 Mean : 2.415 Mean : 2.476 Mean : 2.468 \n 3rd Qu.: 3.293 3rd Qu.: 3.524 3rd Qu.: 4.653 3rd Qu.: 3.621 \n Max. :12.463 Max. :12.205 Max. :11.437 Max. :11.207 \n HSPC_156 HSPC_157 HSPC_158 HSPC_159 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.5545 Median : 1.993 Median : 0.000 Median : 0.000 \n Mean : 2.2297 Mean : 2.493 Mean : 2.119 Mean : 2.461 \n 3rd Qu.: 2.0977 3rd Qu.: 3.692 3rd Qu.: 2.930 3rd Qu.: 3.340 \n Max. :11.2431 Max. :10.539 Max. :11.336 Max. :11.123 \n HSPC_161 HSPC_162 HSPC_164 HSPC_165 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.701 Median : 0.7152 Median : 0.000 Median : 0.000 \n Mean : 2.533 Mean : 2.3473 Mean : 2.161 Mean : 2.084 \n 3rd Qu.: 3.616 3rd Qu.: 2.4973 3rd Qu.: 2.553 3rd Qu.: 3.020 \n Max. :11.429 Max. :11.0065 Max. :11.865 Max. :10.282 \n HSPC_166 HSPC_168 HSPC_169 HSPC_170 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.002 Median : 1.158 Median : 0.000 \n Mean : 2.177 Mean : 2.390 Mean : 2.038 Mean : 2.401 \n 3rd Qu.: 3.296 3rd Qu.: 4.701 3rd Qu.: 2.232 3rd Qu.: 3.703 \n Max. :11.427 Max. :10.393 Max. :10.447 Max. :11.288 \n HSPC_171 HSPC_172 HSPC_173 HSPC_174 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.525 Median : 0.7679 Median : 0.000 Median : 1.257 \n Mean : 2.312 Mean : 2.3115 Mean : 2.288 Mean : 2.444 \n 3rd Qu.: 2.729 3rd Qu.: 3.7889 3rd Qu.: 3.037 3rd Qu.: 4.996 \n Max. :10.468 Max. :11.1442 Max. :11.074 Max. :11.095 \n HSPC_175 HSPC_176 HSPC_177 HSPC_178 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.496 Median : 2.024 Median : 1.971 Median : 1.003 \n Mean : 2.613 Mean : 2.593 Mean : 2.421 Mean : 2.277 \n 3rd Qu.: 4.845 3rd Qu.: 4.092 3rd Qu.: 3.665 3rd Qu.: 2.812 \n Max. :11.235 Max. :10.379 Max. :10.864 Max. :10.979 \n HSPC_179 HSPC_180 HSPC_181 HSPC_182 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.836 Median : 1.544 Median : 2.030 Median : 0.000 \n Mean : 2.205 Mean : 2.556 Mean : 2.890 Mean : 2.363 \n 3rd Qu.: 2.300 3rd Qu.: 4.798 3rd Qu.: 4.846 3rd Qu.: 3.779 \n Max. :11.244 Max. :10.802 Max. :10.945 Max. :10.399 \n HSPC_183 HSPC_185 HSPC_186 HSPC_187 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.020 Median : 0.000 Median : 1.606 Median : 0.000 \n Mean : 2.242 Mean : 2.708 Mean : 2.053 Mean : 2.360 \n 3rd Qu.: 2.842 3rd Qu.: 4.855 3rd Qu.: 2.834 3rd Qu.: 3.541 \n Max. :10.530 Max. :11.079 Max. :11.016 Max. :10.923 \n HSPC_189 HSPC_190 HSPC_191 HSPC_192 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.412 \n Mean : 2.120 Mean : 2.417 Mean : 2.175 Mean : 2.192 \n 3rd Qu.: 2.652 3rd Qu.: 5.226 3rd Qu.: 2.574 3rd Qu.: 2.669 \n Max. :11.300 Max. :11.023 Max. :11.454 Max. :10.225 \n HSPC_193 HSPC_195 HSPC_196 HSPC_198 \n Min. :0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.:0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median :0.9691 Median : 0.9175 Median : 1.379 Median : 1.105 \n Mean :2.5448 Mean : 2.7307 Mean : 2.327 Mean : 2.155 \n 3rd Qu.:5.1191 3rd Qu.: 5.8899 3rd Qu.: 2.625 3rd Qu.: 2.756 \n Max. :9.8728 Max. :10.4757 Max. :11.319 Max. :11.405 \n HSPC_199 HSPC_200 HSPC_202 HSPC_203 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 1.069 Median : 1.572 Median : 0.8045 Median : 1.311 \n Mean : 1.909 Mean : 2.346 Mean : 2.1384 Mean : 2.058 \n 3rd Qu.: 2.431 3rd Qu.: 2.791 3rd Qu.: 2.0569 3rd Qu.: 2.792 \n Max. :11.377 Max. :11.334 Max. :11.0516 Max. :10.852 \n HSPC_204 HSPC_205 HSPC_206 HSPC_207 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.342 Median : 1.997 Median : 1.076 Median : 0.9235 \n Mean : 2.716 Mean : 2.520 Mean : 2.426 Mean : 2.2974 \n 3rd Qu.: 5.611 3rd Qu.: 4.244 3rd Qu.: 4.057 3rd Qu.: 2.6736 \n Max. :10.269 Max. :10.817 Max. :11.866 Max. :11.4287 \n HSPC_208 HSPC_210 HSPC_211 HSPC_212 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 2.263 Median : 1.021 Median : 1.351 Median : 0.000 \n Mean : 2.893 Mean : 2.315 Mean : 2.425 Mean : 2.336 \n 3rd Qu.: 5.014 3rd Qu.: 2.676 3rd Qu.: 3.820 3rd Qu.: 3.443 \n Max. :11.375 Max. :12.208 Max. :11.360 Max. :11.808 \n HSPC_213 HSPC_214 HSPC_215 HSPC_216 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.270 Median : 0.9195 Median : 1.653 Median : 0.8022 \n Mean : 2.483 Mean : 2.1976 Mean : 2.563 Mean : 2.6010 \n 3rd Qu.: 4.903 3rd Qu.: 2.7139 3rd Qu.: 4.344 3rd Qu.: 6.0076 \n Max. :11.548 Max. :10.6947 Max. :10.933 Max. :11.2119 \n HSPC_218 HSPC_219 HSPC_220 HSPC_221 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.027 Median : 0.000 Median : 1.269 \n Mean : 2.467 Mean : 2.291 Mean : 2.449 Mean : 2.641 \n 3rd Qu.: 3.980 3rd Qu.: 2.853 3rd Qu.: 4.486 3rd Qu.: 3.617 \n Max. :11.654 Max. :10.801 Max. :10.410 Max. :11.651 \n HSPC_222 HSPC_223 HSPC_224 HSPC_225 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.449 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.262 Mean : 2.271 Mean : 2.492 Mean : 2.585 \n 3rd Qu.: 3.271 3rd Qu.: 3.727 3rd Qu.: 3.769 3rd Qu.: 5.253 \n Max. :11.133 Max. :12.000 Max. :11.114 Max. :11.671 \n HSPC_227 HSPC_228 HSPC_229 HSPC_230 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 2.484 Median : 0.000 \n Mean : 2.492 Mean : 2.370 Mean : 2.742 Mean : 2.586 \n 3rd Qu.: 3.692 3rd Qu.: 4.488 3rd Qu.: 4.836 3rd Qu.: 5.188 \n Max. :10.815 Max. :10.165 Max. :11.143 Max. :10.734 \n HSPC_231 HSPC_232 HSPC_233 HSPC_235 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.869 Median : 1.254 Median : 0.000 \n Mean : 2.379 Mean : 2.264 Mean : 2.531 Mean : 2.552 \n 3rd Qu.: 4.787 3rd Qu.: 3.163 3rd Qu.: 3.925 3rd Qu.: 4.389 \n Max. :10.790 Max. :12.098 Max. :11.533 Max. :11.765 \n HSPC_236 HSPC_237 HSPC_239 HSPC_240 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 2.207 Median : 0.892 \n Mean : 2.205 Mean : 2.457 Mean : 2.656 Mean : 2.049 \n 3rd Qu.: 3.748 3rd Qu.: 3.488 3rd Qu.: 4.904 3rd Qu.: 2.617 \n Max. :10.234 Max. :10.630 Max. :10.858 Max. :10.528 \n HSPC_243 HSPC_244 HSPC_245 HSPC_246 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.118 Median : 0.7872 Median : 1.459 Median : 1.629 \n Mean : 2.311 Mean : 2.6638 Mean : 2.360 Mean : 2.321 \n 3rd Qu.: 2.574 3rd Qu.: 6.2395 3rd Qu.: 3.000 3rd Qu.: 3.229 \n Max. :11.069 Max. :10.0730 Max. :11.297 Max. :11.237 \n HSPC_247 HSPC_248 HSPC_249 HSPC_250 \n Min. :0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.:0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median :0.000 Median : 0.8453 Median : 0.000 Median : 1.278 \n Mean :2.537 Mean : 2.3719 Mean : 1.803 Mean : 2.751 \n 3rd Qu.:4.687 3rd Qu.: 3.3090 3rd Qu.: 2.335 3rd Qu.: 6.330 \n Max. :9.821 Max. :10.8128 Max. :10.568 Max. :11.256 \n HSPC_251 HSPC_253 HSPC_254 HSPC_255 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.9714 Median : 1.265 Median : 0.000 Median : 0.9098 \n Mean : 2.5626 Mean : 2.492 Mean : 2.177 Mean : 2.1878 \n 3rd Qu.: 4.9167 3rd Qu.: 4.185 3rd Qu.: 3.437 3rd Qu.: 2.4313 \n Max. :11.1252 Max. :10.435 Max. :10.422 Max. :10.7952 \n HSPC_256 HSPC_257 HSPC_258 HSPC_261 \n Min. : 0.0000 Min. : 0.000 Min. :0.0000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.:0.0000 1st Qu.: 0.0000 \n Median : 0.8248 Median : 1.241 Median :0.8526 Median : 0.5387 \n Mean : 2.1051 Mean : 2.630 Mean :2.0295 Mean : 2.1419 \n 3rd Qu.: 2.3331 3rd Qu.: 5.646 3rd Qu.:3.0784 3rd Qu.: 1.9352 \n Max. :13.0375 Max. :11.499 Max. :9.9116 Max. :11.3247 \n HSPC_263 HSPC_264 HSPC_265 HSPC_266 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.538 Median : 1.426 Median : 1.883 Median : 1.839 \n Mean : 2.613 Mean : 2.374 Mean : 3.177 Mean : 2.833 \n 3rd Qu.: 4.485 3rd Qu.: 3.238 3rd Qu.: 5.702 3rd Qu.: 5.801 \n Max. :10.571 Max. :11.136 Max. :12.436 Max. :10.338 \n HSPC_267 HSPC_268 HSPC_269 HSPC_270 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 0.9675 Median : 0.7787 Median : 0.8632 Median : 0.9637 \n Mean : 2.4910 Mean : 2.5342 Mean : 2.4029 Mean : 2.6899 \n 3rd Qu.: 3.5345 3rd Qu.: 4.9871 3rd Qu.: 4.3176 3rd Qu.: 5.7266 \n Max. :10.0139 Max. :10.7848 Max. :11.2689 Max. :11.1648 \n HSPC_271 HSPC_274 HSPC_275 HSPC_276 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 1.352 Median : 1.730 Median : 0.5252 Median : 1.156 \n Mean : 2.493 Mean : 2.382 Mean : 2.5375 Mean : 2.485 \n 3rd Qu.: 4.430 3rd Qu.: 3.360 3rd Qu.: 5.7329 3rd Qu.: 4.623 \n Max. :11.636 Max. :11.165 Max. :11.6234 Max. :11.562 \n HSPC_278 HSPC_279 HSPC_280 HSPC_281 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.487 Median : 1.608 Median : 2.611 \n Mean : 2.161 Mean : 2.497 Mean : 2.580 Mean : 2.737 \n 3rd Qu.: 2.270 3rd Qu.: 3.813 3rd Qu.: 3.985 3rd Qu.: 4.731 \n Max. :11.734 Max. :10.900 Max. :11.673 Max. :10.076 \n HSPC_282 HSPC_283 HSPC_285 HSPC_286 \n Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.7021 Median : 1.911 Median : 0.8658 Median : 1.178 \n Mean : 2.4272 Mean : 2.534 Mean : 2.4868 Mean : 2.293 \n 3rd Qu.: 4.1254 3rd Qu.: 3.888 3rd Qu.: 5.3804 3rd Qu.: 2.597 \n Max. :11.1094 Max. :10.258 Max. :10.5533 Max. :11.112 \n HSPC_287 HSPC_288 HSPC_289 HSPC_290 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.049 Median : 0.8548 Median : 1.953 Median : 1.176 \n Mean : 2.775 Mean : 2.6412 Mean : 2.925 Mean : 2.304 \n 3rd Qu.: 5.476 3rd Qu.: 5.4204 3rd Qu.: 5.613 3rd Qu.: 3.445 \n Max. :10.925 Max. :11.0814 Max. :10.199 Max. :11.094 \n HSPC_291 HSPC_292 HSPC_293 HSPC_294 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.176 Median : 1.320 Median : 1.077 Median : 0.9161 \n Mean : 2.662 Mean : 2.534 Mean : 2.538 Mean : 2.4365 \n 3rd Qu.: 5.690 3rd Qu.: 4.297 3rd Qu.: 3.458 3rd Qu.: 4.8204 \n Max. :12.255 Max. :11.090 Max. :10.987 Max. :10.6135 \n HSPC_295 HSPC_296 HSPC_297 HSPC_298 \n Min. :0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.:0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median :1.479 Median : 2.157 Median : 2.444 Median : 1.281 \n Mean :2.849 Mean : 2.977 Mean : 3.062 Mean : 2.277 \n 3rd Qu.:5.282 3rd Qu.: 5.006 3rd Qu.: 5.005 3rd Qu.: 2.749 \n Max. :9.986 Max. :10.830 Max. :11.009 Max. :10.636 \n HSPC_299 HSPC_300 HSPC_301 HSPC_302 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.716 Median : 1.163 Median : 2.235 Median : 2.240 \n Mean : 2.597 Mean : 2.346 Mean : 2.739 Mean : 2.890 \n 3rd Qu.: 3.762 3rd Qu.: 2.876 3rd Qu.: 4.593 3rd Qu.: 4.945 \n Max. :11.663 Max. :11.690 Max. :10.364 Max. :10.498 \n HSPC_303 HSPC_304 HSPC_305 HSPC_306 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.8348 Median : 0.9727 Median : 1.152 Median : 1.303 \n Mean : 2.3400 Mean : 2.3710 Mean : 2.469 Mean : 2.496 \n 3rd Qu.: 3.2942 3rd Qu.: 2.9942 3rd Qu.: 3.300 3rd Qu.: 3.015 \n Max. :10.3022 Max. :11.7185 Max. :11.051 Max. :11.211 \n HSPC_307 HSPC_308 HSPC_309 HSPC_310 \n Min. :0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.:0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median :1.976 Median : 1.634 Median : 1.804 Median : 1.743 \n Mean :2.873 Mean : 2.812 Mean : 2.892 Mean : 2.874 \n 3rd Qu.:5.396 3rd Qu.: 5.089 3rd Qu.: 5.165 3rd Qu.: 5.004 \n Max. :9.921 Max. :10.527 Max. :10.476 Max. :11.107 \n HSPC_312 HSPC_313 HSPC_314 HSPC_315 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.420 Median : 1.592 Median : 1.635 Median : 2.262 \n Mean : 2.645 Mean : 2.637 Mean : 2.564 Mean : 2.628 \n 3rd Qu.: 4.925 3rd Qu.: 4.257 3rd Qu.: 4.297 3rd Qu.: 4.092 \n Max. :11.367 Max. :10.644 Max. :10.882 Max. :12.140 \n HSPC_317 HSPC_318 HSPC_320 HSPC_321 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 2.335 Median : 1.728 Median : 2.340 Median : 1.835 \n Mean : 2.648 Mean : 2.637 Mean : 3.064 Mean : 2.742 \n 3rd Qu.: 4.103 3rd Qu.: 4.483 3rd Qu.: 5.325 3rd Qu.: 4.340 \n Max. :10.933 Max. :11.712 Max. :11.589 Max. :11.695 \n HSPC_322 HSPC_323 HSPC_324 HSPC_325 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.9842 Median : 0.989 Median : 1.088 Median : 2.132 \n Mean : 2.5948 Mean : 2.905 Mean : 2.655 Mean : 3.091 \n 3rd Qu.: 3.4619 3rd Qu.: 5.629 3rd Qu.: 3.772 3rd Qu.: 5.191 \n Max. :11.9594 Max. :12.267 Max. :11.310 Max. :11.134 \n HSPC_326 HSPC_327 HSPC_328 HSPC_329 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.781 Median : 1.085 Median : 1.936 Median : 1.954 \n Mean : 3.021 Mean : 2.838 Mean : 2.582 Mean : 3.034 \n 3rd Qu.: 5.582 3rd Qu.: 6.388 3rd Qu.: 4.048 3rd Qu.: 5.497 \n Max. :11.268 Max. :11.433 Max. :11.908 Max. :10.927 \n HSPC_330 HSPC_331 HSPC_332 HSPC_333 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.870 Median : 2.953 Median : 1.644 Median : 1.320 \n Mean : 2.791 Mean : 3.058 Mean : 2.768 Mean : 2.428 \n 3rd Qu.: 4.409 3rd Qu.: 5.118 3rd Qu.: 5.141 3rd Qu.: 2.985 \n Max. :11.561 Max. :10.855 Max. :10.420 Max. :11.946 \n HSPC_334 HSPC_335 HSPC_336 HSPC_337 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.931 Median : 1.541 Median : 2.761 Median : 0.000 \n Mean : 2.894 Mean : 2.746 Mean : 3.051 Mean : 2.415 \n 3rd Qu.: 4.160 3rd Qu.: 4.461 3rd Qu.: 4.408 3rd Qu.: 4.188 \n Max. :11.592 Max. :11.076 Max. :11.246 Max. :10.205 \n HSPC_338 HSPC_339 HSPC_341 HSPC_342 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.9553 Median : 0.4452 \n Mean : 2.205 Mean : 2.325 Mean : 2.0823 Mean : 2.4572 \n 3rd Qu.: 2.449 3rd Qu.: 3.136 3rd Qu.: 2.0118 3rd Qu.: 4.9582 \n Max. :12.052 Max. :11.858 Max. :11.3855 Max. :11.8066 \n HSPC_343 HSPC_344 HSPC_345 HSPC_346 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.5197 \n Mean : 2.363 Mean : 2.290 Mean : 1.984 Mean : 2.5126 \n 3rd Qu.: 4.285 3rd Qu.: 3.238 3rd Qu.: 2.561 3rd Qu.: 5.2033 \n Max. :11.422 Max. :11.877 Max. :10.939 Max. :11.1527 \n HSPC_348 HSPC_349 HSPC_350 HSPC_351 \n Min. : 0.000 Min. : 0.000 Min. : 0.00 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.00 1st Qu.: 0.000 \n Median : 1.113 Median : 0.000 Median : 0.00 Median : 0.000 \n Mean : 2.232 Mean : 1.949 Mean : 2.11 Mean : 2.259 \n 3rd Qu.: 2.875 3rd Qu.: 2.784 3rd Qu.: 3.07 3rd Qu.: 3.214 \n Max. :11.161 Max. :10.720 Max. :11.15 Max. :10.912 \n HSPC_352 HSPC_353 HSPC_354 HSPC_356 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.333 Mean : 2.162 Mean : 2.427 Mean : 2.135 \n 3rd Qu.: 3.197 3rd Qu.: 2.819 3rd Qu.: 3.808 3rd Qu.: 2.709 \n Max. :12.275 Max. :11.351 Max. :11.190 Max. :10.662 \n HSPC_358 HSPC_359 HSPC_360 HSPC_361 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.278 Mean : 2.012 Mean : 2.381 Mean : 2.137 \n 3rd Qu.: 3.608 3rd Qu.: 1.460 3rd Qu.: 3.044 3rd Qu.: 2.875 \n Max. :10.924 Max. :11.678 Max. :11.203 Max. :10.847 \n HSPC_362 HSPC_363 HSPC_365 HSPC_367 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 1.783 Mean : 1.987 Mean : 2.937 Mean : 2.449 \n 3rd Qu.: 1.594 3rd Qu.: 2.750 3rd Qu.: 5.572 3rd Qu.: 3.936 \n Max. :11.889 Max. :10.389 Max. :12.427 Max. :11.081 \n HSPC_368 HSPC_370 HSPC_371 HSPC_372 \n Min. : 0.000 Min. : 0.0000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.7971 Median : 0.7613 Median : 0.000 \n Mean : 1.877 Mean : 2.7681 Mean : 2.4278 Mean : 2.487 \n 3rd Qu.: 2.018 3rd Qu.: 6.5358 3rd Qu.: 4.9578 3rd Qu.: 4.226 \n Max. :11.523 Max. :11.9636 Max. :11.4223 Max. :11.700 \n HSPC_373 HSPC_374 HSPC_376 HSPC_377 \n Min. : 0.000 Min. : 0.00 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.00 Median : 0.000 Median : 0.000 \n Mean : 2.330 Mean : 2.21 Mean : 2.625 Mean : 2.456 \n 3rd Qu.: 3.784 3rd Qu.: 2.44 3rd Qu.: 4.365 3rd Qu.: 4.875 \n Max. :11.672 Max. :12.04 Max. :12.011 Max. :11.282 \n HSPC_380 HSPC_382 HSPC_383 HSPC_386 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.9728 Median : 1.753 Median : 0.000 \n Mean : 2.291 Mean : 2.3318 Mean : 2.307 Mean : 2.351 \n 3rd Qu.: 2.403 3rd Qu.: 2.7605 3rd Qu.: 3.113 3rd Qu.: 3.704 \n Max. :11.415 Max. :11.3370 Max. :11.592 Max. :11.079 \n HSPC_387 HSPC_388 HSPC_389 HSPC_390 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.9037 Median : 0.000 Median : 0.000 \n Mean : 2.255 Mean : 2.4969 Mean : 2.081 Mean : 2.131 \n 3rd Qu.: 3.151 3rd Qu.: 5.3587 3rd Qu.: 2.723 3rd Qu.: 2.738 \n Max. :11.700 Max. :10.9923 Max. :11.868 Max. :10.913 \n HSPC_391 HSPC_392 HSPC_393 HSPC_395 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.026 Mean : 2.356 Mean : 2.063 Mean : 1.779 \n 3rd Qu.: 2.126 3rd Qu.: 3.781 3rd Qu.: 2.163 3rd Qu.: 1.924 \n Max. :12.021 Max. :11.370 Max. :10.530 Max. :12.219 \n HSPC_396 HSPC_398 HSPC_399 HSPC_400 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.164 Mean : 2.309 Mean : 1.831 Mean : 2.091 \n 3rd Qu.: 2.681 3rd Qu.: 3.994 3rd Qu.: 1.844 3rd Qu.: 2.781 \n Max. :11.292 Max. :11.431 Max. :11.343 Max. :10.863 \n HSPC_402 HSPC_403 HSPC_404 HSPC_405 \n Min. : 0.000 Min. : 0.00 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.00 Median : 0.000 Median : 0.5496 \n Mean : 2.343 Mean : 2.06 Mean : 1.878 Mean : 2.3660 \n 3rd Qu.: 4.552 3rd Qu.: 2.45 3rd Qu.: 1.644 3rd Qu.: 2.5449 \n Max. :11.444 Max. :12.00 Max. :11.188 Max. :12.2605 \n HSPC_406 HSPC_407 HSPC_408 HSPC_409 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.565 Median : 0.5775 Median : 0.000 \n Mean : 2.169 Mean : 2.611 Mean : 1.9174 Mean : 2.234 \n 3rd Qu.: 2.606 3rd Qu.: 6.000 3rd Qu.: 1.3086 3rd Qu.: 3.044 \n Max. :10.866 Max. :11.296 Max. :12.8185 Max. :11.595 \n HSPC_410 HSPC_411 HSPC_412 HSPC_413 \n Min. : 0.000 Min. : 0.0000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.9059 Median : 0.6614 Median : 0.000 \n Mean : 2.308 Mean : 3.1194 Mean : 3.0437 Mean : 2.433 \n 3rd Qu.: 4.022 3rd Qu.: 7.7574 3rd Qu.: 7.4695 3rd Qu.: 3.329 \n Max. :11.620 Max. :12.0858 Max. :11.5582 Max. :12.549 \n HSPC_415 HSPC_416 HSPC_417 HSPC_418 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.7222 Median : 0.000 \n Mean : 2.904 Mean : 2.228 Mean : 2.4242 Mean : 2.508 \n 3rd Qu.: 5.531 3rd Qu.: 3.111 3rd Qu.: 3.0795 3rd Qu.: 3.249 \n Max. :12.359 Max. :11.338 Max. :12.0314 Max. :11.857 \n HSPC_419 HSPC_420 HSPC_421 HSPC_422 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.6924 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.6246 Mean : 2.514 Mean : 2.075 Mean : 2.552 \n 3rd Qu.: 4.8156 3rd Qu.: 5.709 3rd Qu.: 3.682 3rd Qu.: 5.382 \n Max. :12.0526 Max. :11.270 Max. :10.250 Max. :11.691 \n HSPC_423 HSPC_424 HSPC_425 HSPC_426 \n Min. : 0.00 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.00 Median : 0.000 Median : 1.016 Median : 0.000 \n Mean : 2.12 Mean : 2.225 Mean : 2.658 Mean : 2.235 \n 3rd Qu.: 1.55 3rd Qu.: 2.471 3rd Qu.: 6.474 3rd Qu.: 3.134 \n Max. :11.56 Max. :11.734 Max. :11.303 Max. :10.888 \n HSPC_427 HSPC_431 HSPC_432 HSPC_435 \n Min. : 0.000 Min. : 0.000 Min. :0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.102 Median :0.000 Median : 1.098 \n Mean : 1.829 Mean : 2.360 Mean :2.169 Mean : 2.060 \n 3rd Qu.: 2.980 3rd Qu.: 3.640 3rd Qu.:3.261 3rd Qu.: 2.744 \n Max. :10.517 Max. :10.533 Max. :9.911 Max. :10.677 \n HSPC_436 HSPC_440 HSPC_441 HSPC_442 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.4719 Median : 1.385 Median : 1.084 Median : 0.595 \n Mean : 2.3880 Mean : 1.712 Mean : 2.265 Mean : 2.109 \n 3rd Qu.: 4.3738 3rd Qu.: 2.079 3rd Qu.: 2.828 3rd Qu.: 2.193 \n Max. :11.2839 Max. :11.065 Max. :11.152 Max. :11.560 \n HSPC_443 HSPC_444 HSPC_446 HSPC_447 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.7734 Median : 1.374 Median : 0.000 Median : 1.113 \n Mean : 2.5663 Mean : 2.262 Mean : 1.475 Mean : 2.446 \n 3rd Qu.: 4.9423 3rd Qu.: 2.952 3rd Qu.: 1.683 3rd Qu.: 4.733 \n Max. :10.9262 Max. :10.705 Max. :10.545 Max. :10.303 \n HSPC_448 HSPC_449 HSPC_450 HSPC_451 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.139 Median : 1.344 Median : 0.000 Median : 1.759 \n Mean : 2.396 Mean : 2.164 Mean : 1.946 Mean : 1.806 \n 3rd Qu.: 3.660 3rd Qu.: 2.490 3rd Qu.: 2.483 3rd Qu.: 2.528 \n Max. :11.091 Max. :11.324 Max. :10.397 Max. :10.395 \n HSPC_453 HSPC_454 HSPC_455 HSPC_456 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.9321 Median : 0.5303 Median : 0.000 Median : 0.6497 \n Mean : 2.4906 Mean : 2.4477 Mean : 2.379 Mean : 2.4263 \n 3rd Qu.: 4.9604 3rd Qu.: 4.8773 3rd Qu.: 3.016 3rd Qu.: 5.4740 \n Max. :10.5263 Max. :11.1628 Max. :11.437 Max. :10.9787 \n HSPC_457 HSPC_459 HSPC_460 HSPC_461 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.313 \n Mean : 2.060 Mean : 2.403 Mean : 1.712 Mean : 1.875 \n 3rd Qu.: 2.937 3rd Qu.: 3.029 3rd Qu.: 1.598 3rd Qu.: 2.104 \n Max. :11.746 Max. :12.135 Max. :12.526 Max. :10.210 \n HSPC_462 HSPC_463 HSPC_465 HSPC_466 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.7257 Median : 0.000 Median : 0.5816 \n Mean : 2.095 Mean : 2.2325 Mean : 2.000 Mean : 1.9972 \n 3rd Qu.: 2.578 3rd Qu.: 2.3442 3rd Qu.: 2.633 3rd Qu.: 2.2384 \n Max. :11.429 Max. :11.1776 Max. :11.064 Max. :11.5475 \n HSPC_467 HSPC_468 HSPC_470 HSPC_471 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.177 Median : 0.649 Median : 0.000 Median : 0.000 \n Mean : 1.866 Mean : 2.130 Mean : 1.774 Mean : 2.279 \n 3rd Qu.: 2.258 3rd Qu.: 2.513 3rd Qu.: 1.931 3rd Qu.: 2.744 \n Max. :10.632 Max. :10.527 Max. :10.781 Max. :11.533 \n HSPC_472 HSPC_473 HSPC_474 HSPC_475 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.265 Mean : 2.168 Mean : 2.016 Mean : 2.339 \n 3rd Qu.: 2.982 3rd Qu.: 2.677 3rd Qu.: 2.061 3rd Qu.: 3.319 \n Max. :11.795 Max. :12.071 Max. :11.732 Max. :10.672 \n HSPC_477 HSPC_478 HSPC_479 HSPC_480 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.6278 Median : 0.000 Median : 1.281 Median : 1.034 \n Mean : 1.9910 Mean : 2.068 Mean : 2.175 Mean : 2.239 \n 3rd Qu.: 1.6695 3rd Qu.: 3.402 3rd Qu.: 3.028 3rd Qu.: 2.642 \n Max. :11.1171 Max. :12.113 Max. :11.277 Max. :10.641 \n HSPC_482 HSPC_483 HSPC_485 HSPC_486 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.088 Median : 0.6036 Median : 1.411 \n Mean : 1.998 Mean : 2.454 Mean : 2.3824 Mean : 2.078 \n 3rd Qu.: 2.648 3rd Qu.: 3.006 3rd Qu.: 4.8213 3rd Qu.: 2.579 \n Max. :13.948 Max. :10.722 Max. :11.8691 Max. :10.155 \n HSPC_488 HSPC_489 HSPC_490 HSPC_491 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.310 Median : 0.000 \n Mean : 1.809 Mean : 1.947 Mean : 2.518 Mean : 2.268 \n 3rd Qu.: 2.120 3rd Qu.: 2.330 3rd Qu.: 4.140 3rd Qu.: 3.300 \n Max. :11.271 Max. :11.518 Max. :11.646 Max. :10.366 \n HSPC_492 HSPC_493 HSPC_494 HSPC_495 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.127 Mean : 2.054 Mean : 2.255 Mean : 2.326 \n 3rd Qu.: 2.322 3rd Qu.: 3.060 3rd Qu.: 3.386 3rd Qu.: 3.812 \n Max. :11.674 Max. :10.404 Max. :10.461 Max. :10.304 \n HSPC_496 HSPC_497 HSPC_498 HSPC_499 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.945 Median : 0.5839 Median : 0.000 \n Mean : 1.938 Mean : 2.287 Mean : 2.3731 Mean : 2.045 \n 3rd Qu.: 2.227 3rd Qu.: 2.872 3rd Qu.: 3.6112 3rd Qu.: 2.358 \n Max. :11.323 Max. :11.873 Max. :11.3264 Max. :10.632 \n HSPC_500 HSPC_501 HSPC_502 HSPC_503 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.9146 Median : 0.7789 \n Mean : 2.199 Mean : 2.209 Mean : 2.2727 Mean : 2.4495 \n 3rd Qu.: 2.678 3rd Qu.: 3.150 3rd Qu.: 2.8888 3rd Qu.: 5.4034 \n Max. :11.665 Max. :10.727 Max. :11.4591 Max. :11.5376 \n HSPC_504 HSPC_505 HSPC_506 HSPC_507 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.137 Mean : 2.132 Mean : 2.017 Mean : 2.314 \n 3rd Qu.: 3.035 3rd Qu.: 2.744 3rd Qu.: 2.794 3rd Qu.: 3.175 \n Max. :11.625 Max. :11.385 Max. :11.467 Max. :11.232 \n HSPC_508 HSPC_509 HSPC_510 HSPC_512 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.2297 Median : 1.691 Median : 1.166 Median : 0.000 \n Mean : 1.9265 Mean : 2.548 Mean : 2.319 Mean : 2.482 \n 3rd Qu.: 0.8975 3rd Qu.: 4.397 3rd Qu.: 3.492 3rd Qu.: 3.753 \n Max. :12.0747 Max. :10.603 Max. :10.885 Max. :12.492 \n HSPC_514 HSPC_515 HSPC_516 HSPC_518 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.109 Median : 0.8853 Median : 0.000 \n Mean : 2.295 Mean : 2.298 Mean : 2.5439 Mean : 2.649 \n 3rd Qu.: 2.429 3rd Qu.: 2.560 3rd Qu.: 4.6629 3rd Qu.: 5.581 \n Max. :11.783 Max. :12.193 Max. :12.1718 Max. :11.838 \n HSPC_520 HSPC_521 HSPC_522 HSPC_523 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.3648 \n Mean : 2.295 Mean : 2.348 Mean : 2.529 Mean : 1.9471 \n 3rd Qu.: 2.975 3rd Qu.: 3.375 3rd Qu.: 5.350 3rd Qu.: 1.5726 \n Max. :12.289 Max. :11.712 Max. :10.364 Max. :12.5906 \n HSPC_524 HSPC_526 HSPC_527 HSPC_528 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.777 Median : 0.532 \n Mean : 1.989 Mean : 2.218 Mean : 2.133 Mean : 2.238 \n 3rd Qu.: 3.267 3rd Qu.: 2.431 3rd Qu.: 1.651 3rd Qu.: 2.095 \n Max. :12.105 Max. :10.870 Max. :12.017 Max. :12.183 \n HSPC_530 HSPC_532 HSPC_533 HSPC_534 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.7537 Median : 0.000 \n Mean : 2.017 Mean : 1.856 Mean : 1.7546 Mean : 2.183 \n 3rd Qu.: 2.514 3rd Qu.: 1.816 3rd Qu.: 1.3378 3rd Qu.: 2.311 \n Max. :11.549 Max. :11.255 Max. :11.5862 Max. :11.696 \n HSPC_535 HSPC_537 HSPC_538 HSPC_539 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.122 Mean : 2.010 Mean : 2.501 Mean : 2.463 \n 3rd Qu.: 2.733 3rd Qu.: 2.541 3rd Qu.: 4.886 3rd Qu.: 4.100 \n Max. :10.793 Max. :10.305 Max. :11.359 Max. :11.755 \n HSPC_540 HSPC_541 HSPC_543 HSPC_544 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.9898 Median : 2.362 Median : 0.000 Median : 0.8222 \n Mean : 2.1775 Mean : 2.613 Mean : 2.275 Mean : 2.8070 \n 3rd Qu.: 1.9846 3rd Qu.: 4.440 3rd Qu.: 2.690 3rd Qu.: 6.4209 \n Max. :12.2963 Max. :11.844 Max. :10.983 Max. :10.7976 \n HSPC_545 HSPC_546 HSPC_547 HSPC_548 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 1.485 Median : 0.000 Median : 0.6548 Median : 1.456 \n Mean : 2.215 Mean : 2.424 Mean : 2.5255 Mean : 2.415 \n 3rd Qu.: 2.677 3rd Qu.: 3.573 3rd Qu.: 2.8714 3rd Qu.: 2.639 \n Max. :11.815 Max. :11.235 Max. :11.8801 Max. :11.955 \n HSPC_549 HSPC_550 HSPC_551 HSPC_552 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.750 Median : 1.287 Median : 1.226 \n Mean : 2.149 Mean : 2.592 Mean : 2.680 Mean : 2.236 \n 3rd Qu.: 2.289 3rd Qu.: 4.686 3rd Qu.: 4.007 3rd Qu.: 2.669 \n Max. :11.827 Max. :12.064 Max. :11.874 Max. :11.581 \n HSPC_553 HSPC_554 HSPC_555 HSPC_556 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.4709 Median : 0.000 Median : 0.000 Median : 0.9369 \n Mean : 2.6931 Mean : 2.090 Mean : 1.903 Mean : 2.4784 \n 3rd Qu.: 6.4420 3rd Qu.: 2.158 3rd Qu.: 2.579 3rd Qu.: 3.4024 \n Max. :11.0566 Max. :11.755 Max. :11.245 Max. :11.9838 \n HSPC_557 HSPC_559 HSPC_560 HSPC_562 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.681 Median : 0.000 \n Mean : 1.972 Mean : 1.937 Mean : 2.082 Mean : 2.470 \n 3rd Qu.: 1.880 3rd Qu.: 2.411 3rd Qu.: 2.436 3rd Qu.: 4.148 \n Max. :11.792 Max. :11.871 Max. :11.761 Max. :11.958 \n HSPC_563 HSPC_566 HSPC_567 HSPC_568 \n Min. : 0.00 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.00 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.00 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 1.83 Mean : 2.486 Mean : 2.186 Mean : 2.267 \n 3rd Qu.: 2.29 3rd Qu.: 3.577 3rd Qu.: 2.254 3rd Qu.: 2.957 \n Max. :10.59 Max. :12.452 Max. :11.302 Max. :10.851 \n HSPC_569 HSPC_571 HSPC_573 HSPC_574 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.771 Median : 1.042 Median : 0.000 Median : 0.7547 \n Mean : 2.283 Mean : 2.213 Mean : 2.089 Mean : 2.3196 \n 3rd Qu.: 3.021 3rd Qu.: 2.879 3rd Qu.: 2.291 3rd Qu.: 5.6078 \n Max. :10.720 Max. :10.939 Max. :11.397 Max. :10.4741 \n HSPC_575 HSPC_576 HSPC_577 HSPC_578 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.606 Median : 0.000 \n Mean : 2.016 Mean : 2.206 Mean : 2.358 Mean : 2.257 \n 3rd Qu.: 2.267 3rd Qu.: 2.741 3rd Qu.: 3.198 3rd Qu.: 2.923 \n Max. :10.687 Max. :11.201 Max. :11.613 Max. :12.323 \n HSPC_579 HSPC_580 HSPC_582 HSPC_584 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.182 Median : 0.9442 Median : 0.000 Median : 0.000 \n Mean : 2.472 Mean : 2.4264 Mean : 2.218 Mean : 2.276 \n 3rd Qu.: 5.009 3rd Qu.: 3.5841 3rd Qu.: 3.332 3rd Qu.: 3.067 \n Max. :11.096 Max. :10.6790 Max. :10.882 Max. :10.954 \n HSPC_585 HSPC_586 HSPC_589 HSPC_590 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.8915 Median : 0.000 Median : 1.192 \n Mean : 2.034 Mean : 2.0490 Mean : 2.274 Mean : 2.252 \n 3rd Qu.: 2.157 3rd Qu.: 1.8340 3rd Qu.: 3.655 3rd Qu.: 2.364 \n Max. :11.956 Max. :11.4729 Max. :11.198 Max. :10.673 \n HSPC_592 HSPC_593 HSPC_594 HSPC_595 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.228 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.317 Mean : 2.329 Mean : 2.474 Mean : 1.463 \n 3rd Qu.: 2.671 3rd Qu.: 3.263 3rd Qu.: 4.396 3rd Qu.: 1.757 \n Max. :12.036 Max. :10.626 Max. :11.347 Max. :11.286 \n HSPC_596 HSPC_597 HSPC_598 HSPC_599 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.392 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.283 Mean : 1.858 Mean : 1.954 Mean : 1.905 \n 3rd Qu.: 3.425 3rd Qu.: 2.296 3rd Qu.: 2.320 3rd Qu.: 2.497 \n Max. :10.899 Max. :11.002 Max. :11.117 Max. :11.248 \n HSPC_600 HSPC_601 HSPC_602 HSPC_603 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.662 Median : 0.000 \n Mean : 2.335 Mean : 1.905 Mean : 2.343 Mean : 2.281 \n 3rd Qu.: 3.827 3rd Qu.: 2.376 3rd Qu.: 3.272 3rd Qu.: 3.048 \n Max. :11.208 Max. :11.022 Max. :10.908 Max. :11.464 \n HSPC_604 HSPC_606 HSPC_607 HSPC_608 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.136 Mean : 2.392 Mean : 2.142 Mean : 2.139 \n 3rd Qu.: 2.516 3rd Qu.: 4.726 3rd Qu.: 3.187 3rd Qu.: 2.885 \n Max. :11.743 Max. :11.210 Max. :10.319 Max. :10.802 \n HSPC_610 HSPC_612 HSPC_613 HSPC_614 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.315 \n Mean : 2.327 Mean : 2.298 Mean : 2.228 Mean : 2.364 \n 3rd Qu.: 3.718 3rd Qu.: 3.138 3rd Qu.: 2.705 3rd Qu.: 3.136 \n Max. :10.860 Max. :11.564 Max. :10.560 Max. :11.824 \n HSPC_615 HSPC_617 HSPC_618 HSPC_620 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.8525 Median : 0.000 Median : 0.000 \n Mean : 1.964 Mean : 2.2100 Mean : 2.229 Mean : 1.881 \n 3rd Qu.: 2.451 3rd Qu.: 2.3301 3rd Qu.: 2.885 3rd Qu.: 2.518 \n Max. :11.058 Max. :10.9434 Max. :11.210 Max. :11.388 \n HSPC_623 HSPC_624 HSPC_625 HSPC_626 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.7201 Median : 0.000 Median : 0.000 \n Mean : 2.563 Mean : 2.0968 Mean : 2.042 Mean : 2.262 \n 3rd Qu.: 4.626 3rd Qu.: 1.8437 3rd Qu.: 2.938 3rd Qu.: 3.424 \n Max. :10.954 Max. :10.9459 Max. :11.226 Max. :11.770 \n HSPC_627 HSPC_628 HSPC_629 HSPC_630 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.269 Mean : 2.302 Mean : 2.212 Mean : 2.519 \n 3rd Qu.: 3.952 3rd Qu.: 2.875 3rd Qu.: 2.625 3rd Qu.: 4.511 \n Max. :11.426 Max. :11.792 Max. :11.139 Max. :11.519 \n HSPC_631 HSPC_633 HSPC_634 HSPC_635 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.303 Mean : 2.329 Mean : 2.268 Mean : 2.054 \n 3rd Qu.: 2.685 3rd Qu.: 3.619 3rd Qu.: 3.662 3rd Qu.: 2.629 \n Max. :10.996 Max. :12.011 Max. :11.406 Max. :11.178 \n HSPC_636 HSPC_637 HSPC_638 HSPC_639 \n Min. : 0.000 Min. : 0.0000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.9389 Median : 0.5101 Median : 0.9966 \n Mean : 1.953 Mean : 2.1351 Mean : 1.6966 Mean : 1.5879 \n 3rd Qu.: 2.129 3rd Qu.: 2.4817 3rd Qu.: 1.6879 3rd Qu.: 1.6840 \n Max. :11.057 Max. :11.1881 Max. :10.8837 Max. :10.9561 \n HSPC_640 HSPC_641 HSPC_643 HSPC_644 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.025 Median : 1.000 Median : 1.706 Median : 0.4904 \n Mean : 2.136 Mean : 1.957 Mean : 2.468 Mean : 2.4726 \n 3rd Qu.: 2.119 3rd Qu.: 2.001 3rd Qu.: 3.329 3rd Qu.: 5.6227 \n Max. :11.173 Max. :11.056 Max. :12.016 Max. :11.0232 \n HSPC_645 HSPC_646 HSPC_648 HSPC_649 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.7157 Median : 0.9959 Median : 1.519 Median : 0.7139 \n Mean : 2.3517 Mean : 2.0594 Mean : 2.267 Mean : 2.3593 \n 3rd Qu.: 4.5630 3rd Qu.: 2.3154 3rd Qu.: 2.722 3rd Qu.: 4.1542 \n Max. :10.9922 Max. :11.6070 Max. :11.243 Max. :10.7707 \n HSPC_651 HSPC_652 HSPC_654 HSPC_656 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. :0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 \n Median : 0.000 Median : 0.000 Median : 1.398 Median :0.000 \n Mean : 2.550 Mean : 1.764 Mean : 2.108 Mean :1.983 \n 3rd Qu.: 5.615 3rd Qu.: 2.038 3rd Qu.: 2.562 3rd Qu.:2.505 \n Max. :11.202 Max. :10.897 Max. :10.367 Max. :9.673 \n HSPC_657 HSPC_658 HSPC_660 HSPC_661 \n Min. : 0.000 Min. : 0.000 Min. :0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median :1.253 Median : 1.491 \n Mean : 1.839 Mean : 2.319 Mean :2.542 Mean : 2.401 \n 3rd Qu.: 2.239 3rd Qu.: 4.021 3rd Qu.:5.274 3rd Qu.: 2.775 \n Max. :12.132 Max. :11.264 Max. :9.852 Max. :11.647 \n HSPC_662 HSPC_663 HSPC_664 HSPC_665 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 0.9407 Median : 0.6452 \n Mean : 2.298 Mean : 2.726 Mean : 2.4039 Mean : 2.1211 \n 3rd Qu.: 2.939 3rd Qu.: 6.519 3rd Qu.: 3.4095 3rd Qu.: 2.0744 \n Max. :11.277 Max. :12.152 Max. :10.9423 Max. :12.0111 \n HSPC_666 HSPC_667 HSPC_668 HSPC_669 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.130 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.815 Mean : 2.075 Mean : 2.245 Mean : 1.992 \n 3rd Qu.: 6.359 3rd Qu.: 2.549 3rd Qu.: 2.407 3rd Qu.: 2.426 \n Max. :11.052 Max. :11.406 Max. :11.061 Max. :11.752 \n HSPC_670 HSPC_671 HSPC_672 HSPC_673 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.336 Mean : 2.349 Mean : 2.041 Mean : 2.148 \n 3rd Qu.: 3.188 3rd Qu.: 3.777 3rd Qu.: 2.057 3rd Qu.: 2.723 \n Max. :11.021 Max. :10.846 Max. :11.212 Max. :11.579 \n HSPC_674 HSPC_676 HSPC_678 HSPC_679 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.525 Median : 1.531 \n Mean : 1.801 Mean : 2.239 Mean : 2.298 Mean : 2.133 \n 3rd Qu.: 1.892 3rd Qu.: 3.097 3rd Qu.: 3.089 3rd Qu.: 2.737 \n Max. :10.875 Max. :10.496 Max. :12.125 Max. :11.583 \n HSPC_680 HSPC_681 HSPC_682 HSPC_683 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.037 Median : 1.043 Median : 1.180 \n Mean : 2.573 Mean : 2.277 Mean : 2.586 Mean : 2.498 \n 3rd Qu.: 4.165 3rd Qu.: 4.210 3rd Qu.: 5.432 3rd Qu.: 3.929 \n Max. :11.100 Max. :10.154 Max. :11.095 Max. :10.859 \n HSPC_687 HSPC_689 HSPC_690 HSPC_692 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 2.091 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.136 Mean : 2.489 Mean : 2.686 Mean : 2.285 \n 3rd Qu.: 2.911 3rd Qu.: 4.106 3rd Qu.: 5.055 3rd Qu.: 3.427 \n Max. :11.380 Max. :10.693 Max. :10.408 Max. :12.242 \n HSPC_695 HSPC_696 HSPC_697 HSPC_698 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.2681 Median : 1.538 Median : 1.271 Median : 0.000 \n Mean : 1.6151 Mean : 2.688 Mean : 2.529 Mean : 2.531 \n 3rd Qu.: 0.6895 3rd Qu.: 5.560 3rd Qu.: 4.779 3rd Qu.: 4.387 \n Max. :12.4139 Max. :10.880 Max. :10.292 Max. :12.146 \n HSPC_699 HSPC_700 HSPC_701 HSPC_702 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 1.157 Median : 0.000 \n Mean : 2.586 Mean : 2.402 Mean : 2.401 Mean : 2.723 \n 3rd Qu.: 4.595 3rd Qu.: 4.797 3rd Qu.: 3.889 3rd Qu.: 4.822 \n Max. :11.389 Max. :10.630 Max. :11.750 Max. :11.805 \n HSPC_703 HSPC_704 HSPC_705 HSPC_706 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 2.193 Median : 0.000 Median : 0.9795 Median : 1.273 \n Mean : 2.543 Mean : 2.598 Mean : 2.5048 Mean : 2.364 \n 3rd Qu.: 3.935 3rd Qu.: 4.335 3rd Qu.: 5.0680 3rd Qu.: 3.492 \n Max. :11.710 Max. :11.488 Max. :11.3580 Max. :10.447 \n HSPC_707 HSPC_708 HSPC_709 HSPC_714 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.361 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.371 Mean : 2.509 Mean : 2.601 Mean : 2.326 \n 3rd Qu.: 3.626 3rd Qu.: 3.832 3rd Qu.: 5.060 3rd Qu.: 3.324 \n Max. :11.796 Max. :10.865 Max. :10.145 Max. :11.126 \n HSPC_716 HSPC_717 HSPC_719 HSPC_720 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 1.154 Median : 1.855 Median : 0.8206 \n Mean : 2.325 Mean : 2.302 Mean : 2.519 Mean : 2.5768 \n 3rd Qu.: 3.356 3rd Qu.: 2.833 3rd Qu.: 4.115 3rd Qu.: 5.5594 \n Max. :11.812 Max. :11.047 Max. :12.237 Max. :10.5895 \n HSPC_721 HSPC_722 HSPC_723 HSPC_724 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 2.113 Median : 1.185 Median : 0.8421 Median : 0.6485 \n Mean : 2.205 Mean : 1.814 Mean : 2.6174 Mean : 1.9644 \n 3rd Qu.: 3.456 3rd Qu.: 2.269 3rd Qu.: 4.9545 3rd Qu.: 1.9402 \n Max. :10.706 Max. :10.709 Max. :11.5956 Max. :11.3505 \n HSPC_725 HSPC_727 HSPC_729 HSPC_730 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 1.577 Median : 1.576 Median : 0.9579 Median : 1.135 \n Mean : 2.483 Mean : 2.436 Mean : 2.2448 Mean : 2.445 \n 3rd Qu.: 3.741 3rd Qu.: 3.447 3rd Qu.: 2.7343 3rd Qu.: 3.475 \n Max. :10.647 Max. :11.512 Max. :10.9657 Max. :11.121 \n HSPC_731 HSPC_732 HSPC_733 HSPC_734 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.130 Median : 0.6937 Median : 1.436 Median : 0.7333 \n Mean : 2.854 Mean : 2.1051 Mean : 2.489 Mean : 2.5404 \n 3rd Qu.: 6.019 3rd Qu.: 2.0311 3rd Qu.: 3.738 3rd Qu.: 5.6282 \n Max. :10.471 Max. :11.0494 Max. :10.929 Max. :10.4547 \n HSPC_735 HSPC_736 HSPC_737 HSPC_738 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.033 Median : 0.6789 Median : 1.185 Median : 1.514 \n Mean : 2.389 Mean : 2.0224 Mean : 2.722 Mean : 2.503 \n 3rd Qu.: 3.056 3rd Qu.: 2.0017 3rd Qu.: 5.669 3rd Qu.: 3.602 \n Max. :10.866 Max. :11.8100 Max. :11.076 Max. :10.473 \n HSPC_740 HSPC_742 HSPC_743 HSPC_744 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.8437 Median : 1.122 Median : 1.213 \n Mean : 2.506 Mean : 1.8949 Mean : 2.028 Mean : 2.048 \n 3rd Qu.: 3.794 3rd Qu.: 1.7586 3rd Qu.: 2.840 3rd Qu.: 2.309 \n Max. :10.618 Max. :11.6327 Max. :10.449 Max. :10.598 \n HSPC_745 HSPC_746 HSPC_747 HSPC_748 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 2.403 Median : 2.184 Median : 0.000 Median : 1.181 \n Mean : 2.309 Mean : 2.153 Mean : 2.543 Mean : 2.017 \n 3rd Qu.: 3.793 3rd Qu.: 3.016 3rd Qu.: 4.751 3rd Qu.: 2.264 \n Max. :10.882 Max. :10.988 Max. :10.860 Max. :12.153 \n HSPC_749 HSPC_750 HSPC_751 HSPC_752 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.444 Median : 1.030 Median : 1.567 Median : 2.228 \n Mean : 2.477 Mean : 2.370 Mean : 2.416 Mean : 2.529 \n 3rd Qu.: 3.501 3rd Qu.: 3.052 3rd Qu.: 3.435 3rd Qu.: 3.976 \n Max. :11.391 Max. :11.167 Max. :10.239 Max. :10.586 \n HSPC_753 HSPC_755 HSPC_756 HSPC_757 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.062 Median : 0.740 Median : 1.731 Median : 1.395 \n Mean : 2.313 Mean : 2.102 Mean : 2.592 Mean : 2.477 \n 3rd Qu.: 2.961 3rd Qu.: 2.509 3rd Qu.: 4.107 3rd Qu.: 3.253 \n Max. :11.202 Max. :10.559 Max. :10.783 Max. :10.973 \n HSPC_758 HSPC_759 HSPC_760 HSPC_761 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.8648 Median : 0.9415 Median : 1.052 Median : 0.6917 \n Mean : 2.6819 Mean : 2.1274 Mean : 2.288 Mean : 2.2992 \n 3rd Qu.: 4.7233 3rd Qu.: 2.2271 3rd Qu.: 2.404 3rd Qu.: 2.6015 \n Max. :11.1096 Max. :11.2534 Max. :11.008 Max. :11.7228 \n HSPC_762 HSPC_764 HSPC_765 HSPC_766 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 1.271 Median : 1.784 Median : 2.116 Median : 0.9828 \n Mean : 2.242 Mean : 2.068 Mean : 2.100 Mean : 2.1721 \n 3rd Qu.: 2.734 3rd Qu.: 3.059 3rd Qu.: 2.939 3rd Qu.: 2.6115 \n Max. :12.043 Max. :11.003 Max. :12.757 Max. :10.2002 \n HSPC_767 HSPC_768 HSPC_769 HSPC_770 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.6646 Median : 1.703 Median : 0.000 Median : 1.760 \n Mean : 1.9552 Mean : 2.365 Mean : 2.080 Mean : 2.343 \n 3rd Qu.: 1.9730 3rd Qu.: 3.325 3rd Qu.: 3.289 3rd Qu.: 3.122 \n Max. :11.3033 Max. :10.958 Max. :11.176 Max. :10.497 \n HSPC_771 HSPC_772 HSPC_773 HSPC_774 \n Min. : 0.000 Min. : 0.000 Min. : 0.0000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.0000 \n Median : 1.178 Median : 1.601 Median : 0.9901 Median : 0.9736 \n Mean : 2.527 Mean : 2.283 Mean : 1.8628 Mean : 2.5263 \n 3rd Qu.: 3.342 3rd Qu.: 2.828 3rd Qu.: 1.9851 3rd Qu.: 5.4694 \n Max. :11.156 Max. :10.625 Max. :10.7274 Max. :10.7701 \n HSPC_776 HSPC_777 HSPC_778 HSPC_780 \n Min. : 0.000 Min. : 0.000 Min. :0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.053 Median :1.435 Median : 1.178 \n Mean : 2.315 Mean : 2.110 Mean :2.130 Mean : 2.476 \n 3rd Qu.: 3.788 3rd Qu.: 2.673 3rd Qu.:3.488 3rd Qu.: 3.769 \n Max. :11.105 Max. :11.646 Max. :9.535 Max. :11.265 \n HSPC_781 HSPC_782 HSPC_783 HSPC_784 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.050 \n Mean : 1.911 Mean : 2.416 Mean : 2.254 Mean : 2.175 \n 3rd Qu.: 2.884 3rd Qu.: 3.872 3rd Qu.: 2.548 3rd Qu.: 2.468 \n Max. :11.445 Max. :10.161 Max. :10.970 Max. :10.958 \n HSPC_785 HSPC_786 HSPC_787 HSPC_788 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 1.148 Median : 0.000 Median : 0.9386 \n Mean : 2.230 Mean : 2.467 Mean : 2.100 Mean : 1.9749 \n 3rd Qu.: 2.466 3rd Qu.: 3.899 3rd Qu.: 2.991 3rd Qu.: 2.6662 \n Max. :11.041 Max. :11.080 Max. :10.690 Max. :11.1078 \n HSPC_789 HSPC_790 HSPC_791 HSPC_794 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.181 Median : 1.353 Median : 1.790 Median : 1.113 \n Mean : 2.225 Mean : 2.255 Mean : 2.699 Mean : 2.225 \n 3rd Qu.: 2.876 3rd Qu.: 2.852 3rd Qu.: 4.931 3rd Qu.: 2.768 \n Max. :11.245 Max. :11.558 Max. :11.104 Max. :11.118 \n HSPC_795 HSPC_796 HSPC_797 HSPC_798 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.8317 Median : 0.7001 Median : 0.8722 Median : 1.531 \n Mean : 2.3985 Mean : 2.6865 Mean : 2.6172 Mean : 2.485 \n 3rd Qu.: 3.4461 3rd Qu.: 5.6688 3rd Qu.: 5.3078 3rd Qu.: 3.098 \n Max. :11.0956 Max. :11.0829 Max. :11.4339 Max. :10.933 \n HSPC_799 HSPC_800 HSPC_801 HSPC_802 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 1.033 \n Mean : 2.179 Mean : 2.173 Mean : 2.427 Mean : 2.613 \n 3rd Qu.: 3.517 3rd Qu.: 2.865 3rd Qu.: 4.665 3rd Qu.: 3.780 \n Max. :11.666 Max. :11.263 Max. :10.905 Max. :10.864 \n HSPC_803 HSPC_804 HSPC_806 HSPC_807 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.000 Median : 0.000 Median : 2.103 Median : 0.7501 \n Mean : 2.395 Mean : 2.301 Mean : 2.222 Mean : 2.2476 \n 3rd Qu.: 3.883 3rd Qu.: 3.167 3rd Qu.: 3.445 3rd Qu.: 2.3481 \n Max. :10.766 Max. :11.298 Max. :10.326 Max. :11.2700 \n HSPC_808 HSPC_809 HSPC_810 HSPC_812 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Median : 0.6619 Median : 1.788 Median : 1.651 Median : 0.8459 \n Mean : 2.1677 Mean : 2.544 Mean : 2.471 Mean : 2.2960 \n 3rd Qu.: 2.5355 3rd Qu.: 3.730 3rd Qu.: 3.662 3rd Qu.: 2.6906 \n Max. :10.9302 Max. :11.791 Max. :10.829 Max. :11.5500 \n HSPC_813 HSPC_814 HSPC_815 HSPC_816 \n Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.6278 Median : 1.110 Median : 0.9631 Median : 1.346 \n Mean : 2.2448 Mean : 2.762 Mean : 2.4587 Mean : 2.341 \n 3rd Qu.: 2.3066 3rd Qu.: 5.996 3rd Qu.: 3.4228 3rd Qu.: 2.842 \n Max. :12.0043 Max. :10.406 Max. :11.4527 Max. :11.151 \n HSPC_818 HSPC_819 HSPC_820 HSPC_821 \n Min. : 0.0000 Min. : 0.000 Min. : 0.0000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 \n Median : 0.9967 Median : 1.365 Median : 0.8099 Median : 1.382 \n Mean : 2.3081 Mean : 2.426 Mean : 2.1063 Mean : 2.532 \n 3rd Qu.: 2.9942 3rd Qu.: 3.632 3rd Qu.: 2.4643 3rd Qu.: 3.462 \n Max. :11.9931 Max. :10.672 Max. :11.2412 Max. :12.126 \n HSPC_822 HSPC_824 HSPC_825 HSPC_826 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.387 Median : 0.000 Median : 1.386 Median : 1.324 \n Mean : 2.503 Mean : 2.084 Mean : 2.162 Mean : 2.398 \n 3rd Qu.: 3.799 3rd Qu.: 2.342 3rd Qu.: 2.897 3rd Qu.: 3.150 \n Max. :11.892 Max. :11.365 Max. :11.498 Max. :11.198 \n HSPC_827 HSPC_828 HSPC_831 HSPC_832 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.746 Median : 1.003 Median : 1.304 Median : 1.035 \n Mean : 2.239 Mean : 2.145 Mean : 2.589 Mean : 2.384 \n 3rd Qu.: 2.638 3rd Qu.: 2.326 3rd Qu.: 3.866 3rd Qu.: 3.450 \n Max. :12.101 Max. :10.710 Max. :10.839 Max. :10.686 \n HSPC_833 HSPC_834 HSPC_835 HSPC_836 \n Min. : 0.0000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.7166 Median : 0.9245 Median : 1.006 Median : 0.000 \n Mean : 2.3553 Mean : 2.0872 Mean : 2.552 Mean : 2.471 \n 3rd Qu.: 3.9364 3rd Qu.: 2.4568 3rd Qu.: 4.034 3rd Qu.: 3.994 \n Max. :11.1695 Max. :11.1803 Max. :11.779 Max. :11.316 \n HSPC_837 HSPC_838 HSPC_839 HSPC_840 \n Min. : 0.000 Min. : 0.0000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.312 Median : 0.9838 Median : 1.083 Median : 1.867 \n Mean : 2.590 Mean : 2.5281 Mean : 2.380 Mean : 2.548 \n 3rd Qu.: 4.443 3rd Qu.: 3.5551 3rd Qu.: 3.743 3rd Qu.: 3.609 \n Max. :10.672 Max. :11.2707 Max. :10.966 Max. :10.867 \n HSPC_841 HSPC_842 HSPC_843 HSPC_844 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.439 Median : 1.774 Median : 1.257 Median : 1.584 \n Mean : 2.408 Mean : 2.380 Mean : 2.845 Mean : 2.627 \n 3rd Qu.: 3.494 3rd Qu.: 3.490 3rd Qu.: 6.768 3rd Qu.: 3.951 \n Max. :10.930 Max. :11.137 Max. :11.933 Max. :11.446 \n HSPC_845 HSPC_846 HSPC_848 HSPC_849 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 1.227 Median : 1.401 Median : 0.000 Median : 1.602 \n Mean : 2.464 Mean : 2.240 Mean : 2.152 Mean : 2.402 \n 3rd Qu.: 3.377 3rd Qu.: 2.920 3rd Qu.: 2.554 3rd Qu.: 2.920 \n Max. :10.535 Max. :11.519 Max. :11.266 Max. :11.678 \n HSPC_851 HSPC_852 \n Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 \n Mean : 2.319 Mean : 2.143 \n 3rd Qu.: 3.373 3rd Qu.: 2.901 \n Max. :11.602 Max. :11.469 \n\n\nHmmmm, did you get all that? Nope, me neither! We have 701 cells but we only have 6 samples for the frogs. We will need a different approach to get an overview but I find it is still useful to look at the few columns\n🎬 Get a quick overview the first 20 columns:\n\nsummary(hspc[1:20])\n\n ensembl_gene_id HSPC_001 HSPC_002 HSPC_003 \n Length:280 Min. : 0.000 Min. : 0.000 Min. : 0.0000 \n Class :character 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.0000 \n Mode :character Median : 0.000 Median : 0.000 Median : 0.9929 \n Mean : 2.143 Mean : 1.673 Mean : 2.5964 \n 3rd Qu.: 2.120 3rd Qu.: 2.239 3rd Qu.: 6.1559 \n Max. :12.567 Max. :11.976 Max. :11.1138 \n HSPC_004 HSPC_006 HSPC_008 HSPC_009 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. :0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.:0.000 \n Median : 0.000 Median : 1.276 Median : 0.000 Median :0.000 \n Mean : 1.851 Mean : 2.338 Mean : 2.375 Mean :2.220 \n 3rd Qu.: 2.466 3rd Qu.: 3.536 3rd Qu.: 3.851 3rd Qu.:3.594 \n Max. :11.133 Max. :10.014 Max. :11.574 Max. :9.997 \n HSPC_011 HSPC_012 HSPC_014 HSPC_015 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 1.750 Median : 0.000 Median : 0.000 \n Mean : 2.285 Mean : 2.431 Mean : 2.295 Mean : 2.515 \n 3rd Qu.: 3.193 3rd Qu.: 3.741 3rd Qu.: 3.150 3rd Qu.: 3.789 \n Max. :11.260 Max. :10.905 Max. :11.051 Max. :10.751 \n HSPC_016 HSPC_017 HSPC_018 HSPC_020 \n Min. : 0.0000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.0000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.9488 Median : 0.000 Median : 1.248 Median : 0.000 \n Mean : 2.6115 Mean : 2.146 Mean : 2.710 Mean : 2.509 \n 3rd Qu.: 5.9412 3rd Qu.: 2.357 3rd Qu.: 6.006 3rd Qu.: 4.470 \n Max. :11.3082 Max. :12.058 Max. :11.894 Max. :11.281 \n HSPC_021 HSPC_022 HSPC_023 HSPC_024 \n Min. : 0.000 Min. : 0.000 Min. : 0.000 Min. : 0.000 \n 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 1st Qu.: 0.000 \n Median : 0.000 Median : 0.000 Median : 0.000 Median : 0.000 \n Mean : 2.170 Mean : 2.287 Mean : 2.314 Mean : 2.195 \n 3rd Qu.: 2.996 3rd Qu.: 3.351 3rd Qu.: 2.749 3rd Qu.: 2.944 \n Max. :10.709 Max. :11.814 Max. :12.113 Max. :11.279 \n\n\nNotice that:\n\nthe maximum value is much less high than for the frogs and has decimals. That is because the mouse data are logged (to base 2) normalised counts, not raw counts as they are in the frog data set.\na minimum value of 0 appears in all 20 columns - perhaps that is true across the whole dataset (or at least common)\nat least some of the medians are zeros so there must be quite a lot of zeros\nthe few columns we can see are roughly similar\nit would not be very practical to plot the distributions of values in cell cell using facet_wrap().\n\nIn this data set, there is even more of an advantage of using the pivot_longer(), group_by() and summarise() approach. We will be able to open the dataframe in the Viewer and make plots to examine whether the distributions are similar across cells.\n🎬 Summarise all the cells:\n\nhspc_summary_samp <- hspc |>\n pivot_longer(cols = -ensembl_gene_id,\n names_to = \"cell\",\n values_to = \"expr\") |>\n group_by(cell) |>\n summarise(min = min(expr),\n lowerq = quantile(expr, 0.25),\n mean = mean(expr),\n median = median(expr),\n sd = sd(expr),\n upperq = quantile(expr, 0.75),\n max = max(expr),\n n_zero = sum(expr == 0))\n\nNotice that I have used cell as the column name rather than sample and expr (expression) rather than count. I’ve also added the standard deviation.\n🎬 View the hspc_summary_samp dataframe (click on it in the environment).\nAll cells have quite a few zeros and the lower quartile is 0 for all cells, i.e., every cell has many genes with zero expression.\nTo get a better understanding of the distribution of expressions in cells we can create a ggplot using the pointrange geom. Pointrange puts a dot at the mean and a line between a minimum and a maximum such as +/- one s.d. Not unlike a boxplot, but when you need the boxes too be very narrow!\n🎬 Create a pointrange plot.\n\nhspc_summary_samp |> \n ggplot(aes(x = cell, y = mean)) +\n geom_pointrange(aes(ymin = mean - sd, \n ymax = mean + sd ),\n size = 0.1)\n\n\n\n\n\n\n\nYou will need to use the Zoom button to pop the plot window out so you can make it as wide as possible\nThe things to notice are:\n\nthe average expression in cells is similar for all cells. This is good to know - if some cells had much lower expression perhaps there is something wrong with them, or their sequencing, and they should be excluded.\nthe distributions are roughly similar in width too\n\nThe default order of cell is alphabetical. It can be easier to see these (non-) effects if we order the lines by the size of the mean.\n🎬 Order a pointrange plot with reorder(variable_to_order, order_by).\n\nhspc_summary_samp |> \n ggplot(aes(x = reorder(cell, mean), y = mean)) +\n geom_pointrange(aes(ymin = mean - sd, \n ymax = mean + sd ),\n size = 0.1)\n\n\n\n\n\n\n\nreorder() arranges cell in increasing size of mean\n🎬 Write hspc_summary_samp to a file called “hspc_summary_samp.csv”:\nDistribution of values across the genes\n🐸 Frog genes\nThere are lots of genes in this dataset therefore we will take the same approach as that we took for the distributions across mouse cells. We will pivot the data to tidy and then summarise the counts for each gene.\n🎬 Summarise the counts for each genes:\n\ns30_summary_gene <- s30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n group_by(xenbase_gene_id) |>\n summarise(min = min(count),\n lowerq = quantile(count, 0.25),\n sd = sd(count),\n mean = mean(count),\n median = median(count),\n upperq = quantile(count, 0.75),\n max = max(count),\n total = sum(count),\n n_zero = sum(count == 0))\n\nI have calculated the values we used before with one addition: the sum of the counts (total).\n🎬 View the s30_summary_gene dataframe.\nNotice that we have:\n\na lot of genes with counts of zero in every sample\na lot of genes with zero counts in several of the samples\nsome very very low counts.\n\nThese should be filtered out because they are unreliable - or, at the least, uninformative. The goal of our downstream analysis will be to see if there is a significant difference in gene expression between the control and FGF-treated sibling. Since we have only three replicates in each group, having one or two unreliable, missing or zero values, makes such a determination impossible for a particular gene. We will use the total counts and the number of samples with non-zero values to filter our genes later.\nAs we have a lot of genes, it is again helpful to plot the mean counts with pointrange to get an overview. We will plot the log of the counts - we saw earlier that logging made it easier to understand the distribution of counts over such a wide range. We will also order the genes from lowest to highest mean count.\n🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():\n\ns30_summary_gene |> \n ggplot(aes(x = reorder(xenbase_gene_id, mean), y = log10(mean))) +\n geom_pointrange(aes(ymin = log10(mean - sd), \n ymax = log10(mean + sd )),\n size = 0.1)\n\n\n\n\n\n\n\n(Remember, the warning is expected since we have zeros).\nYou can see we also have quite a few genes with means less than 1 (log below zero). Note that the variability between genes (average counts between 0 and 102586) is far greater than between samples (average counts from 260 to 426) which is exactly what we would expect to see.\n🎬 Write s30_summary_gene to a file called “s30_summary_gene.csv”:\n🐭 Mouse genes\nThere are fewer genes in this dataset, but still more than you can understand without the overview provided by a plot. We will again pivot the data to tidy and then summarise the expression for each gene.\n🎬 Summarise the expression for each genes:\n\nhspc_summary_gene <- hspc |>\n pivot_longer(cols = -ensembl_gene_id,\n names_to = \"cell\",\n values_to = \"expr\") |>\n group_by(ensembl_gene_id) |>\n summarise(min = min(expr),\n lowerq = quantile(expr, 0.25),\n sd = sd(expr),\n mean = mean(expr),\n median = median(expr),\n upperq = quantile(expr, 0.75),\n max = max(expr),\n total = sum(expr),\n n_zero = sum(expr == 0))\n\n🎬 View the hspc_summary_gene dataframe. Remember these are normalised and logged (base 2) so we should not see very large values.\nNotice that we have:\n\nno genes with 0 in every cell\nvery few genes (9) with no zeros at all\nquite a few genes with zero in many cells but this matters less than zeros in the frog samples because we had just 6 samples and we have 701 cells.\n\nAs we have a lot of genes, it is again helpful to plot the mean expression with pointrange to get an overview. We do not need to log the values but ordering the genes will help.\n🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():\n\nhspc_summary_gene |> \n ggplot(aes(x = reorder(ensembl_gene_id, mean), y = mean)) +\n geom_pointrange(aes(ymin = mean - sd, \n ymax = mean + sd),\n size = 0.1)\n\n\n\n\n\n\n\nNote again that the variability between genes (average expression between 0.02 and and 10.03) is far greater than between cells (average expression from1.46 to 3.18) which is expected.\n🎬 Write s30_summary_gene to a file called “s30_summary_gene.csv”:", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] + "section": "RStudio terminal", + "text": "RStudio terminal\nThe RStudio terminal is a convenient interface to the shell without leaving RStudio. It is useful for running commands that are not available in R. For example, you can use it to run other programs like fasqc, git, ftp, ssh\nNavigating your file system\nSeveral commands are frequently used to create, inspect, rename, and delete files and directories.\n$\nThe dollar sign is the prompt (like > on the R console), which shows us that the shell is waiting for input.\nYou can find out where you are using the pwd command, which stands for “print working directory”.\n\npwd\n\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old\n\n\nYou can find out what you can see with ls which stands for “list”.\n\nls\n\ndata\nimages\noverview.html\noverview.qmd\nstudy_after_workshop.qmd\nstudy_before_workshop.ipynb\nstudy_before_workshop.qmd\nworkshop.html\nworkshop.qmd\nworkshop.rmarkdown\nworkshop_files\n\n\nYou might have noticed that unlike R, the commands do not have brackets after them. Instead, options (or switches) are given after the command. For example, we can modify the ls command to give us more information with the -l option, which stands for “long”.\n\nls -l\n\ntotal 156\ndrwxr-xr-x 2 runner docker 4096 Oct 2 14:01 data\ndrwxr-xr-x 2 runner docker 4096 Oct 2 14:01 images\n-rw-r--r-- 1 runner docker 24690 Oct 2 14:12 overview.html\n-rw-r--r-- 1 runner docker 1597 Oct 2 14:01 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 2 14:01 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4807 Oct 2 14:01 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13029 Oct 2 14:01 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 58063 Oct 2 14:01 workshop.html\n-rw-r--r-- 1 runner docker 8550 Oct 2 14:01 workshop.qmd\n-rw-r--r-- 1 runner docker 8590 Oct 2 14:12 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4096 Oct 2 14:01 workshop_files\n\n\nYou can use more than one option at once. The -h option stands for “human readable” and makes the file sizes easier to understand for humans:\n\nls -hl\n\ntotal 156K\ndrwxr-xr-x 2 runner docker 4.0K Oct 2 14:01 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 2 14:01 images\n-rw-r--r-- 1 runner docker 25K Oct 2 14:12 overview.html\n-rw-r--r-- 1 runner docker 1.6K Oct 2 14:01 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 2 14:01 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 2 14:01 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 2 14:01 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 2 14:01 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 2 14:01 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 2 14:12 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 2 14:01 workshop_files\n\n\nThe -a option stands for “all” and shows us all the files, including hidden files.\n\nls -alh\n\ntotal 164K\ndrwxr-xr-x 5 runner docker 4.0K Oct 2 14:12 .\ndrwxr-xr-x 8 runner docker 4.0K Oct 2 14:01 ..\ndrwxr-xr-x 2 runner docker 4.0K Oct 2 14:01 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 2 14:01 images\n-rw-r--r-- 1 runner docker 25K Oct 2 14:12 overview.html\n-rw-r--r-- 1 runner docker 1.6K Oct 2 14:01 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 2 14:01 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 2 14:01 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 2 14:01 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 2 14:01 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 2 14:01 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 2 14:12 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 2 14:01 workshop_files\n\n\nYou can move about with the cd command, which stands for “change directory”. You can use it to move into a directory by specifying the path to the directory:\n\ncd data\npwd\ncd ..\npwd\ncd data\npwd\n\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old/data\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old/data\n\n\nhead 1cq2.pdb\nHEADER OXYGEN STORAGE/TRANSPORT 04-AUG-99 1CQ2 \nTITLE NEUTRON STRUCTURE OF FULLY DEUTERATED SPERM WHALE MYOGLOBIN AT 2.0 \nTITLE 2 ANGSTROM \nCOMPND MOL_ID: 1; \nCOMPND 2 MOLECULE: MYOGLOBIN; \nCOMPND 3 CHAIN: A; \nCOMPND 4 ENGINEERED: YES; \nCOMPND 5 OTHER_DETAILS: PROTEIN IS FULLY DEUTERATED \nSOURCE MOL_ID: 1; \nSOURCE 2 ORGANISM_SCIENTIFIC: PHYSETER CATODON; \nhead -20 data/1cq2.pdb\nHEADER OXYGEN STORAGE/TRANSPORT 04-AUG-99 1CQ2 \nTITLE NEUTRON STRUCTURE OF FULLY DEUTERATED SPERM WHALE MYOGLOBIN AT 2.0 \nTITLE 2 ANGSTROM \nCOMPND MOL_ID: 1; \nCOMPND 2 MOLECULE: MYOGLOBIN; \nCOMPND 3 CHAIN: A; \nCOMPND 4 ENGINEERED: YES; \nCOMPND 5 OTHER_DETAILS: PROTEIN IS FULLY DEUTERATED \nSOURCE MOL_ID: 1; \nSOURCE 2 ORGANISM_SCIENTIFIC: PHYSETER CATODON; \nSOURCE 3 ORGANISM_COMMON: SPERM WHALE; \nSOURCE 4 ORGANISM_TAXID: 9755; \nSOURCE 5 EXPRESSION_SYSTEM: ESCHERICHIA COLI; \nSOURCE 6 EXPRESSION_SYSTEM_TAXID: 562; \nSOURCE 7 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID; \nSOURCE 8 EXPRESSION_SYSTEM_PLASMID: PET15A \nKEYWDS HELICAL, GLOBULAR, ALL-HYDROGEN CONTAINING STRUCTURE, OXYGEN STORAGE- \nKEYWDS 2 TRANSPORT COMPLEX \nEXPDTA NEUTRON DIFFRACTION \nAUTHOR F.SHU,V.RAMAKRISHNAN,B.P.SCHOENBORN \nless 1cq2.pdb\nless is a program that displays the contents of a file, one page at a time. It is useful for viewing large files because it does not load the whole file into memory before displaying it. Instead, it reads and displays a few lines at a time. You can navigate forward through the file with the spacebar, and backwards with the b key. Press q to quit.\nA wildcard is a character that can be used as a substitute for any of a class of characters in a search, The most common wildcard characters are the asterisk (*) and the question mark (?).\nls *.csv\ncp stands for “copy”. You can copy a file from one directory to another by giving cp the path to the file you want to copy and the path to the destination directory.\ncp 1cq2.pdb copy_of_1cq2.pdb\ncp 1cq2.pdb ../copy_of_1cq2.pdb\ncp 1cq2.pdb ../bob.txt\nTo delete a file use the rm command, which stands for “remove”.\nrm ../bob.txt\nbut be careful because the file will be gone forever. There is no “are you sure?” or undo.\nTo move a file from one directory to another, use the mv command. mv works like cp except that it also deletes the original file.\nmv ../copy_of_1cq2.pdb .\nMake a directory\nmkdir mynewdir" }, { - "objectID": "transcriptomics/week-3/workshop.html#filtering-for-qc", - "href": "transcriptomics/week-3/workshop.html#filtering-for-qc", + "objectID": "core/week-2-old/workshop.html#differences-between-r-and-python", + "href": "core/week-2-old/workshop.html#differences-between-r-and-python", "title": "Workshop", - "section": "Filtering for QC", - "text": "Filtering for QC\n🐸 Frog filtering\nOur samples look to be similarly well sequenced. There are no samples we should remove. However, some genes are not express or the expression values are so low in for a gene that they are uninformative. We will filter the s30_summary_gene dataframe to obtain a list of xenbase_gene_id we can use to filter s30.\nMy suggestion is to include only the genes with counts in at least 3 samples3 and those with total counts above 20.\n🎬 Filter the summary by gene dataframe:\n\ns30_summary_gene_filtered <- s30_summary_gene |> \n filter(total > 20) |> \n filter(n_zero < 4)\n\n🎬 Write the filtered summary by gene to file:\n\nwrite_csv(s30_summary_gene_filtered, \n file = \"data-processed/s30_summary_gene_filtered.csv\")\n\n🎬 Use the list of xenbase_gene_id in the filtered summary to filter the original dataset:\n\ns30_filtered <- s30 |> \n filter(xenbase_gene_id %in% s30_summary_gene_filtered$xenbase_gene_id)\n\n🎬 Write the filtered original to file:\n\nwrite_csv(s30_filtered, \n file = \"data-processed/s30_filtered.csv\")\n\n🐭 Mouse filtering\nWe will take a different approach to filtering the single cell data. For the Frog samples we are examining the control and the FGF treated samples. This means have a low number of counts overall means the gene is not really expressed (detected) in any condition, and filtering out those genes is removing things that definitely are not interesting. For the mice, we have examined only one cell type but will be making comparisons between cells types. It may be that low expression of a gene in this cell type tells us something if that gene is highly expressed in another cell type. Instead, we will make statistical comparisons between the cell types and then filter based on overall expression, the difference in expression between cell types and whether that difference is significant.\nThe number of “replicates” is also important. When you have only three in each group it is not possible to make statistical comparisons when several replicates are zero. This is less of an issue with single cell data.", + "section": "Differences between R and python", + "text": "Differences between R and python\nDemo\nYou’re finished!" + }, + { + "objectID": "core/week-2/study_after_workshop.html", + "href": "core/week-2/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "These are suggestions\n\nWant github co-pilot?\n🎬 Create a GitHub account\n🎬 Apply for student benefits\nUpdate R and RStudio\n🎬 Update R\n🎬 Update RStudio.\nInstall package building tools\n🎬 Windows Install Rtools\n🎬 Mac install Xcode from Mac App Store\nUpdate packages:\n🎬 devtools, tidyverse, BiocManager, readxl", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#look-after-future-you", - "href": "transcriptomics/week-3/workshop.html#look-after-future-you", + "objectID": "core/week-2/workshop.html#session-overview", + "href": "core/week-2/workshop.html#session-overview", "title": "Workshop", - "section": "🤗 Look after future you!", - "text": "🤗 Look after future you!\nYou need only do the section for your own project data\n🐸 Frogs and future you\n🎬 Create a new Project, frogs-88H, populated with folders and your data. Make a script file called cont-fgf-s30.R. This will a be commented analysis of the control vs FGF at S30 comparison. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.\n🐭 Mice and future you\n🎬 Create a new Project, mice-88H, populated with folders and your data. Make a script file called hspc-prog.R. This will a be commented analysis of the hspc cells vs the prog cells. At this point you will have only code for the hspc cells. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.\n🍂 xxxx and future you", + "section": "Session overview", + "text": "Session overview\nIn this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:\n\n\nWhat is reproducibility\nHow to achieve reproducibility\nRationale for scripting\nProject-oriented workflow\nCode formatting and style\nCoding algorithmically\nNaming things\nAnd some handy workflow tips", "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", + "Core Supporting Info", + "Week 2: Supporting Information 1", "Workshop" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#footnotes", - "href": "transcriptomics/week-3/workshop.html#footnotes", + "objectID": "core/week-2/workshop.html#what-is-reproducibility", + "href": "core/week-2/workshop.html#what-is-reproducibility", "title": "Workshop", - "section": "Footnotes", - "text": "Footnotes\n\nThis a result of the Central limit theorem,one consequence of which is that adding together lots of distributions - whatever distributions they are - will tend to a normal distribution.↩︎\nThis a result of the Central limit theorem,one consequence of which is that adding together lots of distributions - whatever distributions they are - will tend to a normal distribution.↩︎\nI chose three because that would keep [0, 0, 0] [#,#,#]. This is difference we cannot test statistically, but which would matter biologically.↩︎", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" - ] - }, - { - "objectID": "core/week-6/study_after_workshop.html", - "href": "core/week-6/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "These are suggestions", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Consolidate!" - ] - }, - { - "objectID": "core/week-6/study_after_workshop.html#bio00088h-group-research-project-students", - "href": "core/week-6/study_after_workshop.html#bio00088h-group-research-project-students", - "title": "Independent Study to consolidate this week", - "section": "BIO00088H Group Research Project students", - "text": "BIO00088H Group Research Project students\n\nRevise previous Data Analysis materials. You can find the version you took on the VLE site for 17C / 08C. However, my latest versions (in development) are here: Data Analysis in R. The Becoming a Bioscientist (BABS) modules replace the Laboratory and Professional Skills modules. BABS1 and BABS2 are stage one, and I’ve tried to improve them over 17C / 08C. The site is also searchable (icon top right)", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Consolidate!" - ] - }, - { - "objectID": "core/week-6/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", - "href": "core/week-6/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", - "title": "Independent Study to consolidate this week", - "section": "MSc Bioinformatics students doing BIO00070M", - "text": "MSc Bioinformatics students doing BIO00070M\n\nMake sure you carry out the preparatory work for week 2 of 52M", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Consolidate!" - ] - }, - { - "objectID": "core/week-6/overview.html", - "href": "core/week-6/overview.html", - "title": "Overview", - "section": "", - "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work. We will also examine some file types and the concept of tidy data.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\noutline some common biological data file formats\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n\nWorkshop\nConsolidate", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "About" - ] - }, - { - "objectID": "core/week-6-old/study_after_workshop.html", - "href": "core/week-6-old/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "There is no consolidation work other than to continue revising what you have learned over the course of your degree about data analysis." - }, - { - "objectID": "core/week-6-old/overview.html", - "href": "core/week-6-old/overview.html", - "title": "Overview", - "section": "", - "text": "This week’s session is a drop-in and introduces no new material. Instead, it is an opportunity to ask questions about the content from Core 1 and 2 and to revise skills from stage 1 and 2 as needed.\n\nInstructions\n\nPrepare\n\n📖 Review content from Core 1 and 2\n\nWorkshop\n\n💻 Ask questions about the content from Core 1 and 2 as needed\n💻 Revise skills from stage 1 and 2 (88H students) or 52M (70M students) as needed\n\nConsolidate\n\nThere is no consolidation work for this drop-in" - }, - { - "objectID": "core/week-1-old/study_after_workshop.html", - "href": "core/week-1-old/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "These are suggestions" - }, - { - "objectID": "core/week-1-old/study_after_workshop.html#bio00088h-group-research-project-students", - "href": "core/week-1-old/study_after_workshop.html#bio00088h-group-research-project-students", - "title": "Independent Study to consolidate this week", - "section": "BIO00088H Group Research Project students", - "text": "BIO00088H Group Research Project students\n\nRevise previous Data Analysis materials. You can find the version you took on the VLE site for 17C / 08C. However, my latest versions (in development) are here: Data Analysis in R. The Becoming a Bioscientist (BABS) modules replace the Laboratory and Professional Skills modules. BABS1 and BABS2 are stage one, and I’ve tried to improve them over 17C / 08C. The site is also searchable (icon top right)" - }, - { - "objectID": "core/week-1-old/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", - "href": "core/week-1-old/study_after_workshop.html#msc-bioinformatics-students-doing-bio00070m", - "title": "Independent Study to consolidate this week", - "section": "MSc Bioinformatics students doing BIO00070M", - "text": "MSc Bioinformatics students doing BIO00070M\n\nMake sure you carry out the preparatory work for week 2 of 52M" - }, - { - "objectID": "core/week-1-old/overview.html", - "href": "core/week-1-old/overview.html", - "title": "Overview", - "section": "", - "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work. We will also examine some file types and the concept of tidy data.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\noutline some common biological data file formats\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n\nWorkshop\nConsolidate" - }, - { - "objectID": "core/core.html", - "href": "core/core.html", - "title": "Core: Supporting Information", - "section": "", - "text": "futureself, CC-BY-NC, by Julen Colomb\n\n\nThere are two workshops taken by everyone on BIO00088H. These are in weeks 2 and 6. These are important in understanding both how to assemble, curate and document your “Supporting Information” and how to work reproducibly so future you (Spring semester you) can painlessly work with past you and your work is demonstrably repeatable. This is essential because you will want to be able to set work aside for holidays and assessment periods and then restart easily. The Supporting Information you submit with your Report will be be assessed on its organisation, reproducibility and documentation.\nBIO00070M students do week 1 and 6 of the core workshops along with weeks 3, 4 and 5 of transcriptomics.\n\n\nWhy reproducibility matters, project-oriented workflow, organisation and naming things. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically and discover some awesome short cuts to help you write cool 😎 code.\n\n\n\nDocumenting your Supporting Information with a read me and appropriate code commenting, curating code, non-coded processing", - "crumbs": [ - "Core Supporting Info", - "Core: Supporting Information" - ] - }, - { - "objectID": "core/core.html#week-1-core-supporting-information-1", - "href": "core/core.html#week-1-core-supporting-information-1", - "title": "Core: Supporting Information", - "section": "", - "text": "Why reproducibility matters, project-oriented workflow, organisation and naming things. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically and discover some awesome short cuts to help you write cool 😎 code.", - "crumbs": [ - "Core Supporting Info", - "Core: Supporting Information" - ] - }, - { - "objectID": "core/core.html#week-6-core-supporting-information-2", - "href": "core/core.html#week-6-core-supporting-information-2", - "title": "Core: Supporting Information", - "section": "", - "text": "Documenting your Supporting Information with a read me and appropriate code commenting, curating code, non-coded processing", + "section": "What is reproducibility?", + "text": "What is reproducibility?\n\n\nThe Turing Way's definitions of reproducible research", "crumbs": [ "Core Supporting Info", - "Core: Supporting Information" + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "objectID": "core/week-2/study_before_workshop.html", - "href": "core/week-2/study_before_workshop.html", - "title": "Independent Study to prepare for workshop", - "section": "", - "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and file systems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\n📖 Read Workflow in RStudio. You may find it helpful to remind yourself about RStudio Projects. In previous years, you have submitted an “RStudio Project” as part of your BABS work. In this module, you will submit “Supporting Information” for your Project Report. The Supporting Information is a documented and organised collection of all the digital parts of your research project. This includes data (or instructions for accessing data), code and/or non-coded processing, instructions for use, computational requirements and outputs. The Supporting Information could be a single RStudio Project (like you have done previously but with better documentation) or a folder that includes an RStudio Project and other material/scripts.", + "objectID": "core/week-2/workshop.html#definitions", + "href": "core/week-2/workshop.html#definitions", + "title": "Workshop", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way's definitions of reproducible research\n\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019). This is what we are concentrating on in the Supporting Information.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", - "Prepare!" + "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#session-overview", - "href": "core/week-2/workshop.html#session-overview", + "objectID": "core/week-2/workshop.html#definitions-1", + "href": "core/week-2/workshop.html#definitions-1", "title": "Workshop", - "section": "Session overview", - "text": "Session overview\nIn this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:\nWhat is reproducibility How to achieve reproducibility Rationale for scripting Project-oriented workflow", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way's definitions of reproducible research\n\n\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -615,11 +406,11 @@ ] }, { - "objectID": "core/week-2/workshop.html#what-is-reproducibility", - "href": "core/week-2/workshop.html#what-is-reproducibility", + "objectID": "core/week-2/workshop.html#definitions-2", + "href": "core/week-2/workshop.html#definitions-2", "title": "Workshop", - "section": "What is reproducibility?", - "text": "What is reproducibility?\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions.", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way's definitions of reproducible research\n\n\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -627,11 +418,11 @@ ] }, { - "objectID": "core/week-2/workshop.html#what-is-reproducibility-1", - "href": "core/week-2/workshop.html#what-is-reproducibility-1", + "objectID": "core/week-2/workshop.html#definitions-3", + "href": "core/week-2/workshop.html#definitions-3", "title": "Workshop", - "section": "What is reproducibility?", - "text": "What is reproducibility?\n\n\nThe Turing Way's definitions of reproducible research", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way's definitions of reproducible research\n\n\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -643,7 +434,7 @@ "href": "core/week-2/workshop.html#why-does-it-matter", "title": "Workshop", "section": "Why does it matter?", - "text": "Why does it matter?\n\n\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)", + "text": "Why does it matter?\n\n\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -655,7 +446,7 @@ "href": "core/week-2/workshop.html#how-to-achieve-reproducibility", "title": "Workshop", "section": "How to achieve reproducibility", - "text": "How to achieve reproducibility\n\nReproducibility is a continuum. Some is better than none!\nScript everything\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nCode: follow a consistent style, organise into sections and scripts (be modular), Code algorithmically\nDocumentation: Readme files, code comments, metadata, version control, continuous integration", + "text": "How to achieve reproducibility\n\nReproducibility is a continuum. Some is better than none!\nScript everything\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nCode: follow a consistent style, organise into sections and scripts (be modular), Code algorithmically\nDocumentation: Readme files, code comments, metadata,\nMore advanced: version, control, continuous integration and testing (not required for SI)", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -691,7 +482,7 @@ "href": "core/week-2/workshop.html#example-si-itself-is-an-rsp", "title": "Workshop", "section": "Example: SI itself is an RSP", - "text": "Example: SI itself is an RSP\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__2019-03-21_donor_2.csv\n |__2019-03-21_donor_3.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\nbash: --: invalid option\nUsage: bash [GNU long option] [option] ...\n bash [GNU long option] [option] script-file ...\nGNU long options:\n --debug\n --debugger\n --dump-po-strings\n --dump-strings\n --help\n --init-file\n --login\n --noediting\n --noprofile\n --norc\n --posix\n --pretty-print\n --rcfile\n --restricted\n --verbose\n --version\nShell options:\n -ilrsD or -c command or -O shopt_option (invocation only)\n -abefhkmnptuvxBCHP or -o option", + "text": "Example: SI itself is an RSP\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__2019-03-21_donor_2.csv\n |__2019-03-21_donor_3.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -703,7 +494,7 @@ "href": "core/week-2/workshop.html#example-si-includes-an-rsp", "title": "Workshop", "section": "Example: SI includes an RSP", - "text": "Example: SI includes an RSP\n\n\n-- stem_cell_rna\n |__data_processing/\n |__01_data_processing.py\n |__02_exploratory.py\n |__raw_data/\n |__2019-03-21_donor_1.csv\n |__2019-03-21_donor_2.csv\n |__2019-03-21_donor_3.csv\n |__README. md\n |__statistical_analysis\n |__statistical_analysis.Rproj \n |__processed_data/\n |__R/\n |__01_DGE.R\n |__02_visualisation.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\nbash: line 2: --: command not found\nbash: -c: line 3: syntax error near unexpected token `|'\nbash: -c: line 3: ` |__data_processing/'", + "text": "Example: SI includes an RSP\n\n-- stem_cell_rna\n |__data_processing/\n |__01_data_processing.py\n |__02_exploratory.py\n |__raw_data/\n |__2019-03-21_donor_1.csv\n |__2019-03-21_donor_2.csv\n |__2019-03-21_donor_3.csv\n |__README. md\n |__statistical_analysis\n |__statistical_analysis.Rproj \n |__processed_data/\n |__R/\n |__01_DGE.R\n |__02_visualisation.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -727,7 +518,7 @@ "href": "core/week-2/workshop.html#rstudio-projects-1", "title": "Workshop", "section": "RStudio Projects", - "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nThe project directory is the folder at the top 1\n\nThanks to Mine Çetinkaya-Rundel who helped me work out how to highlight a line https://gist.github.com/mine-cetinkaya-rundel/3af3415eab70a65be3791c3dcff6e2e3. Note to futureself: the engine: knitr matters.", + "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nThe project directory is the folder at the top", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -739,7 +530,7 @@ "href": "core/week-2/workshop.html#rstudio-projects-2", "title": "Workshop", "section": "RStudio Projects", - "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nthe .RProj file is directly under the project folder. Its presence is what makes the folder an RStudio Project", + "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nthe .RProj file is directly under the project folder1. Its presence is what makes the folder an RStudio Project\n\nThanks to Mine Çetinkaya-Rundel who helped me work out how to highlight a line https://gist.github.com/mine-cetinkaya-rundel/3af3415eab70a65be3791c3dcff6e2e3. Note to futureself: the engine: knitr matters.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -775,7 +566,31 @@ "href": "core/week-2/workshop.html#creating-an-rstudio-project", "title": "Workshop", "section": "Creating an RStudio Project", - "text": "Creating an RStudio Project\nThere are two menus options:\n\nTop left, File menu\nTop Right, drop-down indicated by the .RProj icon\n\nThey both do the same thing.\nIn both cases you choose: New Project | New Directory | New Project\nMake sure you “Browse” to the folder you want to create the project.\n❔ Is your working directory a good place to create a Project folder?\nWhen you create a new RStudio Project\n\n\nA folder called bananas/ is created\nRStudio starts a new session in bananas/ i.e., your working directory is now bananas/\n\nA file called bananas.Rproj is created\nthe .Rproj file is what makes the directory an RStudio Project", + "text": "Creating an RStudio Project\nThere are two menus options:\n\nTop left, File menu\nTop Right, drop-down indicated by the .RProj icon\n\nThey both do the same thing.", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] + }, + { + "objectID": "core/week-2/workshop.html#creating-an-rstudio-project-1", + "href": "core/week-2/workshop.html#creating-an-rstudio-project-1", + "title": "Workshop", + "section": "Creating an RStudio Project", + "text": "Creating an RStudio Project\nThen Choose: New Project | New Directory | New Project\nMake sure you “Browse” to the folder you want to create the project.\n❔ Is your working directory a good place to create a Project folder?", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] + }, + { + "objectID": "core/week-2/workshop.html#creating-an-rstudio-project-2", + "href": "core/week-2/workshop.html#creating-an-rstudio-project-2", + "title": "Workshop", + "section": "Creating an RStudio Project", + "text": "Creating an RStudio Project\nWhen you create a new RStudio Project\n\n\nA folder called bananas/ is created\nRStudio starts a new session in bananas/ i.e., your working directory is now bananas/\n\nA file called bananas.Rproj is created\nthe .Rproj file is what makes the directory an RStudio Project", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -787,7 +602,19 @@ "href": "core/week-2/workshop.html#opening-and-closing", "title": "Workshop", "section": "Opening and closing", - "text": "Opening and closing\nYou can close an RStudio Project with ONE of:\n\nFile | Close Project\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\n\nYou can open an RStudio Project with ONE of:\n\nFile | Open Project or File | Recent Projects\n\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\nDouble-clicking an .Rproj file from your file explorer/finder\n\nWhen you open project, a new R session starts.", + "text": "Opening and closing\nYou can close an RStudio Project with ONE of:\n\nFile | Close Project\nUsing the drop-down option on the far right of the tool bar where you see the Project name", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] + }, + { + "objectID": "core/week-2/workshop.html#opening-and-closing-1", + "href": "core/week-2/workshop.html#opening-and-closing-1", + "title": "Workshop", + "section": "Opening and closing", + "text": "Opening and closing\nYou can open an RStudio Project with ONE of:\n\nFile | Open Project or File | Recent Projects\n\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\nDouble-clicking an .Rproj file from your file explorer/finder\n\nWhen you open project, a new R session starts.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -799,7 +626,7 @@ "href": "core/week-2/workshop.html#code-formatting-and-style-1", "title": "Workshop", "section": "Code formatting and style", - "text": "Code formatting and style\n\n“Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.”\n\nThe tidyverse style guide", + "text": "Code formatting and style\n\n“Good coding style is like correct punctuation: you can manage without it butitsuremakesthingseasiertoread.”\n\nThe tidyverse style guide\n\nCode is not write only.\nCode is communication!", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -823,7 +650,7 @@ "href": "core/week-2/workshop.html#code-formatting-and-style-3", "title": "Workshop", "section": "Code formatting and style", - "text": "Code formatting and style\nSome keys points:\n\nbe consistent, emulate experienced coders\n\nuse snake_case for variable names (not CamelCase, dot.case)\n\nuse <- not = for assignment\n\nuse spacing around most operators and after commas\n\nuse indentation\n\navoid long lines, break up code blocks with new lines\n\nuse \" for quoting text (not ') unless the text contains double quotes", + "text": "Code formatting and style\nSome keys points:\n\n\nbe consistent, emulate experienced coders\n\nuse snake_case for variable names (not CamelCase, dot.case)\n\nuse <- (not =) for assignment\n\nuse spacing around most operators and after commas\n\nuse indentation\n\navoid long lines, break up code blocks with new lines\n\nuse \" for quoting text (not ') unless the text contains double quotes\n\nspace after # for comments", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -955,7 +782,7 @@ "href": "core/week-2/workshop.html#naming-things", "title": "Workshop", "section": "Naming things", - "text": "Naming things\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/Guiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting", + "text": "Naming things\n\n\n\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/\n\n\nGuiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -991,7 +818,7 @@ "href": "core/week-2/workshop.html#reading", "title": "Workshop", "section": "Reading", - "text": "Reading\nCompletely optional suggestions for further reading\n\n\nProject-oriented workflow | What They Forgot to Teach You About R (Bryan et al., n.d.). Recommended if you still need convincing to use RStudio Projects\nTen simple rules for reproducible computational research (Sandve et al. 2013)\n\nGood enough practices in scientific computing (Wilson et al. 2017)\n\nExcuse Me, Do You Have a Moment to Talk About Version Control? (Bryan 2018)\n\n\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)", + "text": "Reading\nCompletely optional suggestions for further reading\n\n\n\nProject-oriented workflow | What They Forgot to Teach You About R (Bryan et al., n.d.). Recommended if you still need convincing to use RStudio Projects\nTen simple rules for reproducible computational research (Sandve et al. 2013)\n\nGood enough practices in scientific computing (Wilson et al. 2017)\n\nExcuse Me, Do You Have a Moment to Talk About Version Control? (Bryan 2018)\n\n\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -1003,7 +830,7 @@ "href": "core/week-2/workshop.html#references", "title": "Workshop", "section": "References", - "text": "References\n\n\n\n🔗 About Core: Supporting Information 1\n\n\n\n\nAllaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. “Quarto.” https://doi.org/10.5281/zenodo.5960048.\n\n\nBaggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. https://doi.org/10.2307/27801549.\n\n\nBryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk about Version Control?” Am. Stat. 72 (1): 20–27. https://doi.org/10.1080/00031305.2017.1399928.\n\n\nBryan, Jennifer, Jim Hester, Shannon Pileggi, and E. David Aja. n.d. What They Forgot to Teach You about r. https://rstats.wtf/.\n\n\nMarkowetz, Florian. 2015. “Five Selfish Reasons to Work Reproducibly.” Genome Biol. 16 (December): 274. https://doi.org/10.1186/s13059-015-0850-7.\n\n\nNational Academies of Sciences, Engineering, Medicine, Policy, Global Affairs, Engineering, Medicine Committee on Science, Public Policy, Board on Research Data, et al. 2019. Understanding Reproducibility and Replicability. National Academies Press (US). https://www.ncbi.nlm.nih.gov/books/NBK547546/.\n\n\nOECD Global Science Forum. 2020. “Building Digital Workforce Capacity and Skills for Data-Intensive Science.” http://www.oecd.org/officialdocuments/publicdisplaydocumentpdf/?cote=DSTI/STP/GSF(2020)6/FINAL&docLanguage=En.\n\n\nR Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.\n\n\nSandve, Geir Kjetil, Anton Nekrutenko, James Taylor, and Eivind Hovig. 2013. “Ten Simple Rules for Reproducible Computational Research.” PLoS Comput. Biol. 9 (10): e1003285. https://doi.org/10.1371/journal.pcbi.1003285.\n\n\nWilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K Teal. 2017. “Good Enough Practices in Scientific Computing.” PLoS Comput. Biol. 13 (6): e1005510. https://doi.org/10.1371/journal.pcbi.1005510.\n\n\nXie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.\n\n\nZhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra.", + "text": "References\n\n\n\n🔗 About Core: Supporting Information 1\n\n\n\n\nAllaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. “Quarto.” https://doi.org/10.5281/zenodo.5960048.\n\n\nBaggerly, Keith A, and Kevin R Coombes. 2009. “DERIVING CHEMOSENSITIVITY FROM CELL LINES: FORENSIC BIOINFORMATICS AND REPRODUCIBLE RESEARCH IN HIGH-THROUGHPUT BIOLOGY.” Ann. Appl. Stat. 3 (4): 1309–34. http://www.jstor.org/stable/27801549.\n\n\nBryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk about Version Control?” Am. Stat. 72 (1): 20–27. https://doi.org/10.1080/00031305.2017.1399928.\n\n\nBryan, Jennifer, Jim Hester, Shannon Pileggi, and E. David Aja. n.d. What They Forgot to Teach You about r. https://rstats.wtf/.\n\n\nMarkowetz, Florian. 2015. “Five Selfish Reasons to Work Reproducibly.” Genome Biol. 16 (December): 274. https://doi.org/10.1186/s13059-015-0850-7.\n\n\nNational Academies of Sciences, Engineering, Medicine, Policy, Global Affairs, Engineering, Medicine Committee on Science, Public Policy, Board on Research Data, et al. 2019. Understanding Reproducibility and Replicability. National Academies Press (US). https://www.ncbi.nlm.nih.gov/books/NBK547546/.\n\n\nOECD Global Science Forum. 2020. “Building Digital Workforce Capacity and Skills for Data-Intensive Science.” http://www.oecd.org/officialdocuments/publicdisplaydocumentpdf/?cote=DSTI/STP/GSF(2020)6/FINAL&docLanguage=En.\n\n\nR Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.\n\n\nSandve, Geir Kjetil, Anton Nekrutenko, James Taylor, and Eivind Hovig. 2013. “Ten Simple Rules for Reproducible Computational Research.” PLoS Comput. Biol. 9 (10): e1003285. https://doi.org/10.1371/journal.pcbi.1003285.\n\n\nWilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K Teal. 2017. “Good Enough Practices in Scientific Computing.” PLoS Comput. Biol. 13 (6): e1005510. https://doi.org/10.1371/journal.pcbi.1005510.\n\n\nXie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC.\n\n\n———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.\n\n\n———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.\n\n\nZhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra.", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", @@ -1011,953 +838,1389 @@ ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#overview", - "href": "core/week-2-old/study_before_workshop.html#overview", - "title": "Independent Study to prepare for workshop", - "section": "Overview", - "text": "Overview\n\nRStudio Projects revisited\n\nusing usethis package\nAdding a README\n\n\nFormatting code\nCode algorithmically / algebraically." - }, - { - "objectID": "core/week-2-old/study_before_workshop.html#reproducibility-is-a-continuum", - "href": "core/week-2-old/study_before_workshop.html#reproducibility-is-a-continuum", - "title": "Independent Study to prepare for workshop", - "section": "Reproducibility is a continuum", - "text": "Reproducibility is a continuum\nSome is better than none!\n\nOrganise your project\n\nScript everything.\n\nFormat code and follow a consistent style.\n\nCode algorithmically\nModularise your code: organise into sections and scripts\nDocument your project - commenting, READMEs\nUse literate programming e.g., R Markdown or Quarto\n\n\n\nMore advanced: Version control, continuous integration, environments, containers" + "objectID": "transcriptomics/week-5/study_after_workshop.html", + "href": "transcriptomics/week-5/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "You need only do the section for one of the examples.\n🐸 Frogs\n🎬 Open your frogs-88H Project and script you began in the Consolidation study of Transcriptomics 1 and continued to work on in Transcriptomics 2. This is likely to be cont-fgf-s20.R or cont-fgf-s14.R. Use the code you used in the workshop (in cont-fgf-s30.R) as a template to visualise the s20/s14 results.\n🐭 Mice\n🎬 Open your mice-88H Project and the script you began in the Consolidation study of Transcriptomics 2. This is likely to be hspc-lthsc.R or lthsc-prog.R. Use the code you used in the workshop (in hspc-prog.R) as a template to visualise the hspc-lthsc/lthsc-prog results.\n🍂 xxxx\n🎬 Follow one of the other examples", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Consolidate!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects", - "href": "core/week-2-old/study_before_workshop.html#rstudio-projects", - "title": "Independent Study to prepare for workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\n\nWe used RStudio Projects in stage one but they are so useful, it is worth covering them again in case you are not yet using them.\nWe will also cover the usethisworkflow to create an RStudio Project.\nRStudio Projects make it easy to manage working directories and paths because they set the working directory to the RStudio Projects directory automatically." + "objectID": "transcriptomics/week-5/workshop.html", + "href": "transcriptomics/week-5/workshop.html", + "title": "Workshop", + "section": "", + "text": "In the workshop, you will learn how to conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot. You will also save significant genes to file to make it easier to identify genes of interest and perform Gene Ontology (GO) term enrichment analysis.\nimport log where needed write sig to file add go terms prep data for pca do pca and plot volcano go term enrichment", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-1", - "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-1", - "title": "Independent Study to prepare for workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nThe project directory is the folder at the top 1\n\nThanks to Mine Çetinkaya-Rundel who helped me work out how to highlight a line https://gist.github.com/mine-cetinkaya-rundel/3af3415eab70a65be3791c3dcff6e2e3. Note to futureself: the engine: knitr matters." + "objectID": "transcriptomics/week-5/workshop.html#session-overview", + "href": "transcriptomics/week-5/workshop.html#session-overview", + "title": "Workshop", + "section": "", + "text": "In the workshop, you will learn how to conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot. You will also save significant genes to file to make it easier to identify genes of interest and perform Gene Ontology (GO) term enrichment analysis.\nimport log where needed write sig to file add go terms prep data for pca do pca and plot volcano go term enrichment", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-2", - "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-2", - "title": "Independent Study to prepare for workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nthe .RProj file is directly under the project folder. Its presence is what makes the folder an RStudio Project" + "objectID": "transcriptomics/week-5/workshop.html#frog-development", + "href": "transcriptomics/week-5/workshop.html#frog-development", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-3", - "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-3", - "title": "Independent Study to prepare for workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\n\nWhen you open an RStudio Project, the working directory is set to the Project directory (i.e., the location of the .Rproj file).\nWhen you use an RStudio Project you do not need to use setwd()\nWhen someone, including future you, opens the project on another machine, all the paths just work." + "objectID": "transcriptomics/week-5/workshop.html#arabidopisis", + "href": "transcriptomics/week-5/workshop.html#arabidopisis", + "title": "Workshop", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\n🎬 Open the arabi-88H RStudio Project and the wildsuf-wilddef-s30.R script.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-4", - "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-4", - "title": "Independent Study to prepare for workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\nJenny BryanIn the words of Jenny Bryan:\n\n“If the first line of your R script is setwd(”C:/Users/jenny/path/that/only/I/have”) I will come into your office and SET YOUR COMPUTER ON FIRE”" + "objectID": "transcriptomics/week-5/workshop.html#leishmania-mexicana", + "href": "transcriptomics/week-5/workshop.html#leishmania-mexicana", + "title": "Workshop", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana\n🎬 Open the leish-88H RStudio Project and the pro-meta-s30.R script.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#creating-an-rstudio-project", - "href": "core/week-2-old/study_before_workshop.html#creating-an-rstudio-project", - "title": "Independent Study to prepare for workshop", - "section": "Creating an RStudio Project", - "text": "Creating an RStudio Project\nThere are two ways to create an RStudio Project.\n\nUsing one of the two menus\nUsing the usethis package" + "objectID": "transcriptomics/week-5/workshop.html#stem-cells", + "href": "transcriptomics/week-5/workshop.html#stem-cells", + "title": "Workshop", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-a-menu", - "href": "core/week-2-old/study_before_workshop.html#using-a-menu", - "title": "Independent Study to prepare for workshop", - "section": "Using a menu", - "text": "Using a menu\nThere are two menus:\n\nTop left, File menu\nTop Right, drop-down indicated by the .RProj icon\n\nThey both do the same thing.\nIn both cases you choose: New Project | New Directory | New Project\n\nMake sure you “Browse” to the folder you want to create the project." + "objectID": "transcriptomics/week-5/workshop.html#everyone", + "href": "transcriptomics/week-5/workshop.html#everyone", + "title": "Workshop", + "section": "Everyone", + "text": "Everyone\n🎬 Make a new folder figures in the project directory.\nThis is where we will save our figure files\n🎬 Load tidyverse (Wickham et al. 2019) and conflicted (Wickham 2023). You most likely have this code at the top of your script already.\n\nlibrary(tidyverse)\nlibrary(conflicted)\n\n── Attaching core tidyverse packages ─────────────────────────────────────────────── tidyverse 2.0.0 ──\n✔ dplyr 1.1.3 ✔ readr 2.1.4\n✔ forcats 1.0.0 ✔ stringr 1.5.0\n✔ ggplot2 3.4.3 ✔ tibble 3.2.1\n✔ lubridate 1.9.3 ✔ tidyr 1.3.0\n✔ purrr 1.0.2 \n── Conflicts ───────────────────────────────────────────────────────────────── tidyverse_conflicts() ──\n✖ dplyr::filter() masks stats::filter()\n✖ dplyr::lag() masks stats::lag()\nℹ Use the conflicted package to force all conflicts to become errors\nI recommend you set the dplyr versions of filter() and select() to use by default\n🎬 Use the dplyr version of filter() by default:\n\nconflicts_prefer(dplyr::filter)\nconflicts_prefer(dplyr::select)", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-1", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-1", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nI occasionally use the menu but I mostly use the usethis package.\n\n🎬 Go to RStudio and check your working directory:\n\ngetwd()\n\n\"C:/Users/er13/Desktop\"\n\n\n❔ Is your working directory a good place to create a Project folder?" + "objectID": "transcriptomics/week-5/workshop.html#everyone-1", + "href": "transcriptomics/week-5/workshop.html#everyone-1", + "title": "Workshop", + "section": "Everyone", + "text": "Everyone\n🎬 Import your results data. This should be a file in the results folder called xxxx_results.csv where xxxx indicates the comparison you made.\n🎬 Remind yourself what is in the rows and columns and the structure of the dataframes (perhaps using glimpse())\n\n\n\n\n\n\n\n\n\n\n\nWhen we do PCA we will want to label the samples with their treatment for figures. This labelling information is most easily added using the metadata. You will need to select only the samples for the comparison that was made in the results file. You may need to refer back to the Week 4 Statistical Analysis workshop to remind yourself how to import and select the metadata you need\n🎬 Import the metadata that maps the sample names to treatments. Remember to select only the samples for comparison that was made.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-2", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-2", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nIf this is a good place to create a Project directory then…\n🎬 Create a project with:\n\nusethis::create_project(\"bananas\")" + "objectID": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", + "href": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", + "title": "Workshop", + "section": "🐸 Frog, 🎄 Arab and 💉 Leish", + "text": "🐸 Frog, 🎄 Arab and 💉 Leish\n🎬 Design the code to log2 transform the normalised counts using the template given\nI recommend viewing the dataframe to see the new columns. Check you have the expected number of columns.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-3", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-3", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nOtherwise\nIf you want the project directory elsewhere, you will need to give the relative path, e.g.\n\nusethis::create_project(\"../Documents/bananas\")" + "objectID": "transcriptomics/week-5/workshop.html#stem-cells-1", + "href": "transcriptomics/week-5/workshop.html#stem-cells-1", + "title": "Workshop", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\ndo not because the data is already log2 transformed.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-4", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-4", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nThe output will look like this and a new RStudio session will start.\n> usethis::create_project(\"bananas\")\n√ Creating 'bananas/'\n√ Setting active project to 'C:/Users/er13/Desktop/bananas'\n√ Creating 'R/'\n√ Writing 'bananas.Rproj'\n√ Adding '.Rproj.user' to '.gitignore'\n√ Opening 'C:/Users/er13/Desktop/bananas/' in new RStudio session\n√ Setting active project to '<no active project>'" + "objectID": "transcriptomics/week-5/workshop.html#everyone-2", + "href": "transcriptomics/week-5/workshop.html#everyone-2", + "title": "Workshop", + "section": "Everyone", + "text": "Everyone\nWe now all have dataframes with all the information we need: normalised counts, log2 normalised counts, statistical comparisons with fold changes and p-values, and information about the gene.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-5", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-5", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nWhen you create a new RStudio Project with usethis:\n\n\nA folder called bananas/ is created\nRStudio starts a new session in bananas/ i.e., your working directory is now bananas/\n\nA folder called R/ is created\nA file called bananas.Rproj is created\nA file called .gitignore is created\nA hidden directory called .Rproj.user is created" + "objectID": "transcriptomics/week-5/workshop.html#everyone-3", + "href": "transcriptomics/week-5/workshop.html#everyone-3", + "title": "Workshop", + "section": "Everyone", + "text": "Everyone\nWe will create dataframe of the significant genes and write them to file. This is subset from the results file but will make it a little easier to examine and select genes of interest.\nThe general form of the code you need is:\n\n# DO NOT DO\n# create a dataframe of genes significant at 0.05 level\nxxxx_results_sig0.05 <- xxxx_results |> \n filter(padj <= 0.05)\n\nNote that you determine the significance level using the adjusted p-values (padj or FDR) rather than the uncorrected p-values.\n🎬 Create a dataframe of the genes significant at the 0.05 level.\n❓How many genes are significant at the 0.01 and 0.05 levels?\n\n\n\n\n\n\n🎬 Write the dataframe to a csv file. I recommend using the same file name as you used for the dataframe.", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-6", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-6", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\n\n\nthe .Rproj file is what makes the directory an RStudio Project\nthe Rproj.user directory is where project-specific temporary files are stored. You don’t need to mess with it.\nthe .gitignore is used for version controlled projects. If not using git, you can ignore it." + "objectID": "transcriptomics/week-5/workshop.html#frog-development-1", + "href": "transcriptomics/week-5/workshop.html#frog-development-1", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n🎬 Transpose the log2 transformed normalised counts:\n\ns30_log2_trans <- s30_results |> \n select(starts_with(\"log2_\")) |>\n t() |> \n data.frame()\n\nWe have used the select() function to select all the columns that start with log2_. We then use the t() function to transpose the dataframe. We then convert the resulting matrix to a dataframe using data.frame(). If you view that dataframe you’ll see it has default column name which we can fix using colnames() to set the column names to the Xenbase gene ids.\n🎬 Set the column names to the Xenbase gene ids:\n\ncolnames(s30_log2_trans) <- s30_results$xenbase_gene_id\n\n🎬 Perform PCA on the log2 transformed normalised counts:\n\npca <- s30_log2_trans |>\n prcomp(rank. = 4) \n\nThe rank. argument tells prcomp() to only calculate the first 4 principal components. This is useful for visualisation as we can only plot in 2 or 3 dimensions. We can see the results of the PCA by viewing the summary() of the pca object.\n\nsummary(pca)\n\nImportance of first k=4 (out of 6) components:\n PC1 PC2 PC3 PC4\nStandard deviation 64.0124 47.3351 38.4706 31.4111\nProportion of Variance 0.4243 0.2320 0.1532 0.1022\nCumulative Proportion 0.4243 0.6562 0.8095 0.9116\n\n\nThe Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.4243 of the variance, the second 0.2320, and the third 0.1532. Together the first three components explain nearly 81% of the total variance in the data. Plotting PC1 against PC2 will capture about 66% of the variance which is likely very much better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 “scores” from the PCA object and add labels for the samples. Those labels will come from the row names of the transformed data which has the sample ids and from the metadata.\n🎬 Create a vector of the sample ids from the row names. These include the log2 prefix which we can removed for labelling:\n\nsample_id <- row.names(s30_log2_trans) |> str_remove(\"log2_\")\n\nYou might want to check the result.\nNow we will extract the PC1 and PC2 scores from the PCA object and add. Our PCA object is called pca and the scores are in pca$x. We will create a dataframe of the scores and add the sample ids.\n🎬 Create a dataframe of PC1 and PC2 scores and add the sample ids:\n\npca_labelled <- data.frame(pca$x,\n sample_id)\n\n🎬 Merge with the metadata so we can label points by treatment and sibling pair:\n\npca_labelled <- pca_labelled |> \n left_join(meta_s30, \n by = \"sample_id\")\n\nSince the metadata contained the sample ids, it was especially important to remove the log2_ from the row names so that the join would work.\nThe dataframe should look like this:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPC1\nPC2\nPC3\nPC4\nsample_id\nstage\ntreatment\nsibling_rep\n\n\n\n-76.38391\n0.814699\n-60.728327\n-5.820669\nS30_C_1\nstage_30\ncontrol\none\n\n\n-67.02571\n25.668563\n51.476835\n28.480254\nS30_C_2\nstage_30\ncontrol\ntwo\n\n\n-14.02772\n-78.474054\n15.282058\n-9.213076\nS30_C_3\nstage_30\ncontrol\nthree\n\n\n47.60726\n49.035510\n-19.288753\n20.928290\nS30_F_1\nstage_30\nFGF\none\n\n\n26.04954\n32.914201\n20.206072\n-55.752818\nS30_F_2\nstage_30\nFGF\ntwo\n\n\n83.78054\n-29.958919\n-6.947884\n21.378020\nS30_F_3\nstage_30\nFGF\nthree\n\n\n\n\n\nThe next task is to plot PC2 against PC1 and colour by sibling pair. This is just a scatterplot so we can use geom_point(). We will use colour to indicate the sibling pair and shape to indicate the treatment.\n🎬 Plot PC2 against PC1 and colour by sibling pair and shape by treatment:\n\npca_labelled |> \n ggplot(aes(x = PC1, y = PC2, \n colour = sibling_rep,\n shape = treatment)) +\n geom_point(size = 3) +\n theme_classic()\n\n\n\n\n\n\n\nThere is a good separation between treatments on PCA1. The sibling pairs do not seem to cluster together. You can also try plotting PC3 or PC4.\nI prefer to customise the colours and shapes. I especially like the\nviridis colour scales which provide colour scales that are perceptually uniform in both colour and black-and-white. They are also designed to be perceived by viewers with common forms of colour blindness. See Introduction to viridis for more information.\nggplot provides functions to access the viridis scales. Here I use scale_fill_viridis_d(). The d stands for discrete. The function scale_fill_viridis_c() would be used for continuous data. I’ve used the default “viridis” (or “D”) option (do ?scale_fill_viridis_d for all the options) and used the begin and end arguments to control the range of colour - I have set the range to be from 0.15 to 0.95 the avoid the strongest contrast. I have also set the name argument to provide a label for the legend.\nI have used scale_shape_manual() to set the shapes for the treatments. I have used the values 21 and 19 which are the codes for filled and open circles and filled triangles. I have set the name argument to NULL to remove the label (it’s obvious what that categories are treatments) and the labels argument to improve the legend.\n🎬 Plot PC2 against PC1 and colour by sibling pair and shape by treatment:\n\npca_labelled |> \n ggplot(aes(x = PC1, y = PC2, \n colour = sibling_rep,\n shape = treatment)) +\n geom_point(size = 3) +\n scale_colour_viridis_d(end = 0.95, begin = 0.15,\n name = \"Sibling pair\") +\n scale_shape_manual(values = c(21, 19),\n name = NULL,\n labels = c(\"Control\", \"FGF-Treated\")) +\n theme_classic()", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#opening-and-closing", - "href": "core/week-2-old/study_before_workshop.html#opening-and-closing", - "title": "Independent Study to prepare for workshop", - "section": "Opening and closing", - "text": "Opening and closing\nYou can close an RStudio Project with ONE of:\n\nFile | Close Project\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\n\nYou can open an RStudio Project with ONE of:\n\nFile | Open Project or File | Recent Projects\n\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\nDouble-clicking an .Rproj file from your file explorer/finder\n\nWhen you open project, a new R session starts." + "objectID": "transcriptomics/week-5/workshop.html#arabidopsis", + "href": "transcriptomics/week-5/workshop.html#arabidopsis", + "title": "Workshop", + "section": "🎄 Arabidopsis", + "text": "🎄 Arabidopsis", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-7", - "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-7", - "title": "Independent Study to prepare for workshop", - "section": "Using the usethis package", - "text": "Using the usethis package\nOnce the RStudio project has been created, usethis helps you follow good practice.\n\n🎬 We can add a README with:\n\nusethis::use_readme_md()\n\n\n\nThis creates a file called README.md, with a little default text, in the Project directory and opens it for editing.\n\n\nmd stands for markdown, it is a extremely widely used text formatting language which is readable as plain text. If you have ever used asterisks to make text bold or italic, you have used markdown." + "objectID": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", + "href": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", + "title": "Workshop", + "section": "💉 Leishmainia mexicana", + "text": "💉 Leishmainia mexicana", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-1", - "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-1", - "title": "Independent Study to prepare for workshop", - "section": "Code formatting and style", - "text": "Code formatting and style\n\n“Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.”\n\nThe tidyverse style guide" + "objectID": "transcriptomics/week-5/workshop.html#stem-cells-2", + "href": "transcriptomics/week-5/workshop.html#stem-cells-2", + "title": "Workshop", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-2", - "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-2", - "title": "Independent Study to prepare for workshop", - "section": "Code formatting and style", - "text": "Code formatting and style\nWe have all written code which is hard to read!\nWe all improve over time.\n\n\n\nThe only way to write good code is to write tons of shitty code first. Feeling shame about bad code stops you from getting to good code— Hadley Wickham (@hadleywickham) April 17, 2015" + "objectID": "transcriptomics/week-5/workshop.html#frog-development-2", + "href": "transcriptomics/week-5/workshop.html#frog-development-2", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\nWe will add a column to the results dataframe that contains the -log10(padj). You could perform this transformation within the plot command without adding a column to the data if you prefer.\n🎬 Add a column to the results dataframe that contains the -log10(padj):\n\ns30_results <- s30_results |> \n mutate(log10_padj = -log10(padj)) \n\n🎬 Create a volcano plot of the results:\n\ns30_results |> \n ggplot(aes(x = log2FoldChange, \n y = log10_padj)) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n theme_classic() +\n theme(legend.position = \"none\")\n\n\n\n\n\n\n\nOur dashed lines are at -log10(0.05) and log2(2) and log2(-2) to make more clear which genes (points) are significantly different between the control and the FGF-treated samples and have a fold change of at least 2.\nIn most cases, people colour the points to show that the quadrants. I like to add columns to the dataframe to indicate if the gene is significant and if the fold change is large and use those variables in the plot.\n🎬 Add columns to the results dataframe to indicate if the gene is significant and if the fold change is large:\n\ns30_results <- s30_results |> \n mutate(sig = padj <= 0.05,\n bigfc = abs(log2FoldChange) >= 2) \n\nThe use of abs() (absolute) means genes with a fold change of at least 2 in either direction will be considered to have a large fold change.\nNow we can colour the points by these new columns. I use interaction() to create four categories:\n\nnot significant and not large fold change (FF)\nsignificant and not large fold change (TF)\nnot significant and large fold (FT)\nsignificant and large fold change (TT)\n\nAnd I use scale_colour_manual() to set the colours for these categories.\n🎬 Create a volcano plot of the results with the points coloured by significance and fold change:\n\ns30_results |> \n ggplot(aes(x = log2FoldChange, \n y = log10_padj, \n colour = interaction(sig, bigfc))) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n scale_colour_manual(values = c(\"gray\", \n \"pink\",\n \"gray30\",\n \"deeppink\")) +\n theme_classic() +\n theme(legend.position = \"none\")\n\n\n\n\n\n\n\nFor exploring the data, I like add labels to all the significant genes with a large fold change so I can very quickly identity them. The ggrepel package has a function geom_text_repel() that is useful for adding labels so that they don’t overlap.\n🎬 Load the package:\n\nlibrary(ggrepel)\n\n🎬 Add labels to the significant genes with a large fold change:\n\ns30_results |> \n ggplot(aes(x = log2FoldChange, \n y = log10_padj, \n colour = interaction(sig, bigfc))) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n scale_colour_manual(values = c(\"gray\", \n \"pink\",\n \"gray30\",\n \"deeppink\")) +\n geom_text_repel(data = s30_results |> \n filter(bigfc == TRUE, sig == TRUE),\n aes(label = xenbase_gene_symbol),\n size = 3,\n max.overlaps = 50) +\n theme_classic() +\n theme(legend.position = \"none\")\n\n\n\n\n\n\n\nNotice that I have used filter() label only the genes that are both significant and have a large fold change. In systems you are familiar with, this labelling is very informative and can help you quickly identify common themes. Key to interpreting the volcano plot is to remember that positive fold changes means the gene is up-regulated in the FGF-treated samples and negative fold changes means the gene is down-regulated (i.e., higher in the control). This was determined by the order of the treatments in the contrast used in the DESeq2 analysis\nIf you do forget which way round you did the comparison, you can always examine the results dataframe to see which of the treatments seem to be higher for the positive fold changes.\nPlease note that Betsy doesn’t like graphs like this in the report!\nWhen you have a gene of interest, you may wish to label it on the plot. This is done in the same way except that you filter the data to only include the gene of interest. I have used and then use geom_label_repel() rather than geom_text_repel() to put the label in a box and nudged it’s position to get a line connecting the point and the label. I have also increased the size of the point.\n🎬 Add a label to one gene of interest (hoxb9.S) and :\n\ns30_results |> \n ggplot(aes(x = log2FoldChange, \n y = log10_padj, \n colour = interaction(sig, bigfc))) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n scale_colour_manual(values = c(\"gray\", \n \"pink\",\n \"gray30\",\n \"deeppink\")) +\n geom_label_repel(data = s30_results |> \n filter(xenbase_gene_symbol == \"hoxb9.S\"),\n aes(label = xenbase_gene_symbol),\n size = 4,\n nudge_x = .5,\n nudge_y = 1.5) +\n geom_point(data = s30_results |> \n filter(xenbase_gene_symbol == \"hoxb9.S\"),\n size = 3) +\n theme_classic() +\n theme(legend.position = \"none\")", + "crumbs": [ + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Workshop" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-3", - "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-3", - "title": "Independent Study to prepare for workshop", - "section": "Code formatting and style", - "text": "Code formatting and style\nSome keys points:\n\nbe consistent, emulate experienced coders\n\nuse snake_case for variable names (not CamelCase, dot.case)\n\nuse <- not = for assignment\n\nuse spacing around most operators and after commas\n\nuse indentation\n\navoid long lines, break up code blocks with new lines\n\nuse \" for quoting text (not ') unless the text contains double quotes" + "objectID": "transcriptomics/transcriptomics.html", + "href": "transcriptomics/transcriptomics.html", + "title": "Transcriptomics Data Analysis for Group Project", + "section": "", + "text": "This week you will meet your data. There are four datasets, one for each project in this strand. The independent study will concisely cover how each of these four data sets were generated and how they have been processed before being given to you. It will also give an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transciptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It will give you the understanding of the data and R data structures that you will need to code and trouble-shoot code. It will also allow you to spot failed or problematic samples and will inform your decisions on quality control. At the end of this workshop and the following independent study you will have performed quality control by filtering out uninformative genes and samples, and saved this filtered data for use in the next workshop. You will also have a script that you can use to repeat this process on other datasets.\n\n\n\nThis week we cover differential expression analysis on your quality controlled data. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It then summarises the concepts and methods used to carry out differential expression analysis in workshop. In the workshop, you will perform the differential expression and learn how to compuationally annotate your genes with more information from the databases. This will include the Gene Ontology (GO) terms that describe the biological processes, molecular functions and cellular components that the gene is involved in. At the end of this workshop and the following independent study you will have files containing the genes which are differentially expressed, along with the statistical information, summary information and annotation. You will be able to consider which genes you want to investigates with your Project director and have what you need for the next workshop. You will also have a script that you can use to repeat this process on other datasets.\n\n\n\nThis week you will learn some how to do some common data visualisations for transcriptomic data. You will conduct and present a Principal Component Analysis (PCA) and a Volcano plot. We will also conduct a GO enrichment analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. At the end of this workshop and the following independent study you will at least two figures suitable for including in your report, along with an understanding of the results you can report on. You will also have a script that you can use to repeat this process on other datasets.\nReferences", + "crumbs": [ + "Transcriptomics", + "Transcriptomics Data Analysis for Group Project" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#ugly-code", - "href": "core/week-2-old/study_before_workshop.html#ugly-code", - "title": "Independent Study to prepare for workshop", - "section": "😩 Ugly code 😩", - "text": "😩 Ugly code 😩\n\ndata<-read_csv('../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv',skip=2)\nlibrary(janitor);sol<-clean_names(data)\ndata=data|>filter(str_detect(description,\"OS=Homo sapiens\"))|>filter(x1pep=='x')\ndata=data|>\nmutate(g=str_extract(description,\n\"GN=[^\\\\s]+\")|>str_replace(\"GN=\",''))\ndata<-data|>mutate(id=str_extract(accession,\"1::[^;]+\")|>str_replace(\"1::\",\"\"))" + "objectID": "transcriptomics/transcriptomics.html#transcriptomics-1-hello-data", + "href": "transcriptomics/transcriptomics.html#transcriptomics-1-hello-data", + "title": "Transcriptomics Data Analysis for Group Project", + "section": "", + "text": "This week you will meet your data. There are four datasets, one for each project in this strand. The independent study will concisely cover how each of these four data sets were generated and how they have been processed before being given to you. It will also give an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transciptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It will give you the understanding of the data and R data structures that you will need to code and trouble-shoot code. It will also allow you to spot failed or problematic samples and will inform your decisions on quality control. At the end of this workshop and the following independent study you will have performed quality control by filtering out uninformative genes and samples, and saved this filtered data for use in the next workshop. You will also have a script that you can use to repeat this process on other datasets.", + "crumbs": [ + "Transcriptomics", + "Transcriptomics Data Analysis for Group Project" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#ugly-code-1", - "href": "core/week-2-old/study_before_workshop.html#ugly-code-1", - "title": "Independent Study to prepare for workshop", - "section": "😩 Ugly code 😩", - "text": "😩 Ugly code 😩\n\nno spacing or indentation\ninconsistent splitting of code blocks over lines\ninconsistent use of quote characters\nno comments\nvariable names convey no meaning\nuse of = for assignment and inconsistently\nmultiple commands on a line\nlibrary statement in the middle of the analysis" + "objectID": "transcriptomics/transcriptomics.html#transcriptomics-2-statistical-analysis", + "href": "transcriptomics/transcriptomics.html#transcriptomics-2-statistical-analysis", + "title": "Transcriptomics Data Analysis for Group Project", + "section": "", + "text": "This week we cover differential expression analysis on your quality controlled data. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It then summarises the concepts and methods used to carry out differential expression analysis in workshop. In the workshop, you will perform the differential expression and learn how to compuationally annotate your genes with more information from the databases. This will include the Gene Ontology (GO) terms that describe the biological processes, molecular functions and cellular components that the gene is involved in. At the end of this workshop and the following independent study you will have files containing the genes which are differentially expressed, along with the statistical information, summary information and annotation. You will be able to consider which genes you want to investigates with your Project director and have what you need for the next workshop. You will also have a script that you can use to repeat this process on other datasets.", + "crumbs": [ + "Transcriptomics", + "Transcriptomics Data Analysis for Group Project" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#cool-code", - "href": "core/week-2-old/study_before_workshop.html#cool-code", - "title": "Independent Study to prepare for workshop", - "section": "😎 Cool code 😎", - "text": "😎 Cool code 😎\n\n# Packages ----------------------------------------------------------------\nlibrary(tidyverse)\nlibrary(janitor)\n\n# Import ------------------------------------------------------------------\n\n# define file name\nfile <- \"../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv\"\n\n# import: column headers and data are from row 3\nsolu_protein <- read_csv(file, skip = 2) |>\n janitor::clean_names()\n\n# Tidy data ----------------------------------------------------------------\n\n# filter out the bovine proteins and those proteins \n# identified from fewer than 2 peptides\nsolu_protein <- solu_protein |>\n filter(str_detect(description, \"OS=Homo sapiens\")) |>\n filter(x1pep == \"x\")\n\n# Extract the genename from description column to a column\n# of its own\nsolu_protein <- solu_protein |>\n mutate(genename = str_extract(description,\"GN=[^\\\\s]+\") |>\n str_replace(\"GN=\", \"\"))\n\n# Extract the top protein identifier from accession column (first\n# Uniprot ID after \"1::\") to a column of its own\nsolu_protein <- solu_protein |>\n mutate(protid = str_extract(accession, \"1::[^;]+\") |>\n str_replace(\"1::\", \"\"))" + "objectID": "transcriptomics/transcriptomics.html#transcriptomics-3-visualising-and-interpreting", + "href": "transcriptomics/transcriptomics.html#transcriptomics-3-visualising-and-interpreting", + "title": "Transcriptomics Data Analysis for Group Project", + "section": "", + "text": "This week you will learn some how to do some common data visualisations for transcriptomic data. You will conduct and present a Principal Component Analysis (PCA) and a Volcano plot. We will also conduct a GO enrichment analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. At the end of this workshop and the following independent study you will at least two figures suitable for including in your report, along with an understanding of the results you can report on. You will also have a script that you can use to repeat this process on other datasets.\nReferences", + "crumbs": [ + "Transcriptomics", + "Transcriptomics Data Analysis for Group Project" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#cool-code-1", - "href": "core/week-2-old/study_before_workshop.html#cool-code-1", + "objectID": "transcriptomics/week-3/study_before_workshop.html#overview", + "href": "transcriptomics/week-3/study_before_workshop.html#overview", "title": "Independent Study to prepare for workshop", - "section": "😎 Cool code 😎", - "text": "😎 Cool code 😎\n\nlibrary() calls collected\nUses code sections to make it easier to navigate\nUses white space and proper indentation\nCommented\nUses more informative name for the dataframe" + "section": "Overview", + "text": "Overview\n\n\nConcise summary of the experimental design and aims\nWhat the raw data consist of\nWhat has been done to the data so far\nWhat steps we will take in the workshop", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#code-algorithmically-1", - "href": "core/week-2-old/study_before_workshop.html#code-algorithmically-1", + "objectID": "transcriptomics/week-3/study_before_workshop.html#the-data", + "href": "transcriptomics/week-3/study_before_workshop.html#the-data", "title": "Independent Study to prepare for workshop", - "section": "Code ‘algorithmically’", - "text": "Code ‘algorithmically’\n\n\nWrite code which expresses the structure of the problem/solution.\nAvoid hard coding numbers if at all possible - declare variables instead\nDeclare frequently used values as variables at the start e.g., colour schemes, figure saving settings" + "section": "The Data", + "text": "The Data\nThere are three transcriptomic datasets\n\n🐸 bulk RNA-seq from Xenopus laevis embryos.\n🐭 single cell RNA-seq from mouse stemcells\n🎄 bulk RNA-seq from Arabidopsis thaliana\n💉 bulk RNA-seq from Leishmania mexicana", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.", - "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.", + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-1", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-1", "title": "Independent Study to prepare for workshop", - "section": "😩 Hard coding numbers.", - "text": "😩 Hard coding numbers.\n\n\nSuppose we want to calculate the sums of squares, \\(SS(x)\\), for the number of eggs in five nests.\nThe formula is given by: \\(\\sum (x_i- \\bar{x})^2\\)\nWe could calculate the mean and copy it, and the individual numbers into the formula" + "section": "🐸 Experimental design", + "text": "🐸 Experimental design\n\nSchematic of frog development experiment", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.-1", - "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.-1", + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-2", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-2", "title": "Independent Study to prepare for workshop", - "section": "😩 Hard coding numbers.", - "text": "😩 Hard coding numbers.\n\n# mean number of eggs per nest\nsum(3, 5, 6, 7, 8) / 5\n\n[1] 5.8\n\n# ss(x) of number of eggs\n(3 - 5.8)^2 + (5 - 5.8)^2 + (6 - 5.8)^2 + (7 - 5.8)^2 + (8 - 5.8)^2\n\n[1] 14.8\n\n\nI am coding the calculation of the mean rather using the mean() function only to explain what ‘coding algorithmically’ means using a simple example." + "section": "🐸 Experimental design", + "text": "🐸 Experimental design\n\nSchematic of frog development experiment\n\n3 fertilisations\ntwo siblings from each fertilisation one control, one FGF treated\nsequenced at three time points\n3 x 2 x 3 = 18 groups", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers", - "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers", + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-3", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-3", "title": "Independent Study to prepare for workshop", - "section": "😩 Hard coding numbers", - "text": "😩 Hard coding numbers\n\n\nif any of the sample numbers must be altered, all the code needs changing\nit is hard to tell that the output of the first line is a mean\nits hard to recognise that the numbers in the mean calculation correspond to those in the next calculation\nit is hard to tell that 5 is just the number of nests\nno way of know if numbers are the same by coincidence or they refer to the same thing" - }, - { - "objectID": "core/week-2-old/study_before_workshop.html#better", - "href": "core/week-2-old/study_before_workshop.html#better", - "title": "Independent Study to prepare for workshop", - "section": "😎 Better", - "text": "😎 Better\n\n# eggs each nest\neggs <- c(3, 5, 6, 7, 8)\n\n# mean eggs per nest\nmean_eggs <- sum(eggs) / length(eggs)\n\n# ss(x) of number of eggs\nsum((eggs - mean_eggs)^2)\n\n[1] 14.8" + "section": "🐸 Experimental design", + "text": "🐸 Experimental design\n\nSchematic of frog development experiment\n\n3 fertilisations. These are the replicates, 1, 2, 3\ntwo siblings from each fertilisation one control, one FGF treated. The treatments are paired\nsequenced at three time points. S14, S20, S30\n3 x 2 x 3 = 18 groups", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#better-1", - "href": "core/week-2-old/study_before_workshop.html#better-1", + "objectID": "transcriptomics/week-3/study_before_workshop.html#aim", + "href": "transcriptomics/week-3/study_before_workshop.html#aim", "title": "Independent Study to prepare for workshop", - "section": "😎 Better", - "text": "😎 Better\n\n\nthe commenting is similar but it is easier to follow\nif any of the sample numbers must be altered, only that number needs changing\nassigning a value you will later use to a variable with a meaningful name allows us to understand the first and second calculations\nmakes use of R’s elementwise calculation which resembles the formula (i.e., is expressed as the general rule)" + "section": "🐸 Aim", + "text": "🐸 Aim\n\n\nFind genes that are “differentially expressed” between control-treated and FGF-treated siblings\nDifferentially expressed means the expression in one group is significantly higher than in the other", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#summary", - "href": "core/week-2-old/study_before_workshop.html#summary", + "objectID": "transcriptomics/week-3/study_before_workshop.html#guided-analysis", + "href": "transcriptomics/week-3/study_before_workshop.html#guided-analysis", "title": "Independent Study to prepare for workshop", - "section": "Summary", - "text": "Summary\n\n\nUse an RStudio project for any R work (you can also incorporate other languages)\nWrite Cool code not Ugly code: space, consistency, indentation, comments, meaningful variable names\nWrite code which expresses the structure of the problem/solution.\nAvoid hard coding numbers if at all possible - declare variables instead" + "section": "🐸 Guided analysis", + "text": "🐸 Guided analysis\n\n\nThe workshops will take you through comparing the control and FGF treated sibling at S30\nYou will make other comparisons independently\nYou will be guided to carefully document your work so you can apply the same methods to other comparisons\nDo the independent study before and after the workshop!", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_before_workshop.html#references", - "href": "core/week-2-old/study_before_workshop.html#references", + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-4", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-4", "title": "Independent Study to prepare for workshop", - "section": "References", - "text": "References\n\n\n\n🔗 About Core 2: File types, workflow tips and other tools\n\n\n\n\nBryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk about Version Control?” Am. Stat. 72 (1): 20–27. https://doi.org/10.1080/00031305.2017.1399928.\n\n\nBryan, Jennifer, Jim Hester, Shannon Pileggi, and E. David Aja. n.d. What They Forgot to Teach You about r. https://rstats.wtf/.\n\n\nSandve, Geir Kjetil, Anton Nekrutenko, James Taylor, and Eivind Hovig. 2013. “Ten Simple Rules for Reproducible Computational Research.” PLoS Comput. Biol. 9 (10): e1003285. https://doi.org/10.1371/journal.pcbi.1003285.\n\n\nWilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K Teal. 2017. “Good Enough Practices in Scientific Computing.” PLoS Comput. Biol. 13 (6): e1005510. https://doi.org/10.1371/journal.pcbi.1005510." + "section": "🐭 Experimental design", + "text": "🐭 Experimental design\n\nSchematic of stem cell experiment", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html", - "href": "core/week-2-old/workshop.html", - "title": "Workshop", - "section": "", - "text": "In this workshop you will" + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-5", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-5", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Experimental design", + "text": "🐭 Experimental design\n\nSchematic of stem cell experiment\n\nCells were sorted using flow cytometry on the basis of cell surface markers\nThere are three cell types: LT-HSCs, HSPCs, Progs\nMany cells of each cell type were sequenced", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#session-overview", - "href": "core/week-2-old/workshop.html#session-overview", - "title": "Workshop", - "section": "", - "text": "In this workshop you will" + "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-6", + "href": "transcriptomics/week-3/study_before_workshop.html#experimental-design-6", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Experimental design", + "text": "🐭 Experimental design\n\nSchematic of stem cell experiment\n\nThere are three cell types: LT-HSCs, HSPCs, Progs These are the “treaments”\nMany cells of each type were sequenced: These are the replicates\n155 LT-HSCs, 701 HSPCs, 798 Progs", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#omics", - "href": "core/week-2-old/workshop.html#omics", - "title": "Workshop", - "section": "Omics", - "text": "Omics\n\ngene/transcript/protein/metabolite expression\ntranscriptomics 1\ntranscriptomics 2\nproteomics" + "objectID": "transcriptomics/week-3/study_before_workshop.html#aim-1", + "href": "transcriptomics/week-3/study_before_workshop.html#aim-1", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Aim", + "text": "🐭 Aim\n\n\nfind genes that are “differentially expressed” between at least two cell types\nDifferentially expressed means the expression in one group is significantly higher than in the other", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#images", - "href": "core/week-2-old/workshop.html#images", - "title": "Workshop", - "section": "Images", - "text": "Images\ncontrol_merged.tif\nlibrary(ijtiff)\nimg <- read_tif(\"data/control_merged.tif\")\nimg\n\nan image at least one and usually more matrices of numbers representing the intensity of light at each pixel in the image\nthe number of matrices depends on the number of ‘channels’ in the image\na channel is a colour in the image\na frame is a single image in a series of images\nwe might normally call this a multi-dimensional array: x and y coordinates of the pixels are 2 dimensions, the channel is the third dimension and time is the forth dimension\n\ndisplay(img)" + "objectID": "transcriptomics/week-3/study_before_workshop.html#guided-analysis-1", + "href": "transcriptomics/week-3/study_before_workshop.html#guided-analysis-1", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Guided analysis", + "text": "🐭 Guided analysis\n\n\nThe workshops will take you through comparing the HSPC and Prog cells\nYou will make other comparisons independently\nYou will be guided to carefully document your work so you can apply the same methods to other comparisons\nDo the independent study before and after the workshop!", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#structure", - "href": "core/week-2-old/workshop.html#structure", - "title": "Workshop", - "section": "Structure", - "text": "Structure\n1cq2.pdb" + "objectID": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data", + "href": "transcriptomics/week-3/study_before_workshop.html#raw-sequence-data", + "title": "Independent Study to prepare for workshop", + "section": "Raw Sequence data", + "text": "Raw Sequence data\n\n\nThe raw data are “reads” from a sequencing machine in FASTQ files\nA read is sequence of RNA which is shorter than the whole transcriptome\nThe length of the reads depends on the type of sequencing machine\n\nShort-read technologies (e.g. Illumina) have higher base accuracy but are harder to align\nLong-read technologies (e.g. Nanopore) have lower base accuracy but are easier to align\n\nOptional: You can read more about Sequencing technologies in Statistically useful experimental design (Rand and Forrester 2022)\n\n\nWhat has been done to the data so far\n\n\n\nGeneral steps\n\n\nReads are filtered and trimmed on the basis of a quality score\nThey are then aligned/pseudo-aligned to a reference genome/transcriptome\nAnd then counted to quantify the expression\nCounts need to be normalised to account for differences in sequencing depth and transcript length before, or as part of, statistical analysis.\n\n\n\n\n🐸 Data\n\nUnpublished (so far!)\nExpression for the whole transcriptome X. laevis v10.1 genome assembly\nValues are raw counts\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself\n\n\n\n🐭 Data\n\nPublished in Nestorowa et al. (2016)\nExpression for a subset of genes, the surfaceome\nValues are log2 normalised values\nThe statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values\n\n\n\n\nWorkshops\n\n\n\nWorkshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across rows and columns to check things are as we expect and detect rows/columns that need to be removed\nTranscriptomics 2: Statistical Analysis. Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.\nTranscriptomics 3: Visualising. Principal Component Analysis (PCA) volcano plots to visualise the results of the\n\n\n\nReferences\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)\n\n\n\n🔗 About Transcriptomics 1: Hello data!\n\n\n\n\n\n\n\nAllaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. “Quarto.” https://doi.org/10.5281/zenodo.5960048.\n\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.\n\n\nNestorowa, Sonia, Fiona K. Hamey, Blanca Pijuan Sala, Evangelia Diamanti, Mairi Shepherd, Elisa Laurenti, Nicola K. Wilson, David G. Kent, and Berthold Göttgens. 2016. “A Single-Cell Resolution Map of Mouse Hematopoietic Stem and Progenitor Cell Differentiation.” Blood 128 (8): e20–31. https://doi.org/10.1182/blood-2016-05-716480.\n\n\nR Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.\n\n\nRand, Emma, and Sarah Forrester. 2022. “Statistically Useful Experimental Design.” https://cloud-span.github.io/experimental_design00-overview/.\n\n\nXie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC.\n\n\n———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.\n\n\n———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.\n\n\nZhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra.", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#the-command-line", - "href": "core/week-2-old/workshop.html#the-command-line", - "title": "Workshop", - "section": "The command line", - "text": "The command line\nThe command line - or shell - is a text interface for your computer. It’s a program that takes in commands, which it passes on to the computer’s operating system to run.\n\nWindows PowerShell is a command-line in windows. It uses bash-like commands unlike the Command Prompt which uses dos commands (a sort of windows only language). You can open is by going to Start | Windows PowerShell or by searching for it in the search bar.\nTerminal is the command line in Mac OS X. You can open it by going to Applications | Utilities | Terminal or by searching for it in the Spotlight search bar.\ngit bash. I used the bash shell that comes with Git" + "objectID": "transcriptomics/week-3/study_before_workshop.html#general-steps", + "href": "transcriptomics/week-3/study_before_workshop.html#general-steps", + "title": "Independent Study to prepare for workshop", + "section": "General steps", + "text": "General steps\n\n\nReads are filtered and trimmed on the basis of a quality score\nThey are then aligned/pseudo-aligned to a reference genome/transcriptome\nAnd then counted to quantify the expression\nCounts need to be normalised to account for differences in sequencing depth and transcript length before, or as part of, statistical analysis.", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#rstudio-terminal", - "href": "core/week-2-old/workshop.html#rstudio-terminal", - "title": "Workshop", - "section": "RStudio terminal", - "text": "RStudio terminal\nThe RStudio terminal is a convenient interface to the shell without leaving RStudio. It is useful for running commands that are not available in R. For example, you can use it to run other programs like fasqc, git, ftp, ssh\nNavigating your file system\nSeveral commands are frequently used to create, inspect, rename, and delete files and directories.\n$\nThe dollar sign is the prompt (like > on the R console), which shows us that the shell is waiting for input.\nYou can find out where you are using the pwd command, which stands for “print working directory”.\n\npwd\n\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old\n\n\nYou can find out what you can see with ls which stands for “list”.\n\nls\n\ndata\nimages\noverview.qmd\nstudy_after_workshop.qmd\nstudy_before_workshop.ipynb\nstudy_before_workshop.qmd\nworkshop.html\nworkshop.qmd\nworkshop.rmarkdown\nworkshop_files\n\n\nYou might have noticed that unlike R, the commands do not have brackets after them. Instead, options (or switches) are given after the command. For example, we can modify the ls command to give us more information with the -l option, which stands for “long”.\n\nls -l\n\ntotal 128\ndrwxr-xr-x 2 runner docker 4096 Sep 18 13:53 data\ndrwxr-xr-x 2 runner docker 4096 Sep 18 13:53 images\n-rw-r--r-- 1 runner docker 1597 Sep 18 13:53 overview.qmd\n-rw-r--r-- 1 runner docker 184 Sep 18 13:53 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4807 Sep 18 13:53 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13029 Sep 18 13:53 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 58063 Sep 18 13:53 workshop.html\n-rw-r--r-- 1 runner docker 8550 Sep 18 13:53 workshop.qmd\n-rw-r--r-- 1 runner docker 8577 Sep 18 13:55 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4096 Sep 18 13:53 workshop_files\n\n\nYou can use more than one option at once. The -h option stands for “human readable” and makes the file sizes easier to understand for humans:\n\nls -hl\n\ntotal 128K\ndrwxr-xr-x 2 runner docker 4.0K Sep 18 13:53 data\ndrwxr-xr-x 2 runner docker 4.0K Sep 18 13:53 images\n-rw-r--r-- 1 runner docker 1.6K Sep 18 13:53 overview.qmd\n-rw-r--r-- 1 runner docker 184 Sep 18 13:53 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Sep 18 13:53 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Sep 18 13:53 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Sep 18 13:53 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Sep 18 13:53 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Sep 18 13:55 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Sep 18 13:53 workshop_files\n\n\nThe -a option stands for “all” and shows us all the files, including hidden files.\n\nls -alh\n\ntotal 136K\ndrwxr-xr-x 5 runner docker 4.0K Sep 18 13:55 .\ndrwxr-xr-x 8 runner docker 4.0K Sep 18 13:53 ..\ndrwxr-xr-x 2 runner docker 4.0K Sep 18 13:53 data\ndrwxr-xr-x 2 runner docker 4.0K Sep 18 13:53 images\n-rw-r--r-- 1 runner docker 1.6K Sep 18 13:53 overview.qmd\n-rw-r--r-- 1 runner docker 184 Sep 18 13:53 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Sep 18 13:53 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Sep 18 13:53 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Sep 18 13:53 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Sep 18 13:53 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Sep 18 13:55 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Sep 18 13:53 workshop_files\n\n\nYou can move about with the cd command, which stands for “change directory”. You can use it to move into a directory by specifying the path to the directory:\n\ncd data\npwd\ncd ..\npwd\ncd data\npwd\n\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old/data\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old\n/home/runner/work/BIO00088H-data/BIO00088H-data/core/week-2-old/data\n\n\nhead 1cq2.pdb\nHEADER OXYGEN STORAGE/TRANSPORT 04-AUG-99 1CQ2 \nTITLE NEUTRON STRUCTURE OF FULLY DEUTERATED SPERM WHALE MYOGLOBIN AT 2.0 \nTITLE 2 ANGSTROM \nCOMPND MOL_ID: 1; \nCOMPND 2 MOLECULE: MYOGLOBIN; \nCOMPND 3 CHAIN: A; \nCOMPND 4 ENGINEERED: YES; \nCOMPND 5 OTHER_DETAILS: PROTEIN IS FULLY DEUTERATED \nSOURCE MOL_ID: 1; \nSOURCE 2 ORGANISM_SCIENTIFIC: PHYSETER CATODON; \nhead -20 data/1cq2.pdb\nHEADER OXYGEN STORAGE/TRANSPORT 04-AUG-99 1CQ2 \nTITLE NEUTRON STRUCTURE OF FULLY DEUTERATED SPERM WHALE MYOGLOBIN AT 2.0 \nTITLE 2 ANGSTROM \nCOMPND MOL_ID: 1; \nCOMPND 2 MOLECULE: MYOGLOBIN; \nCOMPND 3 CHAIN: A; \nCOMPND 4 ENGINEERED: YES; \nCOMPND 5 OTHER_DETAILS: PROTEIN IS FULLY DEUTERATED \nSOURCE MOL_ID: 1; \nSOURCE 2 ORGANISM_SCIENTIFIC: PHYSETER CATODON; \nSOURCE 3 ORGANISM_COMMON: SPERM WHALE; \nSOURCE 4 ORGANISM_TAXID: 9755; \nSOURCE 5 EXPRESSION_SYSTEM: ESCHERICHIA COLI; \nSOURCE 6 EXPRESSION_SYSTEM_TAXID: 562; \nSOURCE 7 EXPRESSION_SYSTEM_VECTOR_TYPE: PLASMID; \nSOURCE 8 EXPRESSION_SYSTEM_PLASMID: PET15A \nKEYWDS HELICAL, GLOBULAR, ALL-HYDROGEN CONTAINING STRUCTURE, OXYGEN STORAGE- \nKEYWDS 2 TRANSPORT COMPLEX \nEXPDTA NEUTRON DIFFRACTION \nAUTHOR F.SHU,V.RAMAKRISHNAN,B.P.SCHOENBORN \nless 1cq2.pdb\nless is a program that displays the contents of a file, one page at a time. It is useful for viewing large files because it does not load the whole file into memory before displaying it. Instead, it reads and displays a few lines at a time. You can navigate forward through the file with the spacebar, and backwards with the b key. Press q to quit.\nA wildcard is a character that can be used as a substitute for any of a class of characters in a search, The most common wildcard characters are the asterisk (*) and the question mark (?).\nls *.csv\ncp stands for “copy”. You can copy a file from one directory to another by giving cp the path to the file you want to copy and the path to the destination directory.\ncp 1cq2.pdb copy_of_1cq2.pdb\ncp 1cq2.pdb ../copy_of_1cq2.pdb\ncp 1cq2.pdb ../bob.txt\nTo delete a file use the rm command, which stands for “remove”.\nrm ../bob.txt\nbut be careful because the file will be gone forever. There is no “are you sure?” or undo.\nTo move a file from one directory to another, use the mv command. mv works like cp except that it also deletes the original file.\nmv ../copy_of_1cq2.pdb .\nMake a directory\nmkdir mynewdir" + "objectID": "transcriptomics/week-3/study_before_workshop.html#data", + "href": "transcriptomics/week-3/study_before_workshop.html#data", + "title": "Independent Study to prepare for workshop", + "section": "🐸 Data", + "text": "🐸 Data\n\nUnpublished (so far!)\nExpression for the whole transcriptome X. laevis v10.1 genome assembly\nValues are raw counts\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/workshop.html#differences-between-r-and-python", - "href": "core/week-2-old/workshop.html#differences-between-r-and-python", - "title": "Workshop", - "section": "Differences between R and python", - "text": "Differences between R and python\nDemo\nYou’re finished!" + "objectID": "transcriptomics/week-3/study_before_workshop.html#data-1", + "href": "transcriptomics/week-3/study_before_workshop.html#data-1", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Data", + "text": "🐭 Data\n\nPublished in Nestorowa et al. (2016)\nExpression for a subset of genes, the surfaceome\nValues are log2 normalised values\nThe statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/overview.html", - "href": "core/week-2-old/overview.html", - "title": "Overview", - "section": "", - "text": "This week we will consider File types, workflow tips and other tools. The independent study reiterates the value of RStudio projects and shows you how you create them with usethis. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically. In the workshop we will examine some common biological data formats and discover some awesome short cuts to help you write cool 😎 code. You will also get a brief introduction to the command line and Google Colab.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain why RStudio are useful/essential and be able to use the usethis package\nwrite cool 😎 code not 😩 ugly code\nexplain the value of code which expresses the structure of the problem/solution.\ndescribe some common file types for biological data\nuse some useful shortcuts to help write cool 😎 code\nknow what the command line is and how to use it for simple tasks\nuse Google colab to run code\nrecognise some of the differences between R and Python\n\n\n\nInstructions\n\nPrepare 20 mins reading on RStudio Projects revisited, formatting code and coding algorithmically\nWorkshop\n\n💬 Types of biological data files\n🪄 Workflow tips and shortcuts\n💻 The command line\n💻 Google colab\n💻 Python\n\nConsolidate\n\n💻 not sure yet :)" + "objectID": "transcriptomics/week-3/study_before_workshop.html#workshops-1", + "href": "transcriptomics/week-3/study_before_workshop.html#workshops-1", + "title": "Independent Study to prepare for workshop", + "section": "Workshops", + "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across rows and columns to check things are as we expect and detect rows/columns that need to be removed\nTranscriptomics 2: Statistical Analysis. Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.\nTranscriptomics 3: Visualising. Principal Component Analysis (PCA) volcano plots to visualise the results of the", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2-old/study_after_workshop.html", - "href": "core/week-2-old/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "bbbb" + "objectID": "transcriptomics/week-3/study_before_workshop.html#references", + "href": "transcriptomics/week-3/study_before_workshop.html#references", + "title": "Independent Study to prepare for workshop", + "section": "References", + "text": "References\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)\n\n\n\n🔗 About Transcriptomics 1: Hello data!", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] }, { - "objectID": "core/week-2/overview.html", - "href": "core/week-2/overview.html", + "objectID": "transcriptomics/week-3/overview.html", + "href": "transcriptomics/week-3/overview.html", "title": "Overview", "section": "", - "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\nwrite cool 😎 code not 😩 ugly code\nexplain the value of code which expresses the structure of the problem/solution.\nuse some useful shortcuts to help write cool 😎 code\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n\nWorkshop\nConsolidate", + "text": "This week you will meet your data. The independent study will summarise how these data were generated and how they have been processed before being given to you. There will also be an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nexplore transcriptomics data to find the number of rows and columns and know how these correspond to samples and variables\nexplore the distribution of expression measures across whole data sets, across variables and across samples by summarising and plotting\nexplain what distributions are expected and interpret the distributions they have\nexplain on what basis we might filter out variables or samples\nimport, explore and filter transcriptomics data reproducibly so they can understand and reuse their code in the future\n\n\n\nInstructions\n\nPrepare\n\n📖 Read how the data were generated and how they have been processed so far and a summary of the analysis we will carry out over three workshops.\n\nWorkshop\n\n💻 Set up a Project\n💻 Import data\n💻 Explore the distribution of values across rows and columns\n💻 Look after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 3: Hello data!", "About" ] }, { - "objectID": "core/week-2/study_after_workshop.html", - "href": "core/week-2/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "These are suggestions\n\nWant github co-pilot?\n🎬 Create a GitHub account\n🎬 Apply for student benefits\nUpdate R and RStudio\n🎬 Update R\n🎬 Update RStudio.\nInstall package building tools\n🎬 Windows Install Rtools\n🎬 Mac install Xcode from Mac App Store\nUpdate packages:\n🎬 devtools, tidyverse, BiocManager, readxl", + "objectID": "transcriptomics/week-4/study_before_workshop.html#overview", + "href": "transcriptomics/week-4/study_before_workshop.html#overview", + "title": "Independent Study to prepare for workshop", + "section": "Overview", + "text": "Overview\nIn these slides we will:\n\n\nCheck where you are following week 3\n\nlearn some concepts in differential expression\n\nlog2 fold changes\nMultiple correction\nnormalisation\nstatistical model\n\n\nFind out what packages we will use", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", - "Consolidate!" + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" ] }, { - "objectID": "core/week-1-old/workshop.html", - "href": "core/week-1-old/workshop.html", - "title": "Workshop", - "section": "", - "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:" - }, - { - "objectID": "core/week-1-old/workshop.html#session-overview", - "href": "core/week-1-old/workshop.html#session-overview", - "title": "Workshop", - "section": "", - "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:" + "objectID": "transcriptomics/week-4/study_before_workshop.html#what-we-did-in-transcriptomics-1-hello-data", + "href": "transcriptomics/week-4/study_before_workshop.html#what-we-did-in-transcriptomics-1-hello-data", + "title": "Independent Study to prepare for workshop", + "section": "What we did in Transcriptomics 1: 👋 Hello data!", + "text": "What we did in Transcriptomics 1: 👋 Hello data!\n\n\n\nDiscovered how many rows and columns we had in our datasets and what these were.\nExamined the distribution of values\n\nacross the whole dataset\nacross the samples/cells (i.e., averaged over genes) to see variation between samples/cells\nacross the genes (i.e., averaged over samples/cells) to see variation between genes\n\n\nSaved files of filtered data.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#what-is-reproducibility", - "href": "core/week-1-old/workshop.html#what-is-reproducibility", - "title": "Workshop", - "section": "What is reproducibility?", - "text": "What is reproducibility?\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions. The findings can be generalised\n\n\n\n\nThe Turing Way's definitions of reproducible research" + "objectID": "transcriptomics/week-4/study_before_workshop.html#where-should-you-be-1", + "href": "transcriptomics/week-4/study_before_workshop.html#where-should-you-be-1", + "title": "Independent Study to prepare for workshop", + "section": "Where should you be?", + "text": "Where should you be?\nAfter the Transcriptomics 1: 👋 Hello data! Workshop including:\n\n🤗 Look after future you! and\nthe Independent Study to consolidate, you should have:", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#why-does-it-matter", - "href": "core/week-1-old/workshop.html#why-does-it-matter", - "title": "Workshop", - "section": "Why does it matter?", - "text": "Why does it matter?\n\n\n\nfutureself, CC-BY-NC, by Julen Colomb\n\n\n\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)" - }, + "objectID": "transcriptomics/week-4/study_before_workshop.html#frogs", + "href": "transcriptomics/week-4/study_before_workshop.html#frogs", + "title": "Independent Study to prepare for workshop", + "section": "🐸 Frogs", + "text": "🐸 Frogs\n\nAn RStudio Project called frogs-88H which contains:\n\nRaw data (S14, S20 and S30)\nProcessed data: s30_filtered.csv and equivalent for S14 OR S20)\nTwo scripts called cont-fgf-s30.R and either cont-fgf-s20.R OR cont-fgf-s14.R\n\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, { - "objectID": "core/week-1-old/workshop.html#how-to-achieve-reproducibility", - "href": "core/week-1-old/workshop.html#how-to-achieve-reproducibility", - "title": "Workshop", - "section": "How to achieve reproducibility", - "text": "How to achieve reproducibility\n\nScripting\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nDocumentation: Readme files, code comments, metadata, version control" + "objectID": "transcriptomics/week-4/study_before_workshop.html#mice", + "href": "transcriptomics/week-4/study_before_workshop.html#mice", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Mice", + "text": "🐭 Mice\n\nAn RStudio Project called mice-88H which contains\n\nRaw data (hspc, prog, lthsc)\nProcessed data (hspc_summary_gene.csv, hspc_summary_samp.csv, prog_summary_gene.csv, prog_summary_samp.csv)\n\n\nOne script called hspc-prog.R\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#rationale-for-scripting", - "href": "core/week-1-old/workshop.html#rationale-for-scripting", - "title": "Workshop", - "section": "Rationale for scripting?", - "text": "Rationale for scripting?\n\nScience is the generation of ideas, designing work to test them and reporting the results.\nWe ensure laboratory and field work is replicable, robust and generalisable by planning and recording in lab books and using standard protocols. Repeating results is still hard.\nWorkflows for computational projects, and the data analysis and reporting of other work can, and should, be 100% reproducible!\nScripting is the way to achieve this." + "objectID": "transcriptomics/week-4/study_before_workshop.html#arabidopisis", + "href": "transcriptomics/week-4/study_before_workshop.html#arabidopisis", + "title": "Independent Study to prepare for workshop", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#project-oriented-workflow", - "href": "core/week-1-old/workshop.html#project-oriented-workflow", - "title": "Workshop", - "section": "Project-oriented workflow", - "text": "Project-oriented workflow\n\nuse folders to organise your work\nyou are aiming for structured, systematic and repeatable.\ninputs and outputs should be clearly identifiable from structure and/or naming\n\nExamples\n-- liver_transcriptome/\n |__data\n |__raw/\n |__processed/\n |__images/\n |__code/\n |__reports/\n |__figures/" + "objectID": "transcriptomics/week-4/study_before_workshop.html#leishmania", + "href": "transcriptomics/week-4/study_before_workshop.html#leishmania", + "title": "Independent Study to prepare for workshop", + "section": "💉 Leishmania", + "text": "💉 Leishmania", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#naming-things", - "href": "core/week-1-old/workshop.html#naming-things", - "title": "Workshop", - "section": "Naming things", - "text": "Naming things\n\n\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/\n\n\nGuiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting\n\nI suggest\n\nno spaces in names\nuse snake_case or kebab-case rather than CamelCase or dot.case\nuse all lower case except very occasionally where convention is otherwise, e.g., README, LICENSE\nordering: use left-padded numbers e.g., 01, 02….99 or 001, 002….999\ndates ISO 8601 format: 2020-10-16\nwrite down your conventions\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps" + "objectID": "transcriptomics/week-4/study_before_workshop.html#if-you-do-not-have-those", + "href": "transcriptomics/week-4/study_before_workshop.html#if-you-do-not-have-those", + "title": "Independent Study to prepare for workshop", + "section": "If you do not have those", + "text": "If you do not have those\nGo through:\n\nTranscriptomics 1: 👋 Hello data! Workshop including:\n🤗 Look after future you! and\nthe Independent Study to consolidate", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#readme-files", - "href": "core/week-1-old/workshop.html#readme-files", - "title": "Workshop", - "section": "Readme files", - "text": "Readme files\nREADMEs are a form of documentation which have been widely used for a long time. They contain all the information about the other files in a directory. They can be extensive but need not be. Concise is good. Bullet points are good\n\nGive a project title and description, brief\nstart date, last updated date and contact information\nOutline the folder structure\nGive software requirements: programs and versions used or required. There are packages that give session information in R Wickham et al. (2021) and Python Ostblom, Joel (2019)\n\nR:\nsessioninfo::session_info()\nPython:\nimport session_info\nsession_info.show()\n\nInstructions run the code, build reports, and reproduce the figures etc\nWhere to find the data, outputs\nAny other information that needed to understand and recreate the work\nIdeally, a summary of changes with the date\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__README.md\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps" + "objectID": "transcriptomics/week-4/study_before_workshop.html#differential-expression-1", + "href": "transcriptomics/week-4/study_before_workshop.html#differential-expression-1", + "title": "Independent Study to prepare for workshop", + "section": "Differential expression", + "text": "Differential expression\n\n\nThe goal of differential expression is to test whether there is a significant difference in gene expression between groups.\nA large number of computational methods have been developed for differential expression analysis\nR is the leading language for differential expression analysis", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/workshop.html#code-comments", - "href": "core/week-1-old/workshop.html#code-comments", - "title": "Workshop", - "section": "Code comments", - "text": "Code comments\n\nComments are notes in the code which are not executed. They are ignored by the computer but are read by humans. They are used to explain what the code is doing and why. They are also used to temporarily remove code from execution." + "objectID": "transcriptomics/week-4/study_before_workshop.html#differential-expression-2", + "href": "transcriptomics/week-4/study_before_workshop.html#differential-expression-2", + "title": "Independent Study to prepare for workshop", + "section": "Differential expression", + "text": "Differential expression\n\n\nthe statistical concepts are very similar to those you have already encountered in stages 1 and 2\nyou are essentially doing paired- or independent-samples tests\nbut you are doing a lot of them! One for every gene\ndata need normalisation before comparison", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#statistical-concepts", + "href": "transcriptomics/week-4/study_before_workshop.html#statistical-concepts", + "title": "Independent Study to prepare for workshop", + "section": "Statistical concepts", + "text": "Statistical concepts\nLike familiar tests:\n\n\nthe type of test (the function) you use depends on the type of data you have and the type of assumptions you want to make\nthe tests work by comparing the variation between groups to the variation within groups.\nyou will get: the difference between groups, a test statistic, and a p-value\nyou also get an adjusted p-value which is the ‘correction’ for multiple testing", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#the-difference-between-groups", + "href": "transcriptomics/week-4/study_before_workshop.html#the-difference-between-groups", + "title": "Independent Study to prepare for workshop", + "section": "The difference between groups", + "text": "The difference between groups\n\n\nThe difference between groups is given as the log2 fold change in expression between groups\nA fold change is the expression in one group divided by the expression in the other group\nwe use fold changes because the absolute expression values may not be accurate and relative changes are what matters\nwe use log2 fold changes because they are symmetrical around 0", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#why-log2-fold-change", + "href": "transcriptomics/week-4/study_before_workshop.html#why-log2-fold-change", + "title": "Independent Study to prepare for workshop", + "section": "Why log2 fold change?", + "text": "Why log2 fold change?\n\n\nlog2 means log to the base 2\nSuppose the expression in group A is 5 and the expression in group B is 8\n\\(\\frac{A}{B} = \\frac{5}{8}\\) = 0.625 and \\(\\frac{B}{A} = \\frac{8}{5}\\) = 1.6\nIf B > A the range of \\(\\frac{A}{B}\\) is 0 - 1 but the range of \\(\\frac{B}{A}\\) is 1 - \\(\\infty\\)\nHowever, if we take the log2 of \\(\\frac{A}{B}\\) we get -0.678 and the log2 of \\(\\frac{B}{A}\\) is 0.678.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#adjusted-p-value", + "href": "transcriptomics/week-4/study_before_workshop.html#adjusted-p-value", + "title": "Independent Study to prepare for workshop", + "section": "Adjusted p-value", + "text": "Adjusted p-value\n\n\nThe p-value has to be adjusted because of the number of tested being done\nIn stage 1, we used Tukey’s HSD to adjust for multiple testing following an ANOVA\nHere the Benjamini-Hochberg procedure (Benjamini and Hochberg 1995) is used to adjust for multiple testing\nBH controls the False Discovery Rate (FDR)\nThe FDR is the proportion of false positives among the genes called significant", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#normalisation", + "href": "transcriptomics/week-4/study_before_workshop.html#normalisation", + "title": "Independent Study to prepare for workshop", + "section": "Normalisation", + "text": "Normalisation\n\n\nNormalisation adjusts raw counts to account for factors that prevent direct comparisons\nNormalisation usually influences the experimental design as well as the analysis\n\nNormalisation\n\n🐭 mice data are normalised\n🐸 frog, 🎄 Arabidopisis and 💉 Leishmania data are raw counts (not normalised) because the differential expression method will do this.\nNormalisation is a big topic. See Düren, Lederer, and Qin (2022); Bullard et al. (2010); Lytal, Ran, and An (2020); Abrams et al. (2019); Vallejos et al. (2017); Evans, Hardin, and Stoebel (2017)", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#normalisation-1", + "href": "transcriptomics/week-4/study_before_workshop.html#normalisation-1", + "title": "Independent Study to prepare for workshop", + "section": "Normalisation", + "text": "Normalisation\n\n🐭 mice data are normalised\n🐸 frog, 🎄 Arabidopisis and 💉 Leishmania data are raw counts (not normalised) because the differential expression method will do this.\nNormalisation is a big topic. See Düren, Lederer, and Qin (2022); Bullard et al. (2010); Lytal, Ran, and An (2020); Abrams et al. (2019); Vallejos et al. (2017); Evans, Hardin, and Stoebel (2017)", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-de-tests", + "href": "transcriptomics/week-4/study_before_workshop.html#type-of-de-tests", + "title": "Independent Study to prepare for workshop", + "section": "Type of DE tests", + "text": "Type of DE tests\n\n\nA large number of computational methods have been developed for differential expression analysis\nMethods vary in the types of normalisation they do, the statistical model they use, and the assumptions they make\nSome of the most well-known methods are provided by: DESeq2 (Love, Huber, and Anders 2014), edgeR (Robinson, McCarthy, and Smyth 2010; McCarthy, Chen, and Smyth 2012; Chen, Lun, and Smyth 2016), limma (Ritchie et al. 2015) and scran (Lun, McCarthy, and Marioni 2016)", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function", + "href": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function", + "title": "Independent Study to prepare for workshop", + "section": "Type of test (the function)", + "text": "Type of test (the function)\n\n\n\nDESeq2 and edgeR\n\nboth require raw counts as input\nboth assume that most genes are not DE\nboth use a negative binomial distribution1 to model the data\nuse slightly different normalisation methods: DESeq2 uses the median of ratios method; edgeR uses the trimmed mean of M values (TMM) method\n\n\n\n\nA discrete distribution for counts, similar to the Poisson distribution", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-1", + "href": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-1", + "title": "Independent Study to prepare for workshop", + "section": "Type of test (the function)", + "text": "Type of test (the function)\n\n\nscran\n\nworks on normalized log-expression values\nperforms Welch t-tests", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#meta-data", + "href": "transcriptomics/week-4/study_before_workshop.html#meta-data", + "title": "Independent Study to prepare for workshop", + "section": "Meta data", + "text": "Meta data\n\n\nDE methods require two types of data: the expression data and the meta data\nThe meta data gives the information about the samples\nIt says which samples (columns of data) are in which treatment group (s)\nIt is usually stored in a separate file", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#data", + "href": "transcriptomics/week-4/study_before_workshop.html#data", + "title": "Independent Study to prepare for workshop", + "section": "🐸 Data", + "text": "🐸 Data\n\nExpression for the whole transcriptome X. laevis v10.1 genome assembly\nValues are raw counts\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#arabidopisis-1", + "href": "transcriptomics/week-4/study_before_workshop.html#arabidopisis-1", + "title": "Independent Study to prepare for workshop", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\n\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#leishmania-1", + "href": "transcriptomics/week-4/study_before_workshop.html#leishmania-1", + "title": "Independent Study to prepare for workshop", + "section": "💉 Leishmania", + "text": "💉 Leishmania\n\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#data-1", + "href": "transcriptomics/week-4/study_before_workshop.html#data-1", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Data", + "text": "🐭 Data\n\nExpression for a subset of genes, the surfaceome\nValues are log2 normalised values\nThe statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#adding-gene-information-1", + "href": "transcriptomics/week-4/study_before_workshop.html#adding-gene-information-1", + "title": "Independent Study to prepare for workshop", + "section": "Adding gene information", + "text": "Adding gene information\n\n\nThe gene id is difficult to interpret\nTherefore we need to add information such as the gene name and a description to the results\n🐸 Frog data information comes from Xenbase (Fisher et al. 2023)\n🐭 Mice data information comes from Ensembl (Birney et al. 2004)", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#xenbase", + "href": "transcriptomics/week-4/study_before_workshop.html#xenbase", + "title": "Independent Study to prepare for workshop", + "section": "🐸 Xenbase", + "text": "🐸 Xenbase\n\nxenbase logoXenbase is a model organism database that provides genomic, molecular, and developmental biology information about Xenopus laevis and Xenopus tropicalis.\n\nIt took me some time to find the information you need.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#xenbase-1", + "href": "transcriptomics/week-4/study_before_workshop.html#xenbase-1", + "title": "Independent Study to prepare for workshop", + "section": "🐸 Xenbase", + "text": "🐸 Xenbase\n\n\nI got the information from the Xenbase information pages under Data Reports | Gene Information\nThis is listed: Xenbase Gene Product Information [readme] gzipped gpi (tab separated)\nClick on the readme link to see the file format and columns\nI downloaded xenbase.gpi.gz, unzipped it, removed header lines and the Xenopus tropicalis (taxon:8364) entries and saved it as xenbase_info.xlsx\nIn the workshop you will import this file and merge the information with the results file", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#ensembl", + "href": "transcriptomics/week-4/study_before_workshop.html#ensembl", + "title": "Independent Study to prepare for workshop", + "section": "🐭 Ensembl", + "text": "🐭 Ensembl\n\n\nEnsembl creates, integrates and distributes reference datasets and analysis tools that enable genomics\nBioMart (Smedley et al. 2009) provides uniform access to these large datasets\nbiomaRt (Durinck et al. 2009, 2005) is a Bioconductor package gives you programmatic access to BioMart.\nIn the workshop you use this package to get information you can merge with the results file", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#packages", + "href": "transcriptomics/week-4/study_before_workshop.html#packages", + "title": "Independent Study to prepare for workshop", + "section": "Packages", + "text": "Packages\nThese packages are all on the University computers which you can access on campus or remotely using the VDS\nIf you want to use your own machine you will need to install the packages. ::: {style=“font-size: 60%;”}\nInstall BiocManager from CRAN in the the normal way and set the version of Bioconductor packages to install:\n\ninstall.packages(\"BiocManager\")\nBiocManager::install(version = \"3.19\")\n\nInstall DESeq2 from Bioconductor using BiocManager:\n\nBiocManager::install(\"DESeq2\")\n\nInstall scran from Bioconductor using BiocManager:\n\nBiocManager::install(\"scran\")\n\nInstall biomaRt from Bioconductor using BiocManager:\n\nBiocManager::install(\"biomaRt\")\n\n:::", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#workshops-1", + "href": "transcriptomics/week-4/study_before_workshop.html#workshops-1", + "title": "Independent Study to prepare for workshop", + "section": "Workshops", + "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across rows and columns to check things are as we expect and detect rows/columns that need to be removed\nTranscriptomics 2: Statistical Analysis. Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.\nTranscriptomics 3: Visualising. Principal Component Analysis (PCA) volcano plots to visualise the results of the", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] + }, + { + "objectID": "transcriptomics/week-4/study_before_workshop.html#references", + "href": "transcriptomics/week-4/study_before_workshop.html#references", + "title": "Independent Study to prepare for workshop", + "section": "References", + "text": "References\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)\n\n\n\n🔗 About Transcriptomics 2: Statistical Analysis\n\n\n\n\nAbrams, Zachary B., Travis S. Johnson, Kun Huang, Philip R. O. Payne, and Kevin Coombes. 2019. “A Protocol to Evaluate RNA Sequencing Normalization Methods.” BMC Bioinformatics 20 (24): 679. https://doi.org/10.1186/s12859-019-3247-x.\n\n\nAllaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. “Quarto.” https://doi.org/10.5281/zenodo.5960048.\n\n\nBenjamini, Yoav, and Yosef Hochberg. 1995. “Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing.” J. R. Stat. Soc. Series B Stat. Methodol. 57 (1): 289–300. http://www.jstor.org/stable/2346101.\n\n\nBirney, Ewan, T. Daniel Andrews, Paul Bevan, Mario Caccamo, Yuan Chen, Laura Clarke, Guy Coates, et al. 2004. “An Overview of Ensembl.” Genome Research 14 (5): 925–28. https://doi.org/10.1101/gr.1860604.\n\n\nBullard, James H., Elizabeth Purdom, Kasper D. Hansen, and Sandrine Dudoit. 2010. “Evaluation of Statistical Methods for Normalization and Differential Expression in mRNA-Seq Experiments.” BMC Bioinformatics 11 (1): 94. https://doi.org/10.1186/1471-2105-11-94.\n\n\nChen, Yunshun, Aaron T. L. Lun, and Gordon K. Smyth. 2016. “From Reads to Genes to Pathways: Differential Expression Analysis of RNA-Seq Experiments Using Rsubread and the edgeR Quasi-Likelihood Pipeline.” https://doi.org/10.12688/f1000research.8987.2.\n\n\nDüren, Yannick, Johannes Lederer, and Li-Xuan Qin. 2022. “Depth Normalization of Small RNA Sequencing: Using Data and Biology to Select a Suitable Method.” Nucleic Acids Research 50 (10): e56. https://doi.org/10.1093/nar/gkac064.\n\n\nDurinck, Steffen, Yves Moreau, Arek Kasprzyk, Sean Davis, Bart De Moor, Alvis Brazma, and Wolfgang Huber. 2005. “BioMart and Bioconductor: A Powerful Link Between Biological Databases and Microarray Data Analysis.” Bioinformatics 21: 3439–40.\n\n\nDurinck, Steffen, Paul T. Spellman, Ewan Birney, and Wolfgang Huber. 2009. “Mapping Identifiers for the Integration of Genomic Datasets with the r/Bioconductor Package biomaRt.” Nature Protocols 4: 1184–91.\n\n\nEvans, Ciaran, Johanna Hardin, and Daniel M Stoebel. 2017. “Selecting Between-Sample RNA-Seq Normalization Methods from the Perspective of Their Assumptions.” Briefings in Bioinformatics 19 (5): 776–92. https://doi.org/10.1093/bib/bbx008.\n\n\nFisher, Malcolm, Christina James-Zorn, Virgilio Ponferrada, Andrew J Bell, Nivitha Sundararaj, Erik Segerdell, Praneet Chaturvedi, et al. 2023. “Xenbase: Key Features and Resources of the Xenopus Model Organism Knowledgebase.” Genetics 224 (1): iyad018. https://doi.org/10.1093/genetics/iyad018.\n\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.\n\n\nLytal, Nicholas, Di Ran, and Lingling An. 2020. “Normalization Methods on Single-Cell RNA-Seq Data: An Empirical Survey.” Frontiers in Genetics 11. https://www.frontiersin.org/articles/10.3389/fgene.2020.00041.\n\n\nMcCarthy, Davis J., Yunshun Chen, and Gordon K. Smyth. 2012. “Differential Expression Analysis of Multifactor RNA-Seq Experiments with Respect to Biological Variation.” Nucleic Acids Research 40 (10): 4288–97. https://doi.org/10.1093/nar/gks042.\n\n\nR Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.\n\n\nRitchie, Matthew E., Belinda Phipson, Di Wu, Yifang Hu, Charity W. Law, Wei Shi, and Gordon K. Smyth. 2015. “Limma Powers Differential Expression Analyses for RNA-Sequencing and Microarray Studies.” Nucleic Acids Research 43 (7): e47. https://doi.org/10.1093/nar/gkv007.\n\n\nRobinson, Mark D., Davis J. McCarthy, and Gordon K. Smyth. 2010. “edgeR: A Bioconductor Package for Differential Expression Analysis of Digital Gene Expression Data.” Bioinformatics 26 (1): 139–40. https://doi.org/10.1093/bioinformatics/btp616.\n\n\nSmedley, Damian, Syed Haider, Benoit Ballester, Richard Holland, Darin London, Gudmundur Thorisson, and Arek Kasprzyk. 2009. “BioMart Biological Queries Made Easy.” BMC Genomics 10 (1): 22. https://doi.org/10.1186/1471-2164-10-22.\n\n\nVallejos, Catalina A., Davide Risso, Antonio Scialdone, Sandrine Dudoit, and John C. Marioni. 2017. “Normalizing Single-Cell RNA Sequencing Data: Challenges and Opportunities.” Nature Methods 14 (6): 565–71. https://doi.org/10.1038/nmeth.4292.\n\n\nXie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC.\n\n\n———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/.\n\n\n———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.\n\n\nZhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "Prepare!" + ] }, { - "objectID": "core/week-1-old/study_before_workshop.html", - "href": "core/week-1-old/study_before_workshop.html", - "title": "Independent Study to prepare for workshop", + "objectID": "transcriptomics/week-4/overview.html", + "href": "transcriptomics/week-4/overview.html", + "title": "Overview", "section": "", - "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and filesystems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\nIn previous years you have submitted and RStudio Project as part of your BABS work. In this module you will develop this by submitting a Research Compendium. A Research Compendium is a documented collection of all the digital parts of the research project including data (or access to data), code and outputs. The Compendium might be a single Quarto/RStudio Project, (like you have done previously but with better documentation) or it might be a folder including an Quarto/RStudio Project and other material/scripts including the description of unscripted processing. You might want to remind yourself of the example RStudio Project, Y12345678.zip used in BABS 2." + "text": "This week we cover differential expression analysis on raw counts or log normalised values. The independent study will allow you to check you have what you should have following the Transcriptomics 1: Hello Data workshop and Consolidation study. It will also summarise the concepts and methods we will use in the workshop. In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both. You will also add information about genes programmatically.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nverify they have the required RStudio Project set up and the data and code files from the previous Workshop and Consolidation study\nexplain the goal of differential expression analysis and the importance of normalisation\nexplain why and how the nature of the input values determines the analysis package used\ndescribe the metadata needed to carry out differential expression analysis and the statistical models used by DESeq2 and scran\nfind genes that are unexpressed or expressed in a just one group\nperform differential expression analysis on raw counts using DESeq2 or on logged normalised expression values using scran or both.\nexplain the output of differential expression: log fold change, p-value, adjusted p-value\nadd information about genes programmatically to their results\nprepare for a discussion with their project supervisor about genes of interest\n\n\n\nInstructions\n\nPrepare\n\n📖 Check what you should have after week 3\n📖 Read about concepts in differential expression analysis.\n📖 Find out what packages we will use.\n\nWorkshop\n\n💻 Find unexpressed genes and those expressed in a single cell type or treatment group.\n💻 Set up the metadata for differential expression analysis.\n💻 Perform differential expression analysis on raw counts using DESeq2 or on logged normalised expression values using scran.\nLook after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.\n\n\n\n\n\n\n\n\n\n\nReferences\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.", + "crumbs": [ + "Transcriptomics", + "Week 4: Statistical Analysis", + "About" + ] }, { - "objectID": "core/week-6-old/workshop.html", - "href": "core/week-6-old/workshop.html", - "title": "Workshop", + "objectID": "index.html", + "href": "index.html", + "title": "Data Analysis for the Group Research Project", "section": "", - "text": "Use this session to ask any questions about Core 1 Organising reproducible data analyses and Core 2 File types, workflow tips and other tools in particular, or about R and RStudio in general. We will also try to answer any questions about the ’mics, Image and Structure strands.\n88H students might also review Stage 1 and 2 content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions because there is no 2FA and the resources are searchable.\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n70M students might also review 52M content to see if there are areas you might benefit from revisiting. You can access these through the VLE site but you might find it helpful to use this link without 2FA.\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto.\n\nPages made with R (R Core Team 2024), Quarto (allaire2022?), knitr (knitr?), kableExtra (Zhu 2021)" + "text": "You are either\n\nan integrated masters student doing BIO00088H Group Research Project or\nan MSc Bioinformatics student doing BIO00070M Research, Professional and Team Skills\n\nIntegrated masters students doing 88H will be doing one of these projects:\nThe project types are:\n\n\n\n\n\n\n\n\nTitle\nDirector\nData analysis strand\n\n\n\n\nIdentifying transcriptional targets of FGF signalling in Xenopus embryos.\nBetsy Pownall\nTranscriptomics, Emma Rand\n\n\nInvestigating the differentiation of stem cells in healthy bone marrow\nJillian Barlow\nTranscriptomics, Emma Rand\n\n\nInvestigating  pathways involved in the Nickel detoxification in Willow\nLiz Rylott\nTranscriptomics, Emma Rand\n\n\nInvestigating differential RNA expression through the Leishmania lifecycle\nPegine Walrad\nTranscriptomics, Emma Rand\n\n\nIdentifying novel proteins regulating synaptophagy\nRichard Maguire\nImage analysis, Richard Bingham\n\n\nDefining pathological cascades in dopaminergic neurons in a Parkinson’s model\nSean Sweeney\nImage analysis, Richard Bingham\n\n\nDiscovery proteins for biotech applications: new classes of antibody mimetics\nMichael Plevin\nStructure Analysis, Jon Agirre\n\n\n\nData Analysis compromises five workshops covering computational skills needed in your project. MSc Bioinformatics students do the Core workshops and the transcriptomics workshops as part of BIO00070M. The data analysis workshops are:\n\n\n\n\n\n\n\nWeek\nData Strand\n\n\n\n\n2\nCore 1 Supporting Information - reproducibility, project-oriented workflow, naming things, cool code, handy shortcuts\n\n\n3\nStrand specific 1\n\n\n4\nStrand specific 2\n\n\n5\nStrand specific 3\n\n\n6\nCore 2 Supporting Information - documenting with a README, curating code, non-coded processes\n\n\n\n\n\n\n\n\n\nStudents who successfully complete this module will be able to\n\nuse appropriate computational techniques to reproducibly process, analyse and visualise data and generate scientific reports based on project work.\n\n\n\n\nAll material is on the VLE so why is this site useful? This site collects everything together in a searchable way. The search icon is on the top right.\n\n\n\nRand E (2024). Data Analysis for Group Project. https://3mmarand.github.io/BIO00088H-data/.\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)\nReferences" }, { - "objectID": "core/week-6-old/workshop.html#session-overview", - "href": "core/week-6-old/workshop.html#session-overview", - "title": "Workshop", + "objectID": "index.html#module-learning-outcome-linked-to-this-content", + "href": "index.html#module-learning-outcome-linked-to-this-content", + "title": "Data Analysis for the Group Research Project", "section": "", - "text": "Use this session to ask any questions about Core 1 Organising reproducible data analyses and Core 2 File types, workflow tips and other tools in particular, or about R and RStudio in general. We will also try to answer any questions about the ’mics, Image and Structure strands.\n88H students might also review Stage 1 and 2 content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions because there is no 2FA and the resources are searchable.\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n70M students might also review 52M content to see if there are areas you might benefit from revisiting. You can access these through the VLE site but you might find it helpful to use this link without 2FA.\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto.\n\nPages made with R (R Core Team 2024), Quarto (allaire2022?), knitr (knitr?), kableExtra (Zhu 2021)" + "text": "Students who successfully complete this module will be able to\n\nuse appropriate computational techniques to reproducibly process, analyse and visualise data and generate scientific reports based on project work." }, { - "objectID": "core/week-6-old/study_before_workshop.html", - "href": "core/week-6-old/study_before_workshop.html", - "title": "Independent Study to prepare for workshop", + "objectID": "index.html#what-is-this-site-for", + "href": "index.html#what-is-this-site-for", + "title": "Data Analysis for the Group Research Project", "section": "", - "text": "📖 Read materials from Core 1 Organising reproducible data analyses and make a note of questions you have\n📖 Read materials from Core 2 File types, workflow tips and other tools and make a note of questions you have.\n📖 Review Stage 1 and 2 (88H students) or 52M (70M students) content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions, particularly for stage 1.\n\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n52M\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto." + "text": "All material is on the VLE so why is this site useful? This site collects everything together in a searchable way. The search icon is on the top right." }, { - "objectID": "core/week-6/workshop.html", - "href": "core/week-6/workshop.html", - "title": "Workshop", + "objectID": "index.html#please-cite-as", + "href": "index.html#please-cite-as", + "title": "Data Analysis for the Group Research Project", "section": "", - "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Workshop" - ] + "text": "Rand E (2024). Data Analysis for Group Project. https://3mmarand.github.io/BIO00088H-data/.\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)\nReferences" }, { - "objectID": "core/week-6/workshop.html#session-overview", - "href": "core/week-6/workshop.html#session-overview", - "title": "Workshop", + "objectID": "images/images.html", + "href": "images/images.html", + "title": "Image Data Analysis for Group Project", "section": "", - "text": "In this workshop we will discuss why reproducibility matters and how to organise your work to make it reproducible. We will cover:", + "text": "The following ImageJ workflow uses the processing steps you used in workshop 3 with one change. That change is to save the results to file rather than having the results window pop up and saving from there. Or maybe two changes: it also tells you to use meaning systematic file names that will be easy to process when importing data. The RStudio workflow shows you how to import multiple files into one dataframe with columns indicating the treatment.\n\nSave files with systematic names: ev_0.avi 343_0.avi ev_1.avi 343_1.avi ev_2.5.avi 343_2.5.avi\nOpen ImageJ\nOpen video file eg ev_2.5.avi\n\nConvert to 8-bit: Image | Type | 8-bit\nCrop to petri dish: Select then Image | Crop\nCalculate average pixel intensity: Image | Stacks | Z Project\n\nProjection type: Average Intensity to create AVG_ev_2.5.avi\n\n\n\nSubtract average from image: Process | Image Calculator\n\nImage 1: ev_2.5.avi\n\nOperation: Subtract\nImage 2: AVG_ev_2.5.avi\n\nCreate new window: checked\nOK, Yes to Process all\n\n\nInvert: Edit | Invert\nAdjust threshold: Image | Adjust | Threshold\n\nMethod: Default\nThresholding: Default, B&W\nDark background: checked\nAuto or adjust a little but make sure the larvae do not disappear at later points in the video (use the slider)\nApply\n\n\nInvert: Edit | Invert\nTrack: Plugins | wrMTrck\n\nSet minSize: 10\nSet maxSize: 400\nSet maxVelocity: 10\nSet maxAreaChange: 200\nSet bendThreshold: 1\n\nImportant: check Save Results File This is different to what you did in the workshop. It will help because the results will be saved automatically rather than to saving from the Results window that other pops up. Consequently, you will be able to save the results files with systematic names relating to their treatments and then read them into R simultaneously. That will also allow you to add information from the name of the file (which has the treatment information) to the resulting dataframes\n\n\nwrMTrck window with the settings listed above shown\n\n\nClick OK. Save to a folder for all the tracking data files. I recommend deleting the “Results of..” part of the name\n\n\nCheck that the Summary window indicates 3 tracks and that the 3 larvae are what is tracked by using the slider on the Result image\nRepeat for all videos\n\nThis is the code you need to import multiple csv files into a single dataframe and add a column with the treatment information from the file name. This is why systematic file names are good.\nIt assumes\n\nyour files are called type_concentration.txt for example: ev_0.txt 343_0.txt ev_1.txt 343_1.txt ev_2.5.txt 343_2.5.txt.\nthe .txt datafile are in a folder called track inside your working directory\nyou have installed the following packages: tidyverse, janitor\n\n\n🎬 Load the tidyverse\n\nlibrary(tidyverse)\n\n🎬 Put the file names into a vector we will iterate through\n\n# get a vector of the file names\nfiles <- list.files(path = \"track\", full.names = TRUE )\n\nWe can use map_df() from the purrr package which is one of the tidyverse gems loaded with tidyvserse. map_df() will iterate through files and read them into a dataframe with a specified import function. We are using read_table(). map_df() keeps track of the file by adding an index column called file to the resulting dataframe. Instead of this being a number (1 - 6 here) we can use set_names() to use the file names instead. The clean_names() function from the janitor package will clean up the column names (make them lower case, replace spaces with _ remove special characters etc)\n🎬 Import multiple csv files into one dataframe called tracking\n\n# import multiple data files into one dataframe called tracking\n# using map_df() from purrr package\n# clean the column names up using janitor::clean_names()\ntracking <- files |> \n set_names() |>\n map_dfr(read_table, .id = \"file\") |>\n janitor::clean_names()\n\nYou will get a warning Duplicated column names deduplicated: 'avgX' => 'avgX_1' [15] for each of the files because the csv files each have two columns called avgX. If you click on the tracking dataframe you see is contains the data from all the files.\nNow we can add columns for the type and the concentration by processing the values in the file. The values are like track/343_0.txt so we need to remove .txt and track/ and separate the remaining words into two columns.\n🎬 Process the file column to add columns for the type and the concentration\n\n# extract type and concentration from file name\n# and put them into additopnal separate columns\ntracking <- tracking |> \n mutate(file = str_remove(file, \".txt\")) |>\n mutate(file = str_remove(file, \"track/\")) |>\n extract(file, remove = \n FALSE,\n into = c(\"type\", \"conc\"), \n regex = \"([^_]{2,3})_(.+)\") \n\n[^_]{2,3} matches two or three characters that are not _ at the start of the string (^)\n.+ matches one or more characters. The extract() function puts the first match into the first column, type, and the second match into the second column, conc. The remove = FALSE argument means the original column is kept.\nYou now have a dataframe with all the tracking data which is relatively easy to summarise and plot using tools you know.\nThere is an example RStudio project containing this code here: tips. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/tips\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called tips-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded. You can now run the code in the project.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Workshop" + "Image Analysis", + "Image Data Analysis for Group Project" ] }, { - "objectID": "core/week-6/workshop.html#what-is-reproducibility", - "href": "core/week-6/workshop.html#what-is-reproducibility", - "title": "Workshop", - "section": "What is reproducibility?", - "text": "What is reproducibility?\n\nReproducible: Same data + same analysis = identical results. “… obtaining consistent results using the same input data; computational steps, methods, and code; and conditions of analysis. This definition is synonymous with”computational reproducibility” (National Academies of Sciences et al. 2019)\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions. The findings can be generalised\n\n\n\n\nThe Turing Way's definitions of reproducible research", + "objectID": "images/images.html#worm-tracking", + "href": "images/images.html#worm-tracking", + "title": "Image Data Analysis for Group Project", + "section": "", + "text": "The following ImageJ workflow uses the processing steps you used in workshop 3 with one change. That change is to save the results to file rather than having the results window pop up and saving from there. Or maybe two changes: it also tells you to use meaning systematic file names that will be easy to process when importing data. The RStudio workflow shows you how to import multiple files into one dataframe with columns indicating the treatment.\n\nSave files with systematic names: ev_0.avi 343_0.avi ev_1.avi 343_1.avi ev_2.5.avi 343_2.5.avi\nOpen ImageJ\nOpen video file eg ev_2.5.avi\n\nConvert to 8-bit: Image | Type | 8-bit\nCrop to petri dish: Select then Image | Crop\nCalculate average pixel intensity: Image | Stacks | Z Project\n\nProjection type: Average Intensity to create AVG_ev_2.5.avi\n\n\n\nSubtract average from image: Process | Image Calculator\n\nImage 1: ev_2.5.avi\n\nOperation: Subtract\nImage 2: AVG_ev_2.5.avi\n\nCreate new window: checked\nOK, Yes to Process all\n\n\nInvert: Edit | Invert\nAdjust threshold: Image | Adjust | Threshold\n\nMethod: Default\nThresholding: Default, B&W\nDark background: checked\nAuto or adjust a little but make sure the larvae do not disappear at later points in the video (use the slider)\nApply\n\n\nInvert: Edit | Invert\nTrack: Plugins | wrMTrck\n\nSet minSize: 10\nSet maxSize: 400\nSet maxVelocity: 10\nSet maxAreaChange: 200\nSet bendThreshold: 1\n\nImportant: check Save Results File This is different to what you did in the workshop. It will help because the results will be saved automatically rather than to saving from the Results window that other pops up. Consequently, you will be able to save the results files with systematic names relating to their treatments and then read them into R simultaneously. That will also allow you to add information from the name of the file (which has the treatment information) to the resulting dataframes\n\n\nwrMTrck window with the settings listed above shown\n\n\nClick OK. Save to a folder for all the tracking data files. I recommend deleting the “Results of..” part of the name\n\n\nCheck that the Summary window indicates 3 tracks and that the 3 larvae are what is tracked by using the slider on the Result image\nRepeat for all videos\n\nThis is the code you need to import multiple csv files into a single dataframe and add a column with the treatment information from the file name. This is why systematic file names are good.\nIt assumes\n\nyour files are called type_concentration.txt for example: ev_0.txt 343_0.txt ev_1.txt 343_1.txt ev_2.5.txt 343_2.5.txt.\nthe .txt datafile are in a folder called track inside your working directory\nyou have installed the following packages: tidyverse, janitor\n\n\n🎬 Load the tidyverse\n\nlibrary(tidyverse)\n\n🎬 Put the file names into a vector we will iterate through\n\n# get a vector of the file names\nfiles <- list.files(path = \"track\", full.names = TRUE )\n\nWe can use map_df() from the purrr package which is one of the tidyverse gems loaded with tidyvserse. map_df() will iterate through files and read them into a dataframe with a specified import function. We are using read_table(). map_df() keeps track of the file by adding an index column called file to the resulting dataframe. Instead of this being a number (1 - 6 here) we can use set_names() to use the file names instead. The clean_names() function from the janitor package will clean up the column names (make them lower case, replace spaces with _ remove special characters etc)\n🎬 Import multiple csv files into one dataframe called tracking\n\n# import multiple data files into one dataframe called tracking\n# using map_df() from purrr package\n# clean the column names up using janitor::clean_names()\ntracking <- files |> \n set_names() |>\n map_dfr(read_table, .id = \"file\") |>\n janitor::clean_names()\n\nYou will get a warning Duplicated column names deduplicated: 'avgX' => 'avgX_1' [15] for each of the files because the csv files each have two columns called avgX. If you click on the tracking dataframe you see is contains the data from all the files.\nNow we can add columns for the type and the concentration by processing the values in the file. The values are like track/343_0.txt so we need to remove .txt and track/ and separate the remaining words into two columns.\n🎬 Process the file column to add columns for the type and the concentration\n\n# extract type and concentration from file name\n# and put them into additopnal separate columns\ntracking <- tracking |> \n mutate(file = str_remove(file, \".txt\")) |>\n mutate(file = str_remove(file, \"track/\")) |>\n extract(file, remove = \n FALSE,\n into = c(\"type\", \"conc\"), \n regex = \"([^_]{2,3})_(.+)\") \n\n[^_]{2,3} matches two or three characters that are not _ at the start of the string (^)\n.+ matches one or more characters. The extract() function puts the first match into the first column, type, and the second match into the second column, conc. The remove = FALSE argument means the original column is kept.\nYou now have a dataframe with all the tracking data which is relatively easy to summarise and plot using tools you know.\nThere is an example RStudio project containing this code here: tips. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/tips\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called tips-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded. You can now run the code in the project.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Workshop" + "Image Analysis", + "Image Data Analysis for Group Project" ] }, { - "objectID": "core/week-6/workshop.html#why-does-it-matter", - "href": "core/week-6/workshop.html#why-does-it-matter", + "objectID": "transcriptomics/week-4/workshop.html", + "href": "transcriptomics/week-4/workshop.html", "title": "Workshop", - "section": "Why does it matter?", - "text": "Why does it matter?\n\n\n\nfutureself, CC-BY-NC, by Julen Colomb\n\n\n\nFive selfish reasons to work reproducibly (Markowetz 2015). Alternatively, see the very entertaining talk\nMany high profile cases of work which did not reproduce e.g. Anil Potti unravelled by Baggerly and Coombes (2009)\nWill become standard in Science and publishing e.g OECD Global Science Forum Building digital workforce capacity and skills for data-intensive science (OECD Global Science Forum 2020)", + "section": "", + "text": "In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#how-to-achieve-reproducibility", - "href": "core/week-6/workshop.html#how-to-achieve-reproducibility", + "objectID": "transcriptomics/week-4/workshop.html#session-overview", + "href": "transcriptomics/week-4/workshop.html#session-overview", "title": "Workshop", - "section": "How to achieve reproducibility", - "text": "How to achieve reproducibility\n\nScripting\nOrganisation: Project-oriented workflows with file and folder structure, naming things\nDocumentation: Readme files, code comments, metadata, version control", + "section": "", + "text": "In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#rationale-for-scripting", - "href": "core/week-6/workshop.html#rationale-for-scripting", + "objectID": "transcriptomics/week-4/workshop.html#frog-development", + "href": "transcriptomics/week-4/workshop.html#frog-development", "title": "Workshop", - "section": "Rationale for scripting?", - "text": "Rationale for scripting?\n\nScience is the generation of ideas, designing work to test them and reporting the results.\nWe ensure laboratory and field work is replicable, robust and generalisable by planning and recording in lab books and using standard protocols. Repeating results is still hard.\nWorkflows for computational projects, and the data analysis and reporting of other work can, and should, be 100% reproducible!\nScripting is the way to achieve this.", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#project-oriented-workflow", - "href": "core/week-6/workshop.html#project-oriented-workflow", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis", + "href": "transcriptomics/week-4/workshop.html#arabidopisis", "title": "Workshop", - "section": "Project-oriented workflow", - "text": "Project-oriented workflow\n\nuse folders to organise your work\nyou are aiming for structured, systematic and repeatable.\ninputs and outputs should be clearly identifiable from structure and/or naming\n\nExamples\n-- liver_transcriptome/\n |__data\n |__raw/\n |__processed/\n |__images/\n |__code/\n |__reports/\n |__figures/", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\n🎬 Open the arabi-88H RStudio Project and the wildsuf-wilddef-s30.R script.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#naming-things", - "href": "core/week-6/workshop.html#naming-things", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-mexicana", + "href": "transcriptomics/week-4/workshop.html#leishmania-mexicana", "title": "Workshop", - "section": "Naming things", - "text": "Naming things\n\n\n\ndocuments, CC-BY-NC, https://xkcd.com/1459/\n\n\nGuiding principle - Have a convention! Good file names are:\n\nmachine readable\nhuman readable\nplay nicely with sorting\n\nI suggest\n\nno spaces in names\nuse snake_case or kebab-case rather than CamelCase or dot.case\nuse all lower case except very occasionally where convention is otherwise, e.g., README, LICENSE\nordering: use left-padded numbers e.g., 01, 02….99 or 001, 002….999\ndates ISO 8601 format: 2020-10-16\nwrite down your conventions\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana\n🎬 Open the leish-88H RStudio Project and the pro-meta-s30.R script.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#readme-files", - "href": "core/week-6/workshop.html#readme-files", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells", + "href": "transcriptomics/week-4/workshop.html#stem-cells", "title": "Workshop", - "section": "Readme files", - "text": "Readme files\nREADMEs are a form of documentation which have been widely used for a long time. They contain all the information about the other files in a directory. They can be extensive but need not be. Concise is good. Bullet points are good\n\nGive a project title and description, brief\nstart date, last updated date and contact information\nOutline the folder structure\nGive software requirements: programs and versions used or required. There are packages that give session information in R Wickham et al. (2021) and Python Ostblom, Joel (2019)\n\nR:\nsessioninfo::session_info()\nPython:\nimport session_info\nsession_info.show()\n\nInstructions run the code, build reports, and reproduce the figures etc\nWhere to find the data, outputs\nAny other information that needed to understand and recreate the work\nIdeally, a summary of changes with the date\n\n-- liver_transcriptome/\n |__data\n |__raw/\n |__2022-03-21_donor_1.csv\n |__2022-03-21_donor_2.csv\n |__2022-03-21_donor_3.csv\n |__2022-05-14_donor_1.csv\n |__2022-05-14_donor_2.csv\n |__2022-05-14_donor_3.csv\n |__processed/\n |__images/\n |__code/\n |__functions/\n |__summarise.R\n |__normalise.R\n |__theme_volcano.R\n |__01_data_processing.py\n |__02_exploratory.R\n |__03_modelling.R\n |__04_figures.R\n |__README.md\n |__reports/\n |__01_report.qmd\n |__02_supplementary.qmd\n |__figures/\n |__01_volcano_donor_1_vs_donor_2.eps\n |__02_volcano_donor_1_vs_donor_3.eps", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/workshop.html#code-comments", - "href": "core/week-6/workshop.html#code-comments", + "objectID": "transcriptomics/week-4/workshop.html#everyone", + "href": "transcriptomics/week-4/workshop.html#everyone", "title": "Workshop", - "section": "Code comments", - "text": "Code comments\n\nComments are notes in the code which are not executed. They are ignored by the computer but are read by humans. They are used to explain what the code is doing and why. They are also used to temporarily remove code from execution.", + "section": "Everyone", + "text": "Everyone\n🎬 Make a new folder results in the project directory.\nThis is where we will save our results.\n🎬 Load tidyverse (Wickham et al. 2019) You most likely have this code at the top of `your script already.\n\nlibrary(tidyverse)\n\n── Attaching core tidyverse packages ─────────────────────────────────────────────── tidyverse 2.0.0 ──\n✔ dplyr 1.1.3 ✔ readr 2.1.4\n✔ forcats 1.0.0 ✔ stringr 1.5.0\n✔ ggplot2 3.4.3 ✔ tibble 3.2.1\n✔ lubridate 1.9.3 ✔ tidyr 1.3.0\n✔ purrr 1.0.2 \n── Conflicts ───────────────────────────────────────────────────────────────── tidyverse_conflicts() ──\n✖ dplyr::filter() masks stats::filter()\n✖ dplyr::lag() masks stats::lag()\nℹ Use the conflicted package to force all conflicts to become errors\nHave you ever stopped to think about this message? It is telling us that there are functions in the dplyr package that have the same name as functions in the stats package and that R will use the dplyr version. As this is what you want, this has always been fine. It still is fine in this case. However, as you start to load more packages, you will want to know if you are using a function from a package that has the same name as a function in another loaded package. This is where the conflicted (Wickham 2023) package comes in. Conflicted will warn you when you are using a function that has the same name as a function in another package. You can then choose which function to use.\n🎬 Load the conflicted package:\n\nlibrary(conflicted)\n\nInstead of getting a warning every time you are using a function that has a function with the same name in another package, we can declare a preference for one function over another. This is useful for the functions you use a lot or ones where you are certain you always want to use a particular function.\nFor example, to always use the dplyr version of filter() by default you can add this to the top of your script:\n\nconflicts_prefer(dplyr::filter)\n\nWe will also want to ensure that we are using the setdiff() function from the GenomicRanges package.\n\nconflicts_prefer(GenomicRanges::setdiff)", "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-6/study_before_workshop.html", - "href": "core/week-6/study_before_workshop.html", - "title": "Independent Study to prepare for workshop", - "section": "", - "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and filesystems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\nIn previous years you have submitted and RStudio Project as part of your BABS work. In this module you will develop this by submitting a Research Compendium. A Research Compendium is a documented collection of all the digital parts of the research project including data (or access to data), code and outputs. The Compendium might be a single Quarto/RStudio Project, (like you have done previously but with better documentation) or it might be a folder including an Quarto/RStudio Project and other material/scripts including the description of unscripted processing. You might want to remind yourself of the example RStudio Project, Y12345678.zip used in BABS 2.", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Prepare!" - ] - }, - { - "objectID": "structures/structures.html", - "href": "structures/structures.html", - "title": "Structure Data Analysis for Group Project", - "section": "", - "text": "There is an RStudio project containing a Quarto version of the the Antibody Mimetics Workshop by Michael Plevin & Jon Agirre. Instructions to obtain the RStudio project are at the bottom of this document after the set up instructions.\nYou might find RStudio useful for Python because you are already familiar with it. It is also a good way to create Quarto documents with code chunks in more than one language. Quarto documents can be used in RStudio, VS Code or Jupyter notebooks\nSome set up is required before you will be able to execute code in antibody_mimetics_workshop_3.qmd. This in contrast to the Colab notebook which is a cloud-based Jupyter notebook and does not require any set up (except installing packages).\n\n🎬 If using your own machine, install Python from https://www.python.org/downloads/. This should not be necessary if you are using a university machine where Python is already installed.\n🎬 If using your own machine and you did not install Quarto in the Core 1 workshop, install it now from https://quarto.org/docs/get-started/. This should not be necessary if you are using a university machine where quarto is already installed.\n🎬 Open RStudio and check you are using a “Git bash” Terminal: Tools | Global Options| Terminal | New Terminal opens with… . If the option to choose Git bash, you will need to install Git from https://git-scm.com/downloads. Quit RStudio first. This should not be necessary if you are using a university machine where Git bash is already installed.\n🎬 If on your own machine: In RStudio, install the quarto and the recticulate packages. This should not be necessary if you are using a university machine where these packages are already installed.\n🎬 Whether you are using your own machine or a university machine, you need to install some python packages. In RStudio and go to the Terminal window (behind the Console window). Run the following commands in the Terminal window:\npython -m pip install --upgrade pip setuptools wheel\nYou may get these warnings about scripts not being on the path. You can ignore these.\n WARNING: The script wheel.exe is installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n WARNING: The scripts pip.exe, pip3.11.exe, pip3.9.exe and pip3.exe are installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nspyder 5.1.5 requires pyqt5<5.13, which is not installed.\nspyder 5.1.5 requires pyqtwebengine<5.13, which is not installed.\nconda-repo-cli 1.0.4 requires pathlib, which is not installed.\nanaconda-project 0.10.2 requires ruamel-yaml, which is not installed.\nSuccessfully installed pip-23.3.1 setuptools-69.0.2 wheel-0.41.3\npython -m pip install session_info\npython -m pip install wget\npython -m pip install gemmi\nNote: On my windows laptop at home, I also had to install C++ Build Tools to be able to install the gemmi python package. If this is true for you, you will get a fail message telling you to install C++ build tools if you need them. These are from https://visualstudio.microsoft.com/visual-cpp-build-tools/ You need to check the Workloads tab and select C++ build tools.\n\nYou can then install the gemmi package again.\nI think that’s it! You can now download the RStudio project and run each chunk in the quarto document.\nThere is an example RStudio project here: structure-analysis. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/structure-analysis\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called structure-analysis-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded.\nYou should be able to open the antibody_mimetics_workshop_3.qmd file and run each chunk. You can also knit the document to html.", - "crumbs": [ - "Structure Analysis", - "Structure Data Analysis for Group Project" - ] - }, - { - "objectID": "structures/structures.html#programmatic-protein-structure-analysis", - "href": "structures/structures.html#programmatic-protein-structure-analysis", - "title": "Structure Data Analysis for Group Project", - "section": "", - "text": "There is an RStudio project containing a Quarto version of the the Antibody Mimetics Workshop by Michael Plevin & Jon Agirre. Instructions to obtain the RStudio project are at the bottom of this document after the set up instructions.\nYou might find RStudio useful for Python because you are already familiar with it. It is also a good way to create Quarto documents with code chunks in more than one language. Quarto documents can be used in RStudio, VS Code or Jupyter notebooks\nSome set up is required before you will be able to execute code in antibody_mimetics_workshop_3.qmd. This in contrast to the Colab notebook which is a cloud-based Jupyter notebook and does not require any set up (except installing packages).\n\n🎬 If using your own machine, install Python from https://www.python.org/downloads/. This should not be necessary if you are using a university machine where Python is already installed.\n🎬 If using your own machine and you did not install Quarto in the Core 1 workshop, install it now from https://quarto.org/docs/get-started/. This should not be necessary if you are using a university machine where quarto is already installed.\n🎬 Open RStudio and check you are using a “Git bash” Terminal: Tools | Global Options| Terminal | New Terminal opens with… . If the option to choose Git bash, you will need to install Git from https://git-scm.com/downloads. Quit RStudio first. This should not be necessary if you are using a university machine where Git bash is already installed.\n🎬 If on your own machine: In RStudio, install the quarto and the recticulate packages. This should not be necessary if you are using a university machine where these packages are already installed.\n🎬 Whether you are using your own machine or a university machine, you need to install some python packages. In RStudio and go to the Terminal window (behind the Console window). Run the following commands in the Terminal window:\npython -m pip install --upgrade pip setuptools wheel\nYou may get these warnings about scripts not being on the path. You can ignore these.\n WARNING: The script wheel.exe is installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\n WARNING: The scripts pip.exe, pip3.11.exe, pip3.9.exe and pip3.exe are installed in 'C:\\Users\\er13\\AppData\\Roaming\\Python\\Python39\\Scripts' which is not on PATH.\n Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.\nERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\nspyder 5.1.5 requires pyqt5<5.13, which is not installed.\nspyder 5.1.5 requires pyqtwebengine<5.13, which is not installed.\nconda-repo-cli 1.0.4 requires pathlib, which is not installed.\nanaconda-project 0.10.2 requires ruamel-yaml, which is not installed.\nSuccessfully installed pip-23.3.1 setuptools-69.0.2 wheel-0.41.3\npython -m pip install session_info\npython -m pip install wget\npython -m pip install gemmi\nNote: On my windows laptop at home, I also had to install C++ Build Tools to be able to install the gemmi python package. If this is true for you, you will get a fail message telling you to install C++ build tools if you need them. These are from https://visualstudio.microsoft.com/visual-cpp-build-tools/ You need to check the Workloads tab and select C++ build tools.\n\nYou can then install the gemmi package again.\nI think that’s it! You can now download the RStudio project and run each chunk in the quarto document.\nThere is an example RStudio project here: structure-analysis. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/structure-analysis\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called structure-analysis-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded.\nYou should be able to open the antibody_mimetics_workshop_3.qmd file and run each chunk. You can also knit the document to html.", - "crumbs": [ - "Structure Analysis", - "Structure Data Analysis for Group Project" - ] - }, - { - "objectID": "transcriptomics/week-3/overview.html", - "href": "transcriptomics/week-3/overview.html", - "title": "Overview", - "section": "", - "text": "This week you will meet your data. The independent study will concisely cover how these data were generated and how they have been processed before being given to you. There will also be an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of ’omics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nexplore transcriptomics data to find the number of rows and columns and know how these correspond to samples and variables\nexplore the distribution of expression measures across whole data sets, across variables and across samples by summarising and plotting\nexplain what distributions are expected and interpret the distributions they have\nexplain on what basis we might filter out variables or samples\nimport, explore and filter transcriptomics data reproducibly so they can understand and reuse their code in the future\n\n\n\nInstructions\n\nPrepare\n\n📖 Read how the data were generated and how they have been processed so far\n\nWorkshop\n\n💻 Set up a Project\n💻 Import data\n💻 Explore the distribution of values across samples/cells and across genes/species\n💻 Look after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-1", + "href": "transcriptomics/week-4/workshop.html#frog-development-1", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\nWe need to import the S30 data that were filtered to remove genes with 4, 5 or 6 zeros and those where the total counts was less than 20.\n🎬 Import the data from the data-processed folder.\nNow go to Differential Expression Analysis.", "crumbs": [ "Transcriptomics", - "Week 3: Hello data!", - "About" + "Week 4: Statistical Analysis", + "Workshop" ] }, { - "objectID": "transcriptomics/week-3/study_after_workshop.html", - "href": "transcriptomics/week-3/study_after_workshop.html", - "title": "Independent Study to consolidate this week", - "section": "", - "text": "You need only do the section for your own project data\n🐸 Frogs\n🎬 Open your frogs-88H Project. Make a new script and, using cont-fgf-s30.R as a template, repeat the analysis on one of the other comparisons.\n🐭 Mice\n🎬 Open your mice-88H Project. Open your hspc-prog.R script and, using you code working with the hspc cells as a template, repeat the analysis on the prog cells.\n🍂 xxxx\nFollow one of the other examples.", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-1", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-1", + "title": "Workshop", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\nImport\nNow go to Differential Expression Analysis.", "crumbs": [ "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" + "Week 4: Statistical Analysis", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html", - "href": "transcriptomics/week-5/workshop.html", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-mexicana-1", + "href": "transcriptomics/week-4/workshop.html#leishmania-mexicana-1", "title": "Workshop", - "section": "", - "text": "In the workshop, you will learn how to merge gene information into our results, conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot and heatmap.", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana\nImport\nNow go to Differential Expression Analysis.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#session-overview", - "href": "transcriptomics/week-5/workshop.html#session-overview", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-1", + "href": "transcriptomics/week-4/workshop.html#stem-cells-1", "title": "Workshop", - "section": "", - "text": "In the workshop, you will learn how to merge gene information into our results, conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot and heatmap.", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nImport\nNow go to Differential Expression Analysis.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#import", - "href": "transcriptomics/week-5/workshop.html#import", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-2", + "href": "transcriptomics/week-4/workshop.html#frog-development-2", "title": "Workshop", - "section": "Import", - "text": "Import\nWe need to import both the normalised counts and the statistical results. We will need all of these for the visualisation and interpretation.\n🎬 Import files saved from last week from the results folder: S30_normalised_counts.csv and S30_results.csv. I used the names s30_count_norm and s30_results for the dataframes.\n🎬 Remind yourself what is in the rows and columns and the structure of the dataframes (perhaps using glimpse())\n\n\n\n\n\n\n\n\n\n\n\n\n\nIt is useful to have this information in a single dataframe to which we will add the gene information from xenbase. Having all the information together will make it easier to interpret the results and select genes of interest.\n🎬 Merge the two dataframes:\n\n# merge the results with the normalised counts\ns30_results <- s30_count_norm |>\n left_join(s30_results, by = \"xenbase_gene_id\")\n\nThis means you have the counts for each sample along with the statistical results for each gene.\n🎬 Import the metadata that maps the sample names to treatments:\n\n# Import metadata that maps the sample names to treatments\nmeta <- read_table(\"meta/frog_meta_data.txt\")\nrow.names(meta) <- meta$sample_id\n# We only need the s30\nmeta_s30 <- meta |>\n dplyr::filter(stage == \"stage_30\")", + "section": "🐸 Frog development", + "text": "🐸 Frog development\nThese are the steps we will take\n\nFind the genes that are expressed in only one treatment group.\nCreate a DESeqDataSet object. This is a special object that is used by the DESeq2 package\nPrepare the normalised counts from the DESeqDataSet object.\nDo differential expression analysis on the genes. This needs to be done on the raw counts.\n\nThe all but the first step are done with the DESeq2 package\n1. Genes expressed in one treatment\nThe genes expressed in only one treatment group are those with zeros in all three replicates in one group and non-zero values in all three replicates in the other group. For example, those shown here:\n\n\n\n\n\n\n\n\n\n\n\n\n\nxenbase_gene_id\nS30_C_1\nS30_C_2\nS30_C_3\nS30_F_1\nS30_F_2\nS30_F_3\n\n\n\nXB-GENE-1018260\n0\n0\n0\n10\n2\n16\n\n\nXB-GENE-17330117\n0\n0\n0\n13\n4\n17\n\n\nXB-GENE-17332184\n0\n0\n0\n6\n19\n6\n\n\n\n\n\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only in the FGF-treated group:\n\ns30_fgf_only <- s30_filtered |> \n filter(S30_C_1 == 0, \n S30_C_2 == 0, \n S30_C_3 == 0, \n S30_F_1 > 0, \n S30_F_2 > 0, \n S30_F_3 > 0)\n\n❓ How many genes are expressed only in the FGF-treated group?\n\n\n🎬 Now you find any genes that are expressed only in the control group.\n❓ How many genes are expressed only in the control group?\n\n\n❓ Do the results make sense to you in light of what you know about the biology?\n\n\n\n\n\n\n\n🎬 Write all the genes that are expressed one group only to file (saved in results)\n2. Create DESeqDataSet object\n🎬 Load the DESeq2 package:\nA DEseqDataSet object is a custom data type that is used by DESeq2. Custom data types are common in the Bioconductor1 packages. They are used to store data in a way that is useful for the analysis. These data types typically have data, transformed data, metadata and experimental designs within them.\nTo create a DESeqDataSet object, we need to provide three things:\n\nThe raw counts - these are in s30_filtered\n\nThe meta data which gives information about the samples and which treatment groups they belong to\nA design matrix which captures the design of the statistical model.\n\nThe counts must in a matrix rather than a dataframe. Unlike a dataframe, a matrix has columns of all the same type. That is, it will contain only the counts. The gene ids are given as row names rather than a column. The matrix() function will create a matrix from a dataframe of columns of the same type and the select() function can be used to remove the gene ids column.\n🎬 Create a matrix of the counts:\n\ns30_count_mat <- s30_filtered |>\n select(-xenbase_gene_id) |>\n as.matrix()\n\n🎬 Add the gene ids as row names to the matrix:\n\n# add the row names to the matrix\nrownames(s30_count_mat) <- s30_filtered$xenbase_gene_id\n\nYou might want to view the matrix (click on it in your environment pane).\nThe metadata are in a file, frog_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the second column is the treatment group.\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/frog_meta_data.txt\")\n\n🎬 Examine the resulting dataframe.\nWe need to add the sample names as row names to the metadata dataframe. This is because the DESeqDataSet object will use the row names to match the samples in the metadata to the samples in the counts matrix.\n🎬 Add the sample names as row names to the metadata dataframe:\n\nrow.names(meta) <- meta$sample_id\n\n(you will get a warning message but you can ignore it)\nWe are dealing only with the S30 data so we need to remove the samples that are not in the S30 data.\n🎬 Filter the metadata to keep only the S30 information:\n\nmeta_s30 <- meta |>\n filter(stage == \"stage_30\")\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model. You should the form from previous work. The ~ indicates that the left hand side is the response variable (in this case the counts) and the right hand side are the explanatory variables. We are interested in the difference between the treatments but we include sibling_rep to account for the fact that the data are paired.\nNote that:\n\nThe names of the columns in the count matrix have to exactly match the names of the rows in the metadata dataframe. They also need to be in the same order.\nThe names of the explanatory variables in the design formula have to match the names of columns in the metadata.\n\n🎬 Create the DESeqDataSet object:\n\ndds <- DESeqDataSetFromMatrix(countData = s30_count_mat,\n colData = meta_s30,\n design = ~ treatment + sibling_rep)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of treatment and sibling_rep in the metadata dataframe are “char” and they have been converted into the factors.\nTo help you understand what the DESeqDataSet object we have called dds contains, we can look its contents\nThe counts are in dds@assays@data@listData[[\"counts\"]] and the metadata are in dds@colData but the easiest way to see them is to use the counts() and colData() functions from the DESeq2 package.\n🎬 View the counts:\n\ncounts(dds) |> View()\n\nError in .External2(C_dataviewer, x, title): unable to start data viewer\n\n\nYou should be able to see that this is the same as in s30_count_mat.\n\ncolData(dds)\n\nDataFrame with 6 rows and 4 columns\n sample_id stage treatment sibling_rep\n <character> <character> <factor> <factor>\nS30_C_1 S30_C_1 stage_30 control one \nS30_C_2 S30_C_2 stage_30 control two \nS30_C_3 S30_C_3 stage_30 control three\nS30_F_1 S30_F_1 stage_30 FGF one \nS30_F_2 S30_F_2 stage_30 FGF two \nS30_F_3 S30_F_3 stage_30 FGF three\n\n\n3. Prepare the normalised counts\nThe normalised counts are the counts that have been transformed to account for the library size (i.e., the total number of reads in a sample) and the gene length. We have to first estimate the normalisation factors and store them in the DESeqDataSet object and then we can get the normalised counts.\n🎬 Estimate the factors for normalisation and store them in the DESeqDataSet object:\n\ndds <- estimateSizeFactors(dds)\n\n🎬 Look at the factors (just for information):\n\nsizeFactors(dds)\n\n S30_C_1 S30_C_2 S30_C_3 S30_F_1 S30_F_2 S30_F_3 \n0.8812200 0.9454600 1.2989886 1.0881870 1.0518961 0.8322894 \n\n\nThe normalised counts will be useful to use later. To get the normalised counts we again used the counts() function but this time we use the normalized=TRUE argument.\n🎬 Save the normalised to a matrix:\n\nnormalised_counts <- counts(dds, normalized = TRUE)\n\nWe will write the normalised counts to a file so that we can use them in the future.\n🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:\n\ns30_normalised_counts <- data.frame(normalised_counts,\n xenbase_gene_id = row.names(normalised_counts))\n\n4. Differential expression analysis\nWe use the DESeq() function to do the differential expression analysis. This function fits the statistical model to the data and then uses the model to calculate the significance of the difference between the treatments. It again stores the results in the DESseqDataSet object. Note that the differential expression needs the raw (unnormalised counts) as it does its own normalisation as part of the process.\n🎬 Run the differential expression analysis and store the results in the same object:\n\ndds <- DESeq(dds)\n\nThe function will take only a few moments to run on this data but can take longer for bigger datasets.\nWe need to define the contrasts we want to test. We want to test the difference between the treatments so we will define the contrast as FGF and control.\n🎬 Define the contrast:\n\ncontrast_fgf <- c(\"treatment\", \"FGF\", \"control\")\n\nNote that treatment is the name of the column in the metadata dataframe and FGF and control are the names of the levels in the treatment column. By putting them in the order FGF , control we are saying the fold change will be FGF / control. This means:\n\npositive log fold changes indicate FGF > control and\nnegative log fold changes indicates control > FGF.\n\nIf we had put them in the order control, FGF we would have the reverse.\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_fgf <- results(dds,\n contrast = contrast_fgf)\n\nThis will give us the log2 fold change, the p-value and the adjusted p-value between the control and the FGF-treatment for each gene.\n🎬 Put the results in a dataframe and add the gene ids as a column:\n\ns30_results <- data.frame(results_fgf,\n xenbase_gene_id = row.names(results_fgf))\n\nIt is useful to have the normalised counts and the statistical results in one dataframe.\n🎬 Merge the two dataframes:\n\n# merge the results with the normalised counts\ns30_results <- s30_normalised_counts |>\n left_join(s30_results, by = \"xenbase_gene_id\")\n\nNow go to Add gene information.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#log2-transform-the-data", - "href": "transcriptomics/week-5/workshop.html#log2-transform-the-data", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-2", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-2", "title": "Workshop", - "section": "log2 transform the data", - "text": "log2 transform the data\nWe use the normalised counts for data visualisations so that the comparisons are meaningful. Since the fold changes are given is log2 it is useful to log2 transform the normalised counts too. We will add columns to the dataframe with these transformed values. Since we have some counts of 0 we will add a tiny amount to avoid -Inf values.\n🎬 log2 transform the normalised counts:\n\n# log2 transform the counts plus a tiny amount to avoid log(0)\ns30_results <- s30_results |>\n mutate(across(starts_with(\"s30\"), \n \\(x) log2(x + 0.001),\n .names = \"log2_{.col}\"))\n\nThis is a wonderful bit or R wizardry. We are using the across() function to apply a transformation to multiple columns. We have selected all the columns that start with s30. The \\(x) is an “anonymous” function that takes the value of the column and adds 0.001 to it before applying the log2() function. The .names = \"log2_{.col}\" argument tells across() to name the new columns with the prefix log2_ followed by the original column name. You can read more about across() and anonymous functions from my posit::conf(2023) workshop\nI recommend viewing the dataframe to see the new columns.\nWe now have dataframe with all the information we need: normalised counts, log2 normalised counts, statistical comparisons with fold changes and p values, and information about the gene other than just the id.", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\nDE instructions\nNow go to Add gene information.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#write-the-significant-genes-to-file", - "href": "transcriptomics/week-5/workshop.html#write-the-significant-genes-to-file", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-mexicana-2", + "href": "transcriptomics/week-4/workshop.html#leishmania-mexicana-2", "title": "Workshop", - "section": "Write the significant genes to file", - "text": "Write the significant genes to file\nWe will create dataframe of the significant genes and write them to file. These are the files you want to examine in more detail along with the visualisations to select your genes of interest.\n🎬 Create a dataframe of the genes significant at the 0.01 level:\n\ns30_results_sig0.01 <- s30_results |> \n filter(padj <= 0.01)\n\n🎬 Write the dataframe to file\n🎬 Create a dataframe of the genes significant at the 0.05 level and write to file:\n❓How many genes are significant at the 0.01 and 0.05 levels?", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana\nDE instructions\nNow go to Add gene information.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#view-the-relationship-between-samples-using-pca", - "href": "transcriptomics/week-5/workshop.html#view-the-relationship-between-samples-using-pca", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-2", + "href": "transcriptomics/week-4/workshop.html#stem-cells-2", "title": "Workshop", - "section": "View the relationship between samples using PCA", - "text": "View the relationship between samples using PCA\nWe have 10,136 genes in our dataset. PCA will allow us to plot our samples in the “gene expression” space so we can see if FGF-treated sample cluster together and control samples cluster together as we would expect. We do this on the log2 transformed normalised counts.\nOur data have genes in rows and samples in columns which is a common organisation for gene expression data. However, PCA expects samples in rows and genes, the variables, in columns. We can transpose the data to get it in the correct format.\n🎬 Transpose the log2 transformed normalised counts:\n\ns30_log2_trans <- s30_results |> \n select(starts_with(\"log2_\")) |>\n t() |> \n data.frame()\n\nWe have used the select() function to select all the columns that start with log2_. We then use the t() function to transpose the dataframe. We then convert the resulting matrix to a dataframe using data.frame(). If you view that dataframe you’ll see it has default column name which we can fix using colnames() to set the column names to the Xenbase gene ids.\n🎬 Set the column names to the Xenbase gene ids:\n\ncolnames(s30_log2_trans) <- s30_results$xenbase_gene_id\n\n🎬 Perform PCA on the log2 transformed normalised counts:\n\npca <- s30_log2_trans |>\n prcomp(rank. = 4) \n\nThe rank. argument tells prcomp() to only calculate the first 4 principal components. This is useful for visualisation as we can only plot in 2 or 3 dimensions. We can see the results of the PCA by viewing the summary() of the pca object.\n\nsummary(pca)\n\nImportance of first k=4 (out of 6) components:\n PC1 PC2 PC3 PC4\nStandard deviation 64.0124 47.3351 38.4706 31.4111\nProportion of Variance 0.4243 0.2320 0.1532 0.1022\nCumulative Proportion 0.4243 0.6562 0.8095 0.9116\n\n\nThe Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.4243 of the variance, the second 0.2320, and the third 0.1532. Together the first three components explain nearly 81% of the total variance in the data. Plotting PC1 against PC2 will capture about 66% of the variance which is likely much better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 score from the pca object and add labels for the samples.\n🎬 Remove log2 from the row names:\n\nsample_id <- row.names(s30_log2_trans) |> str_remove(\"log2_\")\n\n🎬 Create a dataframe of the PC1 and PC2 scores which are in pca$x and add the sample ids:\n\npca_labelled <- data.frame(pca$x,\n sample_id)\n\n🎬 Merge with the metadata so we can label points by treatment and sibling pair:\n\npca_labelled <- pca_labelled |> \n left_join(meta_s30, \n by = \"sample_id\")\n\nSince the metadata contained the sample ids, it was especially important to remove the log2_ from the row names so that the join would work. The dataframe should look like this:\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nPC1\nPC2\nPC3\nPC4\nsample_id\nstage\ntreatment\nsibling_rep\n\n\n\n-76.38391\n0.814699\n-60.728327\n-5.820669\nS30_C_5\nstage_30\ncontrol\nfive\n\n\n-67.02571\n25.668563\n51.476835\n28.480254\nS30_C_6\nstage_30\ncontrol\nsix\n\n\n-14.02772\n-78.474054\n15.282058\n-9.213076\nS30_C_A\nstage_30\ncontrol\nA\n\n\n47.60726\n49.035510\n-19.288753\n20.928290\nS30_F_5\nstage_30\nFGF\nfive\n\n\n26.04954\n32.914201\n20.206072\n-55.752818\nS30_F_6\nstage_30\nFGF\nsix\n\n\n83.78054\n-29.958919\n-6.947884\n21.378020\nS30_F_A\nstage_30\nFGF\nA\n\n\n\n\n\n🎬 Plot PC1 against PC2 and colour by sibling pair and shape by treatment:\n\npca <- pca_labelled |> \n ggplot(aes(x = PC1, y = PC2, \n colour = sibling_rep,\n shape = treatment)) +\n geom_point(size = 3) +\n scale_colour_viridis_d(end = 0.95, begin = 0.15,\n name = \"Sibling pair\",\n labels = c(\"A\", \".5\", \".6\")) +\n scale_shape_manual(values = c(21, 19),\n name = NULL,\n labels = c(\"Control\", \"FGF-Treated\")) +\n theme_classic()\npca\n\n\n\n\n\n\n\nThere is a good separation between treatments on PCA1. The sibling pairs do not seem to cluster together.\n🎬 Save the plot to file:\n\nggsave(\"figures/frog-s30-pca.png\",\n plot = pca,\n height = 3, \n width = 4,\n units = \"in\",\n device = \"png\")", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nDE instructions\nNow go to Add gene information.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#visualise-the-expression-of-the-most-significant-genes-using-a-heatmap", - "href": "transcriptomics/week-5/workshop.html#visualise-the-expression-of-the-most-significant-genes-using-a-heatmap", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-3", + "href": "transcriptomics/week-4/workshop.html#frog-development-3", "title": "Workshop", - "section": "Visualise the expression of the most significant genes using a heatmap", - "text": "Visualise the expression of the most significant genes using a heatmap\nA heatmap is a common way to visualise gene expression data. Often people will create heatmaps with thousands of genes but it can be more informative to use a subset along with clustering methods. We will use the genes which are significant at the 0.01 level.\nWe are going to create an interactive heatmap with the heatmaply (Galili et al. 2017) package. heatmaply takes a matrix as input so we need to convert a dataframe of the log2 values to a matrix. We will also set the rownames to the Xenbase gene symbols.\n🎬 Convert a dataframe of the log2 values to a matrix:\n\nmat <- s30_results_sig0.01 |> \n select(starts_with(\"log2_\")) |>\n as.matrix()\n\n🎬 Set the rownames to the Xenbase gene symbols:\n\nrownames(mat) <- s30_results_sig0.01$xenbase_gene_symbol\n\nYou might want to view the matrix by clicking on it in the environment pane.\n🎬 Load the heatmaply package:\n\nlibrary(heatmaply)\n\nWe need to tell the clustering algorithm how many clusters to create. We will set the number of clusters for the treatments to be 2 and the number of clusters for the genes to be the same since it makes sense to see what clusters of genes correlate with the treatments.\n🎬 Set the number of clusters for the treatments and genes:\n\nn_treatment_clusters <- 2\nn_gene_clusters <- 2\n\n🎬 Create the heatmap:\n\nheatmaply(mat, \n scale = \"row\",\n k_col = n_treatment_clusters,\n k_row = n_gene_clusters,\n fontsize_row = 7, fontsize_col = 10,\n labCol = str_remove(colnames(mat), pattern = \"log2_\"),\n labRow = rownames(mat),\n heatmap_layers = theme(axis.line = element_blank()))\n\n\n\n\n\nOn the vertical axis are genes which are differentially expressed at the 0.01 level. On the horizontal axis are samples. We can see that the FGF-treated samples cluster together and the control samples cluster together. We can also see two clusters of genes; one of these shows genes upregulated (more yellow) in the FGF-treated samples (the pink cluster) and the other shows genes down regulated (more blue, the blue cluster) in the FGF-treated samples.\nThe heatmap will open in the viewer pane (rather than the plot pane) because it is html. You can “Show in a new window” to see it in a larger format. You can also zoom in and out and pan around the heatmap and download it as a png. You might feel the colour bars is not adding much to the plot. You can remove it by setting hide_colorbar = TRUE, in the heatmaply() function.", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n\nI got the information from the Xenbase information pages under Data Reports | Gene Information\nThis is listed: Xenbase Gene Product Information [readme] gzipped gpi (tab separated)\nClick on the readme link to see the file format and columns\nI downloaded xenbase.gpi.gz, unzipped it, removed header lines and the Xenopus tropicalis (taxon:8364) entries and saved it as xenbase_info.xlsx\n\nIf you want to emulate what I did you can use the following commands in the terminal after downloading the file:\ngunzip xenbase.gpi.gz\nless xenbase.gpi\nq\ngunzip unzips the file and less allows you to view the file. q quits the viewer. You will see the header lines and that the file contains both Xenopus tropicalis and Xenopus laevis. I read the file in with read_tsv (skipping the first header lines) then filtered out the Xenopus tropicalis entries, dropped some columns and saved the file as an excel file.\nHowever, I have already done this for you and saved the file as xenbase_info.xlsx in the meta folder. We will import this file and join it to the results dataframe.\n🎬 Load the readxl (Wickham and Bryan 2023) package:\n\nlibrary(readxl)\n\n🎬 Import the Xenbase gene information file:\n\ngene_info <- read_excel(\"meta/xenbase_info.xlsx\") \n\nYou should view the resulting dataframe to see what information is available. You can use glimpse() or View().\n🎬 Merge the gene information with the results:\n\n# join the gene info with the results\ns30_results <- s30_results |>\n left_join(gene_info, by = \"xenbase_gene_id\")\n\n🎬 Save the results to a file:\n\nwrite_csv(s30_results, file = \"results/s30_results.csv\")", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#visualise-all-the-results-with-a-volcano-plot", - "href": "transcriptomics/week-5/workshop.html#visualise-all-the-results-with-a-volcano-plot", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-3", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-3", "title": "Workshop", - "section": "Visualise all the results with a volcano plot", - "text": "Visualise all the results with a volcano plot\ncolour the points if padj < 0.05 and log2FoldChange > 1\n\nlibrary(ggrepel)\n\n\ns30_results <- s30_results |> \n mutate(log10_padj = -log10(padj),\n sig = padj < 0.05,\n bigfc = abs(log2FoldChange) >= 2) \n\n\nvol <- s30_results |> \n ggplot(aes(x = log2FoldChange, \n y = log10_padj, \n colour = interaction(sig, bigfc))) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n scale_colour_manual(values = c(\"gray\", \n \"pink\",\n \"gray30\",\n \"deeppink\")) +\n geom_text_repel(data = subset(s30_results, \n bigfc & sig),\n aes(label = xenbase_gene_symbol),\n size = 3,\n max.overlaps = 50) +\n theme_classic() +\n theme(legend.position = \"none\")\nvol\n\nError in `geom_text_repel()`:\n! Problem while computing aesthetics.\nℹ Error occurred in the 5th layer.\nCaused by error:\n! object 'xenbase_gene_symbol' not found\n\n\n\nggsave(\"figures/frog-s30-volcano.png\",\n plot = vol,\n height = 4.5, \n width = 4.5,\n units = \"in\",\n device = \"png\")\n\nError in `geom_text_repel()`:\n! Problem while computing aesthetics.\nℹ Error occurred in the 5th layer.\nCaused by error:\n! object 'xenbase_gene_symbol' not found", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#import-1", - "href": "transcriptomics/week-5/workshop.html#import-1", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-mexicana-3", + "href": "transcriptomics/week-4/workshop.html#leishmania-mexicana-3", "title": "Workshop", - "section": "Import", - "text": "Import\nWe need to import both the normalised counts and the statistical results. We will need all of these for the visualisation and interpretation.\n🎬 Import the normalised counts for the Prog and HSPC cell types. I used the names prog and hspc for the dataframes.\n🎬 Combine the two dataframes (minus one set of gene ids) into one dataframe called prog_hspc:\n\n# combine into one dataframe dropping one of the gene id columns\nprog_hspc <- bind_cols(prog, hspc[-1])\n\n🎬 Import the statistical results in results/prog_hspc_results.csv. I used the name prog_hspc_results for the dataframe.\n🎬 Remind yourself what is in the rows and columns and the structure of the dataframe (perhaps using glimpse())\n\n\n\n\n\n\nIt is useful to have this information in a single dataframe to which we will add the gene information from Ensembl Having all the information together will make it easier to interpret the results and select genes of interest.\n🎬 Merge the two dataframes:\n\n# merge stats results with normalise values\nprog_hspc_results <- prog_hspc_results |> \n left_join(prog_hspc, by = \"ensembl_gene_id\")\n\nThis means you have the counts for each sample along with the statistical results for each gene.", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#write-the-significant-genes-to-file-1", - "href": "transcriptomics/week-5/workshop.html#write-the-significant-genes-to-file-1", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-3", + "href": "transcriptomics/week-4/workshop.html#stem-cells-3", "title": "Workshop", - "section": "Write the significant genes to file", - "text": "Write the significant genes to file\nWe will create dateframe of the signifcant genes and write them to file. These are the files you want to examine in more detail along with the visualisations to select your genes of interest.\n🎬 Create a dataframe of the genes significant at the 0.01 level:\n\nprog_hspc_results_sig0.01 <- prog_hspc_results |> \n filter(FDR <= 0.01)\n\n🎬 Write the dataframe to file\n🎬 Create a dataframe of the genes significant at the 0.05 level and write to file:\n❓How many genes are significant at the 0.01 and 0.05 levels?", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#view-the-relationship-between-cells-using-pca", - "href": "transcriptomics/week-5/workshop.html#view-the-relationship-between-cells-using-pca", + "objectID": "transcriptomics/week-4/workshop.html#footnotes", + "href": "transcriptomics/week-4/workshop.html#footnotes", "title": "Workshop", - "section": "View the relationship between cells using PCA", - "text": "View the relationship between cells using PCA\nWe have 280 genes in our dataset. PCA will allow us to plot our cells in the “gene expression” space so we can see if Prog cells cluster together and HSPC cells cluster together as we would expect. We do this on the log2 transformed normalised counts.\nOur data have genes in rows and samples in columns which is a common organisation for gene expression data. However, PCA expects cells in rows and genes, the variables, in columns. We can transpose the data to get it in the correct format.\n🎬 Transpose the log2 transformed normalised counts:\n\nprog_hspc_trans <- prog_hspc_results |> \n dplyr::select(starts_with(c(\"Prog_\", \"HSPC_\"))) |>\n t() |> \n data.frame()\n\nWe have used the select() function to select all the columns that start with Prog_ or HSPC_. We then use the t() function to transpose the dataframe. We then convert the resulting matrix to a dataframe using data.frame(). If you view that dataframe you’ll see it has default column name which we can fix using colnames() to set the column names to the gene ids.\n🎬 Set the column names to the gene ids:\n\ncolnames(prog_hspc_trans) <- prog_hspc_results$ensembl_gene_id\n\nperform PCA using standard functions\n\npca <- prog_hspc_trans |>\n prcomp(rank. = 15) \n\nThe rank. argument tells prcomp() to only calculate the first 15 principal components. This is useful for visualisation as we can only plot in 2 or 3 dimensions. We can see the results of the PCA by viewing the summary() of the pca object.\n\nsummary(pca)\n\nImportance of first k=15 (out of 280) components:\n PC1 PC2 PC3 PC4 PC5 PC6 PC7\nStandard deviation 12.5612 8.36646 5.98988 5.41386 4.55730 4.06142 3.84444\nProportion of Variance 0.1099 0.04874 0.02498 0.02041 0.01446 0.01149 0.01029\nCumulative Proportion 0.1099 0.15861 0.18359 0.20400 0.21846 0.22995 0.24024\n PC8 PC9 PC10 PC11 PC12 PC13 PC14\nStandard deviation 3.70848 3.66899 3.5549 3.48508 3.44964 3.42393 3.37882\nProportion of Variance 0.00958 0.00937 0.0088 0.00846 0.00829 0.00816 0.00795\nCumulative Proportion 0.24982 0.25919 0.2680 0.27645 0.28473 0.29290 0.30085\n PC15\nStandard deviation 3.33622\nProportion of Variance 0.00775\nCumulative Proportion 0.30860\n\n\nThe Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.1099 of the variance, the second 0.04874, and the third 0.2498. Together the first three components explain 18% of the total variance in the data. Plotting PC1 against PC2 will capture about 16% of the variance. This is not that high but it likely better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 score from the pca object and add labels for the cells.\n🎬 Create a dataframe of the PC1 and PC2 scores which are in pca$x and add the cell ids:\n\npca_labelled <- data.frame(pca$x,\n cell_id = row.names(prog_hspc_trans))\n\nIt will be helpful to add a column for the cell type so we can label points. One way to do this is to extract the information in the cell_id column into two columns.\n🎬 Extract the cell type and cell number from the cell_id column (keeping the cell_id column):\n\npca_labelled <- pca_labelled |> \n extract(cell_id, \n remove = FALSE,\n c(\"cell_type\", \"cell_number\"),\n \"([a-zA-Z]{4})_([0-9]{3})\")\n\n\"([a-zA-Z]{4})_([0-9]{3})\" is a regular expression - or regex. [a-zA-Z] means any lower or upper case letter, {4} means 4 of them, and [0-9] means any number, {3} means 3 of them. The brackets around the two parts of the regex mean we want to extract those parts. The first part goes into cell_type and the second part goes into cell_number. The _ between the two patterns matches the underscore and the fact it isn’t in a bracket means we don’t want to keep it.\nWe can now plot the PC1 and PC2 scores.\n🎬 Plot PC1 against PC2 and colour the points by cell type:\n\npca <- pca_labelled |> \n ggplot(aes(x = PC1, y = PC2, \n colour = cell_type)) +\n geom_point(alpha = 0.4) +\n scale_colour_viridis_d(end = 0.8, begin = 0.15,\n name = \"Cell type\") +\n theme_classic()\npca\n\n\n\n\n\n\n\nFairly good separation of cell types but plenty of overlap\n🎬 Save the plot to file:\n\nggsave(\"figures/prog_hspc-pca.png\",\n plot = pca,\n height = 3, \n width = 4,\n units = \"in\",\n device = \"png\")", + "section": "Footnotes", + "text": "Footnotes\n\nBioconductor is a project that develops and supports R packages for bioinformatics.↩︎", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#visualise-the-expression-of-the-most-significant-genes-using-a-heatmap-1", - "href": "transcriptomics/week-5/workshop.html#visualise-the-expression-of-the-most-significant-genes-using-a-heatmap-1", - "title": "Workshop", - "section": "Visualise the expression of the most significant genes using a heatmap", - "text": "Visualise the expression of the most significant genes using a heatmap\nA heatmap is a common way to visualise gene expression data. Often people will create heatmaps with thousands of genes but it can be more informative to use a subset along with clustering methods. We will use the genes which are significant at the 0.01 level.\nWe are going to create an interactive heatmap with the heatmaply (Galili et al. 2017) package. heatmaply takes a matrix as input so we need to convert a dataframe of the log2 values to a matrix. We will also set the rownames to the gene names.\n🎬 Convert a dataframe of the log2 values to a matrix. I have used sample() to select 70 random columns so the heatmap is generated quickly:\n\nmat <- prog_hspc_results_sig0.01 |> \n dplyr::select(starts_with(c(\"Prog\", \"HSPC\"))) |>\n dplyr::select(sample(1:1499, size = 70)) |>\n as.matrix()\n\n🎬 Set the row names to the gene names:\n\nrownames(mat) <- prog_hspc_results_sig0.01$external_gene_name\n\nYou might want to view the matrix by clicking on it in the environment pane.\n🎬 Load the heatmaply package:\n\nlibrary(heatmaply)\n\nWe need to tell the clustering algorithm how many clusters to create. We will set the number of clusters for the cell types to be 2 and the number of clusters for the genes to be the same since it makes sense to see what clusters of genes correlate with the cell types.\n\nn_cell_clusters <- 2\nn_gene_clusters <- 2\n\n🎬 Create the heatmap:\n\nheatmaply(mat, \n scale = \"row\",\n k_col = n_cell_clusters,\n k_row = n_gene_clusters,\n fontsize_row = 7, fontsize_col = 10,\n labCol = colnames(mat),\n labRow = rownames(mat),\n heatmap_layers = theme(axis.line = element_blank()))\n\n\n\n\n\nIt will take a minute to run and display. On the vertical axis are genes which are differentially expressed at the 0.01 level. On the horizontal axis are cells. We can see that cells of the same type don’t cluster that well together. We can also see two clusters of genes but the pattern of gene is not as clear as it was for the frogs and the correspondence with the cell clusters is not as strong.\nThe heatmap will open in the viewer pane (rather than the plot pane) because it is html. You can “Show in a new window” to see it in a larger format. You can also zoom in and out and pan around the heatmap and download it as a png. You might feel the colour bars is not adding much to the plot. You can remove it by setting hide_colorbar = TRUE, in the heatmaply() function.\nUsing all the cells is worth doing but it will take a while to generate the heatmap and then show in the viewer so do it sometime when you’re ready for a coffee break.", + "objectID": "transcriptomics/week-4/study_after_workshop.html", + "href": "transcriptomics/week-4/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "You need only do the section for your own project data\n🐸 Frog development\n🎬 Open your frogs-88H RStudio Project and the script you began in the Consolidation study last week. This will be cont-fgf-s20.R or cont-fgf-s14.R depending on which stage you moved to. Use the differential expression analysis you did in the workshop (in cont-fgf-s30.R) as a template to continue your script.\n🎄 Arabidopisis\n💉 Leishmania\n🐭 Stem cells\n🎬 Open your mice-88H RStudio Project. Make a new script and, using hspc-prog.R as a template, repeat the analysis on a different comparisons. You new script be called hspc-lthsc.R or lthsc-prog-3.R depending on which comparison you choose.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Workshop" + "Week 4: Statistical Analysis", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#visualise-all-the-results-with-a-volcano-plot-1", - "href": "transcriptomics/week-5/workshop.html#visualise-all-the-results-with-a-volcano-plot-1", + "objectID": "transcriptomics/week-3/workshop.html", + "href": "transcriptomics/week-3/workshop.html", "title": "Workshop", - "section": "Visualise all the results with a volcano plot", - "text": "Visualise all the results with a volcano plot\ncolour the points if FDR < 0.05 and prog_hspc_results > 1\n\nlibrary(ggrepel)\n\n\nprog_hspc_results <- prog_hspc_results |> \n mutate(log10_FDR = -log10(FDR),\n sig = FDR < 0.05,\n bigfc = abs(summary.logFC) >= 2) \n\n\nvol <- prog_hspc_results |> \n ggplot(aes(x = summary.logFC, \n y = log10_FDR, \n colour = interaction(sig, bigfc))) +\n geom_point() +\n geom_hline(yintercept = -log10(0.05), \n linetype = \"dashed\") +\n geom_vline(xintercept = 2, \n linetype = \"dashed\") +\n geom_vline(xintercept = -2, \n linetype = \"dashed\") +\n scale_x_continuous(expand = c(0, 0)) +\n scale_y_continuous(expand = c(0, 0)) +\n scale_colour_manual(values = c(\"gray\",\n \"pink\",\n \"deeppink\")) +\n geom_text_repel(data = subset(prog_hspc_results, \n bigfc & sig),\n aes(label = external_gene_name),\n size = 3,\n max.overlaps = 50) +\n theme_classic() +\n theme(legend.position = \"none\")\nvol\n\nError in `geom_text_repel()`:\n! Problem while computing aesthetics.\nℹ Error occurred in the 5th layer.\nCaused by error:\n! object 'external_gene_name' not found\n\n\n\nggsave(\"figures/prog-hspc-volcano.png\",\n plot = vol,\n height = 4.5, \n width = 4.5,\n units = \"in\",\n device = \"png\")\n\nError in `geom_text_repel()`:\n! Problem while computing aesthetics.\nℹ Error occurred in the 5th layer.\nCaused by error:\n! object 'external_gene_name' not found", + "section": "", + "text": "In this workshop you will learn what steps to take to get a good understanding of your transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nIn this session, you should examine all four data sets because the comparisons will give you a much stronger understanding of your own project data. Compare and contrast is a very useful way to build understanding.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#overview", - "href": "transcriptomics/week-5/study_before_workshop.html#overview", - "title": "Independent Study to prepare for workshop", - "section": "Overview", - "text": "Overview\nIn these slides we will:\n\n\nCheck where you are\n\nlearn some concepts used omics visualisation\n\nPrinciple Component Analysis (PCA)\nVolcano plots\nHeatmaps\n\n\nFind out what packages to install before the workshop", + "objectID": "transcriptomics/week-3/workshop.html#session-overview", + "href": "transcriptomics/week-3/workshop.html#session-overview", + "title": "Workshop", + "section": "", + "text": "In this workshop you will learn what steps to take to get a good understanding of your transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.\nIn this session, you should examine all four data sets because the comparisons will give you a much stronger understanding of your own project data. Compare and contrast is a very useful way to build understanding.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#what-we-did-in-transcriptomics-2-statistical-analysis", - "href": "transcriptomics/week-5/study_before_workshop.html#what-we-did-in-transcriptomics-2-statistical-analysis", - "title": "Independent Study to prepare for workshop", - "section": "What we did in Transcriptomics 2: Statistical Analysis", - "text": "What we did in Transcriptomics 2: Statistical Analysis\n\n\ncarried out differential expression analysis\nfound genes not expressed at all, or expressed in one group only\nSaved results files", + "objectID": "transcriptomics/week-3/workshop.html#frog-development", + "href": "transcriptomics/week-3/workshop.html#frog-development", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\nImport\nImport the data for stage 30.\n🎬 Import xlaevis_counts_S30.csv\n\n# 🐸 import the s30 data\ns30 <- read_csv(\"data-raw/xlaevis_counts_S30.csv\")\n\n🎬 Check the dataframe has the number of rows and columns you were expecting and that column types and names are as expected.\nDistribution of values across all the data in the file\nThe values are spread over multiple columns so in order to plot the distribution as a whole, we will need to first use pivot_longer() to put the data in ‘tidy’ format (Wickham 2014) by stacking the columns. We could save a copy of the stacked data and then plot it, but here, I have just piped the stacked data straight into ggplot(). This helps me avoid cluttering my R environment with temporary objects.\n🎬 Pivot the counts (stack the columns) so all the counts are in a single column (count) labelled in sample by the column it came from and pipe into ggplot() to create a histogram:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(x = count)) +\n geom_histogram()\n\n\n\n\n\n\n\nThis data is very skewed - there are very many low counts and a very few higher numbers. It is hard to see the very low bars for the higher values. Logging the counts is a way to make the distribution more visible. You cannot take the log of 0 so we add 1 to the count before logging. The log of 1 is zero so we will be able to see how many zeros we had.\n🎬 Repeat the plot of log of the counts.\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(x = log10(count + 1))) +\n geom_histogram()\n\n\n\n\n\n\n\nI’ve used base 10 only because it easy to convert to the original scale (1 is 10, 2 is 100, 3 is 1000 etc). Notice we have a peak at zero indicating there are many zeros. We would expect the distribution of counts to be roughly log normal because this is expression of all the genes in the genome1. The number of low counts is inflated (small peak near the low end). This suggests that these lower counts might be false positives. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across samples and genes.\nDistribution of values across the samples\nSummary statistics including the the number of NAs can be seen using the summary(). It is most helpful which you have up to about 25 columns. There is nothing special about the number 25, it is just that summaries of a larger number of columns are difficult to grasp.\n🎬 Get a quick overview of the 7 columns:\n\n# examine all the columns quickly\n# works well with smaller numbers of column\nsummary(s30)\n\n xenbase_gene_id S30_C_1 S30_C_2 S30_C_3 \n Length:11893 Min. : 0.0 Min. : 0.0 Min. : 0.0 \n Class :character 1st Qu.: 14.0 1st Qu.: 14.0 1st Qu.: 23.0 \n Mode :character Median : 70.0 Median : 75.0 Median : 107.0 \n Mean : 317.1 Mean : 335.8 Mean : 426.3 \n 3rd Qu.: 205.0 3rd Qu.: 220.0 3rd Qu.: 301.0 \n Max. :101746.0 Max. :118708.0 Max. :117945.0 \n S30_F_1 S30_F_2 S30_F_3 \n Min. : 0.0 Min. : 0.0 Min. : 0.0 \n 1st Qu.: 19.0 1st Qu.: 17.0 1st Qu.: 16.0 \n Median : 88.0 Median : 84.0 Median : 69.0 \n Mean : 376.2 Mean : 376.5 Mean : 260.4 \n 3rd Qu.: 251.0 3rd Qu.: 246.0 3rd Qu.: 187.0 \n Max. :117573.0 Max. :130672.0 Max. :61531.0 \n\n\nNotice that:\n\nthe minimum count is 0 and the maximums are very high in all the columns\nthe medians are quite a lot lower than the means so the data are skewed (hump to the left, tail to the right) and there must be quite a lot of zeros\n\nS30_F_3 does have a somewhat lower maximum count\n\nWe want to know how many zeros there are in each a column. A useful trick to determine this is to make use we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. This means you can sum a column of TRUE/FALSE values to get the number of TRUE values. For example, sum(S30_C_1 > 0) gives the number of values above zero in the S30_C_1 column. If you wanted the number of zeros, you would use sum(S30_C_1 == 0).\n🎬 Find the number values above zero in all six columns:\n\ns30 |>\n summarise(sum(S30_C_1 > 0),\n sum(S30_C_2 > 0),\n sum(S30_C_3 > 0),\n sum(S30_F_1 > 0),\n sum(S30_F_2 > 0),\n sum(S30_F_3 > 0))\n\n# A tibble: 1 × 6\n `sum(S30_C_1 > 0)` `sum(S30_C_2 > 0)` `sum(S30_C_3 > 0)` `sum(S30_F_1 > 0)`\n <int> <int> <int> <int>\n1 10553 10532 10895 10683\n# ℹ 2 more variables: `sum(S30_F_2 > 0)` <int>, `sum(S30_F_3 > 0)` <int>\n\n\nThere is a better way of doing this that saves you having to repeat so much code - very useful if you have a lot more than 6 columns! We can use pivot_longer() to put the data in tidy format and then use the group_by() and summarise() approach we have used extensively before.\n🎬 Find the number of zeros in all columns:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n group_by(sample) |>\n summarise(n_above_zero = sum(count > 0))\n\n# A tibble: 6 × 2\n sample n_above_zero\n <chr> <int>\n1 S30_C_1 10553\n2 S30_C_2 10532\n3 S30_C_3 10895\n4 S30_F_1 10683\n5 S30_F_2 10694\n6 S30_F_3 10930\n\n\nYou could expand this code to get get other useful summary information\n🎬 Summarise all the samples:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n group_by(sample) |>\n summarise(min = min(count),\n lowerq = quantile(count, 0.25),\n mean = mean(count),\n median = median(count),\n upperq = quantile(count, 0.75),\n max = max(count),\n n_above_zero = sum(count > 0))\n\n# A tibble: 6 × 8\n sample min lowerq mean median upperq max n_above_zero\n <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>\n1 S30_C_1 0 14 317. 70 205 101746 10553\n2 S30_C_2 0 14 336. 75 220 118708 10532\n3 S30_C_3 0 23 426. 107 301 117945 10895\n4 S30_F_1 0 19 376. 88 251 117573 10683\n5 S30_F_2 0 17 376. 84 246 130672 10694\n6 S30_F_3 0 16 260. 69 187 61531 10930\n\n\nThe mean count ranges from 260 to 426. S30_F_3 does stand out a little but not by too much. If we had more replicates we might consider analysing with and with out this replicate. Since we have just 3, we will leave it in. The potential effect of an odd replicate is slightly statistical power. The major differences in gene expression will still be uncovered. Differences between genes with lower average expression and or more variable expression might be missed. Whether this matters depends on the biological question you are asking. In this case, it does not matter because the major differences in gene expression will be enough.\n🎬 Save the summary as a dataframe, s30_summary_samp (using assignment).\nWe can also plot the distribution of counts across samples. We have many values (11893) so we are not limited to using geom_histogram(). geom_density() gives us a smooth distribution.\n🎬 Plot the log10 of the counts + 1 again but this time facet by the sample:\n\ns30 |>\n pivot_longer(cols = -xenbase_gene_id,\n names_to = \"sample\",\n values_to = \"count\") |>\n ggplot(aes(log10(count + 1))) +\n geom_density() +\n facet_wrap(. ~ sample, nrow = 3)\n\n\n\n\n\n\n\nThe key information to take from these plots is:\n\nthe distributions are roughly similar with S30_F_3 does stand out a little\nthe peak at zero suggests quite a few counts of 1.\nsince we would expect the distribution of counts in each sample to be roughly log normal so that the small rise near the low end, even before the peak at zero, suggests that these lower counts might be anomalies.\n\nWe have found the distribution across samples to be like that to the distribution over all. This is good because it means that the samples are fairly consistent with each other. We can now move on to the next step.\nDistribution of values across the genes\nThere are lots of genes in this dataset therefore we will take a slightly different approach. We would not want to use plot a distribution for each gene in the same way. Will pivot the data to tidy and then summarise the counts for each gene.\n🎬 Summarise the counts for each gene and save the result as s30_summary_gene. Include the same columns as we had in the by sample summary (s30_summary_samp) and an additional column, total for the total number of counts for each gene.\n🎬 View the s30_summary_gene dataframe.\nNotice that we have:\n\na lot of genes with counts of zero in every sample\na lot of genes with zero counts in several of the samples\nsome very very low counts.\n\nGenes with very low counts should be filtered out because they are unreliable - or, at the least, uninformative. The goal of our downstream analysis will be to see if there is a significant difference in gene expression between the control and FGF-treated sibling. Since we have only three replicates in each group, having one or two unreliable, missing or zero values, makes such a determination impossible for a particular gene. We will use the total counts (total) and the number of samples with non-zero values (n_above_zero) in this dataframe to filter our genes later.\nAs we have a lot of genes, it is again helpful to plot the mean counts with geom_pointrange() to get an overview of the distributions. We will again plot the log of the mean counts. We will also order the genes from lowest to highest mean count.\n🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():\n\ns30_summary_gene |> \n ggplot(aes(x = reorder(xenbase_gene_id, mean), y = log10(mean))) +\n geom_pointrange(aes(ymin = log10(mean - sd), \n ymax = log10(mean + sd )),\n size = 0.1)\n\n\n\n\n\n\n\n(Note the warning is expected since we have zero means).\nYou can see we also have quite a few genes with means less than 1 (log below zero). Note that the variability between genes (average counts between 0 and 102586) is far greater than between samples (average counts from 260 to 426) which is exactly what we would expect to see.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#where-should-you-be-1", - "href": "transcriptomics/week-5/study_before_workshop.html#where-should-you-be-1", - "title": "Independent Study to prepare for workshop", - "section": "Where should you be?", - "text": "Where should you be?\nAfter the Transcriptomics 2: 👋 Statistical Analysis Workshop including:\n\n🤗 Look after future you! and\nthe Independent Study to consolidate, you should have:", + "objectID": "transcriptomics/week-3/workshop.html#stem-cells", + "href": "transcriptomics/week-3/workshop.html#stem-cells", + "title": "Workshop", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nDistribution of values across all the data in the file\nDistribution of values across the samples\nDistribution of values across the genes", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#frogs", - "href": "transcriptomics/week-5/study_before_workshop.html#frogs", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Frogs", - "text": "🐸 Frogs\n\n\nAn RStudio Project called frogs-88H which contains:\n\nRaw data (S14, S20 and S30)\nProcessed data (s30_filtered.csv, s30_summary_gene.csv, s30_summary_gene_filtered.csv, s30_summary_samp.csv and equivalents for S14 OR S20)\nResults files (s30_fgf_only.csv, S30_normalised_counts.csv, S30_results.csv and equivalents for S14 OR S20)\n\nTwo scripts called cont-fgf-s30.R and either cont-fgf-s20.R OR cont-fgf-s14.R\n\n\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "objectID": "transcriptomics/week-3/workshop.html#arabidopsis", + "href": "transcriptomics/week-3/workshop.html#arabidopsis", + "title": "Workshop", + "section": "🎄 Arabidopsis", + "text": "🎄 Arabidopsis\nDistribution of values across all the data in the file\nDistribution of values across the samples\nDistribution of values across the genes", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#mice", - "href": "transcriptomics/week-5/study_before_workshop.html#mice", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Mice", - "text": "🐭 Mice\n\n\nAn RStudio Project called mice-88H which contains\n\nRaw data (hspc, prog, lthsc)\nProcessed data (hspc_summary_gene.csv, hspc_summary_samp.csv, prog_summary_gene.csv, prog_summary_samp.csv, lthsc_summary_gene.csv, lthsc_summary_samp.csv)\n\n\nResults files (prog_hspc_results.csv and an equivalent for lthsc vs prog or hspc vs lthsc)\nTwo scripts called hspc-prog.R and either hspc-lthsc.R OR prog-lthsc.R\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "objectID": "transcriptomics/week-3/workshop.html#leishmania", + "href": "transcriptomics/week-3/workshop.html#leishmania", + "title": "Workshop", + "section": "💉 Leishmania", + "text": "💉 Leishmania\nDistribution of values across all the data in the file\nDistribution of values across the samples\nDistribution of values across the genes", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#section", - "href": "transcriptomics/week-5/study_before_workshop.html#section", - "title": "Independent Study to prepare for workshop", - "section": "🍂", - "text": "🍂\nEither of the other examples.", + "objectID": "transcriptomics/week-3/workshop.html#frog-development-1", + "href": "transcriptomics/week-3/workshop.html#frog-development-1", + "title": "Workshop", + "section": "🐸 Frog development", + "text": "🐸 Frog development\nOur samples look to be similarly well sequenced. There are no samples we should remove. However, some genes are not expressed or the expression values are so low in for a gene that they are uninformative. We will filter the s30_summary_gene dataframe to obtain a list of xenbase_gene_id we can use to filter s30.\nMy suggestion is to include only the genes with counts in at least 3 samples. and those with total counts above 20. I chose 3 because that would keep genes expressed only in one sample: [0, 0, 0] [#,#,#]. This is a difference we cannot test statistically, but which matters biologically.\n🎬 Filter the summary by gene dataframe:\n\ns30_summary_gene_filtered <- s30_summary_gene |> \n filter(total > 20) |> \n filter(n_above_zero >= 3)\n\n❓ How many genes do you have left\n\n\n\n🎬 Use the list of xenbase_gene_id in the filtered summary to filter the original dataset:\n\ns30_filtered <- s30 |> \n filter(xenbase_gene_id %in% s30_summary_gene_filtered$xenbase_gene_id)\n\n🎬 Write the filtered original to file:\n\nwrite_csv(s30_filtered, \n file = \"data-processed/s30_filtered.csv\")", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#if-you-do-not-have-those", - "href": "transcriptomics/week-5/study_before_workshop.html#if-you-do-not-have-those", - "title": "Independent Study to prepare for workshop", - "section": "If you do not have those", - "text": "If you do not have those\nGo through:\n\nTranscriptomics 2: Statistical Analysis including:\n🤗 Look after future you! and\nthe Independent Study to consolidate", + "objectID": "transcriptomics/week-3/workshop.html#stem-cells-1", + "href": "transcriptomics/week-3/workshop.html#stem-cells-1", + "title": "Workshop", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nWe will take a different approach to filtering the single cell data. For the Frog samples we are examining the control and the FGF treated samples. This means have a low number of counts overall means the gene is not really expressed (detected) in any condition, and filtering out those genes is removing things that definitely are not interesting. For the mice, we have examined only one cell type but will be making comparisons between cells types. It may be that low expression of a gene in this cell type tells us something if that gene is highly expressed in another cell type. Instead, we will make statistical comparisons between the cell types and then filter based on overall expression, the difference in expression between cell types and whether that difference is significant.\nThe number of “replicates” is also important. When you have only three in each group it is not possible to make statistical comparisons when several replicates are zero. This is less of an issue with single cell data.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#examine-the-results-files-1", - "href": "transcriptomics/week-5/study_before_workshop.html#examine-the-results-files-1", - "title": "Independent Study to prepare for workshop", - "section": "Examine the results files", - "text": "Examine the results files\nRemind yourself of the key columns you have in the results files:\n\na log2 fold change\nan unadjusted p-value\na p value adjusted for multiple testing (FDR or padj)\na gene id", + "objectID": "transcriptomics/week-3/workshop.html#arabidopsis-1", + "href": "transcriptomics/week-3/workshop.html#arabidopsis-1", + "title": "Workshop", + "section": "🎄 Arabidopsis", + "text": "🎄 Arabidopsis", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#frogs-1", - "href": "transcriptomics/week-5/study_before_workshop.html#frogs-1", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Frogs", - "text": "🐸 Frogs\n\n\nRows: 10,136\nColumns: 7\n$ baseMean <dbl> 237.553928, 531.565700, 86.392830, 49.813502, 419.9983…\n$ log2FoldChange <dbl> 0.096601855, -0.089588528, -0.192811203, -0.008858703,…\n$ lfcSE <dbl> 0.2079396, 0.1557384, 0.3253216, 0.4342614, 0.1685420,…\n$ stat <dbl> 0.46456683, -0.57525007, -0.59267874, -0.02039947, -0.…\n$ pvalue <dbl> 0.64224169, 0.56512218, 0.55339617, 0.98372471, 0.8699…\n$ padj <dbl> 0.9998970, 0.9998970, 0.9998970, 0.9998970, 0.9998970,…\n$ xenbase_gene_id <chr> \"XB-GENE-1000007\", \"XB-GENE-1000023\", \"XB-GENE-1000062…\n\n\n\n\n\nbaseMean is the mean of the normalised counts for the gene across all samples\n\nlfcSE standard error of the fold change\n\nstat is the test statistic (the Wald statistic)\nGenerated by DESeq2 (Love, Huber, and Anders 2014)", + "objectID": "transcriptomics/week-3/workshop.html#leishmania-1", + "href": "transcriptomics/week-3/workshop.html#leishmania-1", + "title": "Workshop", + "section": "💉 Leishmania", + "text": "💉 Leishmania", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#mice-1", - "href": "transcriptomics/week-5/study_before_workshop.html#mice-1", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Mice", - "text": "🐭 Mice\n\n\nRows: 280\nColumns: 6\n$ Top <dbl> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,…\n$ p.value <dbl> 7.038138e-117, 4.736622e-90, 1.832630e-88, 4.211954e-7…\n$ FDR <dbl> 1.970679e-114, 6.631271e-88, 1.710455e-86, 2.948368e-7…\n$ summary.logFC <dbl> 1.596910, 3.035165, 3.261056, -2.146491, -3.056730, 3.…\n$ logFC.hspc <dbl> 1.596910, 3.035165, 3.261056, -2.146491, -3.056730, 3.…\n$ ensembl_gene_id <chr> \"ENSMUSG00000028639\", \"ENSMUSG00000024053\", \"ENSMUSG00…\n\n\n\n\nTop is the rank of the gene ordered by the p-value (smallest first)\n\nsummary.logFC and logFC.hspc give the same value (in this case since comparing two cell types)\ngenerated by scran (Lun, McCarthy, and Marioni 2016)", + "objectID": "transcriptomics/week-3/workshop.html#frogs-and-future-you", + "href": "transcriptomics/week-3/workshop.html#frogs-and-future-you", + "title": "Workshop", + "section": "🐸 Frogs and future you", + "text": "🐸 Frogs and future you\n🎬 Create a new Project, frogs-88H, populated with folders and your data. Make a script file called cont-fgf-s30.R. This will a be commented analysis of the control vs FGF at S30 comparison. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#adding-gene-information-1", - "href": "transcriptomics/week-5/study_before_workshop.html#adding-gene-information-1", - "title": "Independent Study to prepare for workshop", - "section": "Adding gene information", - "text": "Adding gene information\n\n\nThe gene id is difficult to interpret in plots/tables\nTherefore we need to add information such as the gene name and a description to the results\nFor the 🐸 Frog data information comes from Xenbase (Fisher et al. 2023)\nFor the 🐭 Mice data information comes from Ensembl (Birney et al. 2004)", + "objectID": "transcriptomics/week-3/workshop.html#mice-and-future-you", + "href": "transcriptomics/week-3/workshop.html#mice-and-future-you", + "title": "Workshop", + "section": "🐭 Mice and future you", + "text": "🐭 Mice and future you\n🎬 Create a new Project, mice-88H, populated with folders and your data. Make a script file called hspc-prog.R. This will a be commented analysis of the hspc cells vs the prog cells. At this point you will have only code for the hspc cells. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#xenbase", - "href": "transcriptomics/week-5/study_before_workshop.html#xenbase", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Xenbase", - "text": "🐸 Xenbase\n\nxenbase logoXenbase is a model organism database that provides genomic, molecular, and developmental biology information about Xenopus laevis and Xenopus tropicalis.\n\nIt took me some time to find the information you need.", + "objectID": "transcriptomics/week-3/workshop.html#arabidopsis-and-future-you", + "href": "transcriptomics/week-3/workshop.html#arabidopsis-and-future-you", + "title": "Workshop", + "section": "🎄 Arabidopsis and future you", + "text": "🎄 Arabidopsis and future you", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#xenbase-1", - "href": "transcriptomics/week-5/study_before_workshop.html#xenbase-1", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Xenbase", - "text": "🐸 Xenbase\n\n\nI got the information from the Xenbase information pages under Data Reports | Gene Information\nThis is listed: Xenbase Gene Product Information [readme] gzipped gpi (tab separated)\nClick on the readme link to see the file format and columns\nI downloaded xenbase.gpi.gz, unzipped it, removed header lines and the Xenopus tropicalis (taxon:8364) entries and saved it as xenbase_info.xlsx\nIn the workshop you will import this file and merge the information with the results file", + "objectID": "transcriptomics/week-3/workshop.html#leishmania-and-future-you", + "href": "transcriptomics/week-3/workshop.html#leishmania-and-future-you", + "title": "Workshop", + "section": "💉 Leishmania and future you", + "text": "💉 Leishmania and future you", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#ensembl", - "href": "transcriptomics/week-5/study_before_workshop.html#ensembl", - "title": "Independent Study to prepare for workshop", - "section": "🐭 Ensembl", - "text": "🐭 Ensembl\n\n\nEnsembl creates, integrates and distributes reference datasets and analysis tools that enable genomics\nBioMart provides a access to these large datasets\nbiomaRt (biomaRt?) is a Bioconductor package gives you programmatic access to BioMart.\nIn the workshop you use this package to get information you can merge with the results file", + "objectID": "transcriptomics/week-3/workshop.html#footnotes", + "href": "transcriptomics/week-3/workshop.html#footnotes", + "title": "Workshop", + "section": "Footnotes", + "text": "Footnotes\n\nThis a result of the Central limit theorem,one consequence of which is that adding together lots of distributions - whatever distributions they are - will tend to a normal distribution.↩︎", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Workshop" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#what-is-the-purpose-of-an-transcriptomics-plot", - "href": "transcriptomics/week-5/study_before_workshop.html#what-is-the-purpose-of-an-transcriptomics-plot", - "title": "Independent Study to prepare for workshop", - "section": "What is the purpose of an Transcriptomics plot?", - "text": "What is the purpose of an Transcriptomics plot?\n\n\nIn general, we plot data to help us summarise and understand it\nThis is especially import for omics data where we have a very large number of variables and often a large number of observations\nWe will look at three plots very commonly used in omics analysis: Principal Component Analysis (PCA) plot, Heatmaps and Volcano Plots", + "objectID": "transcriptomics/week-3/study_after_workshop.html", + "href": "transcriptomics/week-3/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "You need only do the section for your own project data\n🐸 Frog development\n🎬 Open your frogs-88H Project. Make a new script and, using cont-fgf-s30.R as a template, repeat the analysis on one of the other comparisons. It does not matter which one you choose. I recommend making a new script.\n🐭 Stem cells\n🎬 Open your mice-88H Project. Open your hspc-prog.R script and, using your code working with the hspc cells as a template, repeat the analysis on the prog cells. Add the code to hspc-prog.R as you will later add the statistical comparison between these cell types.\n🎄 Arabidopisis\n💉 Leishmania", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Week 3: Hello data!", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#pca", - "href": "transcriptomics/week-5/study_before_workshop.html#pca", - "title": "Independent Study to prepare for workshop", - "section": "PCA", - "text": "PCA\n\n\nPrincipal Component Analysis is an unsupervised machine learning technique\nUnsupervised methods1 are unsupervised in that they do not use/optimise to a particular output. The goal is to uncover structure. They do not test hypotheses\nIt is often used to visualise high dimensional data because it is a dimension reduction technique\n\n\nYou may wish to read a previous introduction to unsupervised methods I have written An introduction to Machine Learning: Unsupervised methods (Rand 2021)", + "objectID": "transcriptomics/week-5/overview.html", + "href": "transcriptomics/week-5/overview.html", + "title": "Overview", + "section": "", + "text": "This week we cover how to visualise the results of your differential expression analysis. The independent study will allow you to check you have what you should have following the Transcriptomics 2: Statistical Analysis workshop and Consolidation study. It will also summarise the the methods and plots we will go through in the workshop. It will also explain how to write the methods for the analyses with have conducted. In the workshop, we will learn how to carry out and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot.\nThe plots you have by the end of this week will be suitable for including in your report.\nWe suggest you sit together with your group in the workshop.\n\nLearning objectives\nThe successful student will be able to:\n\nverify they have the required RStudio Project set up and the data and code files from the previous Workshop and Consolidation study\nperform a PCA and understand how to interpret them\ncreate a volcano plot and understand how to interpret them\nwrite the methods for the analyses they have conducted\n\n\n\nInstructions\n\nPrepare\n\n📖 Read what you should have so far\n📖 Read about concepts in PCA and volcano plots\n📖 Read about how to write the methods for the analyses you have conducted\n\nWorkshop\n\n💻 Perform and plot a PCA\n💻 Visualise all the results with a volcano plot\n💻 Look after future you!\n\nConsolidate\n\n💻 Use the work you completed in the workshop as a template to apply to a new case.\n\n\n\n\nReferences", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", - "Prepare!" + "About" ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-1", - "href": "transcriptomics/week-5/study_before_workshop.html#pca-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#overview", + "href": "transcriptomics/week-5/study_before_workshop.html#overview", "title": "Independent Study to prepare for workshop", - "section": "PCA", - "text": "PCA\n\n\nIt takes a large number of continuous variables (like gene expression) and reduces them to a smaller number of variables (called principal components) that explain most of the variation in the data\nThe principal components can be plotted to see how samples cluster together", + "section": "Overview", + "text": "Overview\nIn these slides we will:\n\n\nCheck where you are\n\nlearn some concepts used omics visualisation\n\nPrinciple Component Analysis (PCA)\nVolcano plots\nHeatmaps\n\n\nFind out what packages to install before the workshop", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -1965,11 +2228,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-2", - "href": "transcriptomics/week-5/study_before_workshop.html#pca-2", + "objectID": "transcriptomics/week-5/study_before_workshop.html#what-we-did-in-transcriptomics-2-statistical-analysis", + "href": "transcriptomics/week-5/study_before_workshop.html#what-we-did-in-transcriptomics-2-statistical-analysis", "title": "Independent Study to prepare for workshop", - "section": "PCA", - "text": "PCA\n\n\nTo see if samples cluster as we would expect, we might plot the expression of one gene against another\n\n\n\n\n\n\n\n\n\nSamples\n\n\n\n\n\nCells\n\n\n\n\nThis gives some insight but we have 280 (mice) or 10,000+(frogs) genes to consider. How do we know if the pair we use is typical? How can we consider al the genes at once?", + "section": "What we did in Transcriptomics 2: Statistical Analysis", + "text": "What we did in Transcriptomics 2: Statistical Analysis\n\n\ncarried out differential expression analysis\nfound genes not expressed at all, or expressed in one group only\nSaved results files", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -1977,11 +2240,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-3", - "href": "transcriptomics/week-5/study_before_workshop.html#pca-3", + "objectID": "transcriptomics/week-5/study_before_workshop.html#where-should-you-be-1", + "href": "transcriptomics/week-5/study_before_workshop.html#where-should-you-be-1", "title": "Independent Study to prepare for workshop", - "section": "PCA", - "text": "PCA\n\n\nPCA is a solution for this - It takes a large number of continuous variables (like gene expression) and reduces them to a smaller number of “principal components” that explain most of the variation in the data.\n\n\n\n\n\n\n\n\n\nSamples\n\n\n\n\n\nCells", + "section": "Where should you be?", + "text": "Where should you be?\nAfter the Transcriptomics 2: 👋 Statistical Analysis Workshop including:\n\n🤗 Look after future you! and\nthe Independent Study to consolidate, you should have:", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -1989,11 +2252,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-4", - "href": "transcriptomics/week-5/study_before_workshop.html#pca-4", + "objectID": "transcriptomics/week-5/study_before_workshop.html#frog-development", + "href": "transcriptomics/week-5/study_before_workshop.html#frog-development", "title": "Independent Study to prepare for workshop", - "section": "PCA", - "text": "PCA\nWe have done PCA in Transcriptomics 3, but often PCA might be one of the first exploratory steps because it gives you an idea whether you expect general patterns in gene expression that distinguish groups.", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n\n\nAn RStudio Project called frogs-88H which contains:\n\ndata-raw/ with xlaevis_counts_S14.csv, xlaevis_counts_S20.csv, xlaevis_counts_S30.csv\n\ndata-processed with s30_filtered.csv and equivalent for S14 OR S20\nresults/ with s30_fgf_only.csv (there were no control only genes in s30), s30_results.csv and equivalent for S14 OR S20)\n\nTwo scripts called cont-fgf-s30.R and either cont-fgf-s20.R OR cont-fgf-s14.R\n\n\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2001,11 +2264,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#heatmaps-1", - "href": "transcriptomics/week-5/study_before_workshop.html#heatmaps-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#arabidopisis", + "href": "transcriptomics/week-5/study_before_workshop.html#arabidopisis", "title": "Independent Study to prepare for workshop", - "section": "Heatmaps", - "text": "Heatmaps\n\n\nare a grid of genes on one axis and samples on the other with each grid cell coloured by another variable\nin this case the other variable is gene expression\nthey allow you to quickly get an overview of the expression patterns across genes and samples\nwe often couple them with clustering to group genes and samples with similar expression patterns together which helps us see which genes are responsible for distinguishing groups", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2013,11 +2276,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#section-1", - "href": "transcriptomics/week-5/study_before_workshop.html#section-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#leishmania-mexicana", + "href": "transcriptomics/week-5/study_before_workshop.html#leishmania-mexicana", "title": "Independent Study to prepare for workshop", - "section": "", - "text": "Heat map for the frog data\n\nSee next slide for information", + "section": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2025,11 +2288,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#heatmaps-2", - "href": "transcriptomics/week-5/study_before_workshop.html#heatmaps-2", + "objectID": "transcriptomics/week-5/study_before_workshop.html#stem-cells", + "href": "transcriptomics/week-5/study_before_workshop.html#stem-cells", "title": "Independent Study to prepare for workshop", - "section": "Heatmaps", - "text": "Heatmaps\n\n\nOn the vertical axis are genes which are differentially expressed at the 0.01 level\nOn the horizontal axis are samples\nWe can see that the FGF-treated samples cluster together and the control samples cluster together\nWe can also see two clusters of genes; one of these shows genes upregulated (more yellow) in the FGF-treated samples and the other shows genes downregulated (more blue) in the FGF-treated samples", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n\n\nAn RStudio Project called mice-88H which contains\n\nRaw data (hspc, prog, lthsc)\nProcessed data (hspc_summary_gene.csv, hspc_summary_samp.csv, prog_summary_gene.csv, prog_summary_samp.csv, lthsc_summary_gene.csv, lthsc_summary_samp.csv)\n\n\nResults files (prog_hspc_results.csv and an equivalent for lthsc vs prog or hspc vs lthsc)\nTwo scripts called hspc-prog.R and either hspc-lthsc.R OR prog-lthsc.R\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2037,11 +2300,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-1", - "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#if-you-do-not-have-those", + "href": "transcriptomics/week-5/study_before_workshop.html#if-you-do-not-have-those", "title": "Independent Study to prepare for workshop", - "section": "Volcano plots", - "text": "Volcano plots\n\n\nVolcano plots often used to visualise the results of differential expression analysis\nThey are just a scatter of the corrected p value against the fold change….\nalmost - the we actually plot the negative log of the corrected p value against the fold change", + "section": "If you do not have those", + "text": "If you do not have those\nGo through:\n\nTranscriptomics 2: Statistical Analysis including:\n🤗 Look after future you! and\nthe Independent Study to consolidate", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2049,11 +2312,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-2", - "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-2", + "objectID": "transcriptomics/week-5/study_before_workshop.html#all-results-files", + "href": "transcriptomics/week-5/study_before_workshop.html#all-results-files", "title": "Independent Study to prepare for workshop", - "section": "Volcano plots", - "text": "Volcano plots\n\n\nThis is because just plotting the p-value means the axis is counter intuitive. Small p-values (i.e., significant values) are at the bottom of the axis)\nAnd since p-values range from 1 to very tiny the points are all squashed at the bottom of the axis\n\n\n\nVolcano plot FDR against fold change", + "section": "All results files", + "text": "All results files\nRemind yourself of the key columns in any of the results files:\n\nnormalised counts for each sample/cell\na log2 fold change\nan unadjusted p-value\na p value adjusted for multiple testing (called FDR or padj)\na gene id\nother information about each gene", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2061,11 +2324,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-3", - "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-3", + "objectID": "transcriptomics/week-5/study_before_workshop.html#results-files", + "href": "transcriptomics/week-5/study_before_workshop.html#results-files", "title": "Independent Study to prepare for workshop", - "section": "Volcano plots", - "text": "Volcano plots\n\n\nPlotting the negative log of the corrected p-value means that the values are spread out and the significant values are at the top of the axis\n\n\n\nVolcano plot -log(FDR) against fold change", + "section": "🐸 , 🎄 , 💉 results files", + "text": "🐸 , 🎄 , 💉 results files\n\n\nbaseMean is the mean of the normalised counts for the gene across all samples\n\nlfcSE standard error of the fold change\n\nstat is the test statistic (the Wald statistic)", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2073,11 +2336,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#visualisations", - "href": "transcriptomics/week-5/study_before_workshop.html#visualisations", + "objectID": "transcriptomics/week-5/study_before_workshop.html#stem-cells-1", + "href": "transcriptomics/week-5/study_before_workshop.html#stem-cells-1", "title": "Independent Study to prepare for workshop", - "section": "Visualisations", - "text": "Visualisations\n\nShould be done on normalised data so meaningful comparisons can be made\nThe 🐭 mouse data were already log2normalised\nThe 🐸 frog data were normalised by the DE method and saved to file. We will log2 transform before doing visualisations", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n\nTop is the rank of the gene ordered by the p-value (smallest first)\n\nsummary.logFC and logFC.hspc give the same value (in this case since comparing two cell types)", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2085,11 +2348,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#packages-to-install-before-the-workshop", - "href": "transcriptomics/week-5/study_before_workshop.html#packages-to-install-before-the-workshop", + "objectID": "transcriptomics/week-5/study_before_workshop.html#what-is-the-purpose-of-a-transcriptomics-plot", + "href": "transcriptomics/week-5/study_before_workshop.html#what-is-the-purpose-of-a-transcriptomics-plot", "title": "Independent Study to prepare for workshop", - "section": "Packages to install before the workshop", - "text": "Packages to install before the workshop\nheatmaply (Galili et al. 2017) and ggrepel (Slowikowski 2024) from CRAN in the the normal way:\n\ninstall.packages(\"heatmaply\")\ninstall.packages(\"ggrepel\")\n\nbiomaRt (biomaRt?) from Bioconductor using BiocManager (Morgan and Ramos 2024)\n\nBiocManager::install(\"biomaRt\")", + "section": "What is the purpose of a Transcriptomics plot?", + "text": "What is the purpose of a Transcriptomics plot?\n\n\nIn general, we plot data to help us summarise and understand it\nThis is especially import for transcriptomics data where we have a very large number of variables and often a large number of observations\nWe will look at two plots very commonly used in transcriptomics analysis: Principal Component Analysis (PCA) plot and Volcano Plots", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2097,11 +2360,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#workshops-1", - "href": "transcriptomics/week-5/study_before_workshop.html#workshops-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#pca", + "href": "transcriptomics/week-5/study_before_workshop.html#pca", "title": "Independent Study to prepare for workshop", - "section": "Workshops", - "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values\nTranscriptomics 2: Statistical Analysis Identifying which genes are differentially expressed between treatments.\nTranscriptomics 3: Visualising and Interpreting. PCA, Volcano plots and heatmaps to visualise results. Interpreting the results and finding out more about genes of interest.", + "section": "PCA", + "text": "PCA\n\n\nPrincipal Component Analysis is an unsupervised machine learning technique\nUnsupervised methods1 are unsupervised in that they do not use/optimise to a particular output. The goal is to uncover structure. They do not test hypotheses\nIt is often used to visualise high dimensional data because it is a dimension reduction technique\n\n\nYou may wish to read a previous introduction to unsupervised methods I have written An introduction to Machine Learning: Unsupervised methods (Rand 2021)", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2109,11 +2372,11 @@ ] }, { - "objectID": "transcriptomics/week-5/study_before_workshop.html#references", - "href": "transcriptomics/week-5/study_before_workshop.html#references", + "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-1", + "href": "transcriptomics/week-5/study_before_workshop.html#pca-1", "title": "Independent Study to prepare for workshop", - "section": "References", - "text": "References\n\n\n\n🔗 About Transcriptomics 3: Visualising and Interpreting\n\n\n\n\nBirney, Ewan, T. Daniel Andrews, Paul Bevan, Mario Caccamo, Yuan Chen, Laura Clarke, Guy Coates, et al. 2004. “An Overview of Ensembl.” Genome Research 14 (5): 925–28. https://doi.org/10.1101/gr.1860604.\n\n\nFisher, Malcolm, Christina James-Zorn, Virgilio Ponferrada, Andrew J Bell, Nivitha Sundararaj, Erik Segerdell, Praneet Chaturvedi, et al. 2023. “Xenbase: Key Features and Resources of the Xenopus Model Organism Knowledgebase.” Genetics 224 (1): iyad018. https://doi.org/10.1093/genetics/iyad018.\n\n\nGalili, Tal, O’Callaghan, Alan, Sidi, Jonathan, Sievert, and Carson. 2017. “Heatmaply: An r Package for Creating Interactive Cluster Heatmaps for Online Publishing.” Bioinformatics. https://doi.org/10.1093/bioinformatics/btx657.\n\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.\n\n\nMorgan, Martin, and Marcel Ramos. 2024. BiocManager: Access the Bioconductor Project Package Repository. https://bioconductor.github.io/BiocManager/.\n\n\nRand, Emma. 2021. Data Science Strand of BIO00058M. https://doi.org/10.5281/zenodo.5527705.\n\n\nSlowikowski, Kamil. 2024. Ggrepel: Automatically Position Non-Overlapping Text Labels with ’Ggplot2’. https://ggrepel.slowkow.com/.", + "section": "PCA", + "text": "PCA\n\n\nTakes a large number of continuous variables (like gene expression) and reduces them to a smaller number of variables (called principal components) that explain most of the variation in the data\nThe principal components can be plotted to see how samples cluster together", "crumbs": [ "Transcriptomics", "Week 5: Visualising and Interpreting", @@ -2121,469 +2384,470 @@ ] }, { - "objectID": "transcriptomics/week-4/workshop.html", - "href": "transcriptomics/week-4/workshop.html", - "title": "Workshop", - "section": "", - "text": "In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both.", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#session-overview", - "href": "transcriptomics/week-4/workshop.html#session-overview", - "title": "Workshop", - "section": "", - "text": "In the workshop, you will learn how to perform differential expression analysis on raw counts using DESeq2 (Love, Huber, and Anders 2014) or on logged normalised expression values using scran (Lun, McCarthy, and Marioni 2016) or both.", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#import", - "href": "transcriptomics/week-4/workshop.html#import", - "title": "Workshop", - "section": "Import", - "text": "Import\nWe need to import the S30 data that were filtered to remove genes with 4, 5 or 6 zeros and those where the total counts was less than 20.\n🎬 Import the data from the data-processed folder.", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#genes-expressed-in-one-treatment", - "href": "transcriptomics/week-4/workshop.html#genes-expressed-in-one-treatment", - "title": "Workshop", - "section": "Genes expressed in one treatment", - "text": "Genes expressed in one treatment\nThe genes expressed in only one treatment group are those with zeros in all three replicates in one group and non-zero values in all three replicates in the other group. For example, those shown here:\n\n\nError in `arrange()`:\nℹ In argument: `..1 = S30_C_3`.\nCaused by error:\n! object 'S30_C_3' not found\n\n\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only in the FGF-treated group:\n\ns30_fgf_only <- s30_filtered |> \n filter(S30_C_1 == 0, \n S30_C_2 == 0, \n S30_C_3 == 0, \n S30_F_1 > 0, \n S30_F_2 > 0, \n S30_F_3 > 0)\n\nError in `filter()`:\nℹ In argument: `S30_C_1 == 0`.\nCaused by error:\n! object 'S30_C_1' not found\n\n\n❓ How many genes are expressed only in the FGF-treated group?\n\n\n🎬 Now you find any genes that are expressed only in the control group.\n\n\nError in `filter()`:\nℹ In argument: `S30_C_1 > 0`.\nCaused by error:\n! object 'S30_C_1' not found\n\n\n❓ Do the results make sense to you in light of what you know about the biology?\n\n\n\n\n\n\n\n🎬 Write to file (saved in results) all the genes that are expressed one group only.\n\n\nError in eval(expr, envir, enclos): object 's30_fgf_only' not found", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#create-deseqdataset-object", - "href": "transcriptomics/week-4/workshop.html#create-deseqdataset-object", - "title": "Workshop", - "section": "Create DESeqDataSet object", - "text": "Create DESeqDataSet object\n🎬 Load the DESeq2 package:\nA DEseqDataSet object is a custom data type that is used by DESeq2. Custom data types are common in the Bioconductor1 packages. They are used to store data in a way that is useful for the analysis. These data types typically have data, transformed data, metadata and experimental designs within them.\nTo create a DESeqDataSet object, we need to provide three things:\n\nThe raw counts - these are what we imported into s30_filtered\n\nThe meta data which gives information about the samples and which treatment groups they belong to\nA design matrix which captures the design of the statistical model.\n\nThe counts must in a matrix rather than a dataframe. Unlike a dataframe, a matrix has columns of all the same type. That is, it will contain only the counts. The gene ids are given as row names rather than a column. The matrix() function will create a matrix from a dataframe of columns of the same type and the select() function can be used to remove the gene ids column.\n🎬 Create a matrix of the counts:\n\ns30_count_mat <- s30_filtered |>\n select(-xenbase_gene_id) |>\n as.matrix()\n\n🎬 Add the gene ids as row names to the matrix:\n\n# add the row names to the matrix\nrownames(s30_count_mat) <- s30_filtered$xenbase_gene_id\n\nYou might want to view the matrix.\nThe metadata are in a file, frog_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the second column is the treatment group.\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/frog_meta_data.txt\")\n\n🎬 Examine the resulting dataframe.\nWe need to add the sample names as row names to the metadata dataframe. This is because the DESeqDataSet object will use the row names to match the samples in the metadata to the samples in the counts matrix.\n🎬 Add the sample names as row names to the metadata dataframe:\n\nrow.names(meta) <- meta$sample_id\n\n(you will get a warning message but you can ignore it)\nWe are dealing only with the S30 data so we need to remove the samples that are not in the S30 data.\n🎬 Filter the metadata to keep only the S30 information:\n\nmeta_S30 <- meta |>\n dplyr::filter(stage == \"stage_30\")\n\n\n\n# A tibble: 6 × 4\n sample_id stage treatment sibling_rep\n* <chr> <chr> <chr> <chr> \n1 S30_C_5 stage_30 control five \n2 S30_C_6 stage_30 control six \n3 S30_C_A stage_30 control A \n4 S30_F_5 stage_30 FGF five \n5 S30_F_6 stage_30 FGF six \n6 S30_F_A stage_30 FGF A \n\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model You should notice that it is the same sort of formula we used in t.test(), lm(),glm() etc. The ~ indicates that the left hand side is the response variable (in this case counts) and the right hand side are the explanatory variables. We are interested in the difference between the treatments but we include sibling_rep to account for the fact that the data are paired. The names of the columns in the count matrix have to match the names in the metadata dataframe and the names of the explanatory variables in the design formula have to match the names of columns in the metadata.\n🎬 Create the DESeqDataSet object:\n\ndds <- DESeqDataSetFromMatrix(countData = s30_count_mat,\n colData = meta_S30,\n design = ~ treatment + sibling_rep)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of treatment and sibling_rep in the metadata dataframe are char. This is not a as DESeqDataSetFromMatrix() has made them into the factors it needs.\n🎬 Examine the DESeqDataSet object.\nThe counts are in dds@assays@data@listData[[\"counts\"]] and the metadata are in dds@colData but the easiest way to see them is to use the counts() and colData() functions from the DESeq2 package.\n🎬 View the counts:\n\ncounts(dds) |> View()\n\nError in .External2(C_dataviewer, x, title): unable to start data viewer\n\n\nYou should be able to see that this is the same as in s30_count_mat.\n\ncolData(dds)\n\nDataFrame with 6 rows and 4 columns\n sample_id stage treatment sibling_rep\n <character> <character> <factor> <factor>\nS30_C_5 S30_C_5 stage_30 control five\nS30_C_6 S30_C_6 stage_30 control six \nS30_C_A S30_C_A stage_30 control A \nS30_F_5 S30_F_5 stage_30 FGF five\nS30_F_6 S30_F_6 stage_30 FGF six \nS30_F_A S30_F_A stage_30 FGF A", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#prepare-the-normalised-counts", - "href": "transcriptomics/week-4/workshop.html#prepare-the-normalised-counts", - "title": "Workshop", - "section": "Prepare the normalised counts", - "text": "Prepare the normalised counts\nThe normalised counts are the counts that have been transformed to account for the library size (i.e., the total number of reads in a sample) and the gene length. We have to first estimate the normalisation factors and store them in the DESeqDataSet object and then we can get the normalised counts.\n🎬 Estimate the factors for normalisation and store them in the DESeqDataSet object:\n\ndds <- estimateSizeFactors(dds)\n\n🎬 Look at the factors (just for information):\n\nsizeFactors(dds)\n\n S30_C_5 S30_C_6 S30_C_A S30_F_5 S30_F_6 S30_F_A \n0.8812200 0.9454600 1.2989886 1.0881870 1.0518961 0.8322894 \n\n\nTo get the normalised counts we again used the counts() function but this time we use the normalized=TRUE argument.\n🎬 Save the normalised to a matrix:\n\nnormalised_counts <- counts(dds, normalized = TRUE)\n\nWe will write the normalised counts to a file so that we can use them in the future.\n🎬 Make a dataframe of the normalised counts, add a column for the gene ids and write to file:\n\ndata.frame(normalised_counts,\n xenbase_gene_id = row.names(normalised_counts)) |>\n write_csv(file = \"results/S30_normalised_counts.csv\")", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#differential-expression-analysis", - "href": "transcriptomics/week-4/workshop.html#differential-expression-analysis", - "title": "Workshop", - "section": "Differential expression analysis", - "text": "Differential expression analysis\nWe used the DESeq() function to do the differential expression analysis. This function fits the statistical model to the data and then uses the model to calculate the significance of the difference between the treatments. It again stored the results in the DESseqDataSet object. Note that the differential expression needs the raw (unnormalised counts) as it does its own normalisation as part of the process.\n🎬 Run the differential expression analysis:\n\ndds <- DESeq(dds)\n\nThe function will take only a few moments to run on this data but can take longer for bigger datasets.\nWe need to define the contrasts we want to test. We want to test the difference between the treatments so we will define the contrast as FGF and control.\n🎬 Define the contrast:\n\ncontrast_fgf <- c(\"treatment\", \"FGF\", \"control\")\n\nNote that treatment is the name of the column in the metadata dataframe and FGF and control are the names of the levels in the treatment column. By putting them in the order FGF , control we are saying the fold change will be FGF / control. If we had put them in the order control, FGF we would have got the fold change as control / FGF. This means:\n\npositive log fold changes indicate FGF > control and\nnegative log fold changes indicates control > FGF.\n\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_fgf <- results(dds,\n contrast = contrast_fgf)\n\nThis will give us the log2 fold change and p-value for the contrast. ## Add gene information from Xenbase\n\nI got the information from the Xenbase information pages under Data Reports | Gene Information\nThis is listed: Xenbase Gene Product Information [readme] gzipped gpi (tab separated)\nClick on the readme link to see the file format and columns\nI downloaded xenbase.gpi.gz, unzipped it, removed header lines and the Xenopus tropicalis (taxon:8364) entries and saved it as xenbase_info.xlsx\n\nIf you want to emulate what I did you can use the following commands in the terminal after downloading the file:\ngunzip xenbase.gpi.gz\nless xenbase.gpi\nq\ngunzip unzips the file and less allows you to view the file. q quits the viewer. You will see the header lines and that the file contains both Xenopus tropicalis and Xenopus laevis. I read the file in with read_tsv (skipping the first header lines) then filtered out the Xenopus tropicalis entries, dropped some columns and saved the file as an excel file.\nHowever, I have already done this for you and saved the file as xenbase_info.xlsx in the meta folder. We will import this file and join it to the results dataframe.\n🎬 Load the readxl (Wickham and Bryan 2023) package:\n\nlibrary(readxl)\n\n🎬 Import the Xenbase gene information file:\n\ngene_info <- read_excel(\"meta/xenbase_info.xlsx\") \n\nError: `path` does not exist: 'meta/xenbase_info.xlsx'\n\n\nYou should view the resulting dataframe to see what information is available. You can use glimpse() or View().\n🎬 Merge the gene information with the results:\n\n# join the gene info with the results\ns30_results <- s30_results |>\n left_join(gene_info, by = \"xenbase_gene_id\")\n\nError in eval(expr, envir, enclos): object 's30_results' not found\n\n\nWe will also find it useful to import the metadata that maps the sample names to treatments. This will allow us to label the samples in the visualisations.\n🎬 Save the results to a file:\n\ndata.frame(results_fgf,\n xenbase_gene_id = row.names(results_fgf)) |> \n write_csv(file = \"results/S30_results.csv\")", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" - ] - }, - { - "objectID": "transcriptomics/week-4/workshop.html#import-1", - "href": "transcriptomics/week-4/workshop.html#import-1", - "title": "Workshop", - "section": "Import", - "text": "Import\n🎬 Import surfaceome_hspc.csv and surfaceome_prog.csv into dataframes called hspc and prog respectively.", + "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-2", + "href": "transcriptomics/week-5/study_before_workshop.html#pca-2", + "title": "Independent Study to prepare for workshop", + "section": "PCA", + "text": "PCA\n\n\nTo understand the logic of PCA, imagine we might plotting the expression of one gene against that of another\n\n\n\n\n\n\n\n\n\nSamples\n\n\n\n\n\nCells\n\n\n\n\nThis gives us some in insight in how the sample/cells cluster. But we have a lot of genes (even for the stem cells) to consider. How do we know if the pair we use is typical? How can we consider al the genes at once?", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#combine-the-two-datasets", - "href": "transcriptomics/week-4/workshop.html#combine-the-two-datasets", - "title": "Workshop", - "section": "Combine the two datasets", - "text": "Combine the two datasets\nWe need to combine the two datasets of 701 and 798 cells into one dataset of 1499 cells, i.e., 1499 columns. The number of rows is the number of genes, 280. Before combining, we must make sure genes in the same order in both dataframes or we would be comparing the expression of one gene in one cell type to the expression of a different gene in the other cell type!\n🎬 Check the gene ids are in the same order in both dataframes:\n\nidentical(prog$ensembl_gene_id, hspc$ensembl_gene_id)\n\n[1] TRUE\n\n\nscran can use a matrix or a dataframe of counts but theses must be log normalised counts. If using a dataframe, the columns must only contain the expression values (not the gene ids).\n🎬 Combine the two dataframes (minus the gene ids) into one dataframe called prog_hspc:\n\nprog_hspc <- bind_cols(prog[-1], hspc[-1])\n\n🎬 Now add the gene ids as the row names:\n\nrow.names(prog_hspc) <- prog$ensembl_gene_id", + "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-3", + "href": "transcriptomics/week-5/study_before_workshop.html#pca-3", + "title": "Independent Study to prepare for workshop", + "section": "PCA", + "text": "PCA\n\n\nPCA is a solution for this - It takes a large number of continuous variables (like gene expression) and reduces them to a smaller number of “principal components” that explain most of the variation in the data.\n\n\n\n\n\n\n\n\n\nSamples\n\n\n\n\n\nCells", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#filter-to-remove-unexpressed-genes", - "href": "transcriptomics/week-4/workshop.html#filter-to-remove-unexpressed-genes", - "title": "Workshop", - "section": "Filter to remove unexpressed genes", - "text": "Filter to remove unexpressed genes\nIn this dataset, we will not see and genes that are not expressed in any of the cells because we are using a specific subset of the transcriptome that was deliberately selected. However, we will go through how to do this because it is an important step in most analyses.\nFor the 🐸 frog data you should remember that we were able to filter out our unexpressed genes in Transcripttranscriptomics 1 because we were examining both groups to be compared. In that workshop, we discussed that we could not filter out unexpressed genes in the 🐭 mouse data because we only had one cell types at that time. During the Consolidate Independent Study you examined the hspc cells.\nWhere the sum of all the values in the rows is zero, all the entries must be zero. We can use this to find the filter the genes that are not expressed in any of the cells. To do row wise aggregates such as the sum across rows we can use the rowwise() function. c_across() allows us to use the colon notation Prog_001:HSPC_852 in sum() rather than having to list all the column names: sum(Prog_001, Prog_002, Prog_002, Prog_004,.....)\n🎬 Find the genes that are 0 in every column of the prog_hspc dataframe:\n\nprog_hspc |> \n rowwise() |> \n filter(sum(c_across(Prog_001:HSPC_852)) == 0)\n\n# A tibble: 0 × 1,499\n# Rowwise: \n# ℹ 1,499 variables: Prog_001 <dbl>, Prog_002 <dbl>, Prog_003 <dbl>,\n# Prog_004 <dbl>, Prog_006 <dbl>, Prog_007 <dbl>, Prog_008 <dbl>,\n# Prog_009 <dbl>, Prog_010 <dbl>, Prog_011 <dbl>, Prog_012 <dbl>,\n# Prog_013 <dbl>, Prog_014 <dbl>, Prog_015 <dbl>, Prog_016 <dbl>,\n# Prog_017 <dbl>, Prog_018 <dbl>, Prog_019 <dbl>, Prog_020 <dbl>,\n# Prog_021 <dbl>, Prog_022 <dbl>, Prog_023 <dbl>, Prog_024 <dbl>,\n# Prog_025 <dbl>, Prog_026 <dbl>, Prog_027 <dbl>, Prog_028 <dbl>, …\n\n\nNotice that we have summed across all the columns.\n❓ What do you conclude?\n\n\nWe might also examine the genes which are least expressed.\n🎬 Find ten least expressed genes:\n\nrowSums(prog_hspc) |> sort() |> head(10)\n\nENSMUSG00000041046 ENSMUSG00000012428 ENSMUSG00000022225 ENSMUSG00000027863 \n 30.70322 35.35796 50.45975 61.27461 \nENSMUSG00000019359 ENSMUSG00000020701 ENSMUSG00000030772 ENSMUSG00000027376 \n 68.90961 77.95594 84.11234 97.69333 \nENSMUSG00000023132 ENSMUSG00000026285 \n 120.43065 126.95425 \n\n\n❓ What do you conclude?", + "objectID": "transcriptomics/week-5/study_before_workshop.html#pca-4", + "href": "transcriptomics/week-5/study_before_workshop.html#pca-4", + "title": "Independent Study to prepare for workshop", + "section": "PCA", + "text": "PCA\nWe have done PCA after differential expression, but often PCA might is one of the first exploratory steps because it gives you an idea whether you expect general patterns in gene expression that distinguish groups.", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#find-the-genes-that-are-expressed-in-only-one-cell-type", - "href": "transcriptomics/week-4/workshop.html#find-the-genes-that-are-expressed-in-only-one-cell-type", - "title": "Workshop", - "section": "Find the genes that are expressed in only one cell type", - "text": "Find the genes that are expressed in only one cell type\nTo find the genes that are expressed in only one cell type, we can use the same approach as above but only sum the columns for one cell type.\n🎬 Find the genes that are 0 in every column for the HSPC cells:\n\nprog_hspc |> \n rowwise() |> \n filter(sum(c_across(HSPC_001:HSPC_852)) == 0)\n\n# A tibble: 0 × 1,499\n# Rowwise: \n# ℹ 1,499 variables: Prog_001 <dbl>, Prog_002 <dbl>, Prog_003 <dbl>,\n# Prog_004 <dbl>, Prog_006 <dbl>, Prog_007 <dbl>, Prog_008 <dbl>,\n# Prog_009 <dbl>, Prog_010 <dbl>, Prog_011 <dbl>, Prog_012 <dbl>,\n# Prog_013 <dbl>, Prog_014 <dbl>, Prog_015 <dbl>, Prog_016 <dbl>,\n# Prog_017 <dbl>, Prog_018 <dbl>, Prog_019 <dbl>, Prog_020 <dbl>,\n# Prog_021 <dbl>, Prog_022 <dbl>, Prog_023 <dbl>, Prog_024 <dbl>,\n# Prog_025 <dbl>, Prog_026 <dbl>, Prog_027 <dbl>, Prog_028 <dbl>, …\n\n\nWe have summed across the HSPC cells only. Note that if we knew there were some rows that were all zero across both cell types, we would need to add |> filter(sum(c_across(Prog_001:Prog_852)) != 0)\nmeaning zero in all the HSPC but not zero in all the Prog\n🎬 Now you find the genes that are 0 in every column for the Prog cells:\n\n\n# A tibble: 0 × 1,499\n# Rowwise: \n# ℹ 1,499 variables: Prog_001 <dbl>, Prog_002 <dbl>, Prog_003 <dbl>,\n# Prog_004 <dbl>, Prog_006 <dbl>, Prog_007 <dbl>, Prog_008 <dbl>,\n# Prog_009 <dbl>, Prog_010 <dbl>, Prog_011 <dbl>, Prog_012 <dbl>,\n# Prog_013 <dbl>, Prog_014 <dbl>, Prog_015 <dbl>, Prog_016 <dbl>,\n# Prog_017 <dbl>, Prog_018 <dbl>, Prog_019 <dbl>, Prog_020 <dbl>,\n# Prog_021 <dbl>, Prog_022 <dbl>, Prog_023 <dbl>, Prog_024 <dbl>,\n# Prog_025 <dbl>, Prog_026 <dbl>, Prog_027 <dbl>, Prog_028 <dbl>, …\n\n\n❓ What do you conclude?", + "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-1", + "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-1", + "title": "Independent Study to prepare for workshop", + "section": "Volcano plots", + "text": "Volcano plots\n\n\nVolcano plots often used to visualise the results of differential expression analysis\nThey are just a scatter of the adjusted p value against the fold change….\nalmost - the we actually plot the negative log of the adjusted p value against the log fold change", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#differential-expression-analysis-1", - "href": "transcriptomics/week-4/workshop.html#differential-expression-analysis-1", - "title": "Workshop", - "section": "Differential expression analysis", - "text": "Differential expression analysis\nLike DESeq2, scran uses a statistical model to calculate the significance of the difference between the treatments and needs metadata to define the treatments.\n🎬 Load the scran package:\nThe meta data needed for the frog data was information about which columns were in which treatment group and which sibling group and we had that information in a file. Similarly, here we need information on which columns are from which cell type. Instead of having this is a file, we will create a vector that indicates which column belongs to which cell type.\n🎬 Create a vector that indicates which column belongs to which cell type:\n\ncell_type <- rep(c(\"prog\",\"hspc\"), \n times = c(length(prog) - 1,\n length(hspc) - 1))\n\nThe number of times each cell type is repeated is the number of columns in that cell type minus 1. This is because we have removed the column with the gene ids. Do check that the length of the cell_type vector is the same as the number of columns in the prog_hspc dataframe.\n🎬 Run the differential expression analysis:\n\nres_prog_hspc <- findMarkers(prog_hspc, \n cell_type)\n\nfindMarkers() is the function that runs the differential expression analysis. The first argument is the dataframe containing the data. The second argument is the vector indicating which columns are in which cell type. It gives us two dataframes of the results - rather unnecessarily. One is the results with fold changes that are Prog/HSPC and the other is the results with fold changes that are HSPC/Prog. These have the same magnitude, just a different sign\nThe dataframe res_prog_hspc$prog is log prog - log hspc (i.e.,Prog/HSPC). This means - Positive fold change: prog is higher than hspc - Negative fold change: hspc is higher than prog\nThe dataframe res_prog_hspc$hspc is log hspc - log prog (i.e., HSPC/Prog). . This means - Positive fold change: hspc is higher than prog - Negative fold change: prog is higher than hspc\n\n\n\nThe res_prog_hspc$prog dataframe\n\n\n\n\n\n\n\n\n\n\n\nTop\np.value\nFDR\nsummary.logFC\nlogFC.hspc\nensembl_gene_id\n\n\n\nENSMUSG00000028639\n1\n0\n0\n1.596910\n1.596910\nENSMUSG00000028639\n\n\nENSMUSG00000024053\n2\n0\n0\n3.035165\n3.035165\nENSMUSG00000024053\n\n\nENSMUSG00000041329\n3\n0\n0\n3.261056\n3.261056\nENSMUSG00000041329\n\n\nENSMUSG00000030336\n4\n0\n0\n-2.146491\n-2.146491\nENSMUSG00000030336\n\n\nENSMUSG00000016494\n5\n0\n0\n-3.056730\n-3.056730\nENSMUSG00000016494\n\n\nENSMUSG00000002808\n6\n0\n0\n3.000810\n3.000810\nENSMUSG00000002808\n\n\n\n\n\n\n\n\nThe res_prog_hspc$hspc dataframe. Notice the sign of the fold change is the other way\n\n\n\n\n\n\n\n\n\n\n\nTop\np.value\nFDR\nsummary.logFC\nlogFC.prog\nensembl_gene_id\n\n\n\nENSMUSG00000028639\n1\n0\n0\n-1.596910\n-1.596910\nENSMUSG00000028639\n\n\nENSMUSG00000024053\n2\n0\n0\n-3.035165\n-3.035165\nENSMUSG00000024053\n\n\nENSMUSG00000041329\n3\n0\n0\n-3.261056\n-3.261056\nENSMUSG00000041329\n\n\nENSMUSG00000030336\n4\n0\n0\n2.146491\n2.146491\nENSMUSG00000030336\n\n\nENSMUSG00000016494\n5\n0\n0\n3.056730\n3.056730\nENSMUSG00000016494\n\n\nENSMUSG00000002808\n6\n0\n0\n-3.000810\n-3.000810\nENSMUSG00000002808", + "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-2", + "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-2", + "title": "Independent Study to prepare for workshop", + "section": "Volcano plots", + "text": "Volcano plots\n\n\nThis is because small probabilities are important, large ones are not so the axis is counter intuitive because Small p-values (i.e., significant values) are at the bottom of the axis)\nAnd since p-values range from 1 to very tiny the important points are all squashed at the bottom of the axis\n\n\n\nVolcano plot padj against fold change", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#add-gene-information-from-ensembl-using-biomart", - "href": "transcriptomics/week-4/workshop.html#add-gene-information-from-ensembl-using-biomart", - "title": "Workshop", - "section": "Add gene information from Ensembl using biomaRt", - "text": "Add gene information from Ensembl using biomaRt\nEnsembl (Martin et al. 2023; Birney et al. 2004)is a bioinformatics project to organise all the biological information around the sequences of large genomes. The are a large number of databases but BioMart (Smedley et al. 2009) provides a consistent interface to the material. There are web-based tools to use these but the R package biomaRt (biomaRt?) gives you programmatic access making it easier to integrate information into R dataframes\n🎬 Load the biomaRt (biomaRt?) package:\n\nlibrary(biomaRt)\n\n🎬 Connect to the mouse database and see the first 20 bits of information we can retrieve:\n\n# Connect to the mouse database\nensembl <- useMart(biomart = \"ensembl\", \n dataset = \"mmusculus_gene_ensembl\")\n\n# See what information we can retrieve\nlistAttributes(mart = ensembl) |> head(20)\n\n name description\n1 ensembl_gene_id Gene stable ID\n2 ensembl_gene_id_version Gene stable ID version\n3 ensembl_transcript_id Transcript stable ID\n4 ensembl_transcript_id_version Transcript stable ID version\n5 ensembl_peptide_id Protein stable ID\n6 ensembl_peptide_id_version Protein stable ID version\n7 ensembl_exon_id Exon stable ID\n8 description Gene description\n9 chromosome_name Chromosome/scaffold name\n10 start_position Gene start (bp)\n11 end_position Gene end (bp)\n12 strand Strand\n13 band Karyotype band\n14 transcript_start Transcript start (bp)\n15 transcript_end Transcript end (bp)\n16 transcription_start_site Transcription start site (TSS)\n17 transcript_length Transcript length (including UTRs and CDS)\n18 transcript_tsl Transcript support level (TSL)\n19 transcript_gencode_basic GENCODE basic annotation\n20 transcript_appris APPRIS annotation\n page\n1 feature_page\n2 feature_page\n3 feature_page\n4 feature_page\n5 feature_page\n6 feature_page\n7 feature_page\n8 feature_page\n9 feature_page\n10 feature_page\n11 feature_page\n12 feature_page\n13 feature_page\n14 feature_page\n15 feature_page\n16 feature_page\n17 feature_page\n18 feature_page\n19 feature_page\n20 feature_page\n\n\nThere are many (2,985!) possible bits of information (attributes) that can be obtained. You can replace head(20) with View() to see them all.\nWe use the getBM() function to retrieve information from the database. The filters argument is used to specified what kind of identifier we are supplying to retrieve information. The attributes argument is used to select the information we want to retrieve. The values argument is used to specify the identifiers. The mart argument is used to specify the connection we created.\n🎬 Get the gene information:\n\ngene_info <- getBM(filters = \"ensembl_gene_id\",\n attributes = c(\"ensembl_gene_id\",\n \"external_gene_name\",\n \"description\"),\n values = prog_hspc_results$ensembl_gene_id,\n mart = ensembl)\n\nError in eval(expr, envir, enclos): object 'prog_hspc_results' not found\n\n\nWe are getting the gene name and and a description. We also need to get the id because we will use that to merge the gene_info dataframe with the prog_hspc_results dataframe. Notice the dataframe returned only has 279 rows - one of the ids does not have information.\n🎬 We can find which is missing with:\n\n# prog_hspc_results |> select(ensembl_gene_id) |> \n# filter(!ensembl_gene_id %in% gene_info$ensembl_gene_id)\n\nOh, conflicted has flagged a conflict for us.\n🎬 Take the appropriate action to resolve the conflict:\n❓ What is the id which is missing information?\n\n\nWe might want to look that up - but let’s worry about it later if it turns out to be something important.\n🎬 Merge the gene information with the results:\n\nprog_hspc_results <- prog_hspc_results |> \n left_join(gene_info, by = \"ensembl_gene_id\")\n\nError in eval(expr, envir, enclos): object 'prog_hspc_results' not found\n\n\nI recommend viewing the dataframe to see the new columns. We now have dataframe with all the info we need, normalised counts, log2 normalised counts, statistical comparisons with fold changes and p values, information about the gene other than just the id\n🎬 Write the results to file:\n\ndata.frame(res_prog_hspc$prog, \n ensembl_gene_id = row.names(res_prog_hspc$prog)) |> \n write_csv(\"results/prog_hspc_results.csv\")", + "objectID": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-3", + "href": "transcriptomics/week-5/study_before_workshop.html#volcano-plots-3", + "title": "Independent Study to prepare for workshop", + "section": "Volcano plots", + "text": "Volcano plots\n\n\nPlotting the negative log of the adjusted p-value means that the values are spread out, and most significant are at the top of the axis\n\n\n\nVolcano plot -log(adjusted p) against fold change", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#footnotes", - "href": "transcriptomics/week-4/workshop.html#footnotes", - "title": "Workshop", - "section": "Footnotes", - "text": "Footnotes\n\nBioconductor is a project that develops and supports R packages for bioinformatics.↩︎", + "objectID": "transcriptomics/week-5/study_before_workshop.html#visualisations", + "href": "transcriptomics/week-5/study_before_workshop.html#visualisations", + "title": "Independent Study to prepare for workshop", + "section": "Visualisations", + "text": "Visualisations\n\nShould be done on normalised data so meaningful comparisons can be made\nThe 🐭 stem cell data were already log2normalised\nThe other datasets were normalised by the DE method and we saved the values to the results files. We will log transform them in the workshop", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#overview", - "href": "transcriptomics/week-4/study_before_workshop.html#overview", + "objectID": "transcriptomics/week-5/study_before_workshop.html#packages", + "href": "transcriptomics/week-5/study_before_workshop.html#packages", "title": "Independent Study to prepare for workshop", - "section": "Overview", - "text": "Overview\nIn these slides we will:\n\n\nCheck where you are\n\nlearn some concepts in differential expression\n\nlog2 fold changes\nMultiple correction\nnormalisation\nstatistical model\n\n\nFind out what packages to install before the workshop", + "section": "Packages", + "text": "Packages\nThis packages is on the University computers which you can access on campus or remotely using the VDS\nIf you want to use your own machine you will need to install the package. ::: {style=“font-size: 60%;”}\nInstall ggrepel from CRAN in the the normal way:\n\ninstall.packages(\"ggrepel\")\n\nThis package allows you to label points on a plot without them overlapping.", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", + "Week 5: Visualising and Interpreting", "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#what-we-did-in-transcriptomics-1-hello-data", - "href": "transcriptomics/week-4/study_before_workshop.html#what-we-did-in-transcriptomics-1-hello-data", + "objectID": "transcriptomics/week-5/study_before_workshop.html#workshops-1", + "href": "transcriptomics/week-5/study_before_workshop.html#workshops-1", "title": "Independent Study to prepare for workshop", - "section": "What we did in Transcriptomics 1: 👋 Hello data!", - "text": "What we did in Transcriptomics 1: 👋 Hello data!\n\n\n\nDiscovered how many rows and columns we had in our datasets and what these were.\nExamined the distribution\n\nof values across the whole dataset\nof values across the samples/cells (i.e., averaged across genes) to see variation between samples/cells\nof values across the genes (i.e., averaged across samples/cells) to see variation between genes\n\n\nSaved files of filtered or summarised data.", + "section": "Workshops", + "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across rows and columns to check things are as we expect and detect rows/columns that need to be removed\nTranscriptomics 2: Statistical Analysis. Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.\nTranscriptomics 3: Visualising. Principal Component Analysis (PCA) volcano plots to visualise the results of the", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", + "Week 5: Visualising and Interpreting", "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#where-should-you-be-1", - "href": "transcriptomics/week-4/study_before_workshop.html#where-should-you-be-1", + "objectID": "transcriptomics/week-5/study_before_workshop.html#references", + "href": "transcriptomics/week-5/study_before_workshop.html#references", "title": "Independent Study to prepare for workshop", - "section": "Where should you be?", - "text": "Where should you be?\nAfter the Transcriptomics 1: 👋 Hello data! Workshop including:\n\n🤗 Look after future you! and\nthe Independent Study to consolidate, you should have:", + "section": "References", + "text": "References\n\n\n\n🔗 About Transcriptomics 3: Visualising\n\n\n\n\nRand, Emma. 2021. Data Science Strand of BIO00058M. https://doi.org/10.5281/zenodo.5527705.", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", + "Week 5: Visualising and Interpreting", "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#frogs", - "href": "transcriptomics/week-4/study_before_workshop.html#frogs", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Frogs", - "text": "🐸 Frogs\n\n\nAn RStudio Project called frogs-88H which contains:\n\nRaw data (S14, S20 and S30)\nProcessed data (s30_filtered.csv, s30_summary_gene.csv, s30_summary_gene_filtered.csv, s30_summary_samp.csv and equivalents for S14 OR S20)\nTwo scripts called cont-fgf-s30.R and cont-fgf-s20.R OR cont-fgf-s14.R\n\n\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "objectID": "core/week-2/overview.html", + "href": "core/week-2/overview.html", + "title": "Overview", + "section": "", + "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\nwrite cool 😎 code not 😩 ugly code\nexplain the value of code which expresses the structure of the problem/solution.\nuse some useful shortcuts to help write cool 😎 code\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n📖 Read Workflow in RStudio\n\nWorkshop\nConsolidate", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "About" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#mice", - "href": "transcriptomics/week-4/study_before_workshop.html#mice", + "objectID": "core/week-2/study_before_workshop.html", + "href": "core/week-2/study_before_workshop.html", "title": "Independent Study to prepare for workshop", - "section": "🐭 Mice", - "text": "🐭 Mice\n\nAn RStudio Project called mice-88H which contains\n\nRaw data (hspc, prog, lthsc)\nProcessed data (hspc_summary_gene.csv, hspc_summary_samp.csv, prog_summary_gene.csv, prog_summary_samp.csv)\n\n\nOne script called hspc-prog.R\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "section": "", + "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and file systems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\n📖 Read Workflow in RStudio. You may find it helpful to remind yourself about RStudio Projects. In previous years, you have submitted an “RStudio Project” as part of your BABS work. In this module, you will submit “Supporting Information” for your Project Report. The Supporting Information is a documented and organised collection of all the digital parts of your research project. This includes data (or instructions for accessing data), code and/or non-coded processing, instructions for use, computational requirements and outputs. The Supporting Information could be a single RStudio Project (like you have done previously but with better documentation) or a folder that includes an RStudio Project and other material/scripts.", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", + "Core Supporting Info", + "Week 2: Supporting Information 1", "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#section", - "href": "transcriptomics/week-4/study_before_workshop.html#section", + "objectID": "core/week-2-old/overview.html", + "href": "core/week-2-old/overview.html", + "title": "Overview", + "section": "", + "text": "This week we will consider File types, workflow tips and other tools. The independent study reiterates the value of RStudio projects and shows you how you create them with usethis. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically. In the workshop we will examine some common biological data formats and discover some awesome short cuts to help you write cool 😎 code. You will also get a brief introduction to the command line and Google Colab.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain why RStudio are useful/essential and be able to use the usethis package\nwrite cool 😎 code not 😩 ugly code\nexplain the value of code which expresses the structure of the problem/solution.\ndescribe some common file types for biological data\nuse some useful shortcuts to help write cool 😎 code\nknow what the command line is and how to use it for simple tasks\nuse Google colab to run code\nrecognise some of the differences between R and Python\n\n\n\nInstructions\n\nPrepare 20 mins reading on RStudio Projects revisited, formatting code and coding algorithmically\nWorkshop\n\n💬 Types of biological data files\n🪄 Workflow tips and shortcuts\n💻 The command line\n💻 Google colab\n💻 Python\n\nConsolidate\n\n💻 not sure yet :)" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#overview", + "href": "core/week-2-old/study_before_workshop.html#overview", + "title": "Independent Study to prepare for workshop", + "section": "Overview", + "text": "Overview\n\nRStudio Projects revisited\n\nusing usethis package\nAdding a README\n\n\nFormatting code\nCode algorithmically / algebraically." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#reproducibility-is-a-continuum", + "href": "core/week-2-old/study_before_workshop.html#reproducibility-is-a-continuum", + "title": "Independent Study to prepare for workshop", + "section": "Reproducibility is a continuum", + "text": "Reproducibility is a continuum\nSome is better than none!\n\nOrganise your project\n\nScript everything.\n\nFormat code and follow a consistent style.\n\nCode algorithmically\nModularise your code: organise into sections and scripts\nDocument your project - commenting, READMEs\nUse literate programming e.g., R Markdown or Quarto\n\n\n\nMore advanced: Version control, continuous integration, environments, containers" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects", + "href": "core/week-2-old/study_before_workshop.html#rstudio-projects", + "title": "Independent Study to prepare for workshop", + "section": "RStudio Projects", + "text": "RStudio Projects\n\n\nWe used RStudio Projects in stage one but they are so useful, it is worth covering them again in case you are not yet using them.\nWe will also cover the usethisworkflow to create an RStudio Project.\nRStudio Projects make it easy to manage working directories and paths because they set the working directory to the RStudio Projects directory automatically." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-1", + "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-1", + "title": "Independent Study to prepare for workshop", + "section": "RStudio Projects", + "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nThe project directory is the folder at the top 1\n\nThanks to Mine Çetinkaya-Rundel who helped me work out how to highlight a line https://gist.github.com/mine-cetinkaya-rundel/3af3415eab70a65be3791c3dcff6e2e3. Note to futureself: the engine: knitr matters." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-2", + "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-2", + "title": "Independent Study to prepare for workshop", + "section": "RStudio Projects", + "text": "RStudio Projects\n\n\n\n-- stem_cell_rna\n |__stem_cell_rna.Rproj \n |__raw_ data/ \n |__2019-03-21_donor_1.csv\n |__README. md\n |__R/\n |__01_data_processing.R\n |__02_exploratory.R\n |__functions/\n |__theme_volcano.R\n |__normalise.R\n\n\nthe .RProj file is directly under the project folder. Its presence is what makes the folder an RStudio Project" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-3", + "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-3", + "title": "Independent Study to prepare for workshop", + "section": "RStudio Projects", + "text": "RStudio Projects\n\n\nWhen you open an RStudio Project, the working directory is set to the Project directory (i.e., the location of the .Rproj file).\nWhen you use an RStudio Project you do not need to use setwd()\nWhen someone, including future you, opens the project on another machine, all the paths just work." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#rstudio-projects-4", + "href": "core/week-2-old/study_before_workshop.html#rstudio-projects-4", + "title": "Independent Study to prepare for workshop", + "section": "RStudio Projects", + "text": "RStudio Projects\n\nJenny BryanIn the words of Jenny Bryan:\n\n“If the first line of your R script is setwd(”C:/Users/jenny/path/that/only/I/have”) I will come into your office and SET YOUR COMPUTER ON FIRE”" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#creating-an-rstudio-project", + "href": "core/week-2-old/study_before_workshop.html#creating-an-rstudio-project", + "title": "Independent Study to prepare for workshop", + "section": "Creating an RStudio Project", + "text": "Creating an RStudio Project\nThere are two ways to create an RStudio Project.\n\nUsing one of the two menus\nUsing the usethis package" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-a-menu", + "href": "core/week-2-old/study_before_workshop.html#using-a-menu", + "title": "Independent Study to prepare for workshop", + "section": "Using a menu", + "text": "Using a menu\nThere are two menus:\n\nTop left, File menu\nTop Right, drop-down indicated by the .RProj icon\n\nThey both do the same thing.\nIn both cases you choose: New Project | New Directory | New Project\n\nMake sure you “Browse” to the folder you want to create the project." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-1", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-1", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nI occasionally use the menu but I mostly use the usethis package.\n\n🎬 Go to RStudio and check your working directory:\n\ngetwd()\n\n\"C:/Users/er13/Desktop\"\n\n\n❔ Is your working directory a good place to create a Project folder?" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-2", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-2", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nIf this is a good place to create a Project directory then…\n🎬 Create a project with:\n\nusethis::create_project(\"bananas\")" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-3", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-3", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nOtherwise\nIf you want the project directory elsewhere, you will need to give the relative path, e.g.\n\nusethis::create_project(\"../Documents/bananas\")" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-4", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-4", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nThe output will look like this and a new RStudio session will start.\n> usethis::create_project(\"bananas\")\n√ Creating 'bananas/'\n√ Setting active project to 'C:/Users/er13/Desktop/bananas'\n√ Creating 'R/'\n√ Writing 'bananas.Rproj'\n√ Adding '.Rproj.user' to '.gitignore'\n√ Opening 'C:/Users/er13/Desktop/bananas/' in new RStudio session\n√ Setting active project to '<no active project>'" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-5", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-5", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nWhen you create a new RStudio Project with usethis:\n\n\nA folder called bananas/ is created\nRStudio starts a new session in bananas/ i.e., your working directory is now bananas/\n\nA folder called R/ is created\nA file called bananas.Rproj is created\nA file called .gitignore is created\nA hidden directory called .Rproj.user is created" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-6", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-6", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\n\n\nthe .Rproj file is what makes the directory an RStudio Project\nthe Rproj.user directory is where project-specific temporary files are stored. You don’t need to mess with it.\nthe .gitignore is used for version controlled projects. If not using git, you can ignore it." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#opening-and-closing", + "href": "core/week-2-old/study_before_workshop.html#opening-and-closing", + "title": "Independent Study to prepare for workshop", + "section": "Opening and closing", + "text": "Opening and closing\nYou can close an RStudio Project with ONE of:\n\nFile | Close Project\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\n\nYou can open an RStudio Project with ONE of:\n\nFile | Open Project or File | Recent Projects\n\nUsing the drop-down option on the far right of the tool bar where you see the Project name\n\nDouble-clicking an .Rproj file from your file explorer/finder\n\nWhen you open project, a new R session starts." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-7", + "href": "core/week-2-old/study_before_workshop.html#using-the-usethis-package-7", + "title": "Independent Study to prepare for workshop", + "section": "Using the usethis package", + "text": "Using the usethis package\nOnce the RStudio project has been created, usethis helps you follow good practice.\n\n🎬 We can add a README with:\n\nusethis::use_readme_md()\n\n\n\nThis creates a file called README.md, with a little default text, in the Project directory and opens it for editing.\n\n\nmd stands for markdown, it is a extremely widely used text formatting language which is readable as plain text. If you have ever used asterisks to make text bold or italic, you have used markdown." + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-1", + "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-1", + "title": "Independent Study to prepare for workshop", + "section": "Code formatting and style", + "text": "Code formatting and style\n\n“Good coding style is like correct punctuation: you can manage without it, butitsuremakesthingseasiertoread.”\n\nThe tidyverse style guide" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-2", + "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-2", + "title": "Independent Study to prepare for workshop", + "section": "Code formatting and style", + "text": "Code formatting and style\nWe have all written code which is hard to read!\nWe all improve over time.\n\n\n\nThe only way to write good code is to write tons of shitty code first. Feeling shame about bad code stops you from getting to good code— Hadley Wickham (@hadleywickham) April 17, 2015" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-3", + "href": "core/week-2-old/study_before_workshop.html#code-formatting-and-style-3", + "title": "Independent Study to prepare for workshop", + "section": "Code formatting and style", + "text": "Code formatting and style\nSome keys points:\n\nbe consistent, emulate experienced coders\n\nuse snake_case for variable names (not CamelCase, dot.case)\n\nuse <- not = for assignment\n\nuse spacing around most operators and after commas\n\nuse indentation\n\navoid long lines, break up code blocks with new lines\n\nuse \" for quoting text (not ') unless the text contains double quotes" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#ugly-code", + "href": "core/week-2-old/study_before_workshop.html#ugly-code", + "title": "Independent Study to prepare for workshop", + "section": "😩 Ugly code 😩", + "text": "😩 Ugly code 😩\n\ndata<-read_csv('../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv',skip=2)\nlibrary(janitor);sol<-clean_names(data)\ndata=data|>filter(str_detect(description,\"OS=Homo sapiens\"))|>filter(x1pep=='x')\ndata=data|>\nmutate(g=str_extract(description,\n\"GN=[^\\\\s]+\")|>str_replace(\"GN=\",''))\ndata<-data|>mutate(id=str_extract(accession,\"1::[^;]+\")|>str_replace(\"1::\",\"\"))" + }, + { + "objectID": "core/week-2-old/study_before_workshop.html#ugly-code-1", + "href": "core/week-2-old/study_before_workshop.html#ugly-code-1", "title": "Independent Study to prepare for workshop", - "section": "🍂", - "text": "🍂\nEither of the other examples.", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😩 Ugly code 😩", + "text": "😩 Ugly code 😩\n\nno spacing or indentation\ninconsistent splitting of code blocks over lines\ninconsistent use of quote characters\nno comments\nvariable names convey no meaning\nuse of = for assignment and inconsistently\nmultiple commands on a line\nlibrary statement in the middle of the analysis" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#if-you-do-not-have-those", - "href": "transcriptomics/week-4/study_before_workshop.html#if-you-do-not-have-those", + "objectID": "core/week-2-old/study_before_workshop.html#cool-code", + "href": "core/week-2-old/study_before_workshop.html#cool-code", "title": "Independent Study to prepare for workshop", - "section": "If you do not have those", - "text": "If you do not have those\nGo through:\n\nTranscriptomics 1: 👋 Hello data! Workshop including:\n🤗 Look after future you! and\nthe Independent Study to consolidate", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😎 Cool code 😎", + "text": "😎 Cool code 😎\n\n# Packages ----------------------------------------------------------------\nlibrary(tidyverse)\nlibrary(janitor)\n\n# Import ------------------------------------------------------------------\n\n# define file name\nfile <- \"../data-raw/Y101_Y102_Y201_Y202_Y101-5.csv\"\n\n# import: column headers and data are from row 3\nsolu_protein <- read_csv(file, skip = 2) |>\n janitor::clean_names()\n\n# Tidy data ----------------------------------------------------------------\n\n# filter out the bovine proteins and those proteins \n# identified from fewer than 2 peptides\nsolu_protein <- solu_protein |>\n filter(str_detect(description, \"OS=Homo sapiens\")) |>\n filter(x1pep == \"x\")\n\n# Extract the genename from description column to a column\n# of its own\nsolu_protein <- solu_protein |>\n mutate(genename = str_extract(description,\"GN=[^\\\\s]+\") |>\n str_replace(\"GN=\", \"\"))\n\n# Extract the top protein identifier from accession column (first\n# Uniprot ID after \"1::\") to a column of its own\nsolu_protein <- solu_protein |>\n mutate(protid = str_extract(accession, \"1::[^;]+\") |>\n str_replace(\"1::\", \"\"))" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#differential-expression-1", - "href": "transcriptomics/week-4/study_before_workshop.html#differential-expression-1", + "objectID": "core/week-2-old/study_before_workshop.html#cool-code-1", + "href": "core/week-2-old/study_before_workshop.html#cool-code-1", "title": "Independent Study to prepare for workshop", - "section": "Differential expression", - "text": "Differential expression\n\n\nThe goal of differential expression is to test whether there is a significant difference in gene expression between groups.\nA large number of computational methods have been developed for differential expression analysis\nR is the leading language for differential expression analysis", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😎 Cool code 😎", + "text": "😎 Cool code 😎\n\nlibrary() calls collected\nUses code sections to make it easier to navigate\nUses white space and proper indentation\nCommented\nUses more informative name for the dataframe" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#differential-expression-2", - "href": "transcriptomics/week-4/study_before_workshop.html#differential-expression-2", + "objectID": "core/week-2-old/study_before_workshop.html#code-algorithmically-1", + "href": "core/week-2-old/study_before_workshop.html#code-algorithmically-1", "title": "Independent Study to prepare for workshop", - "section": "Differential expression", - "text": "Differential expression\n\n\nthe statistical concepts are very similar to those you have already encountered in stages 1 and 2\nyou are essentially doing paired- or independent-samples tests\nbut you are doing a lot of them! One for every gene\ndata need normalisation before comparison", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "Code ‘algorithmically’", + "text": "Code ‘algorithmically’\n\n\nWrite code which expresses the structure of the problem/solution.\nAvoid hard coding numbers if at all possible - declare variables instead\nDeclare frequently used values as variables at the start e.g., colour schemes, figure saving settings" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#statistical-concepts", - "href": "transcriptomics/week-4/study_before_workshop.html#statistical-concepts", + "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.", + "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.", "title": "Independent Study to prepare for workshop", - "section": "Statistical concepts", - "text": "Statistical concepts\nLike familiar tests:\n\n\nthe type of test (the function) you use depends on the type of data you have and the type of assumptions you want to make\nthe tests work by comparing the variation between groups to the variation within groups.\nyou will get: the difference between groups, a test statistic, and a p-value\nyou also get an adjusted p-value which is the ‘correction’ for multiple testing", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😩 Hard coding numbers.", + "text": "😩 Hard coding numbers.\n\n\nSuppose we want to calculate the sums of squares, \\(SS(x)\\), for the number of eggs in five nests.\nThe formula is given by: \\(\\sum (x_i- \\bar{x})^2\\)\nWe could calculate the mean and copy it, and the individual numbers into the formula" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#the-difference-between-groups", - "href": "transcriptomics/week-4/study_before_workshop.html#the-difference-between-groups", + "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.-1", + "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers.-1", "title": "Independent Study to prepare for workshop", - "section": "The difference between groups", - "text": "The difference between groups\n\n\nThe difference between groups is given as the log2 fold change in expression between groups\nA fold change is the expression in one group divided by the expression in the other group\nwe use fold changes because the absolute expression values may not be accurate and relative changes are what matters\nwe use log2 fold changes because they are symmetrical around 0", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😩 Hard coding numbers.", + "text": "😩 Hard coding numbers.\n\n# mean number of eggs per nest\nsum(3, 5, 6, 7, 8) / 5\n\n[1] 5.8\n\n# ss(x) of number of eggs\n(3 - 5.8)^2 + (5 - 5.8)^2 + (6 - 5.8)^2 + (7 - 5.8)^2 + (8 - 5.8)^2\n\n[1] 14.8\n\n\nI am coding the calculation of the mean rather using the mean() function only to explain what ‘coding algorithmically’ means using a simple example." }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#log2-fold-change", - "href": "transcriptomics/week-4/study_before_workshop.html#log2-fold-change", + "objectID": "core/week-2-old/study_before_workshop.html#hard-coding-numbers", + "href": "core/week-2-old/study_before_workshop.html#hard-coding-numbers", "title": "Independent Study to prepare for workshop", - "section": "log2 fold change", - "text": "log2 fold change\n\n\nlog2 means log to the base 2\nSuppose the expression in group A is 5 and the expression in group B is 8\nA/B = 5/8 = 0.625 and B/A = 8/5 = 1.6\nIf B is greater than A the range of A/B is 0 to 1 but the range of B/A is 1 to infinity\nHowever, if we take the log2 of A/B we get -0.678 and the log2 of B/A is 0.678.", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😩 Hard coding numbers", + "text": "😩 Hard coding numbers\n\n\nif any of the sample numbers must be altered, all the code needs changing\nit is hard to tell that the output of the first line is a mean\nits hard to recognise that the numbers in the mean calculation correspond to those in the next calculation\nit is hard to tell that 5 is just the number of nests\nno way of know if numbers are the same by coincidence or they refer to the same thing" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#adjusted-p-value", - "href": "transcriptomics/week-4/study_before_workshop.html#adjusted-p-value", + "objectID": "core/week-2-old/study_before_workshop.html#better", + "href": "core/week-2-old/study_before_workshop.html#better", "title": "Independent Study to prepare for workshop", - "section": "Adjusted p-value", - "text": "Adjusted p-value\n\n\nThe p-value has to be adjusted because of the number of tested being done\nIn stage 1, we used Tukey’s HSD to adjust for multiple testing following an ANOVA\nHere the Benjamini-Hochberg procedure (Benjamini and Hochberg 1995) is used to adjust for multiple testing\nBH controls the False Discovery Rate (FDR)\nThe FDR is the proportion of false positives among the genes called significant", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😎 Better", + "text": "😎 Better\n\n# eggs each nest\neggs <- c(3, 5, 6, 7, 8)\n\n# mean eggs per nest\nmean_eggs <- sum(eggs) / length(eggs)\n\n# ss(x) of number of eggs\nsum((eggs - mean_eggs)^2)\n\n[1] 14.8" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#normalisation", - "href": "transcriptomics/week-4/study_before_workshop.html#normalisation", + "objectID": "core/week-2-old/study_before_workshop.html#better-1", + "href": "core/week-2-old/study_before_workshop.html#better-1", "title": "Independent Study to prepare for workshop", - "section": "Normalisation", - "text": "Normalisation\n\n\nNormalisation adjusts raw counts to account for factors that prevent direct comparisons\nNormalisation usually influences the experimental design as well as the analysis\nThe 🐭 mouse data have been normalised to simplify the analysis for you; the 🐸 frog data have not but the DE method will do this for you.\nNormalisation is a big topic. See Düren, Lederer, and Qin (2022); Bullard et al. (2010); Lytal, Ran, and An (2020); Abrams et al. (2019); Vallejos et al. (2017); Evans, Hardin, and Stoebel (2017)", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "😎 Better", + "text": "😎 Better\n\n\nthe commenting is similar but it is easier to follow\nif any of the sample numbers must be altered, only that number needs changing\nassigning a value you will later use to a variable with a meaningful name allows us to understand the first and second calculations\nmakes use of R’s elementwise calculation which resembles the formula (i.e., is expressed as the general rule)" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function", - "href": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function", + "objectID": "core/week-2-old/study_before_workshop.html#summary", + "href": "core/week-2-old/study_before_workshop.html#summary", "title": "Independent Study to prepare for workshop", - "section": "Type of test (the function)", - "text": "Type of test (the function)\n\n\nA large number of computational methods have been developed for differential expression analysis\nMethods vary in the types of normalisation they do, the statistical model they use, and the assumptions they make\nSome of the most well-known methods are provided by: DESeq2 (Love, Huber, and Anders 2014), edgeR (Robinson, McCarthy, and Smyth 2010; McCarthy, Chen, and Smyth 2012; Chen, Lun, and Smyth 2016), limma (Ritchie et al. 2015) and scran (Lun, McCarthy, and Marioni 2016)", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "Summary", + "text": "Summary\n\n\nUse an RStudio project for any R work (you can also incorporate other languages)\nWrite Cool code not Ugly code: space, consistency, indentation, comments, meaningful variable names\nWrite code which expresses the structure of the problem/solution.\nAvoid hard coding numbers if at all possible - declare variables instead" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-1", - "href": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-1", + "objectID": "core/week-2-old/study_before_workshop.html#references", + "href": "core/week-2-old/study_before_workshop.html#references", "title": "Independent Study to prepare for workshop", - "section": "Type of test (the function)", - "text": "Type of test (the function)\n\n\n\nDESeq2 and edgeR\n\nboth require raw counts as input\nboth assume that most genes are not DE\nboth use a negative binomial distribution1 to model the data\nuse slightly different normalisation methods: DESeq2 uses the median of ratios method; edgeR uses the trimmed mean of M values (TMM) method\n\n\n\n\nA discrete distribution for counts, similar to the Poisson distribution", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "References", + "text": "References\n\n\n\n🔗 About Core 2: File types, workflow tips and other tools\n\n\n\n\nBryan, Jennifer. 2018. “Excuse Me, Do You Have a Moment to Talk about Version Control?” Am. Stat. 72 (1): 20–27. https://doi.org/10.1080/00031305.2017.1399928.\n\n\nBryan, Jennifer, Jim Hester, Shannon Pileggi, and E. David Aja. n.d. What They Forgot to Teach You about r. https://rstats.wtf/.\n\n\nSandve, Geir Kjetil, Anton Nekrutenko, James Taylor, and Eivind Hovig. 2013. “Ten Simple Rules for Reproducible Computational Research.” PLoS Comput. Biol. 9 (10): e1003285. https://doi.org/10.1371/journal.pcbi.1003285.\n\n\nWilson, Greg, Jennifer Bryan, Karen Cranston, Justin Kitzes, Lex Nederbragt, and Tracy K Teal. 2017. “Good Enough Practices in Scientific Computing.” PLoS Comput. Biol. 13 (6): e1005510. https://doi.org/10.1371/journal.pcbi.1005510." }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-2", - "href": "transcriptomics/week-4/study_before_workshop.html#type-of-test-the-function-2", - "title": "Independent Study to prepare for workshop", - "section": "Type of test (the function)", - "text": "Type of test (the function)\n\n\nscran\n\nworks on normalized log-expression values\nperforms Welch t-tests", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "objectID": "core/week-1-old/overview.html", + "href": "core/week-1-old/overview.html", + "title": "Overview", + "section": "", + "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work. We will also examine some file types and the concept of tidy data.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\noutline some common biological data file formats\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n\nWorkshop\nConsolidate" }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#meta-data", - "href": "transcriptomics/week-4/study_before_workshop.html#meta-data", + "objectID": "core/week-1-old/study_before_workshop.html", + "href": "core/week-1-old/study_before_workshop.html", "title": "Independent Study to prepare for workshop", - "section": "Meta data", - "text": "Meta data\n\n\nDE methods require two types of data: the expression data and the meta data\nThe meta data is the information about the samples\nIt says which samples (columns) are in which group (s)\nIt is usually stored in a separate file", - "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" - ] + "section": "", + "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and filesystems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\nIn previous years you have submitted and RStudio Project as part of your BABS work. In this module you will develop this by submitting a Research Compendium. A Research Compendium is a documented collection of all the digital parts of the research project including data (or access to data), code and outputs. The Compendium might be a single Quarto/RStudio Project, (like you have done previously but with better documentation) or it might be a folder including an Quarto/RStudio Project and other material/scripts including the description of unscripted processing. You might want to remind yourself of the example RStudio Project, Y12345678.zip used in BABS 2." }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#data", - "href": "transcriptomics/week-4/study_before_workshop.html#data", - "title": "Independent Study to prepare for workshop", - "section": "🐸 Data", - "text": "🐸 Data\n\nExpression for the whole transcriptome X. laevis v10.1 genome assembly\nValues are raw counts\nThe statistical analysis method we will use DESeq2 (Love, Huber, and Anders 2014) requires raw counts and performs the normalisation itself", + "objectID": "core/week-6/overview.html", + "href": "core/week-6/overview.html", + "title": "Overview", + "section": "", + "text": "This week you will revise some essential concepts for scientific computing: file system organisation, file types, working directories and paths. The workshop will cover a rationale for working reproducibly, project oriented workflow, naming things and documenting your work. We will also examine some file types and the concept of tidy data.\n\nLearning objectives\nThe successful student will be able to:\n\nexplain the organisation of files and directories in a file systems including root, home and working directories\nexplain absolute and relative file paths\nexplain why working reproducibly is important\nknow how to use a project-oriented workflow to organise work\nbe able to give files human- and machine-readable names\noutline some common biological data file formats\n\n\n\nInstructions\n\nPrepare\n\n📖 Read Understanding file systems\n\nWorkshop\nConsolidate", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "About" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#data-1", - "href": "transcriptomics/week-4/study_before_workshop.html#data-1", + "objectID": "core/week-6/study_before_workshop.html", + "href": "core/week-6/study_before_workshop.html", "title": "Independent Study to prepare for workshop", - "section": "🐭 Data", - "text": "🐭 Data\n\nExpression for a subset of genes, the surfaceome\nValues are log2 normalised values\nThe statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values", + "section": "", + "text": "📖 Read Understanding file systems. This is an approximately 15 - 20 minute read revising file types and filesystems. It covers concepts of working directories and paths. We learned these ideas in stage 1 and you may feel completely confident with them but many students will benefit from a refresher. For BIO00070M students, this is part of the work you will also be asked to complete for BIO00052M Data Analysis in R.\nIn previous years you have submitted and RStudio Project as part of your BABS work. In this module you will develop this by submitting a Research Compendium. A Research Compendium is a documented collection of all the digital parts of the research project including data (or access to data), code and outputs. The Compendium might be a single Quarto/RStudio Project, (like you have done previously but with better documentation) or it might be a folder including an Quarto/RStudio Project and other material/scripts including the description of unscripted processing. You might want to remind yourself of the example RStudio Project, Y12345678.zip used in BABS 2.", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", + "Core Supporting Info", + "Week 6: Supporting Information 2", "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#packages-to-install-before-the-workshop", - "href": "transcriptomics/week-4/study_before_workshop.html#packages-to-install-before-the-workshop", - "title": "Independent Study to prepare for workshop", - "section": "Packages to install before the workshop", - "text": "Packages to install before the workshop\nBiocManager from CRAN in the the normal way and set the version of Bioconductor packages to install:\n\ninstall.packages(\"BiocManager\")\nBiocManager::install(version = \"3.19\")\n\nDESeq2 from Bioconductor using BiocManager:\n\nBiocManager::install(\"DESeq2\")\n\nscran from Bioconductor using BiocManager:\n\nBiocManager::install(\"scran\")", + "objectID": "core/core.html", + "href": "core/core.html", + "title": "Core: Supporting Information", + "section": "", + "text": "futureself, CC-BY-NC, by Julen Colomb\n\n\nThere are two workshops taken by everyone on BIO00088H. These are in weeks 2 and 6. These are important in understanding both how to assemble, curate and document your “Supporting Information” and how to work reproducibly so future you (Spring semester you) can painlessly work with past you and your work is demonstrably repeatable. This is essential because you will want to be able to set work aside for holidays and assessment periods and then restart easily. The Supporting Information you submit with your Report will be be assessed on its organisation, reproducibility and documentation.\nBIO00070M students do week 1 and 6 of the core workshops along with weeks 3, 4 and 5 of transcriptomics.\n\n\nWhy reproducibility matters, project-oriented workflow, organisation and naming things. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically and discover some awesome short cuts to help you write cool 😎 code.\n\n\n\nDocumenting your Supporting Information with a read me and appropriate code commenting, curating code, non-coded processing", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#workshops-1", - "href": "transcriptomics/week-4/study_before_workshop.html#workshops-1", - "title": "Independent Study to prepare for workshop", - "section": "Workshops", - "text": "Workshops\n\nTranscriptomics 1: Hello data Getting to know the data. Checking the distributions of values\nTranscriptomics 2: Statistical Analysis Identifying which genes are differentially expressed between treatments.\nTranscriptomics 3: Visualising and Interpreting. PCA, Volcano plots and heatmaps to visualise results. Interpreting the results and finding out more about genes of interest.", + "objectID": "core/core.html#week-1-core-supporting-information-1", + "href": "core/core.html#week-1-core-supporting-information-1", + "title": "Core: Supporting Information", + "section": "", + "text": "Why reproducibility matters, project-oriented workflow, organisation and naming things. You will also learn how to recognise and write cool 😎 code, not 😩 ugly code and code algorithmically and discover some awesome short cuts to help you write cool 😎 code.", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "objectID": "transcriptomics/week-4/study_before_workshop.html#references", - "href": "transcriptomics/week-4/study_before_workshop.html#references", - "title": "Independent Study to prepare for workshop", - "section": "References", - "text": "References\nPages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)\n\n\n\n🔗 About Transcriptomics 2: Statistical Analysis\n\n\n\n\nAbrams, Zachary B., Travis S. Johnson, Kun Huang, Philip R. O. Payne, and Kevin Coombes. 2019. “A Protocol to Evaluate RNA Sequencing Normalization Methods.” BMC Bioinformatics 20 (24): 679. https://doi.org/10.1186/s12859-019-3247-x.\n\n\nAllaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. “Quarto.” https://doi.org/10.5281/zenodo.5960048.\n\n\nBenjamini, Yoav, and Yosef Hochberg. 1995. “Controlling the False Discovery Rate: A Practical and Powerful Approach to Multiple Testing.” J. R. Stat. Soc. Series B Stat. Methodol. 57 (1): 289–300. http://www.jstor.org/stable/2346101.\n\n\nBullard, James H., Elizabeth Purdom, Kasper D. Hansen, and Sandrine Dudoit. 2010. “Evaluation of Statistical Methods for Normalization and Differential Expression in mRNA-Seq Experiments.” BMC Bioinformatics 11 (1): 94. https://doi.org/10.1186/1471-2105-11-94.\n\n\nChen, Yunshun, Aaron T. L. Lun, and Gordon K. Smyth. 2016. “From Reads to Genes to Pathways: Differential Expression Analysis of RNA-Seq Experiments Using Rsubread and the edgeR Quasi-Likelihood Pipeline.” https://doi.org/10.12688/f1000research.8987.2.\n\n\nDüren, Yannick, Johannes Lederer, and Li-Xuan Qin. 2022. “Depth Normalization of Small RNA Sequencing: Using Data and Biology to Select a Suitable Method.” Nucleic Acids Research 50 (10): e56. https://doi.org/10.1093/nar/gkac064.\n\n\nEvans, Ciaran, Johanna Hardin, and Daniel M Stoebel. 2017. “Selecting Between-Sample RNA-Seq Normalization Methods from the Perspective of Their Assumptions.” Briefings in Bioinformatics 19 (5): 776–92. https://doi.org/10.1093/bib/bbx008.\n\n\nLove, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.\n\n\nLun, Aaron T. L., Davis J. McCarthy, and John C. Marioni. 2016. “A Step-by-Step Workflow for Low-Level Analysis of Single-Cell RNA-Seq Data with Bioconductor.” F1000Res. 5: 2122. https://doi.org/10.12688/f1000research.9501.2.\n\n\nLytal, Nicholas, Di Ran, and Lingling An. 2020. “Normalization Methods on Single-Cell RNA-Seq Data: An Empirical Survey.” Frontiers in Genetics 11. https://www.frontiersin.org/articles/10.3389/fgene.2020.00041.\n\n\nMcCarthy, Davis J., Yunshun Chen, and Gordon K. Smyth. 2012. “Differential Expression Analysis of Multifactor RNA-Seq Experiments with Respect to Biological Variation.” Nucleic Acids Research 40 (10): 4288–97. https://doi.org/10.1093/nar/gks042.\n\n\nR Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.\n\n\nRitchie, Matthew E., Belinda Phipson, Di Wu, Yifang Hu, Charity W. Law, Wei Shi, and Gordon K. Smyth. 2015. “Limma Powers Differential Expression Analyses for RNA-Sequencing and Microarray Studies.” Nucleic Acids Research 43 (7): e47. https://doi.org/10.1093/nar/gkv007.\n\n\nRobinson, Mark D., Davis J. McCarthy, and Gordon K. Smyth. 2010. “edgeR: A Bioconductor Package for Differential Expression Analysis of Digital Gene Expression Data.” Bioinformatics 26 (1): 139–40. https://doi.org/10.1093/bioinformatics/btp616.\n\n\nVallejos, Catalina A., Davide Risso, Antonio Scialdone, Sandrine Dudoit, and John C. Marioni. 2017. “Normalizing Single-Cell RNA Sequencing Data: Challenges and Opportunities.” Nature Methods 14 (6): 565–71. https://doi.org/10.1038/nmeth.4292.\n\n\nXie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.\n\n\nZhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra.", + "objectID": "core/core.html#week-6-core-supporting-information-2", + "href": "core/core.html#week-6-core-supporting-information-2", + "title": "Core: Supporting Information", + "section": "", + "text": "Documenting your Supporting Information with a read me and appropriate code commenting, curating code, non-coded processing", "crumbs": [ - "Transcriptomics", - "Week 4: Statistical Analysis", - "Prepare!" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "objectID": "images/images.html", - "href": "images/images.html", - "title": "Image Data Analysis for Group Project", + "objectID": "core/week-6-old/workshop.html", + "href": "core/week-6-old/workshop.html", + "title": "Workshop", "section": "", - "text": "The following ImageJ workflow uses the processing steps you used in workshop 3 with one change. That change is to save the results to file rather than having the results window pop up and saving from there. Or maybe two changes: it also tells you to use meaning systematic file names that will be easy to process when importing data. The RStudio workflow shows you how to import multiple files into one dataframe with columns indicating the treatment.\n\nSave files with systematic names: ev_0.avi 343_0.avi ev_1.avi 343_1.avi ev_2.5.avi 343_2.5.avi\nOpen ImageJ\nOpen video file eg ev_2.5.avi\n\nConvert to 8-bit: Image | Type | 8-bit\nCrop to petri dish: Select then Image | Crop\nCalculate average pixel intensity: Image | Stacks | Z Project\n\nProjection type: Average Intensity to create AVG_ev_2.5.avi\n\n\n\nSubtract average from image: Process | Image Calculator\n\nImage 1: ev_2.5.avi\n\nOperation: Subtract\nImage 2: AVG_ev_2.5.avi\n\nCreate new window: checked\nOK, Yes to Process all\n\n\nInvert: Edit | Invert\nAdjust threshold: Image | Adjust | Threshold\n\nMethod: Default\nThresholding: Default, B&W\nDark background: checked\nAuto or adjust a little but make sure the larvae do not disappear at later points in the video (use the slider)\nApply\n\n\nInvert: Edit | Invert\nTrack: Plugins | wrMTrck\n\nSet minSize: 10\nSet maxSize: 400\nSet maxVelocity: 10\nSet maxAreaChange: 200\nSet bendThreshold: 1\n\nImportant: check Save Results File This is different to what you did in the workshop. It will help because the results will be saved automatically rather than to saving from the Results window that other pops up. Consequently, you will be able to save the results files with systematic names relating to their treatments and then read them into R simultaneously. That will also allow you to add information from the name of the file (which has the treatment information) to the resulting dataframes\n\n\nwrMTrck window with the settings listed above shown\n\n\nClick OK. Save to a folder for all the tracking data files. I recommend deleting the “Results of..” part of the name\n\n\nCheck that the Summary window indicates 3 tracks and that the 3 larvae are what is tracked by using the slider on the Result image\nRepeat for all videos\n\nThis is the code you need to import multiple csv files into a single dataframe and add a column with the treatment information from the file name. This is why systematic file names are good.\nIt assumes\n\nyour files are called type_concentration.txt for example: ev_0.txt 343_0.txt ev_1.txt 343_1.txt ev_2.5.txt 343_2.5.txt.\nthe .txt datafile are in a folder called track inside your working directory\nyou have installed the following packages: tidyverse, janitor\n\n\n🎬 Load the tidyverse\n\nlibrary(tidyverse)\n\n🎬 Put the file names into a vector we will iterate through\n\n# get a vector of the file names\nfiles <- list.files(path = \"track\", full.names = TRUE )\n\nWe can use map_df() from the purrr package which is one of the tidyverse gems loaded with tidyvserse. map_df() will iterate through files and read them into a dataframe with a specified import function. We are using read_table(). map_df() keeps track of the file by adding an index column called file to the resulting dataframe. Instead of this being a number (1 - 6 here) we can use set_names() to use the file names instead. The clean_names() function from the janitor package will clean up the column names (make them lower case, replace spaces with _ remove special characters etc)\n🎬 Import multiple csv files into one dataframe called tracking\n\n# import multiple data files into one dataframe called tracking\n# using map_df() from purrr package\n# clean the column names up using janitor::clean_names()\ntracking <- files |> \n set_names() |>\n map_dfr(read_table, .id = \"file\") |>\n janitor::clean_names()\n\nYou will get a warning Duplicated column names deduplicated: 'avgX' => 'avgX_1' [15] for each of the files because the csv files each have two columns called avgX. If you click on the tracking dataframe you see is contains the data from all the files.\nNow we can add columns for the type and the concentration by processing the values in the file. The values are like track/343_0.txt so we need to remove .txt and track/ and separate the remaining words into two columns.\n🎬 Process the file column to add columns for the type and the concentration\n\n# extract type and concentration from file name\n# and put them into additopnal separate columns\ntracking <- tracking |> \n mutate(file = str_remove(file, \".txt\")) |>\n mutate(file = str_remove(file, \"track/\")) |>\n extract(file, remove = \n FALSE,\n into = c(\"type\", \"conc\"), \n regex = \"([^_]{2,3})_(.+)\") \n\n[^_]{2,3} matches two or three characters that are not _ at the start of the string (^)\n.+ matches one or more characters. The extract() function puts the first match into the first column, type, and the second match into the second column, conc. The remove = FALSE argument means the original column is kept.\nYou now have a dataframe with all the tracking data which is relatively easy to summarise and plot using tools you know.\nThere is an example RStudio project containing this code here: tips. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/tips\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called tips-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded. You can now run the code in the project.", - "crumbs": [ - "Image Analysis", - "Image Data Analysis for Group Project" - ] + "text": "Use this session to ask any questions about Core 1 Organising reproducible data analyses and Core 2 File types, workflow tips and other tools in particular, or about R and RStudio in general. We will also try to answer any questions about the ’mics, Image and Structure strands.\n88H students might also review Stage 1 and 2 content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions because there is no 2FA and the resources are searchable.\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n70M students might also review 52M content to see if there are areas you might benefit from revisiting. You can access these through the VLE site but you might find it helpful to use this link without 2FA.\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto.\n\nPages made with R (R Core Team 2024), Quarto (allaire2022?), knitr (knitr?), kableExtra (Zhu 2021)" }, { - "objectID": "images/images.html#worm-tracking", - "href": "images/images.html#worm-tracking", - "title": "Image Data Analysis for Group Project", + "objectID": "core/week-6-old/workshop.html#session-overview", + "href": "core/week-6-old/workshop.html#session-overview", + "title": "Workshop", "section": "", - "text": "The following ImageJ workflow uses the processing steps you used in workshop 3 with one change. That change is to save the results to file rather than having the results window pop up and saving from there. Or maybe two changes: it also tells you to use meaning systematic file names that will be easy to process when importing data. The RStudio workflow shows you how to import multiple files into one dataframe with columns indicating the treatment.\n\nSave files with systematic names: ev_0.avi 343_0.avi ev_1.avi 343_1.avi ev_2.5.avi 343_2.5.avi\nOpen ImageJ\nOpen video file eg ev_2.5.avi\n\nConvert to 8-bit: Image | Type | 8-bit\nCrop to petri dish: Select then Image | Crop\nCalculate average pixel intensity: Image | Stacks | Z Project\n\nProjection type: Average Intensity to create AVG_ev_2.5.avi\n\n\n\nSubtract average from image: Process | Image Calculator\n\nImage 1: ev_2.5.avi\n\nOperation: Subtract\nImage 2: AVG_ev_2.5.avi\n\nCreate new window: checked\nOK, Yes to Process all\n\n\nInvert: Edit | Invert\nAdjust threshold: Image | Adjust | Threshold\n\nMethod: Default\nThresholding: Default, B&W\nDark background: checked\nAuto or adjust a little but make sure the larvae do not disappear at later points in the video (use the slider)\nApply\n\n\nInvert: Edit | Invert\nTrack: Plugins | wrMTrck\n\nSet minSize: 10\nSet maxSize: 400\nSet maxVelocity: 10\nSet maxAreaChange: 200\nSet bendThreshold: 1\n\nImportant: check Save Results File This is different to what you did in the workshop. It will help because the results will be saved automatically rather than to saving from the Results window that other pops up. Consequently, you will be able to save the results files with systematic names relating to their treatments and then read them into R simultaneously. That will also allow you to add information from the name of the file (which has the treatment information) to the resulting dataframes\n\n\nwrMTrck window with the settings listed above shown\n\n\nClick OK. Save to a folder for all the tracking data files. I recommend deleting the “Results of..” part of the name\n\n\nCheck that the Summary window indicates 3 tracks and that the 3 larvae are what is tracked by using the slider on the Result image\nRepeat for all videos\n\nThis is the code you need to import multiple csv files into a single dataframe and add a column with the treatment information from the file name. This is why systematic file names are good.\nIt assumes\n\nyour files are called type_concentration.txt for example: ev_0.txt 343_0.txt ev_1.txt 343_1.txt ev_2.5.txt 343_2.5.txt.\nthe .txt datafile are in a folder called track inside your working directory\nyou have installed the following packages: tidyverse, janitor\n\n\n🎬 Load the tidyverse\n\nlibrary(tidyverse)\n\n🎬 Put the file names into a vector we will iterate through\n\n# get a vector of the file names\nfiles <- list.files(path = \"track\", full.names = TRUE )\n\nWe can use map_df() from the purrr package which is one of the tidyverse gems loaded with tidyvserse. map_df() will iterate through files and read them into a dataframe with a specified import function. We are using read_table(). map_df() keeps track of the file by adding an index column called file to the resulting dataframe. Instead of this being a number (1 - 6 here) we can use set_names() to use the file names instead. The clean_names() function from the janitor package will clean up the column names (make them lower case, replace spaces with _ remove special characters etc)\n🎬 Import multiple csv files into one dataframe called tracking\n\n# import multiple data files into one dataframe called tracking\n# using map_df() from purrr package\n# clean the column names up using janitor::clean_names()\ntracking <- files |> \n set_names() |>\n map_dfr(read_table, .id = \"file\") |>\n janitor::clean_names()\n\nYou will get a warning Duplicated column names deduplicated: 'avgX' => 'avgX_1' [15] for each of the files because the csv files each have two columns called avgX. If you click on the tracking dataframe you see is contains the data from all the files.\nNow we can add columns for the type and the concentration by processing the values in the file. The values are like track/343_0.txt so we need to remove .txt and track/ and separate the remaining words into two columns.\n🎬 Process the file column to add columns for the type and the concentration\n\n# extract type and concentration from file name\n# and put them into additopnal separate columns\ntracking <- tracking |> \n mutate(file = str_remove(file, \".txt\")) |>\n mutate(file = str_remove(file, \"track/\")) |>\n extract(file, remove = \n FALSE,\n into = c(\"type\", \"conc\"), \n regex = \"([^_]{2,3})_(.+)\") \n\n[^_]{2,3} matches two or three characters that are not _ at the start of the string (^)\n.+ matches one or more characters. The extract() function puts the first match into the first column, type, and the second match into the second column, conc. The remove = FALSE argument means the original column is kept.\nYou now have a dataframe with all the tracking data which is relatively easy to summarise and plot using tools you know.\nThere is an example RStudio project containing this code here: tips. You can also download the project as a zip file from there but there is some code that will do that automatically for you. Since this is an RStudio Project, do not run the code from inside a project. You may want to navigate to a particular directory or edit the destdir:\n\nusethis::use_course(url = \"3mmaRand/tips\", destdir = \".\")\n\nYou can agree to deleting the zip. You should find RStudio restarts and you have a new project called tips-xxxxxx. The xxxxxx is a commit reference - you do not need to worry about that, it is just a way to tell you which version of the repo you downloaded. You can now run the code in the project.", - "crumbs": [ - "Image Analysis", - "Image Data Analysis for Group Project" - ] + "text": "Use this session to ask any questions about Core 1 Organising reproducible data analyses and Core 2 File types, workflow tips and other tools in particular, or about R and RStudio in general. We will also try to answer any questions about the ’mics, Image and Structure strands.\n88H students might also review Stage 1 and 2 content to see if there are areas you might benefit from revisiting. You can access these through the past VLE sites but you might find it helpful to use the latest versions because there is no 2FA and the resources are searchable.\nStage 1\n\nData Analysis in R for Becoming a Bioscientist 1.Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data.\nData Analysis in R for Becoming a Bioscientist 2. The logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one- and two-way analysis of variance (ANOVA).\n\nStage 2\n\nGet Introductory Statistical Tests as Linear models: A guide for R users\nA simple introduction to GLM for analysing Poisson and Binomial responses in R\n\n70M students might also review 52M content to see if there are areas you might benefit from revisiting. You can access these through the VLE site but you might find it helpful to use this link without 2FA.\n\n52M Data Analysis in R. Core concepts about scientific computing, types of variable, the role of variables in analysis and how to use RStudio to organise analysis and import, summarise and plot data, the logic of hypothesis testing, confidence intervals, what is meant by a statistical model, two-sample tests and one-way analysis of variance (ANOVA) and reproducible reports in Quarto.\n\nPages made with R (R Core Team 2024), Quarto (allaire2022?), knitr (knitr?), kableExtra (Zhu 2021)" + }, + { + "objectID": "core/week-6-old/study_after_workshop.html", + "href": "core/week-6-old/study_after_workshop.html", + "title": "Independent Study to consolidate this week", + "section": "", + "text": "There is no consolidation work other than to continue revising what you have learned over the course of your degree about data analysis." } ] \ No newline at end of file diff --git a/site_libs/bootstrap/bootstrap.min.css b/site_libs/bootstrap/bootstrap.min.css index 778557d..0081808 100644 --- a/site_libs/bootstrap/bootstrap.min.css +++ b/site_libs/bootstrap/bootstrap.min.css @@ -2,7 +2,7 @@ * Bootstrap v5.3.1 (https://getbootstrap.com/) * Copyright 2011-2023 The Bootstrap Authors * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #343a40;--bs-primary: #2780e3;--bs-secondary: #343a40;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #343a40;--bs-default-rgb: 52, 58, 64;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 52, 58, 64;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 52, 58, 64;--bs-primary-text-emphasis: #10335b;--bs-secondary-text-emphasis: #15171a;--bs-success-text-emphasis: #19490a;--bs-info-text-emphasis: #3d224b;--bs-warning-text-emphasis: #662f0a;--bs-danger-text-emphasis: #660017;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d4e6f9;--bs-secondary-bg-subtle: #d6d8d9;--bs-success-bg-subtle: #d9f0d1;--bs-info-bg-subtle: #ebddf1;--bs-warning-bg-subtle: #ffe3d1;--bs-danger-bg-subtle: #ffccd7;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #a9ccf4;--bs-secondary-border-subtle: #aeb0b3;--bs-success-border-subtle: #b2e2a3;--bs-info-border-subtle: #d6bbe4;--bs-warning-border-subtle: #ffc8a3;--bs-danger-border-subtle: #ff99b0;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #343a40;--bs-body-color-rgb: 52, 58, 64;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(52, 58, 64, 0.75);--bs-secondary-color-rgb: 52, 58, 64;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(52, 58, 64, 0.5);--bs-tertiary-color-rgb: 52, 58, 64;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #2761e3;--bs-link-color-rgb: 39, 97, 227;--bs-link-decoration: underline;--bs-link-hover-color: #1f4eb6;--bs-link-hover-color-rgb: 31, 78, 182;--bs-code-color: #7d12ba;--bs-highlight-bg: #ffe3d1;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(39, 128, 227, 0.25);--bs-form-valid-color: #3fb618;--bs-form-valid-border-color: #3fb618;--bs-form-invalid-color: #ff0039;--bs-form-invalid-border-color: #ff0039}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #7db3ee;--bs-secondary-text-emphasis: #85898c;--bs-success-text-emphasis: #8cd374;--bs-info-text-emphasis: #c298d6;--bs-warning-text-emphasis: #ffac74;--bs-danger-text-emphasis: #ff6688;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #081a2d;--bs-secondary-bg-subtle: #0a0c0d;--bs-success-bg-subtle: #0d2405;--bs-info-bg-subtle: #1f1125;--bs-warning-bg-subtle: #331705;--bs-danger-bg-subtle: #33000b;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #174d88;--bs-secondary-border-subtle: #1f2326;--bs-success-border-subtle: #266d0e;--bs-info-border-subtle: #5c3270;--bs-warning-border-subtle: #99460e;--bs-danger-border-subtle: #990022;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #7db3ee;--bs-link-hover-color: #97c2f1;--bs-link-color-rgb: 125, 179, 238;--bs-link-hover-color-rgb: 151, 194, 241;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8cd374;--bs-form-valid-border-color: #8cd374;--bs-form-invalid-color: #ff6688;--bs-form-invalid-border-color: #ff6688}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6)}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#343a40}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(52,58,64,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(52,58,64,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #343a40;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #343a40;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #343a40;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #343a40;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #b2bac1}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d4e6f9;--bs-table-border-color: #bfcfe0;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #d6d8d9;--bs-table-border-color: #c1c2c3;--bs-table-striped-bg: #cbcdce;--bs-table-striped-color: #000;--bs-table-active-bg: #c1c2c3;--bs-table-active-color: #000;--bs-table-hover-bg: #c6c8c9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d9f0d1;--bs-table-border-color: #c3d8bc;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #ebddf1;--bs-table-border-color: #d4c7d9;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #ffe3d1;--bs-table-border-color: #e6ccbc;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #ffccd7;--bs-table-border-color: #e6b8c2;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #343a40;--bs-table-border-color: #484e53;--bs-table-striped-bg: #3e444a;--bs-table-striped-color: #fff;--bs-table-active-bg: #484e53;--bs-table-active-color: #fff;--bs-table-hover-bg: #43494e;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(52,58,64,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#343a40;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(52,58,64,.75);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#343a40;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#343a40;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important}.form-control-color::-webkit-color-swatch{border:0 !important}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #343a40}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(52,58,64,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(52,58,64,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#e9ecef}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1)}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#3fb618}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#ff0039}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #343a40;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #216dc1;--bs-btn-hover-border-color: #1f66b6;--bs-btn-focus-shadow-rgb: 71, 147, 231;--bs-btn-active-color: #fff;--bs-btn-active-bg: #1f66b6;--bs-btn-active-border-color: #1d60aa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2780e3;--bs-btn-disabled-border-color: #2780e3}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #369b14;--bs-btn-hover-border-color: #329213;--bs-btn-focus-shadow-rgb: 92, 193, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #329213;--bs-btn-active-border-color: #2f8912;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3fb618;--bs-btn-disabled-border-color: #3fb618}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #82479f;--bs-btn-hover-border-color: #7a4396;--bs-btn-focus-shadow-rgb: 168, 110, 197;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a4396;--bs-btn-active-border-color: #733f8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #9954bb;--bs-btn-disabled-border-color: #9954bb}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d96314;--bs-btn-hover-border-color: #cc5e13;--bs-btn-focus-shadow-rgb: 255, 138, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc5e13;--bs-btn-active-border-color: #bf5812;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff7518;--bs-btn-disabled-border-color: #ff7518}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d90030;--bs-btn-hover-border-color: #cc002e;--bs-btn-focus-shadow-rgb: 255, 38, 87;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc002e;--bs-btn-active-border-color: #bf002b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff0039;--bs-btn-disabled-border-color: #ff0039}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-outline-default{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2780e3;--bs-btn-hover-border-color: #2780e3;--bs-btn-focus-shadow-rgb: 39, 128, 227;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2780e3;--bs-btn-active-border-color: #2780e3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2780e3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2780e3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3fb618;--bs-btn-hover-border-color: #3fb618;--bs-btn-focus-shadow-rgb: 63, 182, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3fb618;--bs-btn-active-border-color: #3fb618;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3fb618;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3fb618;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #9954bb;--bs-btn-hover-border-color: #9954bb;--bs-btn-focus-shadow-rgb: 153, 84, 187;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9954bb;--bs-btn-active-border-color: #9954bb;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #9954bb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #9954bb;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff7518;--bs-btn-hover-border-color: #ff7518;--bs-btn-focus-shadow-rgb: 255, 117, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff7518;--bs-btn-active-border-color: #ff7518;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff7518;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff7518;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff0039;--bs-btn-hover-border-color: #ff0039;--bs-btn-focus-shadow-rgb: 255, 0, 57;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff0039;--bs-btn-active-border-color: #ff0039;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff0039;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff0039;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #2761e3;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: #1f4eb6;--bs-btn-hover-border-color: transparent;--bs-btn-active-color: #1f4eb6;--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 71, 121, 231;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #343a40;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #343a40;--bs-dropdown-link-hover-color: #343a40;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: rgba(52, 58, 64, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #2761e3;--bs-nav-link-hover-color: #1f4eb6;--bs-nav-link-disabled-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width))}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2780e3}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion{--bs-accordion-color: #343a40;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #343a40;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23343a40'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2310335b'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #93c0f1;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #10335b;--bs-accordion-active-bg: #d4e6f9}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: rgba(52, 58, 64, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #2761e3;--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #1f4eb6;--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: #1f4eb6;--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #2780e3;--bs-pagination-active-border-color: #2780e3;--bs-pagination-disabled-color: rgba(52, 58, 64, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(1px*-1)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--bs-progress-height: 0.5rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2780e3;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #343a40;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(52, 58, 64, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #343a40;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(52, 58, 64, 0.75);--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2780e3;--bs-list-group-active-border-color: #2780e3;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(52, 58, 64, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color)}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #e9ecef;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #343a40;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #343a40;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(31, 102, 182, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(31, 102, 182, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(50, 146, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(50, 146, 19, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(122, 67, 150, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122, 67, 150, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(204, 94, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 94, 19, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(204, 0, 46, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 0, 46, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:" "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:" "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}:root{--bslib-page-sidebar-title-bg: #f8f9fa;--bslib-page-sidebar-title-color: #000}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#545555}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#1f4eb6}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(33,81,191,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(33,81,191,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#2151bf}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#f8f9fa;color:#545555;border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f4eb6}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#545555;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#545555;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#545555;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#343a40;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#343a40;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#343a40;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#343a40;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#343a40;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#343a40}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#343a40}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#343a40}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#545555}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#343a40;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(52,58,64,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#5397e9 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#343a40 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#3aa716 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#fa6400 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#f8f9fa !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#343a40 !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px #dae0e5;border-bottom:solid 1px #dae0e5}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:#e0e5e9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#545555}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#343a40}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#343a40}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px #bcbfc0;padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#343a40}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#343a40;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2761e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2761e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2761e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2761e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2761e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#343a40;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#343a40}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}div.ansi-escaped-output{font-family:monospace;display:block}/*! + */@import"https://fonts.googleapis.com/css2?family=Source+Sans+Pro:wght@300;400;700&display=swap";:root,[data-bs-theme=light]{--bs-blue: #2780e3;--bs-indigo: #6610f2;--bs-purple: #613d7c;--bs-pink: #e83e8c;--bs-red: #ff0039;--bs-orange: #f0ad4e;--bs-yellow: #ff7518;--bs-green: #3fb618;--bs-teal: #20c997;--bs-cyan: #9954bb;--bs-black: #000;--bs-white: #fff;--bs-gray: #6c757d;--bs-gray-dark: #343a40;--bs-gray-100: #f8f9fa;--bs-gray-200: #e9ecef;--bs-gray-300: #dee2e6;--bs-gray-400: #ced4da;--bs-gray-500: #adb5bd;--bs-gray-600: #6c757d;--bs-gray-700: #495057;--bs-gray-800: #343a40;--bs-gray-900: #212529;--bs-default: #343a40;--bs-primary: #2780e3;--bs-secondary: #343a40;--bs-success: #3fb618;--bs-info: #9954bb;--bs-warning: #ff7518;--bs-danger: #ff0039;--bs-light: #f8f9fa;--bs-dark: #343a40;--bs-default-rgb: 52, 58, 64;--bs-primary-rgb: 39, 128, 227;--bs-secondary-rgb: 52, 58, 64;--bs-success-rgb: 63, 182, 24;--bs-info-rgb: 153, 84, 187;--bs-warning-rgb: 255, 117, 24;--bs-danger-rgb: 255, 0, 57;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 52, 58, 64;--bs-primary-text-emphasis: #10335b;--bs-secondary-text-emphasis: #15171a;--bs-success-text-emphasis: #19490a;--bs-info-text-emphasis: #3d224b;--bs-warning-text-emphasis: #662f0a;--bs-danger-text-emphasis: #660017;--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: #d4e6f9;--bs-secondary-bg-subtle: #d6d8d9;--bs-success-bg-subtle: #d9f0d1;--bs-info-bg-subtle: #ebddf1;--bs-warning-bg-subtle: #ffe3d1;--bs-danger-bg-subtle: #ffccd7;--bs-light-bg-subtle: #fcfcfd;--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: #a9ccf4;--bs-secondary-border-subtle: #aeb0b3;--bs-success-border-subtle: #b2e2a3;--bs-info-border-subtle: #d6bbe4;--bs-warning-border-subtle: #ffc8a3;--bs-danger-border-subtle: #ff99b0;--bs-light-border-subtle: #e9ecef;--bs-dark-border-subtle: #adb5bd;--bs-white-rgb: 255, 255, 255;--bs-black-rgb: 0, 0, 0;--bs-font-sans-serif: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-root-font-size: 17px;--bs-body-font-family: "Source Sans Pro", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #343a40;--bs-body-color-rgb: 52, 58, 64;--bs-body-bg: #fff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(52, 58, 64, 0.75);--bs-secondary-color-rgb: 52, 58, 64;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(52, 58, 64, 0.5);--bs-tertiary-color-rgb: 52, 58, 64;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #2761e3;--bs-link-color-rgb: 39, 97, 227;--bs-link-decoration: underline;--bs-link-hover-color: #1f4eb6;--bs-link-hover-color-rgb: 31, 78, 182;--bs-code-color: #7d12ba;--bs-highlight-bg: #ffe3d1;--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: #dee2e6;--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.25rem;--bs-border-radius-sm: 0.2em;--bs-border-radius-lg: 0.5rem;--bs-border-radius-xl: 1rem;--bs-border-radius-xxl: 2rem;--bs-border-radius-2xl: var(--bs-border-radius-xxl);--bs-border-radius-pill: 50rem;--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width: 0.25rem;--bs-focus-ring-opacity: 0.25;--bs-focus-ring-color: rgba(39, 128, 227, 0.25);--bs-form-valid-color: #3fb618;--bs-form-valid-border-color: #3fb618;--bs-form-invalid-color: #ff0039;--bs-form-invalid-border-color: #ff0039}[data-bs-theme=dark]{color-scheme:dark;--bs-body-color: #dee2e6;--bs-body-color-rgb: 222, 226, 230;--bs-body-bg: #212529;--bs-body-bg-rgb: 33, 37, 41;--bs-emphasis-color: #fff;--bs-emphasis-color-rgb: 255, 255, 255;--bs-secondary-color: rgba(222, 226, 230, 0.75);--bs-secondary-color-rgb: 222, 226, 230;--bs-secondary-bg: #343a40;--bs-secondary-bg-rgb: 52, 58, 64;--bs-tertiary-color: rgba(222, 226, 230, 0.5);--bs-tertiary-color-rgb: 222, 226, 230;--bs-tertiary-bg: #2b3035;--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: #7db3ee;--bs-secondary-text-emphasis: #85898c;--bs-success-text-emphasis: #8cd374;--bs-info-text-emphasis: #c298d6;--bs-warning-text-emphasis: #ffac74;--bs-danger-text-emphasis: #ff6688;--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: #081a2d;--bs-secondary-bg-subtle: #0a0c0d;--bs-success-bg-subtle: #0d2405;--bs-info-bg-subtle: #1f1125;--bs-warning-bg-subtle: #331705;--bs-danger-bg-subtle: #33000b;--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: #174d88;--bs-secondary-border-subtle: #1f2326;--bs-success-border-subtle: #266d0e;--bs-info-border-subtle: #5c3270;--bs-warning-border-subtle: #99460e;--bs-danger-border-subtle: #990022;--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: #7db3ee;--bs-link-hover-color: #97c2f1;--bs-link-color-rgb: 125, 179, 238;--bs-link-hover-color-rgb: 151, 194, 241;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: #8cd374;--bs-form-valid-border-color: #8cd374;--bs-form-invalid-color: #ff6688;--bs-form-invalid-border-color: #ff6688}*,*::before,*::after{box-sizing:border-box}:root{font-size:var(--bs-root-font-size)}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:1px solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.325rem + 0.9vw)}@media(min-width: 1200px){h1,.h1{font-size:2rem}}h2,.h2{font-size:calc(1.29rem + 0.48vw)}@media(min-width: 1200px){h2,.h2{font-size:1.65rem}}h3,.h3{font-size:calc(1.27rem + 0.24vw)}@media(min-width: 1200px){h3,.h3{font-size:1.45rem}}h4,.h4{font-size:1.25rem}h5,.h5{font-size:1.1rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{text-decoration:underline dotted;-webkit-text-decoration:underline dotted;-moz-text-decoration:underline dotted;-ms-text-decoration:underline dotted;-o-text-decoration:underline dotted;cursor:help;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem;padding:.625rem 1.25rem;border-left:.25rem solid #e9ecef}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}b,strong{font-weight:bolder}small,.small{font-size:0.875em}mark,.mark{padding:.1875em;background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}a:hover{--bs-link-color-rgb: var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em;color:#000;background-color:#f8f9fa;padding:.5rem;border:1px solid var(--bs-border-color, #dee2e6)}pre code{background-color:rgba(0,0,0,0);font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);background-color:#f8f9fa;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#343a40}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:rgba(52,58,64,.75);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator{display:none !important}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button:not(:disabled),[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media(min-width: 1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none !important}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:calc(1.625rem + 4.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-1{font-size:5rem}}.display-2{font-size:calc(1.575rem + 3.9vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-2{font-size:4.5rem}}.display-3{font-size:calc(1.525rem + 3.3vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-3{font-size:4rem}}.display-4{font-size:calc(1.475rem + 2.7vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-4{font-size:3.5rem}}.display-5{font-size:calc(1.425rem + 2.1vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-5{font-size:3rem}}.display-6{font-size:calc(1.375rem + 1.5vw);font-weight:300;line-height:1.2}@media(min-width: 1200px){.display-6{font-size:2.5rem}}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:0.875em;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote>:last-child{margin-bottom:0}.blockquote-footer{margin-top:-1rem;margin-bottom:1rem;font-size:0.875em;color:#6c757d}.blockquote-footer::before{content:"— "}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:0.875em;color:rgba(52,58,64,.75)}.container,.container-fluid,.container-xxl,.container-xl,.container-lg,.container-md,.container-sm{--bs-gutter-x: 1.5rem;--bs-gutter-y: 0;width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}@media(min-width: 576px){.container-sm,.container{max-width:540px}}@media(min-width: 768px){.container-md,.container-sm,.container{max-width:720px}}@media(min-width: 992px){.container-lg,.container-md,.container-sm,.container{max-width:960px}}@media(min-width: 1200px){.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1140px}}@media(min-width: 1400px){.container-xxl,.container-xl,.container-lg,.container-md,.container-sm,.container{max-width:1320px}}:root{--bs-breakpoint-xs: 0;--bs-breakpoint-sm: 576px;--bs-breakpoint-md: 768px;--bs-breakpoint-lg: 992px;--bs-breakpoint-xl: 1200px;--bs-breakpoint-xxl: 1400px}.grid{display:grid;grid-template-rows:repeat(var(--bs-rows, 1), 1fr);grid-template-columns:repeat(var(--bs-columns, 12), 1fr);gap:var(--bs-gap, 1.5rem)}.grid .g-col-1{grid-column:auto/span 1}.grid .g-col-2{grid-column:auto/span 2}.grid .g-col-3{grid-column:auto/span 3}.grid .g-col-4{grid-column:auto/span 4}.grid .g-col-5{grid-column:auto/span 5}.grid .g-col-6{grid-column:auto/span 6}.grid .g-col-7{grid-column:auto/span 7}.grid .g-col-8{grid-column:auto/span 8}.grid .g-col-9{grid-column:auto/span 9}.grid .g-col-10{grid-column:auto/span 10}.grid .g-col-11{grid-column:auto/span 11}.grid .g-col-12{grid-column:auto/span 12}.grid .g-start-1{grid-column-start:1}.grid .g-start-2{grid-column-start:2}.grid .g-start-3{grid-column-start:3}.grid .g-start-4{grid-column-start:4}.grid .g-start-5{grid-column-start:5}.grid .g-start-6{grid-column-start:6}.grid .g-start-7{grid-column-start:7}.grid .g-start-8{grid-column-start:8}.grid .g-start-9{grid-column-start:9}.grid .g-start-10{grid-column-start:10}.grid .g-start-11{grid-column-start:11}@media(min-width: 576px){.grid .g-col-sm-1{grid-column:auto/span 1}.grid .g-col-sm-2{grid-column:auto/span 2}.grid .g-col-sm-3{grid-column:auto/span 3}.grid .g-col-sm-4{grid-column:auto/span 4}.grid .g-col-sm-5{grid-column:auto/span 5}.grid .g-col-sm-6{grid-column:auto/span 6}.grid .g-col-sm-7{grid-column:auto/span 7}.grid .g-col-sm-8{grid-column:auto/span 8}.grid .g-col-sm-9{grid-column:auto/span 9}.grid .g-col-sm-10{grid-column:auto/span 10}.grid .g-col-sm-11{grid-column:auto/span 11}.grid .g-col-sm-12{grid-column:auto/span 12}.grid .g-start-sm-1{grid-column-start:1}.grid .g-start-sm-2{grid-column-start:2}.grid .g-start-sm-3{grid-column-start:3}.grid .g-start-sm-4{grid-column-start:4}.grid .g-start-sm-5{grid-column-start:5}.grid .g-start-sm-6{grid-column-start:6}.grid .g-start-sm-7{grid-column-start:7}.grid .g-start-sm-8{grid-column-start:8}.grid .g-start-sm-9{grid-column-start:9}.grid .g-start-sm-10{grid-column-start:10}.grid .g-start-sm-11{grid-column-start:11}}@media(min-width: 768px){.grid .g-col-md-1{grid-column:auto/span 1}.grid .g-col-md-2{grid-column:auto/span 2}.grid .g-col-md-3{grid-column:auto/span 3}.grid .g-col-md-4{grid-column:auto/span 4}.grid .g-col-md-5{grid-column:auto/span 5}.grid .g-col-md-6{grid-column:auto/span 6}.grid .g-col-md-7{grid-column:auto/span 7}.grid .g-col-md-8{grid-column:auto/span 8}.grid .g-col-md-9{grid-column:auto/span 9}.grid .g-col-md-10{grid-column:auto/span 10}.grid .g-col-md-11{grid-column:auto/span 11}.grid .g-col-md-12{grid-column:auto/span 12}.grid .g-start-md-1{grid-column-start:1}.grid .g-start-md-2{grid-column-start:2}.grid .g-start-md-3{grid-column-start:3}.grid .g-start-md-4{grid-column-start:4}.grid .g-start-md-5{grid-column-start:5}.grid .g-start-md-6{grid-column-start:6}.grid .g-start-md-7{grid-column-start:7}.grid .g-start-md-8{grid-column-start:8}.grid .g-start-md-9{grid-column-start:9}.grid .g-start-md-10{grid-column-start:10}.grid .g-start-md-11{grid-column-start:11}}@media(min-width: 992px){.grid .g-col-lg-1{grid-column:auto/span 1}.grid .g-col-lg-2{grid-column:auto/span 2}.grid .g-col-lg-3{grid-column:auto/span 3}.grid .g-col-lg-4{grid-column:auto/span 4}.grid .g-col-lg-5{grid-column:auto/span 5}.grid .g-col-lg-6{grid-column:auto/span 6}.grid .g-col-lg-7{grid-column:auto/span 7}.grid .g-col-lg-8{grid-column:auto/span 8}.grid .g-col-lg-9{grid-column:auto/span 9}.grid .g-col-lg-10{grid-column:auto/span 10}.grid .g-col-lg-11{grid-column:auto/span 11}.grid .g-col-lg-12{grid-column:auto/span 12}.grid .g-start-lg-1{grid-column-start:1}.grid .g-start-lg-2{grid-column-start:2}.grid .g-start-lg-3{grid-column-start:3}.grid .g-start-lg-4{grid-column-start:4}.grid .g-start-lg-5{grid-column-start:5}.grid .g-start-lg-6{grid-column-start:6}.grid .g-start-lg-7{grid-column-start:7}.grid .g-start-lg-8{grid-column-start:8}.grid .g-start-lg-9{grid-column-start:9}.grid .g-start-lg-10{grid-column-start:10}.grid .g-start-lg-11{grid-column-start:11}}@media(min-width: 1200px){.grid .g-col-xl-1{grid-column:auto/span 1}.grid .g-col-xl-2{grid-column:auto/span 2}.grid .g-col-xl-3{grid-column:auto/span 3}.grid .g-col-xl-4{grid-column:auto/span 4}.grid .g-col-xl-5{grid-column:auto/span 5}.grid .g-col-xl-6{grid-column:auto/span 6}.grid .g-col-xl-7{grid-column:auto/span 7}.grid .g-col-xl-8{grid-column:auto/span 8}.grid .g-col-xl-9{grid-column:auto/span 9}.grid .g-col-xl-10{grid-column:auto/span 10}.grid .g-col-xl-11{grid-column:auto/span 11}.grid .g-col-xl-12{grid-column:auto/span 12}.grid .g-start-xl-1{grid-column-start:1}.grid .g-start-xl-2{grid-column-start:2}.grid .g-start-xl-3{grid-column-start:3}.grid .g-start-xl-4{grid-column-start:4}.grid .g-start-xl-5{grid-column-start:5}.grid .g-start-xl-6{grid-column-start:6}.grid .g-start-xl-7{grid-column-start:7}.grid .g-start-xl-8{grid-column-start:8}.grid .g-start-xl-9{grid-column-start:9}.grid .g-start-xl-10{grid-column-start:10}.grid .g-start-xl-11{grid-column-start:11}}@media(min-width: 1400px){.grid .g-col-xxl-1{grid-column:auto/span 1}.grid .g-col-xxl-2{grid-column:auto/span 2}.grid .g-col-xxl-3{grid-column:auto/span 3}.grid .g-col-xxl-4{grid-column:auto/span 4}.grid .g-col-xxl-5{grid-column:auto/span 5}.grid .g-col-xxl-6{grid-column:auto/span 6}.grid .g-col-xxl-7{grid-column:auto/span 7}.grid .g-col-xxl-8{grid-column:auto/span 8}.grid .g-col-xxl-9{grid-column:auto/span 9}.grid .g-col-xxl-10{grid-column:auto/span 10}.grid .g-col-xxl-11{grid-column:auto/span 11}.grid .g-col-xxl-12{grid-column:auto/span 12}.grid .g-start-xxl-1{grid-column-start:1}.grid .g-start-xxl-2{grid-column-start:2}.grid .g-start-xxl-3{grid-column-start:3}.grid .g-start-xxl-4{grid-column-start:4}.grid .g-start-xxl-5{grid-column-start:5}.grid .g-start-xxl-6{grid-column-start:6}.grid .g-start-xxl-7{grid-column-start:7}.grid .g-start-xxl-8{grid-column-start:8}.grid .g-start-xxl-9{grid-column-start:9}.grid .g-start-xxl-10{grid-column-start:10}.grid .g-start-xxl-11{grid-column-start:11}}.table{--bs-table-color-type: initial;--bs-table-bg-type: initial;--bs-table-color-state: initial;--bs-table-bg-state: initial;--bs-table-color: #343a40;--bs-table-bg: #fff;--bs-table-border-color: #dee2e6;--bs-table-accent-bg: transparent;--bs-table-striped-color: #343a40;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #343a40;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #343a40;--bs-table-hover-bg: rgba(0, 0, 0, 0.075);width:100%;margin-bottom:1rem;vertical-align:top;border-color:var(--bs-table-border-color)}.table>:not(caption)>*>*{padding:.5rem .5rem;color:var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color)));background-color:var(--bs-table-bg);border-bottom-width:1px;box-shadow:inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg)))}.table>tbody{vertical-align:inherit}.table>thead{vertical-align:bottom}.table-group-divider{border-top:calc(1px*2) solid #b2bac1}.caption-top{caption-side:top}.table-sm>:not(caption)>*>*{padding:.25rem .25rem}.table-bordered>:not(caption)>*{border-width:1px 0}.table-bordered>:not(caption)>*>*{border-width:0 1px}.table-borderless>:not(caption)>*>*{border-bottom-width:0}.table-borderless>:not(:first-child){border-top-width:0}.table-striped>tbody>tr:nth-of-type(odd)>*{--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-striped-columns>:not(caption)>tr>:nth-child(even){--bs-table-color-type: var(--bs-table-striped-color);--bs-table-bg-type: var(--bs-table-striped-bg)}.table-active{--bs-table-color-state: var(--bs-table-active-color);--bs-table-bg-state: var(--bs-table-active-bg)}.table-hover>tbody>tr:hover>*{--bs-table-color-state: var(--bs-table-hover-color);--bs-table-bg-state: var(--bs-table-hover-bg)}.table-primary{--bs-table-color: #000;--bs-table-bg: #d4e6f9;--bs-table-border-color: #bfcfe0;--bs-table-striped-bg: #c9dbed;--bs-table-striped-color: #000;--bs-table-active-bg: #bfcfe0;--bs-table-active-color: #000;--bs-table-hover-bg: #c4d5e6;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-secondary{--bs-table-color: #000;--bs-table-bg: #d6d8d9;--bs-table-border-color: #c1c2c3;--bs-table-striped-bg: #cbcdce;--bs-table-striped-color: #000;--bs-table-active-bg: #c1c2c3;--bs-table-active-color: #000;--bs-table-hover-bg: #c6c8c9;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-success{--bs-table-color: #000;--bs-table-bg: #d9f0d1;--bs-table-border-color: #c3d8bc;--bs-table-striped-bg: #cee4c7;--bs-table-striped-color: #000;--bs-table-active-bg: #c3d8bc;--bs-table-active-color: #000;--bs-table-hover-bg: #c9dec1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-info{--bs-table-color: #000;--bs-table-bg: #ebddf1;--bs-table-border-color: #d4c7d9;--bs-table-striped-bg: #dfd2e5;--bs-table-striped-color: #000;--bs-table-active-bg: #d4c7d9;--bs-table-active-color: #000;--bs-table-hover-bg: #d9ccdf;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-warning{--bs-table-color: #000;--bs-table-bg: #ffe3d1;--bs-table-border-color: #e6ccbc;--bs-table-striped-bg: #f2d8c7;--bs-table-striped-color: #000;--bs-table-active-bg: #e6ccbc;--bs-table-active-color: #000;--bs-table-hover-bg: #ecd2c1;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-danger{--bs-table-color: #000;--bs-table-bg: #ffccd7;--bs-table-border-color: #e6b8c2;--bs-table-striped-bg: #f2c2cc;--bs-table-striped-color: #000;--bs-table-active-bg: #e6b8c2;--bs-table-active-color: #000;--bs-table-hover-bg: #ecbdc7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-light{--bs-table-color: #000;--bs-table-bg: #f8f9fa;--bs-table-border-color: #dfe0e1;--bs-table-striped-bg: #ecedee;--bs-table-striped-color: #000;--bs-table-active-bg: #dfe0e1;--bs-table-active-color: #000;--bs-table-hover-bg: #e5e6e7;--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #fff;--bs-table-bg: #343a40;--bs-table-border-color: #484e53;--bs-table-striped-bg: #3e444a;--bs-table-striped-color: #fff;--bs-table-active-bg: #484e53;--bs-table-active-color: #fff;--bs-table-hover-bg: #43494e;--bs-table-hover-color: #fff;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch}@media(max-width: 575.98px){.table-responsive-sm{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 767.98px){.table-responsive-md{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 991.98px){.table-responsive-lg{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1199.98px){.table-responsive-xl{overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width: 1399.98px){.table-responsive-xxl{overflow-x:auto;-webkit-overflow-scrolling:touch}}.form-label,.shiny-input-container .control-label{margin-bottom:.5rem}.col-form-label{padding-top:calc(0.375rem + 1px);padding-bottom:calc(0.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(0.5rem + 1px);padding-bottom:calc(0.5rem + 1px);font-size:1.25rem}.col-form-label-sm{padding-top:calc(0.25rem + 1px);padding-bottom:calc(0.25rem + 1px);font-size:0.875rem}.form-text{margin-top:.25rem;font-size:0.875em;color:rgba(52,58,64,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control{transition:none}}.form-control[type=file]{overflow:hidden}.form-control[type=file]:not(:disabled):not([readonly]){cursor:pointer}.form-control:focus{color:#343a40;background-color:#fff;border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:rgba(52,58,64,.75);opacity:1}.form-control:disabled{background-color:#e9ecef;opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-0.375rem -0.75rem;margin-inline-end:.75rem;color:#343a40;background-color:#f8f9fa;pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:1px;border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:#e9ecef}.form-control-plaintext{display:block;width:100%;padding:.375rem 0;margin-bottom:0;line-height:1.5;color:#343a40;background-color:rgba(0,0,0,0);border:solid rgba(0,0,0,0);border-width:1px 0}.form-control-plaintext:focus{outline:0}.form-control-plaintext.form-control-sm,.form-control-plaintext.form-control-lg{padding-right:0;padding-left:0}.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2));padding:.25rem .5rem;font-size:0.875rem}.form-control-sm::file-selector-button{padding:.25rem .5rem;margin:-0.25rem -0.5rem;margin-inline-end:.5rem}.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2));padding:.5rem 1rem;font-size:1.25rem}.form-control-lg::file-selector-button{padding:.5rem 1rem;margin:-0.5rem -1rem;margin-inline-end:1rem}textarea.form-control{min-height:calc(1.5em + 0.75rem + calc(1px * 2))}textarea.form-control-sm{min-height:calc(1.5em + 0.5rem + calc(1px * 2))}textarea.form-control-lg{min-height:calc(1.5em + 1rem + calc(1px * 2))}.form-control-color{width:3rem;height:calc(1.5em + 0.75rem + calc(1px * 2));padding:.375rem}.form-control-color:not(:disabled):not([readonly]){cursor:pointer}.form-control-color::-moz-color-swatch{border:0 !important}.form-control-color::-webkit-color-swatch{border:0 !important}.form-control-color.form-control-sm{height:calc(1.5em + 0.5rem + calc(1px * 2))}.form-control-color.form-control-lg{height:calc(1.5em + 1rem + calc(1px * 2))}.form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");display:block;width:100%;padding:.375rem 2.25rem .375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-image:var(--bs-form-select-bg-img),var(--bs-form-select-bg-icon, none);background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;border:1px solid #dee2e6;border-radius:0;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-select{transition:none}}.form-select:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-select[multiple],.form-select[size]:not([size="1"]){padding-right:.75rem;background-image:none}.form-select:disabled{background-color:#e9ecef}.form-select:-moz-focusring{color:rgba(0,0,0,0);text-shadow:0 0 0 #343a40}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem}[data-bs-theme=dark] .form-select{--bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")}.form-check,.shiny-input-container .checkbox,.shiny-input-container .radio{display:block;min-height:1.5rem;padding-left:0;margin-bottom:.125rem}.form-check .form-check-input,.form-check .shiny-input-container .checkbox input,.form-check .shiny-input-container .radio input,.shiny-input-container .checkbox .form-check-input,.shiny-input-container .checkbox .shiny-input-container .checkbox input,.shiny-input-container .checkbox .shiny-input-container .radio input,.shiny-input-container .radio .form-check-input,.shiny-input-container .radio .shiny-input-container .checkbox input,.shiny-input-container .radio .shiny-input-container .radio input{float:left;margin-left:0}.form-check-reverse{padding-right:0;padding-left:0;text-align:right}.form-check-reverse .form-check-input{float:right;margin-right:0;margin-left:0}.form-check-input,.shiny-input-container .checkbox input,.shiny-input-container .checkbox-inline input,.shiny-input-container .radio input,.shiny-input-container .radio-inline input{--bs-form-check-bg: #fff;width:1em;height:1em;margin-top:.25em;vertical-align:top;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:var(--bs-form-check-bg);background-image:var(--bs-form-check-bg-image);background-repeat:no-repeat;background-position:center;background-size:contain;border:1px solid #dee2e6;print-color-adjust:exact}.form-check-input[type=radio],.shiny-input-container .checkbox input[type=radio],.shiny-input-container .checkbox-inline input[type=radio],.shiny-input-container .radio input[type=radio],.shiny-input-container .radio-inline input[type=radio]{border-radius:50%}.form-check-input:active,.shiny-input-container .checkbox input:active,.shiny-input-container .checkbox-inline input:active,.shiny-input-container .radio input:active,.shiny-input-container .radio-inline input:active{filter:brightness(90%)}.form-check-input:focus,.shiny-input-container .checkbox input:focus,.shiny-input-container .checkbox-inline input:focus,.shiny-input-container .radio input:focus,.shiny-input-container .radio-inline input:focus{border-color:#93c0f1;outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.form-check-input:checked,.shiny-input-container .checkbox input:checked,.shiny-input-container .checkbox-inline input:checked,.shiny-input-container .radio input:checked,.shiny-input-container .radio-inline input:checked{background-color:#2780e3;border-color:#2780e3}.form-check-input:checked[type=checkbox],.shiny-input-container .checkbox input:checked[type=checkbox],.shiny-input-container .checkbox-inline input:checked[type=checkbox],.shiny-input-container .radio input:checked[type=checkbox],.shiny-input-container .radio-inline input:checked[type=checkbox]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e")}.form-check-input:checked[type=radio],.shiny-input-container .checkbox input:checked[type=radio],.shiny-input-container .checkbox-inline input:checked[type=radio],.shiny-input-container .radio input:checked[type=radio],.shiny-input-container .radio-inline input:checked[type=radio]{--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e")}.form-check-input[type=checkbox]:indeterminate,.shiny-input-container .checkbox input[type=checkbox]:indeterminate,.shiny-input-container .checkbox-inline input[type=checkbox]:indeterminate,.shiny-input-container .radio input[type=checkbox]:indeterminate,.shiny-input-container .radio-inline input[type=checkbox]:indeterminate{background-color:#2780e3;border-color:#2780e3;--bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e")}.form-check-input:disabled,.shiny-input-container .checkbox input:disabled,.shiny-input-container .checkbox-inline input:disabled,.shiny-input-container .radio input:disabled,.shiny-input-container .radio-inline input:disabled{pointer-events:none;filter:none;opacity:.5}.form-check-input[disabled]~.form-check-label,.form-check-input[disabled]~span,.form-check-input:disabled~.form-check-label,.form-check-input:disabled~span,.shiny-input-container .checkbox input[disabled]~.form-check-label,.shiny-input-container .checkbox input[disabled]~span,.shiny-input-container .checkbox input:disabled~.form-check-label,.shiny-input-container .checkbox input:disabled~span,.shiny-input-container .checkbox-inline input[disabled]~.form-check-label,.shiny-input-container .checkbox-inline input[disabled]~span,.shiny-input-container .checkbox-inline input:disabled~.form-check-label,.shiny-input-container .checkbox-inline input:disabled~span,.shiny-input-container .radio input[disabled]~.form-check-label,.shiny-input-container .radio input[disabled]~span,.shiny-input-container .radio input:disabled~.form-check-label,.shiny-input-container .radio input:disabled~span,.shiny-input-container .radio-inline input[disabled]~.form-check-label,.shiny-input-container .radio-inline input[disabled]~span,.shiny-input-container .radio-inline input:disabled~.form-check-label,.shiny-input-container .radio-inline input:disabled~span{cursor:default;opacity:.5}.form-check-label,.shiny-input-container .checkbox label,.shiny-input-container .checkbox-inline label,.shiny-input-container .radio label,.shiny-input-container .radio-inline label{cursor:pointer}.form-switch{padding-left:2.5em}.form-switch .form-check-input{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e");width:2em;margin-left:-2.5em;background-image:var(--bs-form-switch-bg);background-position:left center;transition:background-position .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-switch .form-check-input{transition:none}}.form-switch .form-check-input:focus{--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2393c0f1'/%3e%3c/svg%3e")}.form-switch .form-check-input:checked{background-position:right center;--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e")}.form-switch.form-check-reverse{padding-right:2.5em;padding-left:0}.form-switch.form-check-reverse .form-check-input{margin-right:-2.5em;margin-left:0}.form-check-inline{display:inline-block;margin-right:1rem}.btn-check{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.btn-check[disabled]+.btn,.btn-check:disabled+.btn{pointer-events:none;filter:none;opacity:.65}[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus){--bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e")}.form-range{width:100%;height:1.5rem;padding:0;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:rgba(0,0,0,0)}.form-range:focus{outline:0}.form-range:focus::-webkit-slider-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(39,128,227,.25)}.form-range::-moz-focus-outer{border:0}.form-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-0.25rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-webkit-slider-thumb{transition:none}}.form-range::-webkit-slider-thumb:active{background-color:#bed9f7}.form-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range::-moz-range-thumb{width:1rem;height:1rem;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#2780e3;border:0;transition:background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.form-range::-moz-range-thumb{transition:none}}.form-range::-moz-range-thumb:active{background-color:#bed9f7}.form-range::-moz-range-track{width:100%;height:.5rem;color:rgba(0,0,0,0);cursor:pointer;background-color:#f8f9fa;border-color:rgba(0,0,0,0)}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(52,58,64,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(52,58,64,.75)}.form-floating{position:relative}.form-floating>.form-control,.form-floating>.form-control-plaintext,.form-floating>.form-select{height:calc(3.5rem + calc(1px * 2));min-height:calc(3.5rem + calc(1px * 2));line-height:1.25}.form-floating>label{position:absolute;top:0;left:0;z-index:2;height:100%;padding:1rem .75rem;overflow:hidden;text-align:start;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;border:1px solid rgba(0,0,0,0);transform-origin:0 0;transition:opacity .1s ease-in-out,transform .1s ease-in-out}@media(prefers-reduced-motion: reduce){.form-floating>label{transition:none}}.form-floating>.form-control,.form-floating>.form-control-plaintext{padding:1rem .75rem}.form-floating>.form-control::placeholder,.form-floating>.form-control-plaintext::placeholder{color:rgba(0,0,0,0)}.form-floating>.form-control:focus,.form-floating>.form-control:not(:placeholder-shown),.form-floating>.form-control-plaintext:focus,.form-floating>.form-control-plaintext:not(:placeholder-shown){padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:-webkit-autofill,.form-floating>.form-control-plaintext:-webkit-autofill{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-select{padding-top:1.625rem;padding-bottom:.625rem}.form-floating>.form-control:focus~label,.form-floating>.form-control:not(:placeholder-shown)~label,.form-floating>.form-control-plaintext~label,.form-floating>.form-select~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control:focus~label::after,.form-floating>.form-control:not(:placeholder-shown)~label::after,.form-floating>.form-control-plaintext~label::after,.form-floating>.form-select~label::after{position:absolute;inset:1rem .375rem;z-index:-1;height:1.5em;content:"";background-color:#fff}.form-floating>.form-control:-webkit-autofill~label{color:rgba(var(--bs-body-color-rgb), 0.65);transform:scale(0.85) translateY(-0.5rem) translateX(0.15rem)}.form-floating>.form-control-plaintext~label{border-width:1px 0}.form-floating>:disabled~label,.form-floating>.form-control:disabled~label{color:#6c757d}.form-floating>:disabled~label::after,.form-floating>.form-control:disabled~label::after{background-color:#e9ecef}.input-group{position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:stretch;-webkit-align-items:stretch;width:100%}.input-group>.form-control,.input-group>.form-select,.input-group>.form-floating{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;width:1%;min-width:0}.input-group>.form-control:focus,.input-group>.form-select:focus,.input-group>.form-floating:focus-within{z-index:5}.input-group .btn{position:relative;z-index:2}.input-group .btn:focus{z-index:5}.input-group-text{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#343a40;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid #dee2e6}.input-group-lg>.form-control,.input-group-lg>.form-select,.input-group-lg>.input-group-text,.input-group-lg>.btn{padding:.5rem 1rem;font-size:1.25rem}.input-group-sm>.form-control,.input-group-sm>.form-select,.input-group-sm>.input-group-text,.input-group-sm>.btn{padding:.25rem .5rem;font-size:0.875rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-left:calc(1px*-1)}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#3fb618}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#3fb618}.was-validated :valid~.valid-feedback,.was-validated :valid~.valid-tooltip,.is-valid~.valid-feedback,.is-valid~.valid-tooltip{display:block}.was-validated .form-control:valid,.form-control.is-valid{border-color:#3fb618;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:valid:focus,.form-control.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated textarea.form-control:valid,textarea.form-control.is-valid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:valid,.form-select.is-valid{border-color:#3fb618}.was-validated .form-select:valid:not([multiple]):not([size]),.was-validated .form-select:valid:not([multiple])[size="1"],.form-select.is-valid:not([multiple]):not([size]),.form-select.is-valid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%233fb618' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:valid:focus,.form-select.is-valid:focus{border-color:#3fb618;box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-control-color:valid,.form-control-color.is-valid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:valid,.form-check-input.is-valid{border-color:#3fb618}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#3fb618}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(63,182,24,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#3fb618}.form-check-inline .form-check-input~.valid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):valid,.input-group>.form-control:not(:focus).is-valid,.was-validated .input-group>.form-select:not(:focus):valid,.input-group>.form-select:not(:focus).is-valid,.was-validated .input-group>.form-floating:not(:focus-within):valid,.input-group>.form-floating:not(:focus-within).is-valid{z-index:3}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#ff0039}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.25rem .5rem;margin-top:.1rem;font-size:0.875rem;color:#fff;background-color:#ff0039}.was-validated :invalid~.invalid-feedback,.was-validated :invalid~.invalid-tooltip,.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}.was-validated .form-control:invalid,.form-control.is-invalid{border-color:#ff0039;padding-right:calc(1.5em + 0.75rem);background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right calc(0.375em + 0.1875rem) center;background-size:calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-control:invalid:focus,.form-control.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated textarea.form-control:invalid,textarea.form-control.is-invalid{padding-right:calc(1.5em + 0.75rem);background-position:top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem)}.was-validated .form-select:invalid,.form-select.is-invalid{border-color:#ff0039}.was-validated .form-select:invalid:not([multiple]):not([size]),.was-validated .form-select:invalid:not([multiple])[size="1"],.form-select.is-invalid:not([multiple]):not([size]),.form-select.is-invalid:not([multiple])[size="1"]{--bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23ff0039'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23ff0039' stroke='none'/%3e%3c/svg%3e");padding-right:4.125rem;background-position:right .75rem center,center right 2.25rem;background-size:16px 12px,calc(0.75em + 0.375rem) calc(0.75em + 0.375rem)}.was-validated .form-select:invalid:focus,.form-select.is-invalid:focus{border-color:#ff0039;box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-control-color:invalid,.form-control-color.is-invalid{width:calc(3rem + calc(1.5em + 0.75rem))}.was-validated .form-check-input:invalid,.form-check-input.is-invalid{border-color:#ff0039}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#ff0039}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(255,0,57,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#ff0039}.form-check-inline .form-check-input~.invalid-feedback{margin-left:.5em}.was-validated .input-group>.form-control:not(:focus):invalid,.input-group>.form-control:not(:focus).is-invalid,.was-validated .input-group>.form-select:not(:focus):invalid,.input-group>.form-select:not(:focus).is-invalid,.was-validated .input-group>.form-floating:not(:focus-within):invalid,.input-group>.form-floating:not(:focus-within).is-invalid{z-index:4}.btn{--bs-btn-padding-x: 0.75rem;--bs-btn-padding-y: 0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight: 400;--bs-btn-line-height: 1.5;--bs-btn-color: #343a40;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.25rem;--bs-btn-hover-border-color: transparent;--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity: 0.65;--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y) var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;border:var(--bs-btn-border-width) solid var(--bs-btn-border-color);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn-check+.btn:hover{color:var(--bs-btn-color);background-color:var(--bs-btn-bg);border-color:var(--bs-btn-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:focus-visible+.btn{border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}.btn-check:checked+.btn,:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}.btn-check:checked+.btn:focus-visible,:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled,.btn.disabled,fieldset:disabled .btn{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.btn-default{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-primary{--bs-btn-color: #fff;--bs-btn-bg: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #216dc1;--bs-btn-hover-border-color: #1f66b6;--bs-btn-focus-shadow-rgb: 71, 147, 231;--bs-btn-active-color: #fff;--bs-btn-active-bg: #1f66b6;--bs-btn-active-border-color: #1d60aa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #2780e3;--bs-btn-disabled-border-color: #2780e3}.btn-secondary{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2c3136;--bs-btn-hover-border-color: #2a2e33;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2a2e33;--bs-btn-active-border-color: #272c30;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-success{--bs-btn-color: #fff;--bs-btn-bg: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #369b14;--bs-btn-hover-border-color: #329213;--bs-btn-focus-shadow-rgb: 92, 193, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #329213;--bs-btn-active-border-color: #2f8912;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #3fb618;--bs-btn-disabled-border-color: #3fb618}.btn-info{--bs-btn-color: #fff;--bs-btn-bg: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #82479f;--bs-btn-hover-border-color: #7a4396;--bs-btn-focus-shadow-rgb: 168, 110, 197;--bs-btn-active-color: #fff;--bs-btn-active-bg: #7a4396;--bs-btn-active-border-color: #733f8c;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #9954bb;--bs-btn-disabled-border-color: #9954bb}.btn-warning{--bs-btn-color: #fff;--bs-btn-bg: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d96314;--bs-btn-hover-border-color: #cc5e13;--bs-btn-focus-shadow-rgb: 255, 138, 59;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc5e13;--bs-btn-active-border-color: #bf5812;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff7518;--bs-btn-disabled-border-color: #ff7518}.btn-danger{--bs-btn-color: #fff;--bs-btn-bg: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #d90030;--bs-btn-hover-border-color: #cc002e;--bs-btn-focus-shadow-rgb: 255, 38, 87;--bs-btn-active-color: #fff;--bs-btn-active-bg: #cc002e;--bs-btn-active-border-color: #bf002b;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #ff0039;--bs-btn-disabled-border-color: #ff0039}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #d3d4d5;--bs-btn-hover-border-color: #c6c7c8;--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: #c6c7c8;--bs-btn-active-border-color: #babbbc;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #f8f9fa;--bs-btn-disabled-border-color: #f8f9fa}.btn-dark{--bs-btn-color: #fff;--bs-btn-bg: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #52585d;--bs-btn-hover-border-color: #484e53;--bs-btn-focus-shadow-rgb: 82, 88, 93;--bs-btn-active-color: #fff;--bs-btn-active-bg: #5d6166;--bs-btn-active-border-color: #484e53;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #fff;--bs-btn-disabled-bg: #343a40;--bs-btn-disabled-border-color: #343a40}.btn-outline-default{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #2780e3;--bs-btn-border-color: #2780e3;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #2780e3;--bs-btn-hover-border-color: #2780e3;--bs-btn-focus-shadow-rgb: 39, 128, 227;--bs-btn-active-color: #fff;--bs-btn-active-bg: #2780e3;--bs-btn-active-border-color: #2780e3;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #2780e3;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #2780e3;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #3fb618;--bs-btn-border-color: #3fb618;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #3fb618;--bs-btn-hover-border-color: #3fb618;--bs-btn-focus-shadow-rgb: 63, 182, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #3fb618;--bs-btn-active-border-color: #3fb618;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #3fb618;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #3fb618;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #9954bb;--bs-btn-border-color: #9954bb;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #9954bb;--bs-btn-hover-border-color: #9954bb;--bs-btn-focus-shadow-rgb: 153, 84, 187;--bs-btn-active-color: #fff;--bs-btn-active-bg: #9954bb;--bs-btn-active-border-color: #9954bb;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #9954bb;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #9954bb;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ff7518;--bs-btn-border-color: #ff7518;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff7518;--bs-btn-hover-border-color: #ff7518;--bs-btn-focus-shadow-rgb: 255, 117, 24;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff7518;--bs-btn-active-border-color: #ff7518;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff7518;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff7518;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #ff0039;--bs-btn-border-color: #ff0039;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #ff0039;--bs-btn-hover-border-color: #ff0039;--bs-btn-focus-shadow-rgb: 255, 0, 57;--bs-btn-active-color: #fff;--bs-btn-active-bg: #ff0039;--bs-btn-active-border-color: #ff0039;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ff0039;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ff0039;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-light{--bs-btn-color: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #f8f9fa;--bs-btn-hover-border-color: #f8f9fa;--bs-btn-focus-shadow-rgb: 248, 249, 250;--bs-btn-active-color: #000;--bs-btn-active-bg: #f8f9fa;--bs-btn-active-border-color: #f8f9fa;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #f8f9fa;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #f8f9fa;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-dark{--bs-btn-color: #343a40;--bs-btn-border-color: #343a40;--bs-btn-hover-color: #fff;--bs-btn-hover-bg: #343a40;--bs-btn-hover-border-color: #343a40;--bs-btn-focus-shadow-rgb: 52, 58, 64;--bs-btn-active-color: #fff;--bs-btn-active-bg: #343a40;--bs-btn-active-border-color: #343a40;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #343a40;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #343a40;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #2761e3;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: #1f4eb6;--bs-btn-hover-border-color: transparent;--bs-btn-active-color: #1f4eb6;--bs-btn-active-border-color: transparent;--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-border-color: transparent;--bs-btn-box-shadow: 0 0 0 #000;--bs-btn-focus-shadow-rgb: 71, 121, 231;text-decoration:underline;-webkit-text-decoration:underline;-moz-text-decoration:underline;-ms-text-decoration:underline;-o-text-decoration:underline}.btn-link:focus-visible{color:var(--bs-btn-color)}.btn-link:hover{color:var(--bs-btn-hover-color)}.btn-lg,.btn-group-lg>.btn{--bs-btn-padding-y: 0.5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size:1.25rem;--bs-btn-border-radius: 0.5rem}.btn-sm,.btn-group-sm>.btn{--bs-btn-padding-y: 0.25rem;--bs-btn-padding-x: 0.5rem;--bs-btn-font-size:0.875rem;--bs-btn-border-radius: 0.2em}.fade{transition:opacity .15s linear}@media(prefers-reduced-motion: reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{height:0;overflow:hidden;transition:height .2s ease}@media(prefers-reduced-motion: reduce){.collapsing{transition:none}}.collapsing.collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion: reduce){.collapsing.collapse-horizontal{transition:none}}.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid rgba(0,0,0,0);border-bottom:0;border-left:.3em solid rgba(0,0,0,0)}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex: 1000;--bs-dropdown-min-width: 10rem;--bs-dropdown-padding-x: 0;--bs-dropdown-padding-y: 0.5rem;--bs-dropdown-spacer: 0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color: #343a40;--bs-dropdown-bg: #fff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.25rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.25rem - 1px);--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-divider-margin-y: 0.5rem;--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color: #343a40;--bs-dropdown-link-hover-color: #343a40;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: rgba(52, 58, 64, 0.5);--bs-dropdown-item-padding-x: 1rem;--bs-dropdown-item-padding-y: 0.25rem;--bs-dropdown-header-color: #6c757d;--bs-dropdown-header-padding-x: 1rem;--bs-dropdown-header-padding-y: 0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position: start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position: end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media(min-width: 576px){.dropdown-menu-sm-start{--bs-position: start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position: end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 768px){.dropdown-menu-md-start{--bs-position: start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position: end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 992px){.dropdown-menu-lg-start{--bs-position: start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position: end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1200px){.dropdown-menu-xl-start{--bs-position: start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position: end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media(min-width: 1400px){.dropdown-menu-xxl-start{--bs-position: start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position: end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid rgba(0,0,0,0);border-bottom:.3em solid;border-left:.3em solid rgba(0,0,0,0)}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:0;border-bottom:.3em solid rgba(0,0,0,0);border-left:.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid rgba(0,0,0,0);border-right:.3em solid;border-bottom:.3em solid rgba(0,0,0,0)}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap;background-color:rgba(0,0,0,0);border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:rgba(0,0,0,0)}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color: #dee2e6;--bs-dropdown-bg: #343a40;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-box-shadow: ;--bs-dropdown-link-color: #dee2e6;--bs-dropdown-link-hover-color: #fff;--bs-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color: #fff;--bs-dropdown-link-active-bg: #2780e3;--bs-dropdown-link-disabled-color: #adb5bd;--bs-dropdown-header-color: #adb5bd}.btn-group,.btn-group-vertical{position:relative;display:inline-flex;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto}.btn-group>.btn-check:checked+.btn,.btn-group>.btn-check:focus+.btn,.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn-check:checked+.btn,.btn-group-vertical>.btn-check:focus+.btn,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:1}.btn-toolbar{display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;justify-content:flex-start;-webkit-justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after,.dropend .dropdown-toggle-split::after{margin-left:0}.dropstart .dropdown-toggle-split::before{margin-right:0}.btn-sm+.dropdown-toggle-split,.btn-group-sm>.btn+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-lg+.dropdown-toggle-split,.btn-group-lg>.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{flex-direction:column;-webkit-flex-direction:column;align-items:flex-start;-webkit-align-items:flex-start;justify-content:center;-webkit-justify-content:center}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group{width:100%}.btn-group-vertical>.btn:not(:first-child),.btn-group-vertical>.btn-group:not(:first-child){margin-top:calc(1px*-1)}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #2761e3;--bs-nav-link-hover-color: #1f4eb6;--bs-nav-link-disabled-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion: reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(39,128,227,.25)}.nav-link.disabled,.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.nav-tabs{--bs-nav-tabs-border-width: 1px;--bs-nav-tabs-border-color: #dee2e6;--bs-nav-tabs-border-radius: 0.25rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6;--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #fff;--bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff;border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}.nav-tabs .nav-link{margin-bottom:calc(-1*var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid rgba(0,0,0,0)}.nav-tabs .nav-link:hover,.nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}.nav-tabs .dropdown-menu{margin-top:calc(-1*var(--bs-nav-tabs-border-width))}.nav-pills{--bs-nav-pills-border-radius: 0.25rem;--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #2780e3}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}.nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: 0.125rem;--bs-nav-underline-link-active-color: #000;gap:var(--bs-nav-underline-gap)}.nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid rgba(0,0,0,0)}.nav-underline .nav-link:hover,.nav-underline .nav-link:focus{border-bottom-color:currentcolor}.nav-underline .nav-link.active,.nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}.nav-fill>.nav-link,.nav-fill .nav-item{flex:1 1 auto;-webkit-flex:1 1 auto;text-align:center}.nav-justified>.nav-link,.nav-justified .nav-item{flex-basis:0;-webkit-flex-basis:0;flex-grow:1;-webkit-flex-grow:1;text-align:center}.nav-fill .nav-item .nav-link,.nav-justified .nav-item .nav-link{width:100%}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{--bs-navbar-padding-x: 0;--bs-navbar-padding-y: 0.5rem;--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-nav-link-padding-x: 0.5rem;--bs-navbar-toggler-padding-y: 0.25;--bs-navbar-toggler-padding-x: 0;--bs-navbar-toggler-font-size: 1.25rem;--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-border-radius: 0.25rem;--bs-navbar-toggler-focus-width: 0.25rem;--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;position:relative;display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-sm,.navbar>.container-md,.navbar>.container-lg,.navbar>.container-xl,.navbar>.container-xxl{display:flex;display:-webkit-flex;flex-wrap:inherit;-webkit-flex-wrap:inherit;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x: 0;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-navbar-color);--bs-nav-link-hover-color: var(--bs-navbar-hover-color);--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.active,.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-text{padding-top:.5rem;padding-bottom:.5rem;color:var(--bs-navbar-color)}.navbar-text a,.navbar-text a:hover,.navbar-text a:focus{color:var(--bs-navbar-active-color)}.navbar-collapse{flex-basis:100%;-webkit-flex-basis:100%;flex-grow:1;-webkit-flex-grow:1;align-items:center;-webkit-align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:rgba(0,0,0,0);border:var(--bs-border-width) solid var(--bs-navbar-toggler-border-color);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion: reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:center;background-size:100%}.navbar-nav-scroll{max-height:var(--bs-scroll-height, 75vh);overflow-y:auto}@media(min-width: 576px){.navbar-expand-sm{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-sm .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-sm .navbar-nav-scroll{overflow:visible}.navbar-expand-sm .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-sm .offcanvas .offcanvas-header{display:none}.navbar-expand-sm .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 768px){.navbar-expand-md{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-md .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-md .navbar-nav-scroll{overflow:visible}.navbar-expand-md .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-md .offcanvas .offcanvas-header{display:none}.navbar-expand-md .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 992px){.navbar-expand-lg{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-nav-scroll{overflow:visible}.navbar-expand-lg .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-lg .offcanvas .offcanvas-header{display:none}.navbar-expand-lg .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1200px){.navbar-expand-xl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xl .navbar-nav-scroll{overflow:visible}.navbar-expand-xl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xl .offcanvas .offcanvas-header{display:none}.navbar-expand-xl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}@media(min-width: 1400px){.navbar-expand-xxl{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand-xxl .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand-xxl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xxl .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-xxl .navbar-nav-scroll{overflow:visible}.navbar-expand-xxl .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand-xxl .navbar-toggler{display:none}.navbar-expand-xxl .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand-xxl .offcanvas .offcanvas-header{display:none}.navbar-expand-xxl .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}}.navbar-expand{flex-wrap:nowrap;-webkit-flex-wrap:nowrap;justify-content:flex-start;-webkit-justify-content:flex-start}.navbar-expand .navbar-nav{flex-direction:row;-webkit-flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand .navbar-nav-scroll{overflow:visible}.navbar-expand .navbar-collapse{display:flex !important;display:-webkit-flex !important;flex-basis:auto;-webkit-flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .offcanvas{position:static;z-index:auto;flex-grow:1;-webkit-flex-grow:1;width:auto !important;height:auto !important;visibility:visible !important;background-color:rgba(0,0,0,0) !important;border:0 !important;transform:none !important;transition:none}.navbar-expand .offcanvas .offcanvas-header{display:none}.navbar-expand .offcanvas .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible}.navbar-dark,.navbar[data-bs-theme=dark]{--bs-navbar-color: #545555;--bs-navbar-hover-color: rgba(31, 78, 182, 0.8);--bs-navbar-disabled-color: rgba(84, 85, 85, 0.75);--bs-navbar-active-color: #1f4eb6;--bs-navbar-brand-color: #545555;--bs-navbar-brand-hover-color: #1f4eb6;--bs-navbar-toggler-border-color: rgba(84, 85, 85, 0);--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}[data-bs-theme=dark] .navbar-toggler-icon{--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%23545555' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e")}.card{--bs-card-spacer-y: 1rem;--bs-card-spacer-x: 1rem;--bs-card-title-spacer-y: 0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width: 1px;--bs-card-border-color: rgba(0, 0, 0, 0.175);--bs-card-border-radius: 0.25rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.25rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(52, 58, 64, 0.25);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #fff;--bs-card-img-overlay-padding: 1rem;--bs-card-group-margin: 0.75rem;position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card>hr{margin-right:0;margin-left:0}.card>.list-group{border-top:inherit;border-bottom:inherit}.card>.list-group:first-child{border-top-width:0}.card>.list-group:last-child{border-bottom-width:0}.card>.card-header+.list-group,.card>.list-group+.card-footer{border-top:0}.card-body{flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x);color:var(--bs-card-color)}.card-title{margin-bottom:var(--bs-card-title-spacer-y);color:var(--bs-card-title-color)}.card-subtitle{margin-top:calc(-0.5*var(--bs-card-title-spacer-y));margin-bottom:0;color:var(--bs-card-subtitle-color)}.card-text:last-child{margin-bottom:0}.card-link+.card-link{margin-left:var(--bs-card-spacer-x)}.card-header{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);margin-bottom:0;color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-bottom:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-footer{padding:var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x);color:var(--bs-card-cap-color);background-color:var(--bs-card-cap-bg);border-top:var(--bs-card-border-width) solid var(--bs-card-border-color)}.card-header-tabs{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-bottom:calc(-1*var(--bs-card-cap-padding-y));margin-left:calc(-0.5*var(--bs-card-cap-padding-x));border-bottom:0}.card-header-tabs .nav-link.active{background-color:var(--bs-card-bg);border-bottom-color:var(--bs-card-bg)}.card-header-pills{margin-right:calc(-0.5*var(--bs-card-cap-padding-x));margin-left:calc(-0.5*var(--bs-card-cap-padding-x))}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:var(--bs-card-img-overlay-padding)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-group>.card{margin-bottom:var(--bs-card-group-margin)}@media(min-width: 576px){.card-group{display:flex;display:-webkit-flex;flex-flow:row wrap;-webkit-flex-flow:row wrap}.card-group>.card{flex:1 0 0%;-webkit-flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}}.accordion{--bs-accordion-color: #343a40;--bs-accordion-bg: #fff;--bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;--bs-accordion-border-color: #dee2e6;--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.25rem;--bs-accordion-inner-border-radius: calc(0.25rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #343a40;--bs-accordion-btn-bg: #fff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23343a40'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-icon-width: 1.25rem;--bs-accordion-btn-icon-transform: rotate(-180deg);--bs-accordion-btn-icon-transition: transform 0.2s ease-in-out;--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%2310335b'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-focus-border-color: #93c0f1;--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: #10335b;--bs-accordion-active-bg: #d4e6f9}.accordion-button{position:relative;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;width:100%;padding:var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x);font-size:1rem;color:var(--bs-accordion-btn-color);text-align:left;background-color:var(--bs-accordion-btn-bg);border:0;overflow-anchor:none;transition:var(--bs-accordion-transition)}@media(prefers-reduced-motion: reduce){.accordion-button{transition:none}}.accordion-button:not(.collapsed){color:var(--bs-accordion-active-color);background-color:var(--bs-accordion-active-bg);box-shadow:inset 0 calc(-1*var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color)}.accordion-button:not(.collapsed)::after{background-image:var(--bs-accordion-btn-active-icon);transform:var(--bs-accordion-btn-icon-transform)}.accordion-button::after{flex-shrink:0;-webkit-flex-shrink:0;width:var(--bs-accordion-btn-icon-width);height:var(--bs-accordion-btn-icon-width);margin-left:auto;content:"";background-image:var(--bs-accordion-btn-icon);background-repeat:no-repeat;background-size:var(--bs-accordion-btn-icon-width);transition:var(--bs-accordion-btn-icon-transition)}@media(prefers-reduced-motion: reduce){.accordion-button::after{transition:none}}.accordion-button:hover{z-index:2}.accordion-button:focus{z-index:3;border-color:var(--bs-accordion-btn-focus-border-color);outline:0;box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.accordion-header{margin-bottom:0}.accordion-item{color:var(--bs-accordion-color);background-color:var(--bs-accordion-bg);border:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.accordion-item:not(:first-of-type){border-top:0}.accordion-body{padding:var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x)}.accordion-flush .accordion-collapse{border-width:0}.accordion-flush .accordion-item{border-right:0;border-left:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}[data-bs-theme=dark] .accordion-button::after{--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%237db3ee'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.breadcrumb{--bs-breadcrumb-padding-x: 0;--bs-breadcrumb-padding-y: 0;--bs-breadcrumb-margin-bottom: 1rem;--bs-breadcrumb-bg: ;--bs-breadcrumb-border-radius: ;--bs-breadcrumb-divider-color: rgba(52, 58, 64, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(52, 58, 64, 0.75);display:flex;display:-webkit-flex;flex-wrap:wrap;-webkit-flex-wrap:wrap;padding:var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x);margin-bottom:var(--bs-breadcrumb-margin-bottom);font-size:var(--bs-breadcrumb-font-size);list-style:none;background-color:var(--bs-breadcrumb-bg)}.breadcrumb-item+.breadcrumb-item{padding-left:var(--bs-breadcrumb-item-padding-x)}.breadcrumb-item+.breadcrumb-item::before{float:left;padding-right:var(--bs-breadcrumb-item-padding-x);color:var(--bs-breadcrumb-divider-color);content:var(--bs-breadcrumb-divider, ">") /* rtl: var(--bs-breadcrumb-divider, ">") */}.breadcrumb-item.active{color:var(--bs-breadcrumb-item-active-color)}.pagination{--bs-pagination-padding-x: 0.75rem;--bs-pagination-padding-y: 0.375rem;--bs-pagination-font-size:1rem;--bs-pagination-color: #2761e3;--bs-pagination-bg: #fff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: #dee2e6;--bs-pagination-border-radius: 0.25rem;--bs-pagination-hover-color: #1f4eb6;--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: #dee2e6;--bs-pagination-focus-color: #1f4eb6;--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-pagination-active-color: #fff;--bs-pagination-active-bg: #2780e3;--bs-pagination-active-border-color: #2780e3;--bs-pagination-disabled-color: rgba(52, 58, 64, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: #dee2e6;display:flex;display:-webkit-flex;padding-left:0;list-style:none}.page-link{position:relative;display:block;padding:var(--bs-pagination-padding-y) var(--bs-pagination-padding-x);font-size:var(--bs-pagination-font-size);color:var(--bs-pagination-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-pagination-bg);border:var(--bs-pagination-border-width) solid var(--bs-pagination-border-color);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion: reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--bs-pagination-hover-color);background-color:var(--bs-pagination-hover-bg);border-color:var(--bs-pagination-hover-border-color)}.page-link:focus{z-index:3;color:var(--bs-pagination-focus-color);background-color:var(--bs-pagination-focus-bg);outline:0;box-shadow:var(--bs-pagination-focus-box-shadow)}.page-link.active,.active>.page-link{z-index:3;color:var(--bs-pagination-active-color);background-color:var(--bs-pagination-active-bg);border-color:var(--bs-pagination-active-border-color)}.page-link.disabled,.disabled>.page-link{color:var(--bs-pagination-disabled-color);pointer-events:none;background-color:var(--bs-pagination-disabled-bg);border-color:var(--bs-pagination-disabled-border-color)}.page-item:not(:first-child) .page-link{margin-left:calc(1px*-1)}.pagination-lg{--bs-pagination-padding-x: 1.5rem;--bs-pagination-padding-y: 0.75rem;--bs-pagination-font-size:1.25rem;--bs-pagination-border-radius: 0.5rem}.pagination-sm{--bs-pagination-padding-x: 0.5rem;--bs-pagination-padding-y: 0.25rem;--bs-pagination-font-size:0.875rem;--bs-pagination-border-radius: 0.2em}.badge{--bs-badge-padding-x: 0.65em;--bs-badge-padding-y: 0.35em;--bs-badge-font-size:0.75em;--bs-badge-font-weight: 700;--bs-badge-color: #fff;--bs-badge-border-radius: 0.25rem;display:inline-block;padding:var(--bs-badge-padding-y) var(--bs-badge-padding-x);font-size:var(--bs-badge-font-size);font-weight:var(--bs-badge-font-weight);line-height:1;color:var(--bs-badge-color);text-align:center;white-space:nowrap;vertical-align:baseline}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.alert{--bs-alert-bg: transparent;--bs-alert-padding-x: 1rem;--bs-alert-padding-y: 1rem;--bs-alert-margin-bottom: 1rem;--bs-alert-color: inherit;--bs-alert-border-color: transparent;--bs-alert-border: 0 solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.25rem;--bs-alert-link-color: inherit;position:relative;padding:var(--bs-alert-padding-y) var(--bs-alert-padding-x);margin-bottom:var(--bs-alert-margin-bottom);color:var(--bs-alert-color);background-color:var(--bs-alert-bg);border:var(--bs-alert-border)}.alert-heading{color:inherit}.alert-link{font-weight:700;color:var(--bs-alert-link-color)}.alert-dismissible{padding-right:3rem}.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:1.25rem 1rem}.alert-default{--bs-alert-color: var(--bs-default-text-emphasis);--bs-alert-bg: var(--bs-default-bg-subtle);--bs-alert-border-color: var(--bs-default-border-subtle);--bs-alert-link-color: var(--bs-default-text-emphasis)}.alert-primary{--bs-alert-color: var(--bs-primary-text-emphasis);--bs-alert-bg: var(--bs-primary-bg-subtle);--bs-alert-border-color: var(--bs-primary-border-subtle);--bs-alert-link-color: var(--bs-primary-text-emphasis)}.alert-secondary{--bs-alert-color: var(--bs-secondary-text-emphasis);--bs-alert-bg: var(--bs-secondary-bg-subtle);--bs-alert-border-color: var(--bs-secondary-border-subtle);--bs-alert-link-color: var(--bs-secondary-text-emphasis)}.alert-success{--bs-alert-color: var(--bs-success-text-emphasis);--bs-alert-bg: var(--bs-success-bg-subtle);--bs-alert-border-color: var(--bs-success-border-subtle);--bs-alert-link-color: var(--bs-success-text-emphasis)}.alert-info{--bs-alert-color: var(--bs-info-text-emphasis);--bs-alert-bg: var(--bs-info-bg-subtle);--bs-alert-border-color: var(--bs-info-border-subtle);--bs-alert-link-color: var(--bs-info-text-emphasis)}.alert-warning{--bs-alert-color: var(--bs-warning-text-emphasis);--bs-alert-bg: var(--bs-warning-bg-subtle);--bs-alert-border-color: var(--bs-warning-border-subtle);--bs-alert-link-color: var(--bs-warning-text-emphasis)}.alert-danger{--bs-alert-color: var(--bs-danger-text-emphasis);--bs-alert-bg: var(--bs-danger-bg-subtle);--bs-alert-border-color: var(--bs-danger-border-subtle);--bs-alert-link-color: var(--bs-danger-text-emphasis)}.alert-light{--bs-alert-color: var(--bs-light-text-emphasis);--bs-alert-bg: var(--bs-light-bg-subtle);--bs-alert-border-color: var(--bs-light-border-subtle);--bs-alert-link-color: var(--bs-light-text-emphasis)}.alert-dark{--bs-alert-color: var(--bs-dark-text-emphasis);--bs-alert-bg: var(--bs-dark-bg-subtle);--bs-alert-border-color: var(--bs-dark-border-subtle);--bs-alert-link-color: var(--bs-dark-text-emphasis)}@keyframes progress-bar-stripes{0%{background-position-x:.5rem}}.progress,.progress-stacked{--bs-progress-height: 0.5rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.25rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #fff;--bs-progress-bar-bg: #2780e3;--bs-progress-bar-transition: width 0.6s ease;display:flex;display:-webkit-flex;height:var(--bs-progress-height);overflow:hidden;font-size:var(--bs-progress-font-size);background-color:var(--bs-progress-bg)}.progress-bar{display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;overflow:hidden;color:var(--bs-progress-bar-color);text-align:center;white-space:nowrap;background-color:var(--bs-progress-bar-bg);transition:var(--bs-progress-bar-transition)}@media(prefers-reduced-motion: reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size:var(--bs-progress-height) var(--bs-progress-height)}.progress-stacked>.progress{overflow:visible}.progress-stacked>.progress>.progress-bar{width:100%}.progress-bar-animated{animation:1s linear infinite progress-bar-stripes}@media(prefers-reduced-motion: reduce){.progress-bar-animated{animation:none}}.list-group{--bs-list-group-color: #343a40;--bs-list-group-bg: #fff;--bs-list-group-border-color: #dee2e6;--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.25rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(52, 58, 64, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #343a40;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(52, 58, 64, 0.75);--bs-list-group-disabled-bg: #fff;--bs-list-group-active-color: #fff;--bs-list-group-active-bg: #2780e3;--bs-list-group-active-border-color: #2780e3;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0}.list-group-numbered{list-style-type:none;counter-reset:section}.list-group-numbered>.list-group-item::before{content:counters(section, ".") ". ";counter-increment:section}.list-group-item-action{width:100%;color:var(--bs-list-group-action-color);text-align:inherit}.list-group-item-action:hover,.list-group-item-action:focus{z-index:1;color:var(--bs-list-group-action-hover-color);text-decoration:none;background-color:var(--bs-list-group-action-hover-bg)}.list-group-item-action:active{color:var(--bs-list-group-action-active-color);background-color:var(--bs-list-group-action-active-bg)}.list-group-item{position:relative;display:block;padding:var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x);color:var(--bs-list-group-color);text-decoration:none;-webkit-text-decoration:none;-moz-text-decoration:none;-ms-text-decoration:none;-o-text-decoration:none;background-color:var(--bs-list-group-bg);border:var(--bs-list-group-border-width) solid var(--bs-list-group-border-color)}.list-group-item.disabled,.list-group-item:disabled{color:var(--bs-list-group-disabled-color);pointer-events:none;background-color:var(--bs-list-group-disabled-bg)}.list-group-item.active{z-index:2;color:var(--bs-list-group-active-color);background-color:var(--bs-list-group-active-bg);border-color:var(--bs-list-group-active-border-color)}.list-group-item+.list-group-item{border-top-width:0}.list-group-item+.list-group-item.active{margin-top:calc(-1*var(--bs-list-group-border-width));border-top-width:var(--bs-list-group-border-width)}.list-group-horizontal{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal>.list-group-item.active{margin-top:0}.list-group-horizontal>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}@media(min-width: 576px){.list-group-horizontal-sm{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-sm>.list-group-item.active{margin-top:0}.list-group-horizontal-sm>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-sm>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 768px){.list-group-horizontal-md{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-md>.list-group-item.active{margin-top:0}.list-group-horizontal-md>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-md>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 992px){.list-group-horizontal-lg{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-lg>.list-group-item.active{margin-top:0}.list-group-horizontal-lg>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-lg>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1200px){.list-group-horizontal-xl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xl>.list-group-item.active{margin-top:0}.list-group-horizontal-xl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}@media(min-width: 1400px){.list-group-horizontal-xxl{flex-direction:row;-webkit-flex-direction:row}.list-group-horizontal-xxl>.list-group-item.active{margin-top:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item{border-top-width:var(--bs-list-group-border-width);border-left-width:0}.list-group-horizontal-xxl>.list-group-item+.list-group-item.active{margin-left:calc(-1*var(--bs-list-group-border-width));border-left-width:var(--bs-list-group-border-width)}}.list-group-flush>.list-group-item{border-width:0 0 var(--bs-list-group-border-width)}.list-group-flush>.list-group-item:last-child{border-bottom-width:0}.list-group-item-default{--bs-list-group-color: var(--bs-default-text-emphasis);--bs-list-group-bg: var(--bs-default-bg-subtle);--bs-list-group-border-color: var(--bs-default-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-default-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-default-border-subtle);--bs-list-group-active-color: var(--bs-default-bg-subtle);--bs-list-group-active-bg: var(--bs-default-text-emphasis);--bs-list-group-active-border-color: var(--bs-default-text-emphasis)}.list-group-item-primary{--bs-list-group-color: var(--bs-primary-text-emphasis);--bs-list-group-bg: var(--bs-primary-bg-subtle);--bs-list-group-border-color: var(--bs-primary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-primary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-primary-border-subtle);--bs-list-group-active-color: var(--bs-primary-bg-subtle);--bs-list-group-active-bg: var(--bs-primary-text-emphasis);--bs-list-group-active-border-color: var(--bs-primary-text-emphasis)}.list-group-item-secondary{--bs-list-group-color: var(--bs-secondary-text-emphasis);--bs-list-group-bg: var(--bs-secondary-bg-subtle);--bs-list-group-border-color: var(--bs-secondary-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-secondary-border-subtle);--bs-list-group-active-color: var(--bs-secondary-bg-subtle);--bs-list-group-active-bg: var(--bs-secondary-text-emphasis);--bs-list-group-active-border-color: var(--bs-secondary-text-emphasis)}.list-group-item-success{--bs-list-group-color: var(--bs-success-text-emphasis);--bs-list-group-bg: var(--bs-success-bg-subtle);--bs-list-group-border-color: var(--bs-success-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-success-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-success-border-subtle);--bs-list-group-active-color: var(--bs-success-bg-subtle);--bs-list-group-active-bg: var(--bs-success-text-emphasis);--bs-list-group-active-border-color: var(--bs-success-text-emphasis)}.list-group-item-info{--bs-list-group-color: var(--bs-info-text-emphasis);--bs-list-group-bg: var(--bs-info-bg-subtle);--bs-list-group-border-color: var(--bs-info-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-info-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-info-border-subtle);--bs-list-group-active-color: var(--bs-info-bg-subtle);--bs-list-group-active-bg: var(--bs-info-text-emphasis);--bs-list-group-active-border-color: var(--bs-info-text-emphasis)}.list-group-item-warning{--bs-list-group-color: var(--bs-warning-text-emphasis);--bs-list-group-bg: var(--bs-warning-bg-subtle);--bs-list-group-border-color: var(--bs-warning-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-warning-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-warning-border-subtle);--bs-list-group-active-color: var(--bs-warning-bg-subtle);--bs-list-group-active-bg: var(--bs-warning-text-emphasis);--bs-list-group-active-border-color: var(--bs-warning-text-emphasis)}.list-group-item-danger{--bs-list-group-color: var(--bs-danger-text-emphasis);--bs-list-group-bg: var(--bs-danger-bg-subtle);--bs-list-group-border-color: var(--bs-danger-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-danger-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-danger-border-subtle);--bs-list-group-active-color: var(--bs-danger-bg-subtle);--bs-list-group-active-bg: var(--bs-danger-text-emphasis);--bs-list-group-active-border-color: var(--bs-danger-text-emphasis)}.list-group-item-light{--bs-list-group-color: var(--bs-light-text-emphasis);--bs-list-group-bg: var(--bs-light-bg-subtle);--bs-list-group-border-color: var(--bs-light-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-light-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-light-border-subtle);--bs-list-group-active-color: var(--bs-light-bg-subtle);--bs-list-group-active-bg: var(--bs-light-text-emphasis);--bs-list-group-active-border-color: var(--bs-light-text-emphasis)}.list-group-item-dark{--bs-list-group-color: var(--bs-dark-text-emphasis);--bs-list-group-bg: var(--bs-dark-bg-subtle);--bs-list-group-border-color: var(--bs-dark-border-subtle);--bs-list-group-action-hover-color: var(--bs-emphasis-color);--bs-list-group-action-hover-bg: var(--bs-dark-border-subtle);--bs-list-group-action-active-color: var(--bs-emphasis-color);--bs-list-group-action-active-bg: var(--bs-dark-border-subtle);--bs-list-group-active-color: var(--bs-dark-bg-subtle);--bs-list-group-active-bg: var(--bs-dark-text-emphasis);--bs-list-group-active-border-color: var(--bs-dark-text-emphasis)}.btn-close{--bs-btn-close-color: #000;--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");--bs-btn-close-opacity: 0.5;--bs-btn-close-hover-opacity: 0.75;--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(39, 128, 227, 0.25);--bs-btn-close-focus-opacity: 1;--bs-btn-close-disabled-opacity: 0.25;--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);box-sizing:content-box;width:1em;height:1em;padding:.25em .25em;color:var(--bs-btn-close-color);background:rgba(0,0,0,0) var(--bs-btn-close-bg) center/1em auto no-repeat;border:0;opacity:var(--bs-btn-close-opacity)}.btn-close:hover{color:var(--bs-btn-close-color);text-decoration:none;opacity:var(--bs-btn-close-hover-opacity)}.btn-close:focus{outline:0;box-shadow:var(--bs-btn-close-focus-shadow);opacity:var(--bs-btn-close-focus-opacity)}.btn-close:disabled,.btn-close.disabled{pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;opacity:var(--bs-btn-close-disabled-opacity)}.btn-close-white{filter:var(--bs-btn-close-white-filter)}[data-bs-theme=dark] .btn-close{filter:var(--bs-btn-close-white-filter)}.toast{--bs-toast-zindex: 1090;--bs-toast-padding-x: 0.75rem;--bs-toast-padding-y: 0.5rem;--bs-toast-spacing: 1.5rem;--bs-toast-max-width: 350px;--bs-toast-font-size:0.875rem;--bs-toast-color: ;--bs-toast-bg: rgba(255, 255, 255, 0.85);--bs-toast-border-width: 1px;--bs-toast-border-color: rgba(0, 0, 0, 0.175);--bs-toast-border-radius: 0.25rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(52, 58, 64, 0.75);--bs-toast-header-bg: rgba(255, 255, 255, 0.85);--bs-toast-header-border-color: rgba(0, 0, 0, 0.175);width:var(--bs-toast-max-width);max-width:100%;font-size:var(--bs-toast-font-size);color:var(--bs-toast-color);pointer-events:auto;background-color:var(--bs-toast-bg);background-clip:padding-box;border:var(--bs-toast-border-width) solid var(--bs-toast-border-color);box-shadow:var(--bs-toast-box-shadow)}.toast.showing{opacity:0}.toast:not(.show){display:none}.toast-container{--bs-toast-zindex: 1090;position:absolute;z-index:var(--bs-toast-zindex);width:max-content;width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:-o-max-content;max-width:100%;pointer-events:none}.toast-container>:not(:last-child){margin-bottom:var(--bs-toast-spacing)}.toast-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;padding:var(--bs-toast-padding-y) var(--bs-toast-padding-x);color:var(--bs-toast-header-color);background-color:var(--bs-toast-header-bg);background-clip:padding-box;border-bottom:var(--bs-toast-border-width) solid var(--bs-toast-header-border-color)}.toast-header .btn-close{margin-right:calc(-0.5*var(--bs-toast-padding-x));margin-left:var(--bs-toast-padding-x)}.toast-body{padding:var(--bs-toast-padding-x);word-wrap:break-word}.modal{--bs-modal-zindex: 1055;--bs-modal-width: 500px;--bs-modal-padding: 1rem;--bs-modal-margin: 0.5rem;--bs-modal-color: ;--bs-modal-bg: #fff;--bs-modal-border-color: rgba(0, 0, 0, 0.175);--bs-modal-border-width: 1px;--bs-modal-border-radius: 0.5rem;--bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-modal-inner-border-radius: calc(0.5rem - 1px);--bs-modal-header-padding-x: 1rem;--bs-modal-header-padding-y: 1rem;--bs-modal-header-padding: 1rem 1rem;--bs-modal-header-border-color: #dee2e6;--bs-modal-header-border-width: 1px;--bs-modal-title-line-height: 1.5;--bs-modal-footer-gap: 0.5rem;--bs-modal-footer-bg: ;--bs-modal-footer-border-color: #dee2e6;--bs-modal-footer-border-width: 1px;position:fixed;top:0;left:0;z-index:var(--bs-modal-zindex);display:none;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;outline:0}.modal-dialog{position:relative;width:auto;margin:var(--bs-modal-margin);pointer-events:none}.modal.fade .modal-dialog{transition:transform .3s ease-out;transform:translate(0, -50px)}@media(prefers-reduced-motion: reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{transform:none}.modal.modal-static .modal-dialog{transform:scale(1.02)}.modal-dialog-scrollable{height:calc(100% - var(--bs-modal-margin)*2)}.modal-dialog-scrollable .modal-content{max-height:100%;overflow:hidden}.modal-dialog-scrollable .modal-body{overflow-y:auto}.modal-dialog-centered{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;min-height:calc(100% - var(--bs-modal-margin)*2)}.modal-content{position:relative;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;width:100%;color:var(--bs-modal-color);pointer-events:auto;background-color:var(--bs-modal-bg);background-clip:padding-box;border:var(--bs-modal-border-width) solid var(--bs-modal-border-color);outline:0}.modal-backdrop{--bs-backdrop-zindex: 1050;--bs-backdrop-bg: #000;--bs-backdrop-opacity: 0.5;position:fixed;top:0;left:0;z-index:var(--bs-backdrop-zindex);width:100vw;height:100vh;background-color:var(--bs-backdrop-bg)}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:var(--bs-backdrop-opacity)}.modal-header{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-modal-header-padding);border-bottom:var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color)}.modal-header .btn-close{padding:calc(var(--bs-modal-header-padding-y)*.5) calc(var(--bs-modal-header-padding-x)*.5);margin:calc(-0.5*var(--bs-modal-header-padding-y)) calc(-0.5*var(--bs-modal-header-padding-x)) calc(-0.5*var(--bs-modal-header-padding-y)) auto}.modal-title{margin-bottom:0;line-height:var(--bs-modal-title-line-height)}.modal-body{position:relative;flex:1 1 auto;-webkit-flex:1 1 auto;padding:var(--bs-modal-padding)}.modal-footer{display:flex;display:-webkit-flex;flex-shrink:0;-webkit-flex-shrink:0;flex-wrap:wrap;-webkit-flex-wrap:wrap;align-items:center;-webkit-align-items:center;justify-content:flex-end;-webkit-justify-content:flex-end;padding:calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap)*.5);background-color:var(--bs-modal-footer-bg);border-top:var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color)}.modal-footer>*{margin:calc(var(--bs-modal-footer-gap)*.5)}@media(min-width: 576px){.modal{--bs-modal-margin: 1.75rem;--bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15)}.modal-dialog{max-width:var(--bs-modal-width);margin-right:auto;margin-left:auto}.modal-sm{--bs-modal-width: 300px}}@media(min-width: 992px){.modal-lg,.modal-xl{--bs-modal-width: 800px}}@media(min-width: 1200px){.modal-xl{--bs-modal-width: 1140px}}.modal-fullscreen{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen .modal-content{height:100%;border:0}.modal-fullscreen .modal-body{overflow-y:auto}@media(max-width: 575.98px){.modal-fullscreen-sm-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-sm-down .modal-content{height:100%;border:0}.modal-fullscreen-sm-down .modal-body{overflow-y:auto}}@media(max-width: 767.98px){.modal-fullscreen-md-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-md-down .modal-content{height:100%;border:0}.modal-fullscreen-md-down .modal-body{overflow-y:auto}}@media(max-width: 991.98px){.modal-fullscreen-lg-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-lg-down .modal-content{height:100%;border:0}.modal-fullscreen-lg-down .modal-body{overflow-y:auto}}@media(max-width: 1199.98px){.modal-fullscreen-xl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xl-down .modal-content{height:100%;border:0}.modal-fullscreen-xl-down .modal-body{overflow-y:auto}}@media(max-width: 1399.98px){.modal-fullscreen-xxl-down{width:100vw;max-width:none;height:100%;margin:0}.modal-fullscreen-xxl-down .modal-content{height:100%;border:0}.modal-fullscreen-xxl-down .modal-body{overflow-y:auto}}.tooltip{--bs-tooltip-zindex: 1080;--bs-tooltip-max-width: 200px;--bs-tooltip-padding-x: 0.5rem;--bs-tooltip-padding-y: 0.25rem;--bs-tooltip-margin: ;--bs-tooltip-font-size:0.875rem;--bs-tooltip-color: #fff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.25rem;--bs-tooltip-opacity: 0.9;--bs-tooltip-arrow-width: 0.8rem;--bs-tooltip-arrow-height: 0.4rem;z-index:var(--bs-tooltip-zindex);display:block;margin:var(--bs-tooltip-margin);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-tooltip-font-size);word-wrap:break-word;opacity:0}.tooltip.show{opacity:var(--bs-tooltip-opacity)}.tooltip .tooltip-arrow{display:block;width:var(--bs-tooltip-arrow-width);height:var(--bs-tooltip-arrow-height)}.tooltip .tooltip-arrow::before{position:absolute;content:"";border-color:rgba(0,0,0,0);border-style:solid}.bs-tooltip-top .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow{bottom:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-top .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before{top:-1px;border-width:var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-top-color:var(--bs-tooltip-bg)}.bs-tooltip-end .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow{left:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-end .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before{right:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width)*.5) 0;border-right-color:var(--bs-tooltip-bg)}.bs-tooltip-bottom .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow{top:calc(-1*var(--bs-tooltip-arrow-height))}.bs-tooltip-bottom .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before{bottom:-1px;border-width:0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-bottom-color:var(--bs-tooltip-bg)}.bs-tooltip-start .tooltip-arrow,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow{right:calc(-1*var(--bs-tooltip-arrow-height));width:var(--bs-tooltip-arrow-height);height:var(--bs-tooltip-arrow-width)}.bs-tooltip-start .tooltip-arrow::before,.bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before{left:-1px;border-width:calc(var(--bs-tooltip-arrow-width)*.5) 0 calc(var(--bs-tooltip-arrow-width)*.5) var(--bs-tooltip-arrow-height);border-left-color:var(--bs-tooltip-bg)}.tooltip-inner{max-width:var(--bs-tooltip-max-width);padding:var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x);color:var(--bs-tooltip-color);text-align:center;background-color:var(--bs-tooltip-bg)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #fff;--bs-popover-border-width: 1px;--bs-popover-border-color: rgba(0, 0, 0, 0.175);--bs-popover-border-radius: 0.5rem;--bs-popover-inner-border-radius: calc(0.5rem - 1px);--bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-popover-header-padding-x: 1rem;--bs-popover-header-padding-y: 0.5rem;--bs-popover-header-font-size:1rem;--bs-popover-header-color: inherit;--bs-popover-header-bg: #e9ecef;--bs-popover-body-padding-x: 1rem;--bs-popover-body-padding-y: 1rem;--bs-popover-body-color: #343a40;--bs-popover-arrow-width: 1rem;--bs-popover-arrow-height: 0.5rem;--bs-popover-arrow-border: var(--bs-popover-border-color);z-index:var(--bs-popover-zindex);display:block;max-width:var(--bs-popover-max-width);font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;white-space:normal;word-spacing:normal;line-break:auto;font-size:var(--bs-popover-font-size);word-wrap:break-word;background-color:var(--bs-popover-bg);background-clip:padding-box;border:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover .popover-arrow{display:block;width:var(--bs-popover-arrow-width);height:var(--bs-popover-arrow-height)}.popover .popover-arrow::before,.popover .popover-arrow::after{position:absolute;display:block;content:"";border-color:rgba(0,0,0,0);border-style:solid;border-width:0}.bs-popover-top>.popover-arrow,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow{bottom:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before,.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{border-width:var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-top>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::before{bottom:0;border-top-color:var(--bs-popover-arrow-border)}.bs-popover-top>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=top]>.popover-arrow::after{bottom:var(--bs-popover-border-width);border-top-color:var(--bs-popover-bg)}.bs-popover-end>.popover-arrow,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow{left:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before,.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width)*.5) 0}.bs-popover-end>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::before{left:0;border-right-color:var(--bs-popover-arrow-border)}.bs-popover-end>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=right]>.popover-arrow::after{left:var(--bs-popover-border-width);border-right-color:var(--bs-popover-bg)}.bs-popover-bottom>.popover-arrow,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow{top:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width))}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before,.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{border-width:0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-bottom>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::before{top:0;border-bottom-color:var(--bs-popover-arrow-border)}.bs-popover-bottom>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=bottom]>.popover-arrow::after{top:var(--bs-popover-border-width);border-bottom-color:var(--bs-popover-bg)}.bs-popover-bottom .popover-header::before,.bs-popover-auto[data-popper-placement^=bottom] .popover-header::before{position:absolute;top:0;left:50%;display:block;width:var(--bs-popover-arrow-width);margin-left:calc(-0.5*var(--bs-popover-arrow-width));content:"";border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-header-bg)}.bs-popover-start>.popover-arrow,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow{right:calc(-1*(var(--bs-popover-arrow-height)) - var(--bs-popover-border-width));width:var(--bs-popover-arrow-height);height:var(--bs-popover-arrow-width)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before,.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{border-width:calc(var(--bs-popover-arrow-width)*.5) 0 calc(var(--bs-popover-arrow-width)*.5) var(--bs-popover-arrow-height)}.bs-popover-start>.popover-arrow::before,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::before{right:0;border-left-color:var(--bs-popover-arrow-border)}.bs-popover-start>.popover-arrow::after,.bs-popover-auto[data-popper-placement^=left]>.popover-arrow::after{right:var(--bs-popover-border-width);border-left-color:var(--bs-popover-bg)}.popover-header{padding:var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x);margin-bottom:0;font-size:var(--bs-popover-header-font-size);color:var(--bs-popover-header-color);background-color:var(--bs-popover-header-bg);border-bottom:var(--bs-popover-border-width) solid var(--bs-popover-border-color)}.popover-header:empty{display:none}.popover-body{padding:var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x);color:var(--bs-popover-body-color)}.carousel{position:relative}.carousel.pointer-event{touch-action:pan-y;-webkit-touch-action:pan-y;-moz-touch-action:pan-y;-ms-touch-action:pan-y;-o-touch-action:pan-y}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner::after{display:block;clear:both;content:""}.carousel-item{position:relative;display:none;float:left;width:100%;margin-right:-100%;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden;transition:transform .6s ease-in-out}@media(prefers-reduced-motion: reduce){.carousel-item{transition:none}}.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}.carousel-item-next:not(.carousel-item-start),.active.carousel-item-end{transform:translateX(100%)}.carousel-item-prev:not(.carousel-item-end),.active.carousel-item-start{transform:translateX(-100%)}.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}.carousel-fade .carousel-item.active,.carousel-fade .carousel-item-next.carousel-item-start,.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:1}.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}@media(prefers-reduced-motion: reduce){.carousel-fade .active.carousel-item-start,.carousel-fade .active.carousel-item-end{transition:none}}.carousel-control-prev,.carousel-control-next{position:absolute;top:0;bottom:0;z-index:1;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;width:15%;padding:0;color:#fff;text-align:center;background:none;border:0;opacity:.5;transition:opacity .15s ease}@media(prefers-reduced-motion: reduce){.carousel-control-prev,.carousel-control-next{transition:none}}.carousel-control-prev:hover,.carousel-control-prev:focus,.carousel-control-next:hover,.carousel-control-next:focus{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-prev-icon,.carousel-control-next-icon{display:inline-block;width:2rem;height:2rem;background-repeat:no-repeat;background-position:50%;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e")}.carousel-control-next-icon{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e")}.carousel-indicators{position:absolute;right:0;bottom:0;left:0;z-index:2;display:flex;display:-webkit-flex;justify-content:center;-webkit-justify-content:center;padding:0;margin-right:15%;margin-bottom:1rem;margin-left:15%}.carousel-indicators [data-bs-target]{box-sizing:content-box;flex:0 1 auto;-webkit-flex:0 1 auto;width:30px;height:3px;padding:0;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:#fff;background-clip:padding-box;border:0;border-top:10px solid rgba(0,0,0,0);border-bottom:10px solid rgba(0,0,0,0);opacity:.5;transition:opacity .6s ease}@media(prefers-reduced-motion: reduce){.carousel-indicators [data-bs-target]{transition:none}}.carousel-indicators .active{opacity:1}.carousel-caption{position:absolute;right:15%;bottom:1.25rem;left:15%;padding-top:1.25rem;padding-bottom:1.25rem;color:#fff;text-align:center}.carousel-dark .carousel-control-prev-icon,.carousel-dark .carousel-control-next-icon{filter:invert(1) grayscale(100)}.carousel-dark .carousel-indicators [data-bs-target]{background-color:#000}.carousel-dark .carousel-caption{color:#000}[data-bs-theme=dark] .carousel .carousel-control-prev-icon,[data-bs-theme=dark] .carousel .carousel-control-next-icon,[data-bs-theme=dark].carousel .carousel-control-prev-icon,[data-bs-theme=dark].carousel .carousel-control-next-icon{filter:invert(1) grayscale(100)}[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target],[data-bs-theme=dark].carousel .carousel-indicators [data-bs-target]{background-color:#000}[data-bs-theme=dark] .carousel .carousel-caption,[data-bs-theme=dark].carousel .carousel-caption{color:#000}.spinner-grow,.spinner-border{display:inline-block;width:var(--bs-spinner-width);height:var(--bs-spinner-height);vertical-align:var(--bs-spinner-vertical-align);border-radius:50%;animation:var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name)}@keyframes spinner-border{to{transform:rotate(360deg) /* rtl:ignore */}}.spinner-border{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-border-width: 0.25em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-border;border:var(--bs-spinner-border-width) solid currentcolor;border-right-color:rgba(0,0,0,0)}.spinner-border-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem;--bs-spinner-border-width: 0.2em}@keyframes spinner-grow{0%{transform:scale(0)}50%{opacity:1;transform:none}}.spinner-grow{--bs-spinner-width: 2rem;--bs-spinner-height: 2rem;--bs-spinner-vertical-align: -0.125em;--bs-spinner-animation-speed: 0.75s;--bs-spinner-animation-name: spinner-grow;background-color:currentcolor;opacity:0}.spinner-grow-sm{--bs-spinner-width: 1rem;--bs-spinner-height: 1rem}@media(prefers-reduced-motion: reduce){.spinner-border,.spinner-grow{--bs-spinner-animation-speed: 1.5s}}.offcanvas,.offcanvas-xxl,.offcanvas-xl,.offcanvas-lg,.offcanvas-md,.offcanvas-sm{--bs-offcanvas-zindex: 1045;--bs-offcanvas-width: 400px;--bs-offcanvas-height: 30vh;--bs-offcanvas-padding-x: 1rem;--bs-offcanvas-padding-y: 1rem;--bs-offcanvas-color: #343a40;--bs-offcanvas-bg: #fff;--bs-offcanvas-border-width: 1px;--bs-offcanvas-border-color: rgba(0, 0, 0, 0.175);--bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-offcanvas-transition: transform 0.3s ease-in-out;--bs-offcanvas-title-line-height: 1.5}@media(max-width: 575.98px){.offcanvas-sm{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 575.98px)and (prefers-reduced-motion: reduce){.offcanvas-sm{transition:none}}@media(max-width: 575.98px){.offcanvas-sm.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-sm.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-sm.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-sm.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-sm.showing,.offcanvas-sm.show:not(.hiding){transform:none}.offcanvas-sm.showing,.offcanvas-sm.hiding,.offcanvas-sm.show{visibility:visible}}@media(min-width: 576px){.offcanvas-sm{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-sm .offcanvas-header{display:none}.offcanvas-sm .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 767.98px){.offcanvas-md{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 767.98px)and (prefers-reduced-motion: reduce){.offcanvas-md{transition:none}}@media(max-width: 767.98px){.offcanvas-md.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-md.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-md.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-md.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-md.showing,.offcanvas-md.show:not(.hiding){transform:none}.offcanvas-md.showing,.offcanvas-md.hiding,.offcanvas-md.show{visibility:visible}}@media(min-width: 768px){.offcanvas-md{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-md .offcanvas-header{display:none}.offcanvas-md .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 991.98px){.offcanvas-lg{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 991.98px)and (prefers-reduced-motion: reduce){.offcanvas-lg{transition:none}}@media(max-width: 991.98px){.offcanvas-lg.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-lg.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-lg.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-lg.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-lg.showing,.offcanvas-lg.show:not(.hiding){transform:none}.offcanvas-lg.showing,.offcanvas-lg.hiding,.offcanvas-lg.show{visibility:visible}}@media(min-width: 992px){.offcanvas-lg{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-lg .offcanvas-header{display:none}.offcanvas-lg .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1199.98px){.offcanvas-xl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1199.98px)and (prefers-reduced-motion: reduce){.offcanvas-xl{transition:none}}@media(max-width: 1199.98px){.offcanvas-xl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xl.showing,.offcanvas-xl.show:not(.hiding){transform:none}.offcanvas-xl.showing,.offcanvas-xl.hiding,.offcanvas-xl.show{visibility:visible}}@media(min-width: 1200px){.offcanvas-xl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xl .offcanvas-header{display:none}.offcanvas-xl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}@media(max-width: 1399.98px){.offcanvas-xxl{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}}@media(max-width: 1399.98px)and (prefers-reduced-motion: reduce){.offcanvas-xxl{transition:none}}@media(max-width: 1399.98px){.offcanvas-xxl.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas-xxl.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas-xxl.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas-xxl.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas-xxl.showing,.offcanvas-xxl.show:not(.hiding){transform:none}.offcanvas-xxl.showing,.offcanvas-xxl.hiding,.offcanvas-xxl.show{visibility:visible}}@media(min-width: 1400px){.offcanvas-xxl{--bs-offcanvas-height: auto;--bs-offcanvas-border-width: 0;background-color:rgba(0,0,0,0) !important}.offcanvas-xxl .offcanvas-header{display:none}.offcanvas-xxl .offcanvas-body{display:flex;display:-webkit-flex;flex-grow:0;-webkit-flex-grow:0;padding:0;overflow-y:visible;background-color:rgba(0,0,0,0) !important}}.offcanvas{position:fixed;bottom:0;z-index:var(--bs-offcanvas-zindex);display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;max-width:100%;color:var(--bs-offcanvas-color);visibility:hidden;background-color:var(--bs-offcanvas-bg);background-clip:padding-box;outline:0;transition:var(--bs-offcanvas-transition)}@media(prefers-reduced-motion: reduce){.offcanvas{transition:none}}.offcanvas.offcanvas-start{top:0;left:0;width:var(--bs-offcanvas-width);border-right:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(-100%)}.offcanvas.offcanvas-end{top:0;right:0;width:var(--bs-offcanvas-width);border-left:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateX(100%)}.offcanvas.offcanvas-top{top:0;right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-bottom:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(-100%)}.offcanvas.offcanvas-bottom{right:0;left:0;height:var(--bs-offcanvas-height);max-height:100%;border-top:var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color);transform:translateY(100%)}.offcanvas.showing,.offcanvas.show:not(.hiding){transform:none}.offcanvas.showing,.offcanvas.hiding,.offcanvas.show{visibility:visible}.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background-color:#000}.offcanvas-backdrop.fade{opacity:0}.offcanvas-backdrop.show{opacity:.5}.offcanvas-header{display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:space-between;-webkit-justify-content:space-between;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x)}.offcanvas-header .btn-close{padding:calc(var(--bs-offcanvas-padding-y)*.5) calc(var(--bs-offcanvas-padding-x)*.5);margin-top:calc(-0.5*var(--bs-offcanvas-padding-y));margin-right:calc(-0.5*var(--bs-offcanvas-padding-x));margin-bottom:calc(-0.5*var(--bs-offcanvas-padding-y))}.offcanvas-title{margin-bottom:0;line-height:var(--bs-offcanvas-title-line-height)}.offcanvas-body{flex-grow:1;-webkit-flex-grow:1;padding:var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x);overflow-y:auto}.placeholder{display:inline-block;min-height:1em;vertical-align:middle;cursor:wait;background-color:currentcolor;opacity:.5}.placeholder.btn::before{display:inline-block;content:""}.placeholder-xs{min-height:.6em}.placeholder-sm{min-height:.8em}.placeholder-lg{min-height:1.2em}.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite}@keyframes placeholder-glow{50%{opacity:.2}}.placeholder-wave{mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);-webkit-mask-image:linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);mask-size:200% 100%;-webkit-mask-size:200% 100%;animation:placeholder-wave 2s linear infinite}@keyframes placeholder-wave{100%{mask-position:-200% 0%;-webkit-mask-position:-200% 0%}}.clearfix::after{display:block;clear:both;content:""}.text-bg-default{color:#fff !important;background-color:RGBA(var(--bs-default-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-primary{color:#fff !important;background-color:RGBA(var(--bs-primary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-secondary{color:#fff !important;background-color:RGBA(var(--bs-secondary-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-success{color:#fff !important;background-color:RGBA(var(--bs-success-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-info{color:#fff !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#fff !important;background-color:RGBA(var(--bs-warning-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-danger{color:#fff !important;background-color:RGBA(var(--bs-danger-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-light{color:#000 !important;background-color:RGBA(var(--bs-light-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-dark{color:#fff !important;background-color:RGBA(var(--bs-dark-rgb), var(--bs-bg-opacity, 1)) !important}.link-default{color:RGBA(var(--bs-default-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-default-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-default:hover,.link-default:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-primary{color:RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-primary:hover,.link-primary:focus{color:RGBA(31, 102, 182, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(31, 102, 182, var(--bs-link-underline-opacity, 1)) !important}.link-secondary{color:RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-secondary:hover,.link-secondary:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-success{color:RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-success:hover,.link-success:focus{color:RGBA(50, 146, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(50, 146, 19, var(--bs-link-underline-opacity, 1)) !important}.link-info{color:RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-info:hover,.link-info:focus{color:RGBA(122, 67, 150, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(122, 67, 150, var(--bs-link-underline-opacity, 1)) !important}.link-warning{color:RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-warning:hover,.link-warning:focus{color:RGBA(204, 94, 19, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 94, 19, var(--bs-link-underline-opacity, 1)) !important}.link-danger{color:RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-danger:hover,.link-danger:focus{color:RGBA(204, 0, 46, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(204, 0, 46, var(--bs-link-underline-opacity, 1)) !important}.link-light{color:RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-light:hover,.link-light:focus{color:RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important}.link-dark{color:RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-dark:hover,.link-dark:focus{color:RGBA(42, 46, 51, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(42, 46, 51, var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-body-emphasis:hover,.link-body-emphasis:focus{color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important;text-decoration-color:RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important}.focus-ring:focus{outline:0;box-shadow:var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color)}.icon-link{display:inline-flex;gap:.375rem;align-items:center;-webkit-align-items:center;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5));text-underline-offset:.25em;backface-visibility:hidden;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-o-backface-visibility:hidden}.icon-link>.bi{flex-shrink:0;-webkit-flex-shrink:0;width:1em;height:1em;fill:currentcolor;transition:.2s ease-in-out transform}@media(prefers-reduced-motion: reduce){.icon-link>.bi{transition:none}}.icon-link-hover:hover>.bi,.icon-link-hover:focus-visible>.bi{transform:var(--bs-icon-link-transform, translate3d(0.25em, 0, 0))}.ratio{position:relative;width:100%}.ratio::before{display:block;padding-top:var(--bs-aspect-ratio);content:""}.ratio>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-1x1{--bs-aspect-ratio: 100%}.ratio-4x3{--bs-aspect-ratio: 75%}.ratio-16x9{--bs-aspect-ratio: 56.25%}.ratio-21x9{--bs-aspect-ratio: 42.8571428571%}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}.sticky-top{position:sticky;top:0;z-index:1020}.sticky-bottom{position:sticky;bottom:0;z-index:1020}@media(min-width: 576px){.sticky-sm-top{position:sticky;top:0;z-index:1020}.sticky-sm-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 768px){.sticky-md-top{position:sticky;top:0;z-index:1020}.sticky-md-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 992px){.sticky-lg-top{position:sticky;top:0;z-index:1020}.sticky-lg-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1200px){.sticky-xl-top{position:sticky;top:0;z-index:1020}.sticky-xl-bottom{position:sticky;bottom:0;z-index:1020}}@media(min-width: 1400px){.sticky-xxl-top{position:sticky;top:0;z-index:1020}.sticky-xxl-bottom{position:sticky;bottom:0;z-index:1020}}.hstack{display:flex;display:-webkit-flex;flex-direction:row;-webkit-flex-direction:row;align-items:center;-webkit-align-items:center;align-self:stretch;-webkit-align-self:stretch}.vstack{display:flex;display:-webkit-flex;flex:1 1 auto;-webkit-flex:1 1 auto;flex-direction:column;-webkit-flex-direction:column;align-self:stretch;-webkit-align-self:stretch}.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important}.visually-hidden:not(caption),.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption){position:absolute !important}.stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vr{display:inline-block;align-self:stretch;-webkit-align-self:stretch;width:1px;min-height:1em;background-color:currentcolor;opacity:.25}.align-baseline{vertical-align:baseline !important}.align-top{vertical-align:top !important}.align-middle{vertical-align:middle !important}.align-bottom{vertical-align:bottom !important}.align-text-bottom{vertical-align:text-bottom !important}.align-text-top{vertical-align:text-top !important}.float-start{float:left !important}.float-end{float:right !important}.float-none{float:none !important}.object-fit-contain{object-fit:contain !important}.object-fit-cover{object-fit:cover !important}.object-fit-fill{object-fit:fill !important}.object-fit-scale{object-fit:scale-down !important}.object-fit-none{object-fit:none !important}.opacity-0{opacity:0 !important}.opacity-25{opacity:.25 !important}.opacity-50{opacity:.5 !important}.opacity-75{opacity:.75 !important}.opacity-100{opacity:1 !important}.overflow-auto{overflow:auto !important}.overflow-hidden{overflow:hidden !important}.overflow-visible{overflow:visible !important}.overflow-scroll{overflow:scroll !important}.overflow-x-auto{overflow-x:auto !important}.overflow-x-hidden{overflow-x:hidden !important}.overflow-x-visible{overflow-x:visible !important}.overflow-x-scroll{overflow-x:scroll !important}.overflow-y-auto{overflow-y:auto !important}.overflow-y-hidden{overflow-y:hidden !important}.overflow-y-visible{overflow-y:visible !important}.overflow-y-scroll{overflow-y:scroll !important}.d-inline{display:inline !important}.d-inline-block{display:inline-block !important}.d-block{display:block !important}.d-grid{display:grid !important}.d-inline-grid{display:inline-grid !important}.d-table{display:table !important}.d-table-row{display:table-row !important}.d-table-cell{display:table-cell !important}.d-flex{display:flex !important}.d-inline-flex{display:inline-flex !important}.d-none{display:none !important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15) !important}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075) !important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175) !important}.shadow-none{box-shadow:none !important}.focus-ring-default{--bs-focus-ring-color: rgba(var(--bs-default-rgb), var(--bs-focus-ring-opacity))}.focus-ring-primary{--bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-secondary{--bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity))}.focus-ring-success{--bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity))}.focus-ring-info{--bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity))}.focus-ring-warning{--bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity))}.focus-ring-danger{--bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity))}.focus-ring-light{--bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity))}.focus-ring-dark{--bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity))}.position-static{position:static !important}.position-relative{position:relative !important}.position-absolute{position:absolute !important}.position-fixed{position:fixed !important}.position-sticky{position:sticky !important}.top-0{top:0 !important}.top-50{top:50% !important}.top-100{top:100% !important}.bottom-0{bottom:0 !important}.bottom-50{bottom:50% !important}.bottom-100{bottom:100% !important}.start-0{left:0 !important}.start-50{left:50% !important}.start-100{left:100% !important}.end-0{right:0 !important}.end-50{right:50% !important}.end-100{right:100% !important}.translate-middle{transform:translate(-50%, -50%) !important}.translate-middle-x{transform:translateX(-50%) !important}.translate-middle-y{transform:translateY(-50%) !important}.border{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-0{border:0 !important}.border-top{border-top:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-top-0{border-top:0 !important}.border-end{border-right:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-end-0{border-right:0 !important}.border-bottom{border-bottom:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-bottom-0{border-bottom:0 !important}.border-start{border-left:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important}.border-start-0{border-left:0 !important}.border-default{--bs-border-opacity: 1;border-color:rgba(var(--bs-default-rgb), var(--bs-border-opacity)) !important}.border-primary{--bs-border-opacity: 1;border-color:rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important}.border-secondary{--bs-border-opacity: 1;border-color:rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important}.border-success{--bs-border-opacity: 1;border-color:rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important}.border-info{--bs-border-opacity: 1;border-color:rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important}.border-warning{--bs-border-opacity: 1;border-color:rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important}.border-danger{--bs-border-opacity: 1;border-color:rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important}.border-light{--bs-border-opacity: 1;border-color:rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important}.border-dark{--bs-border-opacity: 1;border-color:rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important}.border-black{--bs-border-opacity: 1;border-color:rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important}.border-white{--bs-border-opacity: 1;border-color:rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important}.border-primary-subtle{border-color:var(--bs-primary-border-subtle) !important}.border-secondary-subtle{border-color:var(--bs-secondary-border-subtle) !important}.border-success-subtle{border-color:var(--bs-success-border-subtle) !important}.border-info-subtle{border-color:var(--bs-info-border-subtle) !important}.border-warning-subtle{border-color:var(--bs-warning-border-subtle) !important}.border-danger-subtle{border-color:var(--bs-danger-border-subtle) !important}.border-light-subtle{border-color:var(--bs-light-border-subtle) !important}.border-dark-subtle{border-color:var(--bs-dark-border-subtle) !important}.border-1{border-width:1px !important}.border-2{border-width:2px !important}.border-3{border-width:3px !important}.border-4{border-width:4px !important}.border-5{border-width:5px !important}.border-opacity-10{--bs-border-opacity: 0.1}.border-opacity-25{--bs-border-opacity: 0.25}.border-opacity-50{--bs-border-opacity: 0.5}.border-opacity-75{--bs-border-opacity: 0.75}.border-opacity-100{--bs-border-opacity: 1}.w-25{width:25% !important}.w-50{width:50% !important}.w-75{width:75% !important}.w-100{width:100% !important}.w-auto{width:auto !important}.mw-100{max-width:100% !important}.vw-100{width:100vw !important}.min-vw-100{min-width:100vw !important}.h-25{height:25% !important}.h-50{height:50% !important}.h-75{height:75% !important}.h-100{height:100% !important}.h-auto{height:auto !important}.mh-100{max-height:100% !important}.vh-100{height:100vh !important}.min-vh-100{min-height:100vh !important}.flex-fill{flex:1 1 auto !important}.flex-row{flex-direction:row !important}.flex-column{flex-direction:column !important}.flex-row-reverse{flex-direction:row-reverse !important}.flex-column-reverse{flex-direction:column-reverse !important}.flex-grow-0{flex-grow:0 !important}.flex-grow-1{flex-grow:1 !important}.flex-shrink-0{flex-shrink:0 !important}.flex-shrink-1{flex-shrink:1 !important}.flex-wrap{flex-wrap:wrap !important}.flex-nowrap{flex-wrap:nowrap !important}.flex-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-start{justify-content:flex-start !important}.justify-content-end{justify-content:flex-end !important}.justify-content-center{justify-content:center !important}.justify-content-between{justify-content:space-between !important}.justify-content-around{justify-content:space-around !important}.justify-content-evenly{justify-content:space-evenly !important}.align-items-start{align-items:flex-start !important}.align-items-end{align-items:flex-end !important}.align-items-center{align-items:center !important}.align-items-baseline{align-items:baseline !important}.align-items-stretch{align-items:stretch !important}.align-content-start{align-content:flex-start !important}.align-content-end{align-content:flex-end !important}.align-content-center{align-content:center !important}.align-content-between{align-content:space-between !important}.align-content-around{align-content:space-around !important}.align-content-stretch{align-content:stretch !important}.align-self-auto{align-self:auto !important}.align-self-start{align-self:flex-start !important}.align-self-end{align-self:flex-end !important}.align-self-center{align-self:center !important}.align-self-baseline{align-self:baseline !important}.align-self-stretch{align-self:stretch !important}.order-first{order:-1 !important}.order-0{order:0 !important}.order-1{order:1 !important}.order-2{order:2 !important}.order-3{order:3 !important}.order-4{order:4 !important}.order-5{order:5 !important}.order-last{order:6 !important}.m-0{margin:0 !important}.m-1{margin:.25rem !important}.m-2{margin:.5rem !important}.m-3{margin:1rem !important}.m-4{margin:1.5rem !important}.m-5{margin:3rem !important}.m-auto{margin:auto !important}.mx-0{margin-right:0 !important;margin-left:0 !important}.mx-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-3{margin-right:1rem !important;margin-left:1rem !important}.mx-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-5{margin-right:3rem !important;margin-left:3rem !important}.mx-auto{margin-right:auto !important;margin-left:auto !important}.my-0{margin-top:0 !important;margin-bottom:0 !important}.my-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-0{margin-top:0 !important}.mt-1{margin-top:.25rem !important}.mt-2{margin-top:.5rem !important}.mt-3{margin-top:1rem !important}.mt-4{margin-top:1.5rem !important}.mt-5{margin-top:3rem !important}.mt-auto{margin-top:auto !important}.me-0{margin-right:0 !important}.me-1{margin-right:.25rem !important}.me-2{margin-right:.5rem !important}.me-3{margin-right:1rem !important}.me-4{margin-right:1.5rem !important}.me-5{margin-right:3rem !important}.me-auto{margin-right:auto !important}.mb-0{margin-bottom:0 !important}.mb-1{margin-bottom:.25rem !important}.mb-2{margin-bottom:.5rem !important}.mb-3{margin-bottom:1rem !important}.mb-4{margin-bottom:1.5rem !important}.mb-5{margin-bottom:3rem !important}.mb-auto{margin-bottom:auto !important}.ms-0{margin-left:0 !important}.ms-1{margin-left:.25rem !important}.ms-2{margin-left:.5rem !important}.ms-3{margin-left:1rem !important}.ms-4{margin-left:1.5rem !important}.ms-5{margin-left:3rem !important}.ms-auto{margin-left:auto !important}.p-0{padding:0 !important}.p-1{padding:.25rem !important}.p-2{padding:.5rem !important}.p-3{padding:1rem !important}.p-4{padding:1.5rem !important}.p-5{padding:3rem !important}.px-0{padding-right:0 !important;padding-left:0 !important}.px-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-3{padding-right:1rem !important;padding-left:1rem !important}.px-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-5{padding-right:3rem !important;padding-left:3rem !important}.py-0{padding-top:0 !important;padding-bottom:0 !important}.py-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-0{padding-top:0 !important}.pt-1{padding-top:.25rem !important}.pt-2{padding-top:.5rem !important}.pt-3{padding-top:1rem !important}.pt-4{padding-top:1.5rem !important}.pt-5{padding-top:3rem !important}.pe-0{padding-right:0 !important}.pe-1{padding-right:.25rem !important}.pe-2{padding-right:.5rem !important}.pe-3{padding-right:1rem !important}.pe-4{padding-right:1.5rem !important}.pe-5{padding-right:3rem !important}.pb-0{padding-bottom:0 !important}.pb-1{padding-bottom:.25rem !important}.pb-2{padding-bottom:.5rem !important}.pb-3{padding-bottom:1rem !important}.pb-4{padding-bottom:1.5rem !important}.pb-5{padding-bottom:3rem !important}.ps-0{padding-left:0 !important}.ps-1{padding-left:.25rem !important}.ps-2{padding-left:.5rem !important}.ps-3{padding-left:1rem !important}.ps-4{padding-left:1.5rem !important}.ps-5{padding-left:3rem !important}.gap-0{gap:0 !important}.gap-1{gap:.25rem !important}.gap-2{gap:.5rem !important}.gap-3{gap:1rem !important}.gap-4{gap:1.5rem !important}.gap-5{gap:3rem !important}.row-gap-0{row-gap:0 !important}.row-gap-1{row-gap:.25rem !important}.row-gap-2{row-gap:.5rem !important}.row-gap-3{row-gap:1rem !important}.row-gap-4{row-gap:1.5rem !important}.row-gap-5{row-gap:3rem !important}.column-gap-0{column-gap:0 !important}.column-gap-1{column-gap:.25rem !important}.column-gap-2{column-gap:.5rem !important}.column-gap-3{column-gap:1rem !important}.column-gap-4{column-gap:1.5rem !important}.column-gap-5{column-gap:3rem !important}.font-monospace{font-family:var(--bs-font-monospace) !important}.fs-1{font-size:calc(1.325rem + 0.9vw) !important}.fs-2{font-size:calc(1.29rem + 0.48vw) !important}.fs-3{font-size:calc(1.27rem + 0.24vw) !important}.fs-4{font-size:1.25rem !important}.fs-5{font-size:1.1rem !important}.fs-6{font-size:1rem !important}.fst-italic{font-style:italic !important}.fst-normal{font-style:normal !important}.fw-lighter{font-weight:lighter !important}.fw-light{font-weight:300 !important}.fw-normal{font-weight:400 !important}.fw-medium{font-weight:500 !important}.fw-semibold{font-weight:600 !important}.fw-bold{font-weight:700 !important}.fw-bolder{font-weight:bolder !important}.lh-1{line-height:1 !important}.lh-sm{line-height:1.25 !important}.lh-base{line-height:1.5 !important}.lh-lg{line-height:2 !important}.text-start{text-align:left !important}.text-end{text-align:right !important}.text-center{text-align:center !important}.text-decoration-none{text-decoration:none !important}.text-decoration-underline{text-decoration:underline !important}.text-decoration-line-through{text-decoration:line-through !important}.text-lowercase{text-transform:lowercase !important}.text-uppercase{text-transform:uppercase !important}.text-capitalize{text-transform:capitalize !important}.text-wrap{white-space:normal !important}.text-nowrap{white-space:nowrap !important}.text-break{word-wrap:break-word !important;word-break:break-word !important}.text-default{--bs-text-opacity: 1;color:rgba(var(--bs-default-rgb), var(--bs-text-opacity)) !important}.text-primary{--bs-text-opacity: 1;color:rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important}.text-secondary{--bs-text-opacity: 1;color:rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important}.text-success{--bs-text-opacity: 1;color:rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important}.text-info{--bs-text-opacity: 1;color:rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important}.text-warning{--bs-text-opacity: 1;color:rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important}.text-danger{--bs-text-opacity: 1;color:rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important}.text-light{--bs-text-opacity: 1;color:rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important}.text-dark{--bs-text-opacity: 1;color:rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important}.text-black{--bs-text-opacity: 1;color:rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important}.text-white{--bs-text-opacity: 1;color:rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important}.text-body{--bs-text-opacity: 1;color:rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important}.text-muted{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-black-50{--bs-text-opacity: 1;color:rgba(0,0,0,.5) !important}.text-white-50{--bs-text-opacity: 1;color:rgba(255,255,255,.5) !important}.text-body-secondary{--bs-text-opacity: 1;color:var(--bs-secondary-color) !important}.text-body-tertiary{--bs-text-opacity: 1;color:var(--bs-tertiary-color) !important}.text-body-emphasis{--bs-text-opacity: 1;color:var(--bs-emphasis-color) !important}.text-reset{--bs-text-opacity: 1;color:inherit !important}.text-opacity-25{--bs-text-opacity: 0.25}.text-opacity-50{--bs-text-opacity: 0.5}.text-opacity-75{--bs-text-opacity: 0.75}.text-opacity-100{--bs-text-opacity: 1}.text-primary-emphasis{color:var(--bs-primary-text-emphasis) !important}.text-secondary-emphasis{color:var(--bs-secondary-text-emphasis) !important}.text-success-emphasis{color:var(--bs-success-text-emphasis) !important}.text-info-emphasis{color:var(--bs-info-text-emphasis) !important}.text-warning-emphasis{color:var(--bs-warning-text-emphasis) !important}.text-danger-emphasis{color:var(--bs-danger-text-emphasis) !important}.text-light-emphasis{color:var(--bs-light-text-emphasis) !important}.text-dark-emphasis{color:var(--bs-dark-text-emphasis) !important}.link-opacity-10{--bs-link-opacity: 0.1}.link-opacity-10-hover:hover{--bs-link-opacity: 0.1}.link-opacity-25{--bs-link-opacity: 0.25}.link-opacity-25-hover:hover{--bs-link-opacity: 0.25}.link-opacity-50{--bs-link-opacity: 0.5}.link-opacity-50-hover:hover{--bs-link-opacity: 0.5}.link-opacity-75{--bs-link-opacity: 0.75}.link-opacity-75-hover:hover{--bs-link-opacity: 0.75}.link-opacity-100{--bs-link-opacity: 1}.link-opacity-100-hover:hover{--bs-link-opacity: 1}.link-offset-1{text-underline-offset:.125em !important}.link-offset-1-hover:hover{text-underline-offset:.125em !important}.link-offset-2{text-underline-offset:.25em !important}.link-offset-2-hover:hover{text-underline-offset:.25em !important}.link-offset-3{text-underline-offset:.375em !important}.link-offset-3-hover:hover{text-underline-offset:.375em !important}.link-underline-default{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-default-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-primary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-secondary{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-success{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-info{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-warning{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-danger{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-light{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important}.link-underline-dark{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important}.link-underline{--bs-link-underline-opacity: 1;text-decoration-color:rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important}.link-underline-opacity-0{--bs-link-underline-opacity: 0}.link-underline-opacity-0-hover:hover{--bs-link-underline-opacity: 0}.link-underline-opacity-10{--bs-link-underline-opacity: 0.1}.link-underline-opacity-10-hover:hover{--bs-link-underline-opacity: 0.1}.link-underline-opacity-25{--bs-link-underline-opacity: 0.25}.link-underline-opacity-25-hover:hover{--bs-link-underline-opacity: 0.25}.link-underline-opacity-50{--bs-link-underline-opacity: 0.5}.link-underline-opacity-50-hover:hover{--bs-link-underline-opacity: 0.5}.link-underline-opacity-75{--bs-link-underline-opacity: 0.75}.link-underline-opacity-75-hover:hover{--bs-link-underline-opacity: 0.75}.link-underline-opacity-100{--bs-link-underline-opacity: 1}.link-underline-opacity-100-hover:hover{--bs-link-underline-opacity: 1}.bg-default{--bs-bg-opacity: 1;background-color:rgba(var(--bs-default-rgb), var(--bs-bg-opacity)) !important}.bg-primary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important}.bg-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important}.bg-success{--bs-bg-opacity: 1;background-color:rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important}.bg-info{--bs-bg-opacity: 1;background-color:rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important}.bg-warning{--bs-bg-opacity: 1;background-color:rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important}.bg-danger{--bs-bg-opacity: 1;background-color:rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important}.bg-light{--bs-bg-opacity: 1;background-color:rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important}.bg-dark{--bs-bg-opacity: 1;background-color:rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important}.bg-black{--bs-bg-opacity: 1;background-color:rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important}.bg-white{--bs-bg-opacity: 1;background-color:rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important}.bg-body{--bs-bg-opacity: 1;background-color:rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important}.bg-transparent{--bs-bg-opacity: 1;background-color:rgba(0,0,0,0) !important}.bg-body-secondary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-body-tertiary{--bs-bg-opacity: 1;background-color:rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important}.bg-opacity-10{--bs-bg-opacity: 0.1}.bg-opacity-25{--bs-bg-opacity: 0.25}.bg-opacity-50{--bs-bg-opacity: 0.5}.bg-opacity-75{--bs-bg-opacity: 0.75}.bg-opacity-100{--bs-bg-opacity: 1}.bg-primary-subtle{background-color:var(--bs-primary-bg-subtle) !important}.bg-secondary-subtle{background-color:var(--bs-secondary-bg-subtle) !important}.bg-success-subtle{background-color:var(--bs-success-bg-subtle) !important}.bg-info-subtle{background-color:var(--bs-info-bg-subtle) !important}.bg-warning-subtle{background-color:var(--bs-warning-bg-subtle) !important}.bg-danger-subtle{background-color:var(--bs-danger-bg-subtle) !important}.bg-light-subtle{background-color:var(--bs-light-bg-subtle) !important}.bg-dark-subtle{background-color:var(--bs-dark-bg-subtle) !important}.bg-gradient{background-image:var(--bs-gradient) !important}.user-select-all{user-select:all !important}.user-select-auto{user-select:auto !important}.user-select-none{user-select:none !important}.pe-none{pointer-events:none !important}.pe-auto{pointer-events:auto !important}.rounded{border-radius:var(--bs-border-radius) !important}.rounded-0{border-radius:0 !important}.rounded-1{border-radius:var(--bs-border-radius-sm) !important}.rounded-2{border-radius:var(--bs-border-radius) !important}.rounded-3{border-radius:var(--bs-border-radius-lg) !important}.rounded-4{border-radius:var(--bs-border-radius-xl) !important}.rounded-5{border-radius:var(--bs-border-radius-xxl) !important}.rounded-circle{border-radius:50% !important}.rounded-pill{border-radius:var(--bs-border-radius-pill) !important}.rounded-top{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important}.rounded-top-1{border-top-left-radius:var(--bs-border-radius-sm) !important;border-top-right-radius:var(--bs-border-radius-sm) !important}.rounded-top-2{border-top-left-radius:var(--bs-border-radius) !important;border-top-right-radius:var(--bs-border-radius) !important}.rounded-top-3{border-top-left-radius:var(--bs-border-radius-lg) !important;border-top-right-radius:var(--bs-border-radius-lg) !important}.rounded-top-4{border-top-left-radius:var(--bs-border-radius-xl) !important;border-top-right-radius:var(--bs-border-radius-xl) !important}.rounded-top-5{border-top-left-radius:var(--bs-border-radius-xxl) !important;border-top-right-radius:var(--bs-border-radius-xxl) !important}.rounded-top-circle{border-top-left-radius:50% !important;border-top-right-radius:50% !important}.rounded-top-pill{border-top-left-radius:var(--bs-border-radius-pill) !important;border-top-right-radius:var(--bs-border-radius-pill) !important}.rounded-end{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important}.rounded-end-1{border-top-right-radius:var(--bs-border-radius-sm) !important;border-bottom-right-radius:var(--bs-border-radius-sm) !important}.rounded-end-2{border-top-right-radius:var(--bs-border-radius) !important;border-bottom-right-radius:var(--bs-border-radius) !important}.rounded-end-3{border-top-right-radius:var(--bs-border-radius-lg) !important;border-bottom-right-radius:var(--bs-border-radius-lg) !important}.rounded-end-4{border-top-right-radius:var(--bs-border-radius-xl) !important;border-bottom-right-radius:var(--bs-border-radius-xl) !important}.rounded-end-5{border-top-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-right-radius:var(--bs-border-radius-xxl) !important}.rounded-end-circle{border-top-right-radius:50% !important;border-bottom-right-radius:50% !important}.rounded-end-pill{border-top-right-radius:var(--bs-border-radius-pill) !important;border-bottom-right-radius:var(--bs-border-radius-pill) !important}.rounded-bottom{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important}.rounded-bottom-1{border-bottom-right-radius:var(--bs-border-radius-sm) !important;border-bottom-left-radius:var(--bs-border-radius-sm) !important}.rounded-bottom-2{border-bottom-right-radius:var(--bs-border-radius) !important;border-bottom-left-radius:var(--bs-border-radius) !important}.rounded-bottom-3{border-bottom-right-radius:var(--bs-border-radius-lg) !important;border-bottom-left-radius:var(--bs-border-radius-lg) !important}.rounded-bottom-4{border-bottom-right-radius:var(--bs-border-radius-xl) !important;border-bottom-left-radius:var(--bs-border-radius-xl) !important}.rounded-bottom-5{border-bottom-right-radius:var(--bs-border-radius-xxl) !important;border-bottom-left-radius:var(--bs-border-radius-xxl) !important}.rounded-bottom-circle{border-bottom-right-radius:50% !important;border-bottom-left-radius:50% !important}.rounded-bottom-pill{border-bottom-right-radius:var(--bs-border-radius-pill) !important;border-bottom-left-radius:var(--bs-border-radius-pill) !important}.rounded-start{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-0{border-bottom-left-radius:0 !important;border-top-left-radius:0 !important}.rounded-start-1{border-bottom-left-radius:var(--bs-border-radius-sm) !important;border-top-left-radius:var(--bs-border-radius-sm) !important}.rounded-start-2{border-bottom-left-radius:var(--bs-border-radius) !important;border-top-left-radius:var(--bs-border-radius) !important}.rounded-start-3{border-bottom-left-radius:var(--bs-border-radius-lg) !important;border-top-left-radius:var(--bs-border-radius-lg) !important}.rounded-start-4{border-bottom-left-radius:var(--bs-border-radius-xl) !important;border-top-left-radius:var(--bs-border-radius-xl) !important}.rounded-start-5{border-bottom-left-radius:var(--bs-border-radius-xxl) !important;border-top-left-radius:var(--bs-border-radius-xxl) !important}.rounded-start-circle{border-bottom-left-radius:50% !important;border-top-left-radius:50% !important}.rounded-start-pill{border-bottom-left-radius:var(--bs-border-radius-pill) !important;border-top-left-radius:var(--bs-border-radius-pill) !important}.visible{visibility:visible !important}.invisible{visibility:hidden !important}.z-n1{z-index:-1 !important}.z-0{z-index:0 !important}.z-1{z-index:1 !important}.z-2{z-index:2 !important}.z-3{z-index:3 !important}@media(min-width: 576px){.float-sm-start{float:left !important}.float-sm-end{float:right !important}.float-sm-none{float:none !important}.object-fit-sm-contain{object-fit:contain !important}.object-fit-sm-cover{object-fit:cover !important}.object-fit-sm-fill{object-fit:fill !important}.object-fit-sm-scale{object-fit:scale-down !important}.object-fit-sm-none{object-fit:none !important}.d-sm-inline{display:inline !important}.d-sm-inline-block{display:inline-block !important}.d-sm-block{display:block !important}.d-sm-grid{display:grid !important}.d-sm-inline-grid{display:inline-grid !important}.d-sm-table{display:table !important}.d-sm-table-row{display:table-row !important}.d-sm-table-cell{display:table-cell !important}.d-sm-flex{display:flex !important}.d-sm-inline-flex{display:inline-flex !important}.d-sm-none{display:none !important}.flex-sm-fill{flex:1 1 auto !important}.flex-sm-row{flex-direction:row !important}.flex-sm-column{flex-direction:column !important}.flex-sm-row-reverse{flex-direction:row-reverse !important}.flex-sm-column-reverse{flex-direction:column-reverse !important}.flex-sm-grow-0{flex-grow:0 !important}.flex-sm-grow-1{flex-grow:1 !important}.flex-sm-shrink-0{flex-shrink:0 !important}.flex-sm-shrink-1{flex-shrink:1 !important}.flex-sm-wrap{flex-wrap:wrap !important}.flex-sm-nowrap{flex-wrap:nowrap !important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-sm-start{justify-content:flex-start !important}.justify-content-sm-end{justify-content:flex-end !important}.justify-content-sm-center{justify-content:center !important}.justify-content-sm-between{justify-content:space-between !important}.justify-content-sm-around{justify-content:space-around !important}.justify-content-sm-evenly{justify-content:space-evenly !important}.align-items-sm-start{align-items:flex-start !important}.align-items-sm-end{align-items:flex-end !important}.align-items-sm-center{align-items:center !important}.align-items-sm-baseline{align-items:baseline !important}.align-items-sm-stretch{align-items:stretch !important}.align-content-sm-start{align-content:flex-start !important}.align-content-sm-end{align-content:flex-end !important}.align-content-sm-center{align-content:center !important}.align-content-sm-between{align-content:space-between !important}.align-content-sm-around{align-content:space-around !important}.align-content-sm-stretch{align-content:stretch !important}.align-self-sm-auto{align-self:auto !important}.align-self-sm-start{align-self:flex-start !important}.align-self-sm-end{align-self:flex-end !important}.align-self-sm-center{align-self:center !important}.align-self-sm-baseline{align-self:baseline !important}.align-self-sm-stretch{align-self:stretch !important}.order-sm-first{order:-1 !important}.order-sm-0{order:0 !important}.order-sm-1{order:1 !important}.order-sm-2{order:2 !important}.order-sm-3{order:3 !important}.order-sm-4{order:4 !important}.order-sm-5{order:5 !important}.order-sm-last{order:6 !important}.m-sm-0{margin:0 !important}.m-sm-1{margin:.25rem !important}.m-sm-2{margin:.5rem !important}.m-sm-3{margin:1rem !important}.m-sm-4{margin:1.5rem !important}.m-sm-5{margin:3rem !important}.m-sm-auto{margin:auto !important}.mx-sm-0{margin-right:0 !important;margin-left:0 !important}.mx-sm-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-sm-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-sm-3{margin-right:1rem !important;margin-left:1rem !important}.mx-sm-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-sm-5{margin-right:3rem !important;margin-left:3rem !important}.mx-sm-auto{margin-right:auto !important;margin-left:auto !important}.my-sm-0{margin-top:0 !important;margin-bottom:0 !important}.my-sm-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-sm-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-sm-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-sm-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-sm-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-sm-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-sm-0{margin-top:0 !important}.mt-sm-1{margin-top:.25rem !important}.mt-sm-2{margin-top:.5rem !important}.mt-sm-3{margin-top:1rem !important}.mt-sm-4{margin-top:1.5rem !important}.mt-sm-5{margin-top:3rem !important}.mt-sm-auto{margin-top:auto !important}.me-sm-0{margin-right:0 !important}.me-sm-1{margin-right:.25rem !important}.me-sm-2{margin-right:.5rem !important}.me-sm-3{margin-right:1rem !important}.me-sm-4{margin-right:1.5rem !important}.me-sm-5{margin-right:3rem !important}.me-sm-auto{margin-right:auto !important}.mb-sm-0{margin-bottom:0 !important}.mb-sm-1{margin-bottom:.25rem !important}.mb-sm-2{margin-bottom:.5rem !important}.mb-sm-3{margin-bottom:1rem !important}.mb-sm-4{margin-bottom:1.5rem !important}.mb-sm-5{margin-bottom:3rem !important}.mb-sm-auto{margin-bottom:auto !important}.ms-sm-0{margin-left:0 !important}.ms-sm-1{margin-left:.25rem !important}.ms-sm-2{margin-left:.5rem !important}.ms-sm-3{margin-left:1rem !important}.ms-sm-4{margin-left:1.5rem !important}.ms-sm-5{margin-left:3rem !important}.ms-sm-auto{margin-left:auto !important}.p-sm-0{padding:0 !important}.p-sm-1{padding:.25rem !important}.p-sm-2{padding:.5rem !important}.p-sm-3{padding:1rem !important}.p-sm-4{padding:1.5rem !important}.p-sm-5{padding:3rem !important}.px-sm-0{padding-right:0 !important;padding-left:0 !important}.px-sm-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-sm-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-sm-3{padding-right:1rem !important;padding-left:1rem !important}.px-sm-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-sm-5{padding-right:3rem !important;padding-left:3rem !important}.py-sm-0{padding-top:0 !important;padding-bottom:0 !important}.py-sm-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-sm-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-sm-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-sm-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-sm-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-sm-0{padding-top:0 !important}.pt-sm-1{padding-top:.25rem !important}.pt-sm-2{padding-top:.5rem !important}.pt-sm-3{padding-top:1rem !important}.pt-sm-4{padding-top:1.5rem !important}.pt-sm-5{padding-top:3rem !important}.pe-sm-0{padding-right:0 !important}.pe-sm-1{padding-right:.25rem !important}.pe-sm-2{padding-right:.5rem !important}.pe-sm-3{padding-right:1rem !important}.pe-sm-4{padding-right:1.5rem !important}.pe-sm-5{padding-right:3rem !important}.pb-sm-0{padding-bottom:0 !important}.pb-sm-1{padding-bottom:.25rem !important}.pb-sm-2{padding-bottom:.5rem !important}.pb-sm-3{padding-bottom:1rem !important}.pb-sm-4{padding-bottom:1.5rem !important}.pb-sm-5{padding-bottom:3rem !important}.ps-sm-0{padding-left:0 !important}.ps-sm-1{padding-left:.25rem !important}.ps-sm-2{padding-left:.5rem !important}.ps-sm-3{padding-left:1rem !important}.ps-sm-4{padding-left:1.5rem !important}.ps-sm-5{padding-left:3rem !important}.gap-sm-0{gap:0 !important}.gap-sm-1{gap:.25rem !important}.gap-sm-2{gap:.5rem !important}.gap-sm-3{gap:1rem !important}.gap-sm-4{gap:1.5rem !important}.gap-sm-5{gap:3rem !important}.row-gap-sm-0{row-gap:0 !important}.row-gap-sm-1{row-gap:.25rem !important}.row-gap-sm-2{row-gap:.5rem !important}.row-gap-sm-3{row-gap:1rem !important}.row-gap-sm-4{row-gap:1.5rem !important}.row-gap-sm-5{row-gap:3rem !important}.column-gap-sm-0{column-gap:0 !important}.column-gap-sm-1{column-gap:.25rem !important}.column-gap-sm-2{column-gap:.5rem !important}.column-gap-sm-3{column-gap:1rem !important}.column-gap-sm-4{column-gap:1.5rem !important}.column-gap-sm-5{column-gap:3rem !important}.text-sm-start{text-align:left !important}.text-sm-end{text-align:right !important}.text-sm-center{text-align:center !important}}@media(min-width: 768px){.float-md-start{float:left !important}.float-md-end{float:right !important}.float-md-none{float:none !important}.object-fit-md-contain{object-fit:contain !important}.object-fit-md-cover{object-fit:cover !important}.object-fit-md-fill{object-fit:fill !important}.object-fit-md-scale{object-fit:scale-down !important}.object-fit-md-none{object-fit:none !important}.d-md-inline{display:inline !important}.d-md-inline-block{display:inline-block !important}.d-md-block{display:block !important}.d-md-grid{display:grid !important}.d-md-inline-grid{display:inline-grid !important}.d-md-table{display:table !important}.d-md-table-row{display:table-row !important}.d-md-table-cell{display:table-cell !important}.d-md-flex{display:flex !important}.d-md-inline-flex{display:inline-flex !important}.d-md-none{display:none !important}.flex-md-fill{flex:1 1 auto !important}.flex-md-row{flex-direction:row !important}.flex-md-column{flex-direction:column !important}.flex-md-row-reverse{flex-direction:row-reverse !important}.flex-md-column-reverse{flex-direction:column-reverse !important}.flex-md-grow-0{flex-grow:0 !important}.flex-md-grow-1{flex-grow:1 !important}.flex-md-shrink-0{flex-shrink:0 !important}.flex-md-shrink-1{flex-shrink:1 !important}.flex-md-wrap{flex-wrap:wrap !important}.flex-md-nowrap{flex-wrap:nowrap !important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-md-start{justify-content:flex-start !important}.justify-content-md-end{justify-content:flex-end !important}.justify-content-md-center{justify-content:center !important}.justify-content-md-between{justify-content:space-between !important}.justify-content-md-around{justify-content:space-around !important}.justify-content-md-evenly{justify-content:space-evenly !important}.align-items-md-start{align-items:flex-start !important}.align-items-md-end{align-items:flex-end !important}.align-items-md-center{align-items:center !important}.align-items-md-baseline{align-items:baseline !important}.align-items-md-stretch{align-items:stretch !important}.align-content-md-start{align-content:flex-start !important}.align-content-md-end{align-content:flex-end !important}.align-content-md-center{align-content:center !important}.align-content-md-between{align-content:space-between !important}.align-content-md-around{align-content:space-around !important}.align-content-md-stretch{align-content:stretch !important}.align-self-md-auto{align-self:auto !important}.align-self-md-start{align-self:flex-start !important}.align-self-md-end{align-self:flex-end !important}.align-self-md-center{align-self:center !important}.align-self-md-baseline{align-self:baseline !important}.align-self-md-stretch{align-self:stretch !important}.order-md-first{order:-1 !important}.order-md-0{order:0 !important}.order-md-1{order:1 !important}.order-md-2{order:2 !important}.order-md-3{order:3 !important}.order-md-4{order:4 !important}.order-md-5{order:5 !important}.order-md-last{order:6 !important}.m-md-0{margin:0 !important}.m-md-1{margin:.25rem !important}.m-md-2{margin:.5rem !important}.m-md-3{margin:1rem !important}.m-md-4{margin:1.5rem !important}.m-md-5{margin:3rem !important}.m-md-auto{margin:auto !important}.mx-md-0{margin-right:0 !important;margin-left:0 !important}.mx-md-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-md-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-md-3{margin-right:1rem !important;margin-left:1rem !important}.mx-md-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-md-5{margin-right:3rem !important;margin-left:3rem !important}.mx-md-auto{margin-right:auto !important;margin-left:auto !important}.my-md-0{margin-top:0 !important;margin-bottom:0 !important}.my-md-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-md-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-md-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-md-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-md-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-md-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-md-0{margin-top:0 !important}.mt-md-1{margin-top:.25rem !important}.mt-md-2{margin-top:.5rem !important}.mt-md-3{margin-top:1rem !important}.mt-md-4{margin-top:1.5rem !important}.mt-md-5{margin-top:3rem !important}.mt-md-auto{margin-top:auto !important}.me-md-0{margin-right:0 !important}.me-md-1{margin-right:.25rem !important}.me-md-2{margin-right:.5rem !important}.me-md-3{margin-right:1rem !important}.me-md-4{margin-right:1.5rem !important}.me-md-5{margin-right:3rem !important}.me-md-auto{margin-right:auto !important}.mb-md-0{margin-bottom:0 !important}.mb-md-1{margin-bottom:.25rem !important}.mb-md-2{margin-bottom:.5rem !important}.mb-md-3{margin-bottom:1rem !important}.mb-md-4{margin-bottom:1.5rem !important}.mb-md-5{margin-bottom:3rem !important}.mb-md-auto{margin-bottom:auto !important}.ms-md-0{margin-left:0 !important}.ms-md-1{margin-left:.25rem !important}.ms-md-2{margin-left:.5rem !important}.ms-md-3{margin-left:1rem !important}.ms-md-4{margin-left:1.5rem !important}.ms-md-5{margin-left:3rem !important}.ms-md-auto{margin-left:auto !important}.p-md-0{padding:0 !important}.p-md-1{padding:.25rem !important}.p-md-2{padding:.5rem !important}.p-md-3{padding:1rem !important}.p-md-4{padding:1.5rem !important}.p-md-5{padding:3rem !important}.px-md-0{padding-right:0 !important;padding-left:0 !important}.px-md-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-md-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-md-3{padding-right:1rem !important;padding-left:1rem !important}.px-md-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-md-5{padding-right:3rem !important;padding-left:3rem !important}.py-md-0{padding-top:0 !important;padding-bottom:0 !important}.py-md-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-md-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-md-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-md-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-md-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-md-0{padding-top:0 !important}.pt-md-1{padding-top:.25rem !important}.pt-md-2{padding-top:.5rem !important}.pt-md-3{padding-top:1rem !important}.pt-md-4{padding-top:1.5rem !important}.pt-md-5{padding-top:3rem !important}.pe-md-0{padding-right:0 !important}.pe-md-1{padding-right:.25rem !important}.pe-md-2{padding-right:.5rem !important}.pe-md-3{padding-right:1rem !important}.pe-md-4{padding-right:1.5rem !important}.pe-md-5{padding-right:3rem !important}.pb-md-0{padding-bottom:0 !important}.pb-md-1{padding-bottom:.25rem !important}.pb-md-2{padding-bottom:.5rem !important}.pb-md-3{padding-bottom:1rem !important}.pb-md-4{padding-bottom:1.5rem !important}.pb-md-5{padding-bottom:3rem !important}.ps-md-0{padding-left:0 !important}.ps-md-1{padding-left:.25rem !important}.ps-md-2{padding-left:.5rem !important}.ps-md-3{padding-left:1rem !important}.ps-md-4{padding-left:1.5rem !important}.ps-md-5{padding-left:3rem !important}.gap-md-0{gap:0 !important}.gap-md-1{gap:.25rem !important}.gap-md-2{gap:.5rem !important}.gap-md-3{gap:1rem !important}.gap-md-4{gap:1.5rem !important}.gap-md-5{gap:3rem !important}.row-gap-md-0{row-gap:0 !important}.row-gap-md-1{row-gap:.25rem !important}.row-gap-md-2{row-gap:.5rem !important}.row-gap-md-3{row-gap:1rem !important}.row-gap-md-4{row-gap:1.5rem !important}.row-gap-md-5{row-gap:3rem !important}.column-gap-md-0{column-gap:0 !important}.column-gap-md-1{column-gap:.25rem !important}.column-gap-md-2{column-gap:.5rem !important}.column-gap-md-3{column-gap:1rem !important}.column-gap-md-4{column-gap:1.5rem !important}.column-gap-md-5{column-gap:3rem !important}.text-md-start{text-align:left !important}.text-md-end{text-align:right !important}.text-md-center{text-align:center !important}}@media(min-width: 992px){.float-lg-start{float:left !important}.float-lg-end{float:right !important}.float-lg-none{float:none !important}.object-fit-lg-contain{object-fit:contain !important}.object-fit-lg-cover{object-fit:cover !important}.object-fit-lg-fill{object-fit:fill !important}.object-fit-lg-scale{object-fit:scale-down !important}.object-fit-lg-none{object-fit:none !important}.d-lg-inline{display:inline !important}.d-lg-inline-block{display:inline-block !important}.d-lg-block{display:block !important}.d-lg-grid{display:grid !important}.d-lg-inline-grid{display:inline-grid !important}.d-lg-table{display:table !important}.d-lg-table-row{display:table-row !important}.d-lg-table-cell{display:table-cell !important}.d-lg-flex{display:flex !important}.d-lg-inline-flex{display:inline-flex !important}.d-lg-none{display:none !important}.flex-lg-fill{flex:1 1 auto !important}.flex-lg-row{flex-direction:row !important}.flex-lg-column{flex-direction:column !important}.flex-lg-row-reverse{flex-direction:row-reverse !important}.flex-lg-column-reverse{flex-direction:column-reverse !important}.flex-lg-grow-0{flex-grow:0 !important}.flex-lg-grow-1{flex-grow:1 !important}.flex-lg-shrink-0{flex-shrink:0 !important}.flex-lg-shrink-1{flex-shrink:1 !important}.flex-lg-wrap{flex-wrap:wrap !important}.flex-lg-nowrap{flex-wrap:nowrap !important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-lg-start{justify-content:flex-start !important}.justify-content-lg-end{justify-content:flex-end !important}.justify-content-lg-center{justify-content:center !important}.justify-content-lg-between{justify-content:space-between !important}.justify-content-lg-around{justify-content:space-around !important}.justify-content-lg-evenly{justify-content:space-evenly !important}.align-items-lg-start{align-items:flex-start !important}.align-items-lg-end{align-items:flex-end !important}.align-items-lg-center{align-items:center !important}.align-items-lg-baseline{align-items:baseline !important}.align-items-lg-stretch{align-items:stretch !important}.align-content-lg-start{align-content:flex-start !important}.align-content-lg-end{align-content:flex-end !important}.align-content-lg-center{align-content:center !important}.align-content-lg-between{align-content:space-between !important}.align-content-lg-around{align-content:space-around !important}.align-content-lg-stretch{align-content:stretch !important}.align-self-lg-auto{align-self:auto !important}.align-self-lg-start{align-self:flex-start !important}.align-self-lg-end{align-self:flex-end !important}.align-self-lg-center{align-self:center !important}.align-self-lg-baseline{align-self:baseline !important}.align-self-lg-stretch{align-self:stretch !important}.order-lg-first{order:-1 !important}.order-lg-0{order:0 !important}.order-lg-1{order:1 !important}.order-lg-2{order:2 !important}.order-lg-3{order:3 !important}.order-lg-4{order:4 !important}.order-lg-5{order:5 !important}.order-lg-last{order:6 !important}.m-lg-0{margin:0 !important}.m-lg-1{margin:.25rem !important}.m-lg-2{margin:.5rem !important}.m-lg-3{margin:1rem !important}.m-lg-4{margin:1.5rem !important}.m-lg-5{margin:3rem !important}.m-lg-auto{margin:auto !important}.mx-lg-0{margin-right:0 !important;margin-left:0 !important}.mx-lg-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-lg-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-lg-3{margin-right:1rem !important;margin-left:1rem !important}.mx-lg-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-lg-5{margin-right:3rem !important;margin-left:3rem !important}.mx-lg-auto{margin-right:auto !important;margin-left:auto !important}.my-lg-0{margin-top:0 !important;margin-bottom:0 !important}.my-lg-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-lg-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-lg-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-lg-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-lg-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-lg-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-lg-0{margin-top:0 !important}.mt-lg-1{margin-top:.25rem !important}.mt-lg-2{margin-top:.5rem !important}.mt-lg-3{margin-top:1rem !important}.mt-lg-4{margin-top:1.5rem !important}.mt-lg-5{margin-top:3rem !important}.mt-lg-auto{margin-top:auto !important}.me-lg-0{margin-right:0 !important}.me-lg-1{margin-right:.25rem !important}.me-lg-2{margin-right:.5rem !important}.me-lg-3{margin-right:1rem !important}.me-lg-4{margin-right:1.5rem !important}.me-lg-5{margin-right:3rem !important}.me-lg-auto{margin-right:auto !important}.mb-lg-0{margin-bottom:0 !important}.mb-lg-1{margin-bottom:.25rem !important}.mb-lg-2{margin-bottom:.5rem !important}.mb-lg-3{margin-bottom:1rem !important}.mb-lg-4{margin-bottom:1.5rem !important}.mb-lg-5{margin-bottom:3rem !important}.mb-lg-auto{margin-bottom:auto !important}.ms-lg-0{margin-left:0 !important}.ms-lg-1{margin-left:.25rem !important}.ms-lg-2{margin-left:.5rem !important}.ms-lg-3{margin-left:1rem !important}.ms-lg-4{margin-left:1.5rem !important}.ms-lg-5{margin-left:3rem !important}.ms-lg-auto{margin-left:auto !important}.p-lg-0{padding:0 !important}.p-lg-1{padding:.25rem !important}.p-lg-2{padding:.5rem !important}.p-lg-3{padding:1rem !important}.p-lg-4{padding:1.5rem !important}.p-lg-5{padding:3rem !important}.px-lg-0{padding-right:0 !important;padding-left:0 !important}.px-lg-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-lg-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-lg-3{padding-right:1rem !important;padding-left:1rem !important}.px-lg-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-lg-5{padding-right:3rem !important;padding-left:3rem !important}.py-lg-0{padding-top:0 !important;padding-bottom:0 !important}.py-lg-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-lg-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-lg-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-lg-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-lg-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-lg-0{padding-top:0 !important}.pt-lg-1{padding-top:.25rem !important}.pt-lg-2{padding-top:.5rem !important}.pt-lg-3{padding-top:1rem !important}.pt-lg-4{padding-top:1.5rem !important}.pt-lg-5{padding-top:3rem !important}.pe-lg-0{padding-right:0 !important}.pe-lg-1{padding-right:.25rem !important}.pe-lg-2{padding-right:.5rem !important}.pe-lg-3{padding-right:1rem !important}.pe-lg-4{padding-right:1.5rem !important}.pe-lg-5{padding-right:3rem !important}.pb-lg-0{padding-bottom:0 !important}.pb-lg-1{padding-bottom:.25rem !important}.pb-lg-2{padding-bottom:.5rem !important}.pb-lg-3{padding-bottom:1rem !important}.pb-lg-4{padding-bottom:1.5rem !important}.pb-lg-5{padding-bottom:3rem !important}.ps-lg-0{padding-left:0 !important}.ps-lg-1{padding-left:.25rem !important}.ps-lg-2{padding-left:.5rem !important}.ps-lg-3{padding-left:1rem !important}.ps-lg-4{padding-left:1.5rem !important}.ps-lg-5{padding-left:3rem !important}.gap-lg-0{gap:0 !important}.gap-lg-1{gap:.25rem !important}.gap-lg-2{gap:.5rem !important}.gap-lg-3{gap:1rem !important}.gap-lg-4{gap:1.5rem !important}.gap-lg-5{gap:3rem !important}.row-gap-lg-0{row-gap:0 !important}.row-gap-lg-1{row-gap:.25rem !important}.row-gap-lg-2{row-gap:.5rem !important}.row-gap-lg-3{row-gap:1rem !important}.row-gap-lg-4{row-gap:1.5rem !important}.row-gap-lg-5{row-gap:3rem !important}.column-gap-lg-0{column-gap:0 !important}.column-gap-lg-1{column-gap:.25rem !important}.column-gap-lg-2{column-gap:.5rem !important}.column-gap-lg-3{column-gap:1rem !important}.column-gap-lg-4{column-gap:1.5rem !important}.column-gap-lg-5{column-gap:3rem !important}.text-lg-start{text-align:left !important}.text-lg-end{text-align:right !important}.text-lg-center{text-align:center !important}}@media(min-width: 1200px){.float-xl-start{float:left !important}.float-xl-end{float:right !important}.float-xl-none{float:none !important}.object-fit-xl-contain{object-fit:contain !important}.object-fit-xl-cover{object-fit:cover !important}.object-fit-xl-fill{object-fit:fill !important}.object-fit-xl-scale{object-fit:scale-down !important}.object-fit-xl-none{object-fit:none !important}.d-xl-inline{display:inline !important}.d-xl-inline-block{display:inline-block !important}.d-xl-block{display:block !important}.d-xl-grid{display:grid !important}.d-xl-inline-grid{display:inline-grid !important}.d-xl-table{display:table !important}.d-xl-table-row{display:table-row !important}.d-xl-table-cell{display:table-cell !important}.d-xl-flex{display:flex !important}.d-xl-inline-flex{display:inline-flex !important}.d-xl-none{display:none !important}.flex-xl-fill{flex:1 1 auto !important}.flex-xl-row{flex-direction:row !important}.flex-xl-column{flex-direction:column !important}.flex-xl-row-reverse{flex-direction:row-reverse !important}.flex-xl-column-reverse{flex-direction:column-reverse !important}.flex-xl-grow-0{flex-grow:0 !important}.flex-xl-grow-1{flex-grow:1 !important}.flex-xl-shrink-0{flex-shrink:0 !important}.flex-xl-shrink-1{flex-shrink:1 !important}.flex-xl-wrap{flex-wrap:wrap !important}.flex-xl-nowrap{flex-wrap:nowrap !important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xl-start{justify-content:flex-start !important}.justify-content-xl-end{justify-content:flex-end !important}.justify-content-xl-center{justify-content:center !important}.justify-content-xl-between{justify-content:space-between !important}.justify-content-xl-around{justify-content:space-around !important}.justify-content-xl-evenly{justify-content:space-evenly !important}.align-items-xl-start{align-items:flex-start !important}.align-items-xl-end{align-items:flex-end !important}.align-items-xl-center{align-items:center !important}.align-items-xl-baseline{align-items:baseline !important}.align-items-xl-stretch{align-items:stretch !important}.align-content-xl-start{align-content:flex-start !important}.align-content-xl-end{align-content:flex-end !important}.align-content-xl-center{align-content:center !important}.align-content-xl-between{align-content:space-between !important}.align-content-xl-around{align-content:space-around !important}.align-content-xl-stretch{align-content:stretch !important}.align-self-xl-auto{align-self:auto !important}.align-self-xl-start{align-self:flex-start !important}.align-self-xl-end{align-self:flex-end !important}.align-self-xl-center{align-self:center !important}.align-self-xl-baseline{align-self:baseline !important}.align-self-xl-stretch{align-self:stretch !important}.order-xl-first{order:-1 !important}.order-xl-0{order:0 !important}.order-xl-1{order:1 !important}.order-xl-2{order:2 !important}.order-xl-3{order:3 !important}.order-xl-4{order:4 !important}.order-xl-5{order:5 !important}.order-xl-last{order:6 !important}.m-xl-0{margin:0 !important}.m-xl-1{margin:.25rem !important}.m-xl-2{margin:.5rem !important}.m-xl-3{margin:1rem !important}.m-xl-4{margin:1.5rem !important}.m-xl-5{margin:3rem !important}.m-xl-auto{margin:auto !important}.mx-xl-0{margin-right:0 !important;margin-left:0 !important}.mx-xl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xl-auto{margin-right:auto !important;margin-left:auto !important}.my-xl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xl-0{margin-top:0 !important}.mt-xl-1{margin-top:.25rem !important}.mt-xl-2{margin-top:.5rem !important}.mt-xl-3{margin-top:1rem !important}.mt-xl-4{margin-top:1.5rem !important}.mt-xl-5{margin-top:3rem !important}.mt-xl-auto{margin-top:auto !important}.me-xl-0{margin-right:0 !important}.me-xl-1{margin-right:.25rem !important}.me-xl-2{margin-right:.5rem !important}.me-xl-3{margin-right:1rem !important}.me-xl-4{margin-right:1.5rem !important}.me-xl-5{margin-right:3rem !important}.me-xl-auto{margin-right:auto !important}.mb-xl-0{margin-bottom:0 !important}.mb-xl-1{margin-bottom:.25rem !important}.mb-xl-2{margin-bottom:.5rem !important}.mb-xl-3{margin-bottom:1rem !important}.mb-xl-4{margin-bottom:1.5rem !important}.mb-xl-5{margin-bottom:3rem !important}.mb-xl-auto{margin-bottom:auto !important}.ms-xl-0{margin-left:0 !important}.ms-xl-1{margin-left:.25rem !important}.ms-xl-2{margin-left:.5rem !important}.ms-xl-3{margin-left:1rem !important}.ms-xl-4{margin-left:1.5rem !important}.ms-xl-5{margin-left:3rem !important}.ms-xl-auto{margin-left:auto !important}.p-xl-0{padding:0 !important}.p-xl-1{padding:.25rem !important}.p-xl-2{padding:.5rem !important}.p-xl-3{padding:1rem !important}.p-xl-4{padding:1.5rem !important}.p-xl-5{padding:3rem !important}.px-xl-0{padding-right:0 !important;padding-left:0 !important}.px-xl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xl-0{padding-top:0 !important}.pt-xl-1{padding-top:.25rem !important}.pt-xl-2{padding-top:.5rem !important}.pt-xl-3{padding-top:1rem !important}.pt-xl-4{padding-top:1.5rem !important}.pt-xl-5{padding-top:3rem !important}.pe-xl-0{padding-right:0 !important}.pe-xl-1{padding-right:.25rem !important}.pe-xl-2{padding-right:.5rem !important}.pe-xl-3{padding-right:1rem !important}.pe-xl-4{padding-right:1.5rem !important}.pe-xl-5{padding-right:3rem !important}.pb-xl-0{padding-bottom:0 !important}.pb-xl-1{padding-bottom:.25rem !important}.pb-xl-2{padding-bottom:.5rem !important}.pb-xl-3{padding-bottom:1rem !important}.pb-xl-4{padding-bottom:1.5rem !important}.pb-xl-5{padding-bottom:3rem !important}.ps-xl-0{padding-left:0 !important}.ps-xl-1{padding-left:.25rem !important}.ps-xl-2{padding-left:.5rem !important}.ps-xl-3{padding-left:1rem !important}.ps-xl-4{padding-left:1.5rem !important}.ps-xl-5{padding-left:3rem !important}.gap-xl-0{gap:0 !important}.gap-xl-1{gap:.25rem !important}.gap-xl-2{gap:.5rem !important}.gap-xl-3{gap:1rem !important}.gap-xl-4{gap:1.5rem !important}.gap-xl-5{gap:3rem !important}.row-gap-xl-0{row-gap:0 !important}.row-gap-xl-1{row-gap:.25rem !important}.row-gap-xl-2{row-gap:.5rem !important}.row-gap-xl-3{row-gap:1rem !important}.row-gap-xl-4{row-gap:1.5rem !important}.row-gap-xl-5{row-gap:3rem !important}.column-gap-xl-0{column-gap:0 !important}.column-gap-xl-1{column-gap:.25rem !important}.column-gap-xl-2{column-gap:.5rem !important}.column-gap-xl-3{column-gap:1rem !important}.column-gap-xl-4{column-gap:1.5rem !important}.column-gap-xl-5{column-gap:3rem !important}.text-xl-start{text-align:left !important}.text-xl-end{text-align:right !important}.text-xl-center{text-align:center !important}}@media(min-width: 1400px){.float-xxl-start{float:left !important}.float-xxl-end{float:right !important}.float-xxl-none{float:none !important}.object-fit-xxl-contain{object-fit:contain !important}.object-fit-xxl-cover{object-fit:cover !important}.object-fit-xxl-fill{object-fit:fill !important}.object-fit-xxl-scale{object-fit:scale-down !important}.object-fit-xxl-none{object-fit:none !important}.d-xxl-inline{display:inline !important}.d-xxl-inline-block{display:inline-block !important}.d-xxl-block{display:block !important}.d-xxl-grid{display:grid !important}.d-xxl-inline-grid{display:inline-grid !important}.d-xxl-table{display:table !important}.d-xxl-table-row{display:table-row !important}.d-xxl-table-cell{display:table-cell !important}.d-xxl-flex{display:flex !important}.d-xxl-inline-flex{display:inline-flex !important}.d-xxl-none{display:none !important}.flex-xxl-fill{flex:1 1 auto !important}.flex-xxl-row{flex-direction:row !important}.flex-xxl-column{flex-direction:column !important}.flex-xxl-row-reverse{flex-direction:row-reverse !important}.flex-xxl-column-reverse{flex-direction:column-reverse !important}.flex-xxl-grow-0{flex-grow:0 !important}.flex-xxl-grow-1{flex-grow:1 !important}.flex-xxl-shrink-0{flex-shrink:0 !important}.flex-xxl-shrink-1{flex-shrink:1 !important}.flex-xxl-wrap{flex-wrap:wrap !important}.flex-xxl-nowrap{flex-wrap:nowrap !important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important}.justify-content-xxl-start{justify-content:flex-start !important}.justify-content-xxl-end{justify-content:flex-end !important}.justify-content-xxl-center{justify-content:center !important}.justify-content-xxl-between{justify-content:space-between !important}.justify-content-xxl-around{justify-content:space-around !important}.justify-content-xxl-evenly{justify-content:space-evenly !important}.align-items-xxl-start{align-items:flex-start !important}.align-items-xxl-end{align-items:flex-end !important}.align-items-xxl-center{align-items:center !important}.align-items-xxl-baseline{align-items:baseline !important}.align-items-xxl-stretch{align-items:stretch !important}.align-content-xxl-start{align-content:flex-start !important}.align-content-xxl-end{align-content:flex-end !important}.align-content-xxl-center{align-content:center !important}.align-content-xxl-between{align-content:space-between !important}.align-content-xxl-around{align-content:space-around !important}.align-content-xxl-stretch{align-content:stretch !important}.align-self-xxl-auto{align-self:auto !important}.align-self-xxl-start{align-self:flex-start !important}.align-self-xxl-end{align-self:flex-end !important}.align-self-xxl-center{align-self:center !important}.align-self-xxl-baseline{align-self:baseline !important}.align-self-xxl-stretch{align-self:stretch !important}.order-xxl-first{order:-1 !important}.order-xxl-0{order:0 !important}.order-xxl-1{order:1 !important}.order-xxl-2{order:2 !important}.order-xxl-3{order:3 !important}.order-xxl-4{order:4 !important}.order-xxl-5{order:5 !important}.order-xxl-last{order:6 !important}.m-xxl-0{margin:0 !important}.m-xxl-1{margin:.25rem !important}.m-xxl-2{margin:.5rem !important}.m-xxl-3{margin:1rem !important}.m-xxl-4{margin:1.5rem !important}.m-xxl-5{margin:3rem !important}.m-xxl-auto{margin:auto !important}.mx-xxl-0{margin-right:0 !important;margin-left:0 !important}.mx-xxl-1{margin-right:.25rem !important;margin-left:.25rem !important}.mx-xxl-2{margin-right:.5rem !important;margin-left:.5rem !important}.mx-xxl-3{margin-right:1rem !important;margin-left:1rem !important}.mx-xxl-4{margin-right:1.5rem !important;margin-left:1.5rem !important}.mx-xxl-5{margin-right:3rem !important;margin-left:3rem !important}.mx-xxl-auto{margin-right:auto !important;margin-left:auto !important}.my-xxl-0{margin-top:0 !important;margin-bottom:0 !important}.my-xxl-1{margin-top:.25rem !important;margin-bottom:.25rem !important}.my-xxl-2{margin-top:.5rem !important;margin-bottom:.5rem !important}.my-xxl-3{margin-top:1rem !important;margin-bottom:1rem !important}.my-xxl-4{margin-top:1.5rem !important;margin-bottom:1.5rem !important}.my-xxl-5{margin-top:3rem !important;margin-bottom:3rem !important}.my-xxl-auto{margin-top:auto !important;margin-bottom:auto !important}.mt-xxl-0{margin-top:0 !important}.mt-xxl-1{margin-top:.25rem !important}.mt-xxl-2{margin-top:.5rem !important}.mt-xxl-3{margin-top:1rem !important}.mt-xxl-4{margin-top:1.5rem !important}.mt-xxl-5{margin-top:3rem !important}.mt-xxl-auto{margin-top:auto !important}.me-xxl-0{margin-right:0 !important}.me-xxl-1{margin-right:.25rem !important}.me-xxl-2{margin-right:.5rem !important}.me-xxl-3{margin-right:1rem !important}.me-xxl-4{margin-right:1.5rem !important}.me-xxl-5{margin-right:3rem !important}.me-xxl-auto{margin-right:auto !important}.mb-xxl-0{margin-bottom:0 !important}.mb-xxl-1{margin-bottom:.25rem !important}.mb-xxl-2{margin-bottom:.5rem !important}.mb-xxl-3{margin-bottom:1rem !important}.mb-xxl-4{margin-bottom:1.5rem !important}.mb-xxl-5{margin-bottom:3rem !important}.mb-xxl-auto{margin-bottom:auto !important}.ms-xxl-0{margin-left:0 !important}.ms-xxl-1{margin-left:.25rem !important}.ms-xxl-2{margin-left:.5rem !important}.ms-xxl-3{margin-left:1rem !important}.ms-xxl-4{margin-left:1.5rem !important}.ms-xxl-5{margin-left:3rem !important}.ms-xxl-auto{margin-left:auto !important}.p-xxl-0{padding:0 !important}.p-xxl-1{padding:.25rem !important}.p-xxl-2{padding:.5rem !important}.p-xxl-3{padding:1rem !important}.p-xxl-4{padding:1.5rem !important}.p-xxl-5{padding:3rem !important}.px-xxl-0{padding-right:0 !important;padding-left:0 !important}.px-xxl-1{padding-right:.25rem !important;padding-left:.25rem !important}.px-xxl-2{padding-right:.5rem !important;padding-left:.5rem !important}.px-xxl-3{padding-right:1rem !important;padding-left:1rem !important}.px-xxl-4{padding-right:1.5rem !important;padding-left:1.5rem !important}.px-xxl-5{padding-right:3rem !important;padding-left:3rem !important}.py-xxl-0{padding-top:0 !important;padding-bottom:0 !important}.py-xxl-1{padding-top:.25rem !important;padding-bottom:.25rem !important}.py-xxl-2{padding-top:.5rem !important;padding-bottom:.5rem !important}.py-xxl-3{padding-top:1rem !important;padding-bottom:1rem !important}.py-xxl-4{padding-top:1.5rem !important;padding-bottom:1.5rem !important}.py-xxl-5{padding-top:3rem !important;padding-bottom:3rem !important}.pt-xxl-0{padding-top:0 !important}.pt-xxl-1{padding-top:.25rem !important}.pt-xxl-2{padding-top:.5rem !important}.pt-xxl-3{padding-top:1rem !important}.pt-xxl-4{padding-top:1.5rem !important}.pt-xxl-5{padding-top:3rem !important}.pe-xxl-0{padding-right:0 !important}.pe-xxl-1{padding-right:.25rem !important}.pe-xxl-2{padding-right:.5rem !important}.pe-xxl-3{padding-right:1rem !important}.pe-xxl-4{padding-right:1.5rem !important}.pe-xxl-5{padding-right:3rem !important}.pb-xxl-0{padding-bottom:0 !important}.pb-xxl-1{padding-bottom:.25rem !important}.pb-xxl-2{padding-bottom:.5rem !important}.pb-xxl-3{padding-bottom:1rem !important}.pb-xxl-4{padding-bottom:1.5rem !important}.pb-xxl-5{padding-bottom:3rem !important}.ps-xxl-0{padding-left:0 !important}.ps-xxl-1{padding-left:.25rem !important}.ps-xxl-2{padding-left:.5rem !important}.ps-xxl-3{padding-left:1rem !important}.ps-xxl-4{padding-left:1.5rem !important}.ps-xxl-5{padding-left:3rem !important}.gap-xxl-0{gap:0 !important}.gap-xxl-1{gap:.25rem !important}.gap-xxl-2{gap:.5rem !important}.gap-xxl-3{gap:1rem !important}.gap-xxl-4{gap:1.5rem !important}.gap-xxl-5{gap:3rem !important}.row-gap-xxl-0{row-gap:0 !important}.row-gap-xxl-1{row-gap:.25rem !important}.row-gap-xxl-2{row-gap:.5rem !important}.row-gap-xxl-3{row-gap:1rem !important}.row-gap-xxl-4{row-gap:1.5rem !important}.row-gap-xxl-5{row-gap:3rem !important}.column-gap-xxl-0{column-gap:0 !important}.column-gap-xxl-1{column-gap:.25rem !important}.column-gap-xxl-2{column-gap:.5rem !important}.column-gap-xxl-3{column-gap:1rem !important}.column-gap-xxl-4{column-gap:1.5rem !important}.column-gap-xxl-5{column-gap:3rem !important}.text-xxl-start{text-align:left !important}.text-xxl-end{text-align:right !important}.text-xxl-center{text-align:center !important}}.bg-default{color:#fff}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#fff}.bg-warning{color:#fff}.bg-danger{color:#fff}.bg-light{color:#000}.bg-dark{color:#fff}@media(min-width: 1200px){.fs-1{font-size:2rem !important}.fs-2{font-size:1.65rem !important}.fs-3{font-size:1.45rem !important}}@media print{.d-print-inline{display:inline !important}.d-print-inline-block{display:inline-block !important}.d-print-block{display:block !important}.d-print-grid{display:grid !important}.d-print-inline-grid{display:inline-grid !important}.d-print-table{display:table !important}.d-print-table-row{display:table-row !important}.d-print-table-cell{display:table-cell !important}.d-print-flex{display:flex !important}.d-print-inline-flex{display:inline-flex !important}.d-print-none{display:none !important}}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}:root{--bslib-spacer: 1rem;--bslib-mb-spacer: var(--bslib-spacer, 1rem)}.bslib-mb-spacing{margin-bottom:var(--bslib-mb-spacer)}.bslib-gap-spacing{gap:var(--bslib-mb-spacer)}.bslib-gap-spacing>.bslib-mb-spacing,.bslib-gap-spacing>.form-group,.bslib-gap-spacing>p,.bslib-gap-spacing>pre{margin-bottom:0}.html-fill-container>.html-fill-item.bslib-mb-spacing{margin-bottom:0}.bg-blue{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #2780e3;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-indigo{--bslib-color-fg: #6610f2;color:var(--bslib-color-fg)}.bg-purple{--bslib-color-bg: #613d7c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #613d7c;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #e83e8c;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #e83e8c;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #ff0039;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #f0ad4e;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #f0ad4e;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ff7518;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #3fb618;color:var(--bslib-color-fg)}.bg-teal{--bslib-color-bg: #20c997;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-teal{--bslib-color-fg: #20c997;color:var(--bslib-color-fg)}.bg-cyan{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #9954bb;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #343a40}.bg-default{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-primary{--bslib-color-fg: #2780e3}.bg-primary{--bslib-color-bg: #2780e3;--bslib-color-fg: #fff}.text-secondary{--bslib-color-fg: #343a40}.bg-secondary{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.text-success{--bslib-color-fg: #3fb618}.bg-success{--bslib-color-bg: #3fb618;--bslib-color-fg: #fff}.text-info{--bslib-color-fg: #9954bb}.bg-info{--bslib-color-bg: #9954bb;--bslib-color-fg: #fff}.text-warning{--bslib-color-fg: #ff7518}.bg-warning{--bslib-color-bg: #ff7518;--bslib-color-fg: #fff}.text-danger{--bslib-color-fg: #ff0039}.bg-danger{--bslib-color-bg: #ff0039;--bslib-color-fg: #fff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #343a40}.bg-dark{--bslib-color-bg: #343a40;--bslib-color-fg: #fff}.bg-gradient-blue-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4053e9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4053e9;color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3e65ba;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3e65ba;color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #fff;--bslib-color-bg: #7466c0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #7466c0;color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #fff;--bslib-color-bg: #7d4d9f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #7d4d9f;color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #fff;--bslib-color-bg: #7792a7;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #7792a7;color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #7d7c92;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #7d7c92;color:#fff}.bg-gradient-blue-green{--bslib-color-fg: #fff;--bslib-color-bg: #319692;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #319692;color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #fff;--bslib-color-bg: #249dc5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #249dc5;color:#fff}.bg-gradient-blue-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #556ed3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #2780e3 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #556ed3;color:#fff}.bg-gradient-indigo-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4d3dec;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4d3dec;color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #fff;--bslib-color-bg: #6422c3;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #6422c3;color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #fff;--bslib-color-bg: #9a22c9;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #9a22c9;color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #fff;--bslib-color-bg: #a30aa8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a30aa8;color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9d4fb0;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9d4fb0;color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a3389b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a3389b;color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #fff;--bslib-color-bg: #56529b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #56529b;color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #fff;--bslib-color-bg: #4a5ace;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #4a5ace;color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #7a2bdc;background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #7a2bdc;color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #fff;--bslib-color-bg: #4a58a5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #4a58a5;color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #632bab;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #632bab;color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #fff;--bslib-color-bg: #973d82;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #973d82;color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #fff;--bslib-color-bg: #a02561;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #a02561;color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #fff;--bslib-color-bg: #9a6a6a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #9a6a6a;color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #a05354;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #a05354;color:#fff}.bg-gradient-purple-green{--bslib-color-fg: #fff;--bslib-color-bg: #536d54;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #536d54;color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #fff;--bslib-color-bg: #477587;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #477587;color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #774695;background:linear-gradient(var(--bg-gradient-deg, 140deg), #613d7c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #774695;color:#fff}.bg-gradient-pink-blue{--bslib-color-fg: #fff;--bslib-color-bg: #9b58af;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #9b58af;color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b42cb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b42cb5;color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b23e86;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b23e86;color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #fff;--bslib-color-bg: #f1256b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f1256b;color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #fff;--bslib-color-bg: #eb6a73;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #eb6a73;color:#fff}.bg-gradient-pink-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #f1545e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f1545e;color:#fff}.bg-gradient-pink-green{--bslib-color-fg: #fff;--bslib-color-bg: #a46e5e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a46e5e;color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #fff;--bslib-color-bg: #987690;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #987690;color:#fff}.bg-gradient-pink-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #c8479f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #e83e8c var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #c8479f;color:#fff}.bg-gradient-red-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a9337d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a9337d;color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c20683;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c20683;color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c01854;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c01854;color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f6195a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f6195a;color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #fff;--bslib-color-bg: #f94541;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f94541;color:#fff}.bg-gradient-red-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #ff2f2c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #ff2f2c;color:#fff}.bg-gradient-red-green{--bslib-color-fg: #fff;--bslib-color-bg: #b2492c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b2492c;color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6505f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6505f;color:#fff}.bg-gradient-red-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d6226d;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff0039 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d6226d;color:#fff}.bg-gradient-orange-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a09b8a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a09b8a;color:#fff}.bg-gradient-orange-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #b96e90;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #b96e90;color:#fff}.bg-gradient-orange-purple{--bslib-color-fg: #fff;--bslib-color-bg: #b78060;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #b78060;color:#fff}.bg-gradient-orange-pink{--bslib-color-fg: #fff;--bslib-color-bg: #ed8167;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #ed8167;color:#fff}.bg-gradient-orange-red{--bslib-color-fg: #fff;--bslib-color-bg: #f66846;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #f66846;color:#fff}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: #f69738;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #f69738;color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: #a9b138;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #a9b138;color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: #9db86b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #9db86b;color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #cd897a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #f0ad4e var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #cd897a;color:#fff}.bg-gradient-yellow-blue{--bslib-color-fg: #fff;--bslib-color-bg: #a97969;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #a97969;color:#fff}.bg-gradient-yellow-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #c24d6f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #c24d6f;color:#fff}.bg-gradient-yellow-purple{--bslib-color-fg: #fff;--bslib-color-bg: #c05f40;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #c05f40;color:#fff}.bg-gradient-yellow-pink{--bslib-color-fg: #fff;--bslib-color-bg: #f65f46;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #f65f46;color:#fff}.bg-gradient-yellow-red{--bslib-color-fg: #fff;--bslib-color-bg: #ff4625;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #ff4625;color:#fff}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: #f98b2e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #f98b2e;color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #fff;--bslib-color-bg: #b28f18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #b28f18;color:#fff}.bg-gradient-yellow-teal{--bslib-color-fg: #fff;--bslib-color-bg: #a6974b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #a6974b;color:#fff}.bg-gradient-yellow-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #d66859;background:linear-gradient(var(--bg-gradient-deg, 140deg), #ff7518 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #d66859;color:#fff}.bg-gradient-green-blue{--bslib-color-fg: #fff;--bslib-color-bg: #35a069;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #35a069;color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #4f746f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #4f746f;color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #fff;--bslib-color-bg: #4d8640;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #4d8640;color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #fff;--bslib-color-bg: #838646;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #838646;color:#fff}.bg-gradient-green-red{--bslib-color-fg: #fff;--bslib-color-bg: #8c6d25;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #8c6d25;color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: #86b22e;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #86b22e;color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #8c9c18;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #8c9c18;color:#fff}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: #33be4b;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #33be4b;color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #638f59;background:linear-gradient(var(--bg-gradient-deg, 140deg), #3fb618 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #638f59;color:#fff}.bg-gradient-teal-blue{--bslib-color-fg: #fff;--bslib-color-bg: #23acb5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #23acb5;color:#fff}.bg-gradient-teal-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #3c7fbb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #3c7fbb;color:#fff}.bg-gradient-teal-purple{--bslib-color-fg: #fff;--bslib-color-bg: #3a918c;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #3a918c;color:#fff}.bg-gradient-teal-pink{--bslib-color-fg: #fff;--bslib-color-bg: #709193;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #709193;color:#fff}.bg-gradient-teal-red{--bslib-color-fg: #fff;--bslib-color-bg: #797971;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #797971;color:#fff}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: #73be7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #73be7a;color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #79a764;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #79a764;color:#fff}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: #2cc164;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #2cc164;color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #fff;--bslib-color-bg: #509aa5;background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #9954bb var(--bg-gradient-end, 180%)) #509aa5;color:#fff}.bg-gradient-cyan-blue{--bslib-color-fg: #fff;--bslib-color-bg: #6b66cb;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #2780e3 var(--bg-gradient-end, 180%)) #6b66cb;color:#fff}.bg-gradient-cyan-indigo{--bslib-color-fg: #fff;--bslib-color-bg: #8539d1;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) #8539d1;color:#fff}.bg-gradient-cyan-purple{--bslib-color-fg: #fff;--bslib-color-bg: #834ba2;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #613d7c var(--bg-gradient-end, 180%)) #834ba2;color:#fff}.bg-gradient-cyan-pink{--bslib-color-fg: #fff;--bslib-color-bg: #b94ba8;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #e83e8c var(--bg-gradient-end, 180%)) #b94ba8;color:#fff}.bg-gradient-cyan-red{--bslib-color-fg: #fff;--bslib-color-bg: #c23287;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff0039 var(--bg-gradient-end, 180%)) #c23287;color:#fff}.bg-gradient-cyan-orange{--bslib-color-fg: #fff;--bslib-color-bg: #bc788f;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #f0ad4e var(--bg-gradient-end, 180%)) #bc788f;color:#fff}.bg-gradient-cyan-yellow{--bslib-color-fg: #fff;--bslib-color-bg: #c2617a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #ff7518 var(--bg-gradient-end, 180%)) #c2617a;color:#fff}.bg-gradient-cyan-green{--bslib-color-fg: #fff;--bslib-color-bg: #757b7a;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #3fb618 var(--bg-gradient-end, 180%)) #757b7a;color:#fff}.bg-gradient-cyan-teal{--bslib-color-fg: #fff;--bslib-color-bg: #6983ad;background:linear-gradient(var(--bg-gradient-deg, 140deg), #9954bb var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) #6983ad;color:#fff}@media(min-width: 576px){.nav:not(.nav-hidden){display:flex !important;display:-webkit-flex !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column){float:none !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.bslib-nav-spacer{margin-left:auto !important}.nav:not(.nav-hidden):not(.nav-stacked):not(.flex-column)>.form-inline{margin-top:auto;margin-bottom:auto}.nav:not(.nav-hidden).nav-stacked{flex-direction:column;-webkit-flex-direction:column;height:100%}.nav:not(.nav-hidden).nav-stacked>.bslib-nav-spacer{margin-top:auto !important}}.bslib-sidebar-layout{--bslib-sidebar-transition-duration: 500ms;--bslib-sidebar-transition-easing-x: cubic-bezier(0.8, 0.78, 0.22, 1.07);--bslib-sidebar-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-border-radius: var(--bs-border-radius);--bslib-sidebar-vert-border: var(--bs-card-border-width, 1px) solid var(--bs-card-border-color, rgba(0, 0, 0, 0.175));--bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--bslib-sidebar-fg: var(--bs-emphasis-color, black);--bslib-sidebar-main-fg: var(--bs-card-color, var(--bs-body-color));--bslib-sidebar-main-bg: var(--bs-card-bg, var(--bs-body-bg));--bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--bslib-sidebar-padding: calc(var(--bslib-spacer) * 1.5);--bslib-sidebar-icon-size: var(--bslib-spacer, 1rem);--bslib-sidebar-icon-button-size: calc(var(--bslib-sidebar-icon-size, 1rem) * 2);--bslib-sidebar-padding-icon: calc(var(--bslib-sidebar-icon-button-size, 2rem) * 1.5);--bslib-collapse-toggle-border-radius: var(--bs-border-radius, 0.25rem);--bslib-collapse-toggle-transform: 0deg;--bslib-sidebar-toggle-transition-easing: cubic-bezier(1, 0, 0, 1);--bslib-collapse-toggle-right-transform: 180deg;--bslib-sidebar-column-main: minmax(0, 1fr);display:grid !important;grid-template-columns:min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px)) var(--bslib-sidebar-column-main);position:relative;transition:grid-template-columns ease-in-out var(--bslib-sidebar-transition-duration);border:var(--bslib-sidebar-border);border-radius:var(--bslib-sidebar-border-radius)}@media(prefers-reduced-motion: reduce){.bslib-sidebar-layout{transition:none}}.bslib-sidebar-layout[data-bslib-sidebar-border=false]{border:none}.bslib-sidebar-layout[data-bslib-sidebar-border-radius=false]{border-radius:initial}.bslib-sidebar-layout>.main,.bslib-sidebar-layout>.sidebar{grid-row:1/2;border-radius:inherit;overflow:auto}.bslib-sidebar-layout>.main{grid-column:2/3;border-top-left-radius:0;border-bottom-left-radius:0;padding:var(--bslib-sidebar-padding);transition:padding var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration);color:var(--bslib-sidebar-main-fg);background-color:var(--bslib-sidebar-main-bg)}.bslib-sidebar-layout>.sidebar{grid-column:1/2;width:100%;height:100%;border-right:var(--bslib-sidebar-vert-border);border-top-right-radius:0;border-bottom-right-radius:0;color:var(--bslib-sidebar-fg);background-color:var(--bslib-sidebar-bg);backdrop-filter:blur(5px)}.bslib-sidebar-layout>.sidebar>.sidebar-content{display:flex;flex-direction:column;gap:var(--bslib-spacer, 1rem);padding:var(--bslib-sidebar-padding);padding-top:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout>.sidebar>.sidebar-content>:last-child:not(.sidebar-title){margin-bottom:0}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion{margin-left:calc(-1*var(--bslib-sidebar-padding));margin-right:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:last-child{margin-bottom:calc(-1*var(--bslib-sidebar-padding))}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child){margin-bottom:1rem}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion .accordion-body{display:flex;flex-direction:column}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:first-child) .accordion-item:first-child{border-top:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content>.accordion:not(:last-child) .accordion-item:last-child{border-bottom:var(--bs-accordion-border-width) solid var(--bs-accordion-border-color)}.bslib-sidebar-layout>.sidebar>.sidebar-content.has-accordion>.sidebar-title{border-bottom:none;padding-bottom:0}.bslib-sidebar-layout>.sidebar .shiny-input-container{width:100%}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar>.sidebar-content{padding-top:var(--bslib-sidebar-padding)}.bslib-sidebar-layout>.collapse-toggle{grid-row:1/2;grid-column:1/2;display:inline-flex;align-items:center;position:absolute;right:calc(var(--bslib-sidebar-icon-size));top:calc(var(--bslib-sidebar-icon-size, 1rem)/2);border:none;border-radius:var(--bslib-collapse-toggle-border-radius);height:var(--bslib-sidebar-icon-button-size, 2rem);width:var(--bslib-sidebar-icon-button-size, 2rem);display:flex;align-items:center;justify-content:center;padding:0;color:var(--bslib-sidebar-fg);background-color:unset;transition:color var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),top var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),right var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration),left var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover{background-color:var(--bslib-sidebar-toggle-bg)}.bslib-sidebar-layout>.collapse-toggle>.collapse-icon{opacity:.8;width:var(--bslib-sidebar-icon-size);height:var(--bslib-sidebar-icon-size);transform:rotateY(var(--bslib-collapse-toggle-transform));transition:transform var(--bslib-sidebar-toggle-transition-easing) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout>.collapse-toggle:hover>.collapse-icon{opacity:1}.bslib-sidebar-layout .sidebar-title{font-size:1.25rem;line-height:1.25;margin-top:0;margin-bottom:1rem;padding-bottom:1rem;border-bottom:var(--bslib-sidebar-border)}.bslib-sidebar-layout.sidebar-right{grid-template-columns:var(--bslib-sidebar-column-main) min(100% - var(--bslib-sidebar-icon-size),var(--bslib-sidebar-width, 250px))}.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/2;border-top-right-radius:0;border-bottom-right-radius:0;border-top-left-radius:inherit;border-bottom-left-radius:inherit}.bslib-sidebar-layout.sidebar-right>.sidebar{grid-column:2/3;border-right:none;border-left:var(--bslib-sidebar-vert-border);border-top-left-radius:0;border-bottom-left-radius:0}.bslib-sidebar-layout.sidebar-right>.collapse-toggle{grid-column:2/3;left:var(--bslib-sidebar-icon-size);right:unset;border:var(--bslib-collapse-toggle-border)}.bslib-sidebar-layout.sidebar-right>.collapse-toggle>.collapse-icon{transform:rotateY(var(--bslib-collapse-toggle-right-transform))}.bslib-sidebar-layout.sidebar-collapsed{--bslib-collapse-toggle-transform: 180deg;--bslib-collapse-toggle-right-transform: 0deg;--bslib-sidebar-vert-border: none;grid-template-columns:0 minmax(0, 1fr)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right{grid-template-columns:minmax(0, 1fr) 0}.bslib-sidebar-layout.sidebar-collapsed:not(.transitioning)>.sidebar>*{display:none}.bslib-sidebar-layout.sidebar-collapsed>.main{border-radius:inherit}.bslib-sidebar-layout.sidebar-collapsed:not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout.sidebar-collapsed>.collapse-toggle{color:var(--bslib-sidebar-main-fg);top:calc(var(--bslib-sidebar-overlap-counter, 0)*(var(--bslib-sidebar-icon-size) + var(--bslib-sidebar-padding)) + var(--bslib-sidebar-icon-size, 1rem)/2);right:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px))}.bslib-sidebar-layout.sidebar-collapsed.sidebar-right>.collapse-toggle{left:calc(-2.5*var(--bslib-sidebar-icon-size) - var(--bs-card-border-width, 1px));right:unset}@media(min-width: 576px){.bslib-sidebar-layout.transitioning>.sidebar>.sidebar-content{display:none}}@media(max-width: 575.98px){.bslib-sidebar-layout[data-bslib-sidebar-open=desktop]{--bslib-sidebar-js-init-collapsed: true}.bslib-sidebar-layout>.sidebar,.bslib-sidebar-layout.sidebar-right>.sidebar{border:none}.bslib-sidebar-layout>.main,.bslib-sidebar-layout.sidebar-right>.main{grid-column:1/3}.bslib-sidebar-layout[data-bslib-sidebar-open=always]{display:block !important}.bslib-sidebar-layout[data-bslib-sidebar-open=always]>.sidebar{max-height:var(--bslib-sidebar-max-height-mobile);overflow-y:auto;border-top:var(--bslib-sidebar-vert-border)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]){grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.sidebar{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-collapsed)>.collapse-toggle{z-index:1}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed{grid-template-columns:0 100%}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed.sidebar-right{grid-template-columns:100% 0}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]):not(.sidebar-right)>.main{padding-left:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-right>.main{padding-right:var(--bslib-sidebar-padding-icon)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always])>.main{opacity:0;transition:opacity var(--bslib-sidebar-transition-easing-x) var(--bslib-sidebar-transition-duration)}.bslib-sidebar-layout:not([data-bslib-sidebar-open=always]).sidebar-collapsed>.main{opacity:1}}:root{--bslib-page-sidebar-title-bg: #f8f9fa;--bslib-page-sidebar-title-color: #000}.bslib-page-title{background-color:var(--bslib-page-sidebar-title-bg);color:var(--bslib-page-sidebar-title-color);font-size:1.25rem;font-weight:300;padding:var(--bslib-spacer, 1rem);padding-left:1.5rem;margin-bottom:0;border-bottom:1px solid #dee2e6}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2;color:var(--bs-heading-color);margin-bottom:0}@media(min-width: 1200px){.accordion .accordion-header{font-size:1.65rem}}.accordion .accordion-icon:not(:empty){margin-right:.75rem;display:flex}.accordion .accordion-button:not(.collapsed){box-shadow:none}.accordion .accordion-button:not(.collapsed):focus{box-shadow:var(--bs-accordion-btn-focus-box-shadow)}.bslib-card{overflow:auto}.bslib-card .card-body+.card-body{padding-top:0}.bslib-card .card-body{overflow:auto}.bslib-card .card-body p{margin-top:0}.bslib-card .card-body p:last-child{margin-bottom:0}.bslib-card .card-body{max-height:var(--bslib-card-body-max-height, none)}.bslib-card[data-full-screen=true]>.card-body{max-height:var(--bslib-card-body-max-height-full-screen, none)}.bslib-card .card-header .form-group{margin-bottom:0}.bslib-card .card-header .selectize-control{margin-bottom:0}.bslib-card .card-header .selectize-control .item{margin-right:1.15rem}.bslib-card .card-footer{margin-top:auto}.bslib-card .bslib-navs-card-title{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center}.bslib-card .bslib-navs-card-title .nav{margin-left:auto}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border=true]){border:none}.bslib-card .bslib-sidebar-layout:not([data-bslib-sidebar-border-radius=true]){border-top-left-radius:0;border-top-right-radius:0}[data-full-screen=true]{position:fixed;inset:3.5rem 1rem 1rem;height:auto !important;max-height:none !important;width:auto !important;z-index:1070}.bslib-full-screen-enter{display:none;position:absolute;bottom:var(--bslib-full-screen-enter-bottom, 0.2rem);right:var(--bslib-full-screen-enter-right, 0);top:var(--bslib-full-screen-enter-top);left:var(--bslib-full-screen-enter-left);color:var(--bslib-color-fg, var(--bs-card-color));background-color:var(--bslib-color-bg, var(--bs-card-bg, var(--bs-body-bg)));border:var(--bs-card-border-width) solid var(--bslib-color-fg, var(--bs-card-border-color));box-shadow:0 2px 4px rgba(0,0,0,.15);margin:.2rem .4rem;padding:.55rem !important;font-size:.8rem;cursor:pointer;opacity:.7;z-index:1070}.bslib-full-screen-enter:hover{opacity:1}.card[data-full-screen=false]:hover>*>.bslib-full-screen-enter{display:block}.bslib-has-full-screen .card:hover>*>.bslib-full-screen-enter{display:none}@media(max-width: 575.98px){.bslib-full-screen-enter{display:none !important}}.bslib-full-screen-exit{position:relative;top:1.35rem;font-size:.9rem;cursor:pointer;text-decoration:none;display:flex;float:right;margin-right:2.15rem;align-items:center;color:rgba(var(--bs-body-bg-rgb), 0.8)}.bslib-full-screen-exit:hover{color:rgba(var(--bs-body-bg-rgb), 1)}.bslib-full-screen-exit svg{margin-left:.5rem;font-size:1.5rem}#bslib-full-screen-overlay{position:fixed;inset:0;background-color:rgba(var(--bs-body-color-rgb), 0.6);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:1069;animation:bslib-full-screen-overlay-enter 400ms cubic-bezier(0.6, 0.02, 0.65, 1) forwards}@keyframes bslib-full-screen-overlay-enter{0%{opacity:0}100%{opacity:1}}.navbar+.container-fluid:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-sm:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-md:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-lg:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xl:has(>.tab-content>.tab-pane.active.html-fill-container),.navbar+.container-xxl:has(>.tab-content>.tab-pane.active.html-fill-container){padding-left:0;padding-right:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container,.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container{padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container:has(>.bslib-sidebar-layout:only-child){padding:0}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border=true]){border-left:none;border-right:none;border-bottom:none}.navbar+.container-fluid>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-sm>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-md>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-lg>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]),.navbar+.container-xxl>.tab-content>.tab-pane.active.html-fill-container>.bslib-sidebar-layout:only-child:not([data-bslib-sidebar-border-radius=true]){border-radius:0}.navbar+div>.bslib-sidebar-layout{border-top:var(--bslib-sidebar-border)}.bslib-grid{display:grid !important;gap:var(--bslib-spacer, 1rem);height:var(--bslib-grid-height)}.bslib-grid.grid{grid-template-columns:repeat(var(--bs-columns, 12), minmax(0, 1fr));grid-template-rows:unset;grid-auto-rows:var(--bslib-grid--row-heights);--bslib-grid--row-heights--xs: unset;--bslib-grid--row-heights--sm: unset;--bslib-grid--row-heights--md: unset;--bslib-grid--row-heights--lg: unset;--bslib-grid--row-heights--xl: unset;--bslib-grid--row-heights--xxl: unset}.bslib-grid.grid.bslib-grid--row-heights--xs{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xs)}@media(min-width: 576px){.bslib-grid.grid.bslib-grid--row-heights--sm{--bslib-grid--row-heights: var(--bslib-grid--row-heights--sm)}}@media(min-width: 768px){.bslib-grid.grid.bslib-grid--row-heights--md{--bslib-grid--row-heights: var(--bslib-grid--row-heights--md)}}@media(min-width: 992px){.bslib-grid.grid.bslib-grid--row-heights--lg{--bslib-grid--row-heights: var(--bslib-grid--row-heights--lg)}}@media(min-width: 1200px){.bslib-grid.grid.bslib-grid--row-heights--xl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xl)}}@media(min-width: 1400px){.bslib-grid.grid.bslib-grid--row-heights--xxl{--bslib-grid--row-heights: var(--bslib-grid--row-heights--xxl)}}.bslib-grid>*>.shiny-input-container{width:100%}.bslib-grid-item{grid-column:auto/span 1}@media(max-width: 767.98px){.bslib-grid-item{grid-column:1/-1}}@media(max-width: 575.98px){.bslib-grid{grid-template-columns:1fr !important;height:var(--bslib-grid-height-mobile)}.bslib-grid.grid{height:unset !important;grid-auto-rows:var(--bslib-grid--row-heights--xs, auto)}}:root{--bslib-value-box-shadow: none;--bslib-value-box-border-width-auto-yes: var(--bslib-value-box-border-width-baseline);--bslib-value-box-border-width-auto-no: 0;--bslib-value-box-border-width-baseline: 1px}.bslib-value-box{border-width:var(--bslib-value-box-border-width-auto-no, var(--bslib-value-box-border-width-baseline));container-name:bslib-value-box;container-type:inline-size}.bslib-value-box.card{box-shadow:var(--bslib-value-box-shadow)}.bslib-value-box.border-auto{border-width:var(--bslib-value-box-border-width-auto-yes, var(--bslib-value-box-border-width-baseline))}.bslib-value-box.default{--bslib-value-box-bg-default: var(--bs-card-bg, #fff);--bslib-value-box-border-color-default: var(--bs-card-border-color, rgba(0, 0, 0, 0.175));color:var(--bslib-value-box-color);background-color:var(--bslib-value-box-bg, var(--bslib-value-box-bg-default));border-color:var(--bslib-value-box-border-color, var(--bslib-value-box-border-color-default))}.bslib-value-box .value-box-grid{display:grid;grid-template-areas:"left right";align-items:center;overflow:hidden}.bslib-value-box .value-box-showcase{height:100%;max-height:var(---bslib-value-box-showcase-max-h, 100%)}.bslib-value-box .value-box-showcase,.bslib-value-box .value-box-showcase>.html-fill-item{width:100%}.bslib-value-box[data-full-screen=true] .value-box-showcase{max-height:var(---bslib-value-box-showcase-max-h-fs, 100%)}@media screen and (min-width: 575.98px){@container bslib-value-box (max-width: 300px){.bslib-value-box:not(.showcase-bottom) .value-box-grid{grid-template-columns:1fr !important;grid-template-rows:auto auto;grid-template-areas:"top" "bottom"}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-showcase{grid-area:top !important}.bslib-value-box:not(.showcase-bottom) .value-box-grid .value-box-area{grid-area:bottom !important;justify-content:end}}}.bslib-value-box .value-box-area{justify-content:center;padding:1.5rem 1rem;font-size:.9rem;font-weight:500}.bslib-value-box .value-box-area *{margin-bottom:0;margin-top:0}.bslib-value-box .value-box-title{font-size:1rem;margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}.bslib-value-box .value-box-title:empty::after{content:" "}.bslib-value-box .value-box-value{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:400;line-height:1.2}@media(min-width: 1200px){.bslib-value-box .value-box-value{font-size:1.65rem}}.bslib-value-box .value-box-value:empty::after{content:" "}.bslib-value-box .value-box-showcase{align-items:center;justify-content:center;margin-top:auto;margin-bottom:auto;padding:1rem}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{opacity:.85;min-width:50px;max-width:125%}.bslib-value-box .value-box-showcase .bi,.bslib-value-box .value-box-showcase .fa,.bslib-value-box .value-box-showcase .fab,.bslib-value-box .value-box-showcase .fas,.bslib-value-box .value-box-showcase .far{font-size:4rem}.bslib-value-box.showcase-top-right .value-box-grid{grid-template-columns:1fr var(---bslib-value-box-showcase-w, 50%)}.bslib-value-box.showcase-top-right .value-box-grid .value-box-showcase{grid-area:right;margin-left:auto;align-self:start;align-items:end;padding-left:0;padding-bottom:0}.bslib-value-box.showcase-top-right .value-box-grid .value-box-area{grid-area:left;align-self:end}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid{grid-template-columns:auto var(---bslib-value-box-showcase-w-fs, 1fr)}.bslib-value-box.showcase-top-right[data-full-screen=true] .value-box-grid>div{align-self:center}.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-showcase{margin-top:0}@container bslib-value-box (max-width: 300px){.bslib-value-box.showcase-top-right:not([data-full-screen=true]) .value-box-grid .value-box-showcase{padding-left:1rem}}.bslib-value-box.showcase-left-center .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w, 30%) auto}.bslib-value-box.showcase-left-center[data-full-screen=true] .value-box-grid{grid-template-columns:var(---bslib-value-box-showcase-w-fs, 1fr) auto}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-showcase{grid-area:left}.bslib-value-box.showcase-left-center:not([data-fill-screen=true]) .value-box-grid .value-box-area{grid-area:right}.bslib-value-box.showcase-bottom .value-box-grid{grid-template-columns:1fr;grid-template-rows:1fr var(---bslib-value-box-showcase-h, auto);grid-template-areas:"top" "bottom";overflow:hidden}.bslib-value-box.showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.bslib-value-box.showcase-bottom .value-box-grid .value-box-area{grid-area:top}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid{grid-template-rows:1fr var(---bslib-value-box-showcase-h-fs, 2fr)}.bslib-value-box.showcase-bottom[data-full-screen=true] .value-box-grid .value-box-showcase{padding:1rem}[data-bs-theme=dark] .bslib-value-box{--bslib-value-box-shadow: 0 0.5rem 1rem rgb(0 0 0 / 50%)}html{height:100%}.bslib-page-fill{width:100%;height:100%;margin:0;padding:var(--bslib-spacer, 1rem);gap:var(--bslib-spacer, 1rem)}@media(max-width: 575.98px){.bslib-page-fill{height:var(--bslib-page-fill-mobile-height, auto)}}.html-fill-container{display:flex;flex-direction:column;min-height:0;min-width:0}.html-fill-container>.html-fill-item{flex:1 1 auto;min-height:0;min-width:0}.html-fill-container>:not(.html-fill-item){flex:0 0 auto}.quarto-container{min-height:calc(100vh - 132px)}body.hypothesis-enabled #quarto-header{margin-right:16px}footer.footer .nav-footer,#quarto-header>nav{padding-left:1em;padding-right:1em}footer.footer div.nav-footer p:first-child{margin-top:0}footer.footer div.nav-footer p:last-child{margin-bottom:0}#quarto-content>*{padding-top:14px}#quarto-content>#quarto-sidebar-glass{padding-top:0px}@media(max-width: 991.98px){#quarto-content>*{padding-top:0}#quarto-content .subtitle{padding-top:14px}#quarto-content section:first-of-type h2:first-of-type,#quarto-content section:first-of-type .h2:first-of-type{margin-top:1rem}}.headroom-target,header.headroom{will-change:transform;transition:position 200ms linear;transition:all 200ms linear}header.headroom--pinned{transform:translateY(0%)}header.headroom--unpinned{transform:translateY(-100%)}.navbar-container{width:100%}.navbar-brand{overflow:hidden;text-overflow:ellipsis}.navbar-brand-container{max-width:calc(100% - 115px);min-width:0;display:flex;align-items:center}@media(min-width: 992px){.navbar-brand-container{margin-right:1em}}.navbar-brand.navbar-brand-logo{margin-right:4px;display:inline-flex}.navbar-toggler{flex-basis:content;flex-shrink:0}.navbar .navbar-brand-container{order:2}.navbar .navbar-toggler{order:1}.navbar .navbar-container>.navbar-nav{order:20}.navbar .navbar-container>.navbar-brand-container{margin-left:0 !important;margin-right:0 !important}.navbar .navbar-collapse{order:20}.navbar #quarto-search{order:4;margin-left:auto}.navbar .navbar-toggler{margin-right:.5em}.navbar-collapse .quarto-navbar-tools{margin-left:.5em}.navbar-logo{max-height:24px;width:auto;padding-right:4px}nav .nav-item:not(.compact){padding-top:1px}nav .nav-link i,nav .dropdown-item i{padding-right:1px}.navbar-expand-lg .navbar-nav .nav-link{padding-left:.6rem;padding-right:.6rem}nav .nav-item.compact .nav-link{padding-left:.5rem;padding-right:.5rem;font-size:1.1rem}.navbar .quarto-navbar-tools{order:3}.navbar .quarto-navbar-tools div.dropdown{display:inline-block}.navbar .quarto-navbar-tools .quarto-navigation-tool{color:#545555}.navbar .quarto-navbar-tools .quarto-navigation-tool:hover{color:#1f4eb6}.navbar-nav .dropdown-menu{min-width:220px;font-size:.9rem}.navbar .navbar-nav .nav-link.dropdown-toggle::after{opacity:.75;vertical-align:.175em}.navbar ul.dropdown-menu{padding-top:0;padding-bottom:0}.navbar .dropdown-header{text-transform:uppercase;font-size:.8rem;padding:0 .5rem}.navbar .dropdown-item{padding:.4rem .5rem}.navbar .dropdown-item>i.bi{margin-left:.1rem;margin-right:.25em}.sidebar #quarto-search{margin-top:-1px}.sidebar #quarto-search svg.aa-SubmitIcon{width:16px;height:16px}.sidebar-navigation a{color:inherit}.sidebar-title{margin-top:.25rem;padding-bottom:.5rem;font-size:1.3rem;line-height:1.6rem;visibility:visible}.sidebar-title>a{font-size:inherit;text-decoration:none}.sidebar-title .sidebar-tools-main{margin-top:-6px}@media(max-width: 991.98px){#quarto-sidebar div.sidebar-header{padding-top:.2em}}.sidebar-header-stacked .sidebar-title{margin-top:.6rem}.sidebar-logo{max-width:90%;padding-bottom:.5rem}.sidebar-logo-link{text-decoration:none}.sidebar-navigation li a{text-decoration:none}.sidebar-navigation .quarto-navigation-tool{opacity:.7;font-size:.875rem}#quarto-sidebar>nav>.sidebar-tools-main{margin-left:14px}.sidebar-tools-main{display:inline-flex;margin-left:0px;order:2}.sidebar-tools-main:not(.tools-wide){vertical-align:middle}.sidebar-navigation .quarto-navigation-tool.dropdown-toggle::after{display:none}.sidebar.sidebar-navigation>*{padding-top:1em}.sidebar-item{margin-bottom:.2em;line-height:1rem;margin-top:.4rem}.sidebar-section{padding-left:.5em;padding-bottom:.2em}.sidebar-item .sidebar-item-container{display:flex;justify-content:space-between;cursor:pointer}.sidebar-item-toggle:hover{cursor:pointer}.sidebar-item .sidebar-item-toggle .bi{font-size:.7rem;text-align:center}.sidebar-item .sidebar-item-toggle .bi-chevron-right::before{transition:transform 200ms ease}.sidebar-item .sidebar-item-toggle[aria-expanded=false] .bi-chevron-right::before{transform:none}.sidebar-item .sidebar-item-toggle[aria-expanded=true] .bi-chevron-right::before{transform:rotate(90deg)}.sidebar-item-text{width:100%}.sidebar-navigation .sidebar-divider{margin-left:0;margin-right:0;margin-top:.5rem;margin-bottom:.5rem}@media(max-width: 991.98px){.quarto-secondary-nav{display:block}.quarto-secondary-nav button.quarto-search-button{padding-right:0em;padding-left:2em}.quarto-secondary-nav button.quarto-btn-toggle{margin-left:-0.75rem;margin-right:.15rem}.quarto-secondary-nav nav.quarto-title-breadcrumbs{display:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs{display:flex;align-items:center;padding-right:1em;margin-left:-0.25em}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{text-decoration:none}.quarto-secondary-nav nav.quarto-page-breadcrumbs ol.breadcrumb{margin-bottom:0}}@media(min-width: 992px){.quarto-secondary-nav{display:none}}.quarto-title-breadcrumbs .breadcrumb{margin-bottom:.5em;font-size:.9rem}.quarto-title-breadcrumbs .breadcrumb li:last-of-type a{color:#6c757d}.quarto-secondary-nav .quarto-btn-toggle{color:#595959}.quarto-secondary-nav[aria-expanded=false] .quarto-btn-toggle .bi-chevron-right::before{transform:none}.quarto-secondary-nav[aria-expanded=true] .quarto-btn-toggle .bi-chevron-right::before{transform:rotate(90deg)}.quarto-secondary-nav .quarto-btn-toggle .bi-chevron-right::before{transition:transform 200ms ease}.quarto-secondary-nav{cursor:pointer}.no-decor{text-decoration:none}.quarto-secondary-nav-title{margin-top:.3em;color:#595959;padding-top:4px}.quarto-secondary-nav nav.quarto-page-breadcrumbs{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a{color:#595959}.quarto-secondary-nav nav.quarto-page-breadcrumbs a:hover{color:rgba(33,81,191,.8)}.quarto-secondary-nav nav.quarto-page-breadcrumbs .breadcrumb-item::before{color:#8c8c8c}.breadcrumb-item{line-height:1.2rem}div.sidebar-item-container{color:#595959}div.sidebar-item-container:hover,div.sidebar-item-container:focus{color:rgba(33,81,191,.8)}div.sidebar-item-container.disabled{color:rgba(89,89,89,.75)}div.sidebar-item-container .active,div.sidebar-item-container .show>.nav-link,div.sidebar-item-container .sidebar-link>code{color:#2151bf}div.sidebar.sidebar-navigation.rollup.quarto-sidebar-toggle-contents,nav.sidebar.sidebar-navigation:not(.rollup){background-color:#fff}@media(max-width: 991.98px){.sidebar-navigation .sidebar-item a,.nav-page .nav-page-text,.sidebar-navigation{font-size:1rem}.sidebar-navigation ul.sidebar-section.depth1 .sidebar-section-item{font-size:1.1rem}.sidebar-logo{display:none}.sidebar.sidebar-navigation{position:static;border-bottom:1px solid #dee2e6}.sidebar.sidebar-navigation.collapsing{position:fixed;z-index:1000}.sidebar.sidebar-navigation.show{position:fixed;z-index:1000}.sidebar.sidebar-navigation{min-height:100%}nav.quarto-secondary-nav{background-color:#fff;border-bottom:1px solid #dee2e6}.quarto-banner nav.quarto-secondary-nav{background-color:#f8f9fa;color:#545555;border-top:1px solid #dee2e6}.sidebar .sidebar-footer{visibility:visible;padding-top:1rem;position:inherit}.sidebar-tools-collapse{display:block}}#quarto-sidebar{transition:width .15s ease-in}#quarto-sidebar>*{padding-right:1em}@media(max-width: 991.98px){#quarto-sidebar .sidebar-menu-container{white-space:nowrap;min-width:225px}#quarto-sidebar.show{transition:width .15s ease-out}}@media(min-width: 992px){#quarto-sidebar{display:flex;flex-direction:column}.nav-page .nav-page-text,.sidebar-navigation .sidebar-section .sidebar-item{font-size:.875rem}.sidebar-navigation .sidebar-item{font-size:.925rem}.sidebar.sidebar-navigation{display:block;position:sticky}.sidebar-search{width:100%}.sidebar .sidebar-footer{visibility:visible}}@media(min-width: 992px){#quarto-sidebar-glass{display:none}}@media(max-width: 991.98px){#quarto-sidebar-glass{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(255,255,255,0);transition:background-color .15s ease-in;z-index:-1}#quarto-sidebar-glass.collapsing{z-index:1000}#quarto-sidebar-glass.show{transition:background-color .15s ease-out;background-color:rgba(102,102,102,.4);z-index:1000}}.sidebar .sidebar-footer{padding:.5rem 1rem;align-self:flex-end;color:#6c757d;width:100%}.quarto-page-breadcrumbs .breadcrumb-item+.breadcrumb-item,.quarto-page-breadcrumbs .breadcrumb-item{padding-right:.33em;padding-left:0}.quarto-page-breadcrumbs .breadcrumb-item::before{padding-right:.33em}.quarto-sidebar-footer{font-size:.875em}.sidebar-section .bi-chevron-right{vertical-align:middle}.sidebar-section .bi-chevron-right::before{font-size:.9em}.notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;transition:none !important}.btn:focus:not(:focus-visible){box-shadow:none}.page-navigation{display:flex;justify-content:space-between}.nav-page{padding-bottom:.75em}.nav-page .bi{font-size:1.8rem;vertical-align:middle}.nav-page .nav-page-text{padding-left:.25em;padding-right:.25em}.nav-page a{color:#6c757d;text-decoration:none;display:flex;align-items:center}.nav-page a:hover{color:#1f4eb6}.nav-footer .toc-actions{padding-bottom:.5em;padding-top:.5em}.nav-footer .toc-actions a,.nav-footer .toc-actions a:hover{text-decoration:none}.nav-footer .toc-actions ul{display:flex;list-style:none}.nav-footer .toc-actions ul :first-child{margin-left:auto}.nav-footer .toc-actions ul :last-child{margin-right:auto}.nav-footer .toc-actions ul li{padding-right:1.5em}.nav-footer .toc-actions ul li i.bi{padding-right:.4em}.nav-footer .toc-actions ul li:last-of-type{padding-right:0}.nav-footer{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;align-items:baseline;text-align:center;padding-top:.5rem;padding-bottom:.5rem;background-color:#fff}body.nav-fixed{padding-top:64px}.nav-footer-contents{color:#6c757d;margin-top:.25rem}.nav-footer{min-height:3.5em;color:#757575}.nav-footer a{color:#757575}.nav-footer .nav-footer-left{font-size:.825em}.nav-footer .nav-footer-center{font-size:.825em}.nav-footer .nav-footer-right{font-size:.825em}.nav-footer-left .footer-items,.nav-footer-center .footer-items,.nav-footer-right .footer-items{display:inline-flex;padding-top:.3em;padding-bottom:.3em;margin-bottom:0em}.nav-footer-left .footer-items .nav-link,.nav-footer-center .footer-items .nav-link,.nav-footer-right .footer-items .nav-link{padding-left:.6em;padding-right:.6em}@media(min-width: 768px){.nav-footer-left{flex:1 1 0px;text-align:left}}@media(max-width: 575.98px){.nav-footer-left{margin-bottom:1em;flex:100%}}@media(min-width: 768px){.nav-footer-right{flex:1 1 0px;text-align:right}}@media(max-width: 575.98px){.nav-footer-right{margin-bottom:1em;flex:100%}}.nav-footer-center{text-align:center;min-height:3em}@media(min-width: 768px){.nav-footer-center{flex:1 1 0px}}.nav-footer-center .footer-items{justify-content:center}@media(max-width: 767.98px){.nav-footer-center{margin-bottom:1em;flex:100%}}@media(max-width: 767.98px){.nav-footer-center{margin-top:3em;order:10}}.navbar .quarto-reader-toggle.reader .quarto-reader-toggle-btn{background-color:#545555;border-radius:3px}@media(max-width: 991.98px){.quarto-reader-toggle{display:none}}.quarto-reader-toggle.reader.quarto-navigation-tool .quarto-reader-toggle-btn{background-color:#595959;border-radius:3px}.quarto-reader-toggle .quarto-reader-toggle-btn{display:inline-flex;padding-left:.2em;padding-right:.2em;margin-left:-0.2em;margin-right:-0.2em;text-align:center}.navbar .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle:not(.reader) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-reader-toggle.reader .bi::before{background-image:url('data:image/svg+xml,')}#quarto-back-to-top{display:none;position:fixed;bottom:50px;background-color:#fff;border-radius:.25rem;box-shadow:0 .2rem .5rem #6c757d,0 0 .05rem #6c757d;color:#6c757d;text-decoration:none;font-size:.9em;text-align:center;left:50%;padding:.4rem .8rem;transform:translate(-50%, 0)}#quarto-announcement{padding:.5em;display:flex;justify-content:space-between;margin-bottom:0;font-size:.9em}#quarto-announcement .quarto-announcement-content{margin-right:auto}#quarto-announcement .quarto-announcement-content p{margin-bottom:0}#quarto-announcement .quarto-announcement-icon{margin-right:.5em;font-size:1.2em;margin-top:-0.15em}#quarto-announcement .quarto-announcement-action{cursor:pointer}.aa-DetachedSearchButtonQuery{display:none}.aa-DetachedOverlay ul.aa-List,#quarto-search-results ul.aa-List{list-style:none;padding-left:0}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{background-color:#fff;position:absolute;z-index:2000}#quarto-search-results .aa-Panel{max-width:400px}#quarto-search input{font-size:.925rem}@media(min-width: 992px){.navbar #quarto-search{margin-left:.25rem;order:999}}.navbar.navbar-expand-sm #quarto-search,.navbar.navbar-expand-md #quarto-search{order:999}@media(min-width: 992px){.navbar .quarto-navbar-tools{order:900}}@media(min-width: 992px){.navbar .quarto-navbar-tools.tools-end{margin-left:auto !important}}@media(max-width: 991.98px){#quarto-sidebar .sidebar-search{display:none}}#quarto-sidebar .sidebar-search .aa-Autocomplete{width:100%}.navbar .aa-Autocomplete .aa-Form{width:180px}.navbar #quarto-search.type-overlay .aa-Autocomplete{width:40px}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form{background-color:inherit;border:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form:focus-within{box-shadow:none;outline:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper{display:none}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-InputWrapper:focus-within{display:inherit}.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-Label svg,.navbar #quarto-search.type-overlay .aa-Autocomplete .aa-Form .aa-LoadingIndicator svg{width:26px;height:26px;color:#545555;opacity:1}.navbar #quarto-search.type-overlay .aa-Autocomplete svg.aa-SubmitIcon{width:26px;height:26px;color:#545555;opacity:1}.aa-Autocomplete .aa-Form,.aa-DetachedFormContainer .aa-Form{align-items:center;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;color:#343a40;display:flex;line-height:1em;margin:0;position:relative;width:100%}.aa-Autocomplete .aa-Form:focus-within,.aa-DetachedFormContainer .aa-Form:focus-within{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix{align-items:center;display:flex;flex-shrink:0;order:1}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{cursor:initial;flex-shrink:0;padding:0;text-align:left}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-Label svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator svg{color:#343a40;opacity:.5}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-SubmitButton{appearance:none;background:none;border:0;margin:0}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator{align-items:center;display:flex;justify-content:center}.aa-Autocomplete .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperPrefix .aa-LoadingIndicator[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapper,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper{order:3;position:relative;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input{appearance:none;background:none;border:0;color:#343a40;font:inherit;height:calc(1.5em + .1rem + 2px);padding:0;width:100%}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::placeholder,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::placeholder{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input:focus{border-color:none;box-shadow:none;outline:none}.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-Autocomplete .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-decoration,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-cancel-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-button,.aa-DetachedFormContainer .aa-Form .aa-InputWrapper .aa-Input::-webkit-search-results-decoration{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix{align-items:center;display:flex;order:4}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton{align-items:center;background:none;border:0;color:#343a40;opacity:.8;cursor:pointer;display:flex;margin:0;width:calc(1.5em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton[hidden]{display:none}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-ClearButton svg{width:calc(1.5em + 0.75rem + calc(1px * 2))}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton{border:none;align-items:center;background:none;color:#343a40;opacity:.4;font-size:.7rem;cursor:pointer;display:none;margin:0;width:calc(1em + .1rem + 2px)}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:hover,.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton:focus{color:#343a40;opacity:.8}.aa-Autocomplete .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden],.aa-DetachedFormContainer .aa-Form .aa-InputWrapperSuffix .aa-CopyButton[hidden]{display:none}.aa-PanelLayout:empty{display:none}.quarto-search-no-results.no-query{display:none}.aa-Source:has(.no-query){display:none}#quarto-search-results .aa-Panel{border:solid #dee2e6 1px}#quarto-search-results .aa-SourceNoResults{width:398px}.aa-DetachedOverlay .aa-Panel,#quarto-search-results .aa-Panel{max-height:65vh;overflow-y:auto;font-size:.925rem}.aa-DetachedOverlay .aa-SourceNoResults,#quarto-search-results .aa-SourceNoResults{height:60px;display:flex;justify-content:center;align-items:center}.aa-DetachedOverlay .search-error,#quarto-search-results .search-error{padding-top:10px;padding-left:20px;padding-right:20px;cursor:default}.aa-DetachedOverlay .search-error .search-error-title,#quarto-search-results .search-error .search-error-title{font-size:1.1rem;margin-bottom:.5rem}.aa-DetachedOverlay .search-error .search-error-title .search-error-icon,#quarto-search-results .search-error .search-error-title .search-error-icon{margin-right:8px}.aa-DetachedOverlay .search-error .search-error-text,#quarto-search-results .search-error .search-error-text{font-weight:300}.aa-DetachedOverlay .search-result-text,#quarto-search-results .search-result-text{font-weight:300;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.2rem;max-height:2.4rem}.aa-DetachedOverlay .aa-SourceHeader .search-result-header,#quarto-search-results .aa-SourceHeader .search-result-header{font-size:.875rem;background-color:#f2f2f2;padding-left:14px;padding-bottom:4px;padding-top:4px}.aa-DetachedOverlay .aa-SourceHeader .search-result-header-no-results,#quarto-search-results .aa-SourceHeader .search-result-header-no-results{display:none}.aa-DetachedOverlay .aa-SourceFooter .algolia-search-logo,#quarto-search-results .aa-SourceFooter .algolia-search-logo{width:110px;opacity:.85;margin:8px;float:right}.aa-DetachedOverlay .search-result-section,#quarto-search-results .search-result-section{font-size:.925em}.aa-DetachedOverlay a.search-result-link,#quarto-search-results a.search-result-link{color:inherit;text-decoration:none}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item,#quarto-search-results li.aa-Item[aria-selected=true] .search-item{background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-result-text-container{color:#fff;background-color:#2780e3}.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=true] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=true] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=true] .search-item .search-match.mark{color:#fff;background-color:#4b95e8}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item,#quarto-search-results li.aa-Item[aria-selected=false] .search-item{background-color:#fff}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item.search-result-more,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-section,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-title-container,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-result-text-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item.search-result-more,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-section,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-title-container,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-result-text-container{color:#343a40}.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item mark.search-match,.aa-DetachedOverlay li.aa-Item[aria-selected=false] .search-item .search-match.mark,#quarto-search-results li.aa-Item[aria-selected=false] .search-item mark.search-match,#quarto-search-results li.aa-Item[aria-selected=false] .search-item .search-match.mark{color:inherit;background-color:#e5effc}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-title-container{background-color:#fff;color:#343a40}.aa-DetachedOverlay .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container,#quarto-search-results .aa-Item .search-result-doc:not(.document-selectable) .search-result-text-container{padding-top:0px}.aa-DetachedOverlay li.aa-Item .search-result-doc.document-selectable .search-result-text-container,#quarto-search-results li.aa-Item .search-result-doc.document-selectable .search-result-text-container{margin-top:-4px}.aa-DetachedOverlay .aa-Item,#quarto-search-results .aa-Item{cursor:pointer}.aa-DetachedOverlay .aa-Item .search-item,#quarto-search-results .aa-Item .search-item{border-left:none;border-right:none;border-top:none;background-color:#fff;border-color:#dee2e6;color:#343a40}.aa-DetachedOverlay .aa-Item .search-item p,#quarto-search-results .aa-Item .search-item p{margin-top:0;margin-bottom:0}.aa-DetachedOverlay .aa-Item .search-item i.bi,#quarto-search-results .aa-Item .search-item i.bi{padding-left:8px;padding-right:8px;font-size:1.3em}.aa-DetachedOverlay .aa-Item .search-item .search-result-title,#quarto-search-results .aa-Item .search-item .search-result-title{margin-top:.3em;margin-bottom:0em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs,#quarto-search-results .aa-Item .search-item .search-result-crumbs{white-space:nowrap;text-overflow:ellipsis;font-size:.8em;font-weight:300;margin-right:1em}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap),#quarto-search-results .aa-Item .search-item .search-result-crumbs:not(.search-result-crumbs-wrap){max-width:30%;margin-left:auto;margin-top:.5em;margin-bottom:.1rem}.aa-DetachedOverlay .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap,#quarto-search-results .aa-Item .search-item .search-result-crumbs.search-result-crumbs-wrap{flex-basis:100%;margin-top:0em;margin-bottom:.2em;margin-left:37px}.aa-DetachedOverlay .aa-Item .search-result-title-container,#quarto-search-results .aa-Item .search-result-title-container{font-size:1em;display:flex;flex-wrap:wrap;padding:6px 4px 6px 4px}.aa-DetachedOverlay .aa-Item .search-result-text-container,#quarto-search-results .aa-Item .search-result-text-container{padding-bottom:8px;padding-right:8px;margin-left:42px}.aa-DetachedOverlay .aa-Item .search-result-doc-section,.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-doc-section,#quarto-search-results .aa-Item .search-result-more{padding-top:8px;padding-bottom:8px;padding-left:44px}.aa-DetachedOverlay .aa-Item .search-result-more,#quarto-search-results .aa-Item .search-result-more{font-size:.8em;font-weight:400}.aa-DetachedOverlay .aa-Item .search-result-doc,#quarto-search-results .aa-Item .search-result-doc{border-top:1px solid #dee2e6}.aa-DetachedSearchButton{background:none;border:none}.aa-DetachedSearchButton .aa-DetachedSearchButtonPlaceholder{display:none}.navbar .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#545555}.sidebar-tools-collapse #quarto-search,.sidebar-tools-main #quarto-search{display:inline}.sidebar-tools-collapse #quarto-search .aa-Autocomplete,.sidebar-tools-main #quarto-search .aa-Autocomplete{display:inline}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton{padding-left:4px;padding-right:4px}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon{color:#595959}.sidebar-tools-collapse #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon,.sidebar-tools-main #quarto-search .aa-DetachedSearchButton .aa-DetachedSearchButtonIcon .aa-SubmitIcon{margin-top:-3px}.aa-DetachedContainer{background:rgba(255,255,255,.65);width:90%;bottom:0;box-shadow:rgba(222,226,230,.6) 0 0 0 1px;outline:currentColor none medium;display:flex;flex-direction:column;left:0;margin:0;overflow:hidden;padding:0;position:fixed;right:0;top:0;z-index:1101}.aa-DetachedContainer::after{height:32px}.aa-DetachedContainer .aa-SourceHeader{margin:var(--aa-spacing-half) 0 var(--aa-spacing-half) 2px}.aa-DetachedContainer .aa-Panel{background-color:#fff;border-radius:0;box-shadow:none;flex-grow:1;margin:0;padding:0;position:relative}.aa-DetachedContainer .aa-PanelLayout{bottom:0;box-shadow:none;left:0;margin:0;max-height:none;overflow-y:auto;position:absolute;right:0;top:0;width:100%}.aa-DetachedFormContainer{background-color:#fff;border-bottom:1px solid #dee2e6;display:flex;flex-direction:row;justify-content:space-between;margin:0;padding:.5em}.aa-DetachedCancelButton{background:none;font-size:.8em;border:0;border-radius:3px;color:#343a40;cursor:pointer;margin:0 0 0 .5em;padding:0 .5em}.aa-DetachedCancelButton:hover,.aa-DetachedCancelButton:focus{box-shadow:rgba(39,128,227,.6) 0 0 0 1px;outline:currentColor none medium}.aa-DetachedContainer--modal{bottom:inherit;height:auto;margin:0 auto;position:absolute;top:100px;border-radius:6px;max-width:850px}@media(max-width: 575.98px){.aa-DetachedContainer--modal{width:100%;top:0px;border-radius:0px;border:none}}.aa-DetachedContainer--modal .aa-PanelLayout{max-height:var(--aa-detached-modal-max-height);padding-bottom:var(--aa-spacing-half);position:static}.aa-Detached{height:100vh;overflow:hidden}.aa-DetachedOverlay{background-color:rgba(52,58,64,.4);position:fixed;left:0;right:0;top:0;margin:0;padding:0;height:100vh;z-index:1100}.quarto-dashboard.nav-fixed.dashboard-sidebar #quarto-content.quarto-dashboard-content{padding:0em}.quarto-dashboard #quarto-content.quarto-dashboard-content{padding:1em}.quarto-dashboard #quarto-content.quarto-dashboard-content>*{padding-top:0}@media(min-width: 576px){.quarto-dashboard{height:100%}}.quarto-dashboard .card.valuebox.bslib-card.bg-primary{background-color:#5397e9 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-secondary{background-color:#343a40 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-success{background-color:#3aa716 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-info{background-color:rgba(153,84,187,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-warning{background-color:#fa6400 !important}.quarto-dashboard .card.valuebox.bslib-card.bg-danger{background-color:rgba(255,0,57,.7019607843) !important}.quarto-dashboard .card.valuebox.bslib-card.bg-light{background-color:#f8f9fa !important}.quarto-dashboard .card.valuebox.bslib-card.bg-dark{background-color:#343a40 !important}.quarto-dashboard.dashboard-fill{display:flex;flex-direction:column}.quarto-dashboard #quarto-appendix{display:none}.quarto-dashboard #quarto-header #quarto-dashboard-header{border-top:solid 1px #dae0e5;border-bottom:solid 1px #dae0e5}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav{padding-left:1em;padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header>nav .navbar-brand-container{padding-left:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler{margin-right:0}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-toggler-icon{height:1em;width:1em;background-image:url('data:image/svg+xml,')}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-brand-container{padding-right:1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-title{font-size:1.1em}.quarto-dashboard #quarto-header #quarto-dashboard-header .navbar-nav{font-size:.9em}.quarto-dashboard #quarto-dashboard-header .navbar{padding:0}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-container{padding-left:1em}.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-brand-container .nav-link,.quarto-dashboard #quarto-dashboard-header .navbar.slim .navbar-nav .nav-link{padding:.7em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-color-scheme-toggle{order:9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-toggler{margin-left:.5em;order:10}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .nav-link{padding:.5em;height:100%;display:flex;align-items:center}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-nav .active{background-color:#e0e5e9}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{padding:.5em .5em .5em 0;display:flex;flex-direction:row;margin-right:2em;align-items:center}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-brand-container{margin-right:auto}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{align-self:stretch}@media(min-width: 768px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:8}}@media(max-width: 767.98px){.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse{order:1000;padding-bottom:.5em}}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-collapse .navbar-nav{align-self:stretch}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title{font-size:1.25em;line-height:1.1em;display:flex;flex-direction:row;flex-wrap:wrap;align-items:baseline}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title .navbar-title-text{margin-right:.4em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-title a{text-decoration:none;color:inherit}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-subtitle,.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{font-size:.9rem;margin-right:.5em}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-author{margin-left:auto}.quarto-dashboard #quarto-dashboard-header .navbar .navbar-logo{max-height:48px;min-height:30px;object-fit:cover;margin-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-links{order:9;padding-right:1em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link-text{margin-left:.25em}.quarto-dashboard #quarto-dashboard-header .navbar .quarto-dashboard-link{padding-right:0em;padding-left:.7em;text-decoration:none;color:#545555}.quarto-dashboard .page-layout-custom .tab-content{padding:0;border:none}.quarto-dashboard-img-contain{height:100%;width:100%;object-fit:contain}@media(max-width: 575.98px){.quarto-dashboard .bslib-grid{grid-template-rows:minmax(1em, max-content) !important}.quarto-dashboard .sidebar-content{height:inherit}.quarto-dashboard .page-layout-custom{min-height:100vh}}.quarto-dashboard.dashboard-toolbar>.page-layout-custom,.quarto-dashboard.dashboard-sidebar>.page-layout-custom{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages{padding:0}.quarto-dashboard .callout{margin-bottom:0;margin-top:0}.quarto-dashboard .html-fill-container figure{overflow:hidden}.quarto-dashboard bslib-tooltip .rounded-pill{border:solid #6c757d 1px}.quarto-dashboard bslib-tooltip .rounded-pill .svg{fill:#343a40}.quarto-dashboard .tabset .dashboard-card-no-title .nav-tabs{margin-left:0;margin-right:auto}.quarto-dashboard .tabset .tab-content{border:none}.quarto-dashboard .tabset .card-header .nav-link[role=tab]{margin-top:-6px;padding-top:6px;padding-bottom:6px}.quarto-dashboard .card.valuebox,.quarto-dashboard .card.bslib-value-box{min-height:3rem}.quarto-dashboard .card.valuebox .card-body,.quarto-dashboard .card.bslib-value-box .card-body{padding:0}.quarto-dashboard .bslib-value-box .value-box-value{font-size:clamp(.1em,15cqw,5em)}.quarto-dashboard .bslib-value-box .value-box-showcase .bi{font-size:clamp(.1em,max(18cqw,5.2cqh),5em);text-align:center;height:1em}.quarto-dashboard .bslib-value-box .value-box-showcase .bi::before{vertical-align:1em}.quarto-dashboard .bslib-value-box .value-box-area{margin-top:auto;margin-bottom:auto}.quarto-dashboard .card figure.quarto-float{display:flex;flex-direction:column;align-items:center}.quarto-dashboard .dashboard-scrolling{padding:1em}.quarto-dashboard .full-height{height:100%}.quarto-dashboard .showcase-bottom .value-box-grid{display:grid;grid-template-columns:1fr;grid-template-rows:1fr auto;grid-template-areas:"top" "bottom"}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase{grid-area:bottom;padding:0;margin:0}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-showcase i.bi{font-size:4rem}.quarto-dashboard .showcase-bottom .value-box-grid .value-box-area{grid-area:top}.quarto-dashboard .tab-content{margin-bottom:0}.quarto-dashboard .bslib-card .bslib-navs-card-title{justify-content:stretch;align-items:end}.quarto-dashboard .card-header{display:flex;flex-wrap:wrap;justify-content:space-between}.quarto-dashboard .card-header .card-title{display:flex;flex-direction:column;justify-content:center;margin-bottom:0}.quarto-dashboard .tabset .card-toolbar{margin-bottom:1em}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{border:none;gap:var(--bslib-spacer, 1rem)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{padding:0}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.sidebar{border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.collapse-toggle{display:none}@media(max-width: 767.98px){.quarto-dashboard .bslib-grid>.bslib-sidebar-layout{grid-template-columns:1fr;grid-template-rows:max-content 1fr}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout>.main{grid-column:1;grid-row:2}.quarto-dashboard .bslib-grid>.bslib-sidebar-layout .sidebar{grid-column:1;grid-row:1}}.quarto-dashboard .sidebar-right .sidebar{padding-left:2.5em}.quarto-dashboard .sidebar-right .collapse-toggle{left:2px}.quarto-dashboard .quarto-dashboard .sidebar-right button.collapse-toggle:not(.transitioning){left:unset}.quarto-dashboard aside.sidebar{padding-left:1em;padding-right:1em;background-color:rgba(52,58,64,.25);color:#343a40}.quarto-dashboard .bslib-sidebar-layout>div.main{padding:.7em}.quarto-dashboard .bslib-sidebar-layout button.collapse-toggle{margin-top:.3em}.quarto-dashboard .bslib-sidebar-layout .collapse-toggle{top:0}.quarto-dashboard .bslib-sidebar-layout.sidebar-collapsed:not(.transitioning):not(.sidebar-right) .collapse-toggle{left:2px}.quarto-dashboard .sidebar>section>.h3:first-of-type{margin-top:0em}.quarto-dashboard .sidebar .h3,.quarto-dashboard .sidebar .h4,.quarto-dashboard .sidebar .h5,.quarto-dashboard .sidebar .h6{margin-top:.5em}.quarto-dashboard .sidebar form{flex-direction:column;align-items:start;margin-bottom:1em}.quarto-dashboard .sidebar form div[class*=oi-][class$=-input]{flex-direction:column}.quarto-dashboard .sidebar form[class*=oi-][class$=-toggle]{flex-direction:row-reverse;align-items:center;justify-content:start}.quarto-dashboard .sidebar form input[type=range]{margin-top:.5em;margin-right:.8em;margin-left:1em}.quarto-dashboard .sidebar label{width:fit-content}.quarto-dashboard .sidebar .card-body{margin-bottom:2em}.quarto-dashboard .sidebar .shiny-input-container{margin-bottom:1em}.quarto-dashboard .sidebar .shiny-options-group{margin-top:0}.quarto-dashboard .sidebar .control-label{margin-bottom:.3em}.quarto-dashboard .card .card-body .quarto-layout-row{align-items:stretch}.quarto-dashboard .toolbar{font-size:.9em;display:flex;flex-direction:row;border-top:solid 1px #bcbfc0;padding:1em;flex-wrap:wrap;background-color:rgba(52,58,64,.25)}.quarto-dashboard .toolbar .cell-output-display{display:flex}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar>*:last-child{margin-right:0}.quarto-dashboard .toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .toolbar .input-daterange{width:inherit}.quarto-dashboard .toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .toolbar form{width:fit-content}.quarto-dashboard .toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .toolbar form input[type=date]{width:fit-content}.quarto-dashboard .toolbar form input[type=color]{width:3em}.quarto-dashboard .toolbar form button{padding:.4em}.quarto-dashboard .toolbar form select{width:fit-content}.quarto-dashboard .toolbar>*{font-size:.9em;flex-grow:0}.quarto-dashboard .toolbar .shiny-input-container label{margin-bottom:1px}.quarto-dashboard .toolbar-bottom{margin-top:1em;margin-bottom:0 !important;order:2}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>.tab-content>.tab-pane>*:not(.bslib-sidebar-layout){padding:1em}.quarto-dashboard .quarto-dashboard-content>.dashboard-toolbar-container>.toolbar-content>*:not(.tab-content){padding:1em}.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page>.dashboard-toolbar-container>.toolbar-content,.quarto-dashboard .quarto-dashboard-content>.tab-content>.dashboard-page:not(.dashboard-sidebar-container)>*:not(.dashboard-toolbar-container){padding:1em}.quarto-dashboard .toolbar-content{padding:0}.quarto-dashboard .quarto-dashboard-content.quarto-dashboard-pages .tab-pane>.dashboard-toolbar-container .toolbar{border-radius:0;margin-bottom:0}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar{border-bottom:1px solid rgba(0,0,0,.175)}.quarto-dashboard .dashboard-toolbar-container.toolbar-toplevel .toolbar-bottom{margin-top:0}.quarto-dashboard .dashboard-toolbar-container:not(.toolbar-toplevel) .toolbar{margin-bottom:1em;border-top:none;border-radius:.25rem;border:1px solid rgba(0,0,0,.175)}.quarto-dashboard .vega-embed.has-actions details{width:1.7em;height:2em;position:absolute !important;top:0;right:0}.quarto-dashboard .dashboard-toolbar-container{padding:0}.quarto-dashboard .card .card-header p:last-child,.quarto-dashboard .card .card-footer p:last-child{margin-bottom:0}.quarto-dashboard .card .card-body>.h4:first-child{margin-top:0}.quarto-dashboard .card .card-body{z-index:4}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_length,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_info,.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate{text-align:initial}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_filter{text-align:right}.quarto-dashboard .card .card-body .itables div.dataTables_wrapper div.dataTables_paginate ul.pagination{justify-content:initial}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;padding-top:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper table{flex-shrink:0}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons{margin-bottom:.5em;margin-left:auto;width:fit-content;float:right}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons.btn-group{background:#fff;border:none}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn-secondary{background-color:#fff;background-image:none;border:solid #dee2e6 1px;padding:.2em .7em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dt-buttons .btn span{font-size:.8em;color:#343a40}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{margin-left:.5em;margin-bottom:.5em;padding-top:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.875em}}@media(max-width: 767.98px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_info{font-size:.8em}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter{margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_filter input[type=search]{padding:1px 5px 1px 5px;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length{flex-basis:1 1 50%;margin-bottom:.5em;font-size:.875em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_length select{padding:.4em 3em .4em .5em;font-size:.875em;margin-left:.2em;margin-right:.2em}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{flex-shrink:0}@media(min-width: 768px){.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate{margin-left:auto}}.quarto-dashboard .card .card-body .itables .dataTables_wrapper .dataTables_paginate ul.pagination .paginate_button .page-link{font-size:.8em}.quarto-dashboard .card .card-footer{font-size:.9em}.quarto-dashboard .card .card-toolbar{display:flex;flex-grow:1;flex-direction:row;width:100%;flex-wrap:wrap}.quarto-dashboard .card .card-toolbar>*{font-size:.8em;flex-grow:0}.quarto-dashboard .card .card-toolbar>.card-title{font-size:1em;flex-grow:1;align-self:flex-start;margin-top:.1em}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar form{width:fit-content}.quarto-dashboard .card .card-toolbar form label{padding-top:.2em;padding-bottom:.2em;width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=date]{width:fit-content}.quarto-dashboard .card .card-toolbar form input[type=color]{width:3em}.quarto-dashboard .card .card-toolbar form button{padding:.4em}.quarto-dashboard .card .card-toolbar form select{width:fit-content}.quarto-dashboard .card .card-toolbar .cell-output-display{display:flex}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:.5em;margin-bottom:.5em;width:inherit}.quarto-dashboard .card .card-toolbar .shiny-input-container>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card .card-toolbar>*:last-child{margin-right:0}.quarto-dashboard .card .card-toolbar>*>*{margin-right:1em;align-items:baseline}.quarto-dashboard .card .card-toolbar>*>*>a{text-decoration:none;margin-top:auto;margin-bottom:auto}.quarto-dashboard .card .card-toolbar .shiny-input-container{padding-bottom:0;margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container>*{flex-shrink:0;flex-grow:0}.quarto-dashboard .card .card-toolbar .form-group.shiny-input-container:not([role=group])>label{margin-bottom:0}.quarto-dashboard .card .card-toolbar .shiny-input-container.no-baseline{align-items:start;padding-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-container{display:flex;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-container label{padding-right:.4em}.quarto-dashboard .card .card-toolbar .shiny-input-container .bslib-input-switch{margin-top:6px}.quarto-dashboard .card .card-toolbar input[type=text]{line-height:1;width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange{width:inherit}.quarto-dashboard .card .card-toolbar .input-daterange input[type=text]{height:2.4em;width:10em}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon{height:auto;padding:0;margin-left:-5px !important;margin-right:-5px}.quarto-dashboard .card .card-toolbar .input-daterange .input-group-addon .input-group-text{padding-top:0;padding-bottom:0;height:100%}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny{width:10em}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-line{top:9px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-min,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-max,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-from,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-to,.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-single{top:20px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-bar{top:8px}.quarto-dashboard .card .card-toolbar span.irs.irs--shiny .irs-handle{top:0px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-checkboxgroup>.shiny-options-group{margin-top:0;align-items:baseline}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>label{margin-top:6px}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group{align-items:baseline;margin-top:0}.quarto-dashboard .card .card-toolbar .shiny-input-radiogroup>.shiny-options-group>.radio{margin-right:.3em}.quarto-dashboard .card .card-toolbar .form-select{padding-top:.2em;padding-bottom:.2em}.quarto-dashboard .card .card-toolbar .shiny-input-select{min-width:6em}.quarto-dashboard .card .card-toolbar div.checkbox{margin-bottom:0px}.quarto-dashboard .card .card-toolbar>.checkbox:first-child{margin-top:6px}.quarto-dashboard .card-body>table>thead{border-top:none}.quarto-dashboard .card-body>.table>:not(caption)>*>*{background-color:#fff}.tableFloatingHeaderOriginal{background-color:#fff;position:sticky !important;top:0 !important}.dashboard-data-table{margin-top:-1px}div.value-box-area span.observablehq--number{font-size:calc(clamp(.1em,15cqw,5em)*1.25);line-height:1.2;color:inherit;font-family:var(--bs-body-font-family)}.quarto-listing{padding-bottom:1em}.listing-pagination{padding-top:.5em}ul.pagination{float:right;padding-left:8px;padding-top:.5em}ul.pagination li{padding-right:.75em}ul.pagination li.disabled a,ul.pagination li.active a{color:#fff;text-decoration:none}ul.pagination li:last-of-type{padding-right:0}.listing-actions-group{display:flex}.quarto-listing-filter{margin-bottom:1em;width:200px;margin-left:auto}.quarto-listing-sort{margin-bottom:1em;margin-right:auto;width:auto}.quarto-listing-sort .input-group-text{font-size:.8em}.input-group-text{border-right:none}.quarto-listing-sort select.form-select{font-size:.8em}.listing-no-matching{text-align:center;padding-top:2em;padding-bottom:3em;font-size:1em}#quarto-margin-sidebar .quarto-listing-category{padding-top:0;font-size:1rem}#quarto-margin-sidebar .quarto-listing-category-title{cursor:pointer;font-weight:600;font-size:1rem}.quarto-listing-category .category{cursor:pointer}.quarto-listing-category .category.active{font-weight:600}.quarto-listing-category.category-cloud{display:flex;flex-wrap:wrap;align-items:baseline}.quarto-listing-category.category-cloud .category{padding-right:5px}.quarto-listing-category.category-cloud .category-cloud-1{font-size:.75em}.quarto-listing-category.category-cloud .category-cloud-2{font-size:.95em}.quarto-listing-category.category-cloud .category-cloud-3{font-size:1.15em}.quarto-listing-category.category-cloud .category-cloud-4{font-size:1.35em}.quarto-listing-category.category-cloud .category-cloud-5{font-size:1.55em}.quarto-listing-category.category-cloud .category-cloud-6{font-size:1.75em}.quarto-listing-category.category-cloud .category-cloud-7{font-size:1.95em}.quarto-listing-category.category-cloud .category-cloud-8{font-size:2.15em}.quarto-listing-category.category-cloud .category-cloud-9{font-size:2.35em}.quarto-listing-category.category-cloud .category-cloud-10{font-size:2.55em}.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-1{grid-template-columns:repeat(1, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-1{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-2{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-2{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-3{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-3{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-3{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-4{grid-template-columns:repeat(4, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-4{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-4{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-5{grid-template-columns:repeat(5, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-5{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-5{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-6{grid-template-columns:repeat(6, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-6{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-6{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-7{grid-template-columns:repeat(7, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-7{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-7{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-8{grid-template-columns:repeat(8, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-8{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-8{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-9{grid-template-columns:repeat(9, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-9{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-9{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-10{grid-template-columns:repeat(10, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-10{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-10{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-11{grid-template-columns:repeat(11, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-11{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-11{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-cols-12{grid-template-columns:repeat(12, minmax(0, 1fr));gap:1.5em}@media(max-width: 767.98px){.quarto-listing-cols-12{grid-template-columns:repeat(2, minmax(0, 1fr));gap:1.5em}}@media(max-width: 575.98px){.quarto-listing-cols-12{grid-template-columns:minmax(0, 1fr);gap:1.5em}}.quarto-listing-grid{gap:1.5em}.quarto-grid-item.borderless{border:none}.quarto-grid-item.borderless .listing-categories .listing-category:last-of-type,.quarto-grid-item.borderless .listing-categories .listing-category:first-of-type{padding-left:0}.quarto-grid-item.borderless .listing-categories .listing-category{border:0}.quarto-grid-link{text-decoration:none;color:inherit}.quarto-grid-link:hover{text-decoration:none;color:inherit}.quarto-grid-item h5.title,.quarto-grid-item .title.h5{margin-top:0;margin-bottom:0}.quarto-grid-item .card-footer{display:flex;justify-content:space-between;font-size:.8em}.quarto-grid-item .card-footer p{margin-bottom:0}.quarto-grid-item p.card-img-top{margin-bottom:0}.quarto-grid-item p.card-img-top>img{object-fit:cover}.quarto-grid-item .card-other-values{margin-top:.5em;font-size:.8em}.quarto-grid-item .card-other-values tr{margin-bottom:.5em}.quarto-grid-item .card-other-values tr>td:first-of-type{font-weight:600;padding-right:1em;padding-left:1em;vertical-align:top}.quarto-grid-item div.post-contents{display:flex;flex-direction:column;text-decoration:none;height:100%}.quarto-grid-item .listing-item-img-placeholder{background-color:rgba(52,58,64,.25);flex-shrink:0}.quarto-grid-item .card-attribution{padding-top:1em;display:flex;gap:1em;text-transform:uppercase;color:#6c757d;font-weight:500;flex-grow:10;align-items:flex-end}.quarto-grid-item .description{padding-bottom:1em}.quarto-grid-item .card-attribution .date{align-self:flex-end}.quarto-grid-item .card-attribution.justify{justify-content:space-between}.quarto-grid-item .card-attribution.start{justify-content:flex-start}.quarto-grid-item .card-attribution.end{justify-content:flex-end}.quarto-grid-item .card-title{margin-bottom:.1em}.quarto-grid-item .card-subtitle{padding-top:.25em}.quarto-grid-item .card-text{font-size:.9em}.quarto-grid-item .listing-reading-time{padding-bottom:.25em}.quarto-grid-item .card-text-small{font-size:.8em}.quarto-grid-item .card-subtitle.subtitle{font-size:.9em;font-weight:600;padding-bottom:.5em}.quarto-grid-item .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}.quarto-grid-item .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}.quarto-grid-item.card-right{text-align:right}.quarto-grid-item.card-right .listing-categories{justify-content:flex-end}.quarto-grid-item.card-left{text-align:left}.quarto-grid-item.card-center{text-align:center}.quarto-grid-item.card-center .listing-description{text-align:justify}.quarto-grid-item.card-center .listing-categories{justify-content:center}table.quarto-listing-table td.image{padding:0px}table.quarto-listing-table td.image img{width:100%;max-width:50px;object-fit:contain}table.quarto-listing-table a{text-decoration:none;word-break:keep-all}table.quarto-listing-table th a{color:inherit}table.quarto-listing-table th a.asc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table th a.desc:after{margin-bottom:-2px;margin-left:5px;display:inline-block;height:1rem;width:1rem;background-repeat:no-repeat;background-size:1rem 1rem;background-image:url('data:image/svg+xml,');content:""}table.quarto-listing-table.table-hover td{cursor:pointer}.quarto-post.image-left{flex-direction:row}.quarto-post.image-right{flex-direction:row-reverse}@media(max-width: 767.98px){.quarto-post.image-right,.quarto-post.image-left{gap:0em;flex-direction:column}.quarto-post .metadata{padding-bottom:1em;order:2}.quarto-post .body{order:1}.quarto-post .thumbnail{order:3}}.list.quarto-listing-default div:last-of-type{border-bottom:none}@media(min-width: 992px){.quarto-listing-container-default{margin-right:2em}}div.quarto-post{display:flex;gap:2em;margin-bottom:1.5em;border-bottom:1px solid #dee2e6}@media(max-width: 767.98px){div.quarto-post{padding-bottom:1em}}div.quarto-post .metadata{flex-basis:20%;flex-grow:0;margin-top:.2em;flex-shrink:10}div.quarto-post .thumbnail{flex-basis:30%;flex-grow:0;flex-shrink:0}div.quarto-post .thumbnail img{margin-top:.4em;width:100%;object-fit:cover}div.quarto-post .body{flex-basis:45%;flex-grow:1;flex-shrink:0}div.quarto-post .body h3.listing-title,div.quarto-post .body .listing-title.h3{margin-top:0px;margin-bottom:0px;border-bottom:none}div.quarto-post .body .listing-subtitle{font-size:.875em;margin-bottom:.5em;margin-top:.2em}div.quarto-post .body .description{font-size:.9em}div.quarto-post .body pre code{white-space:pre-wrap}div.quarto-post a{color:#343a40;text-decoration:none}div.quarto-post .metadata{display:flex;flex-direction:column;font-size:.8em;font-family:"Source Sans Pro",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";flex-basis:33%}div.quarto-post .listing-categories{display:flex;flex-wrap:wrap;padding-bottom:5px}div.quarto-post .listing-categories .listing-category{color:#6c757d;border:solid 1px #dee2e6;border-radius:.25rem;text-transform:uppercase;font-size:.65em;padding-left:.5em;padding-right:.5em;padding-top:.15em;padding-bottom:.15em;cursor:pointer;margin-right:4px;margin-bottom:4px}div.quarto-post .listing-description{margin-bottom:.5em}div.quarto-about-jolla{display:flex !important;flex-direction:column;align-items:center;margin-top:10%;padding-bottom:1em}div.quarto-about-jolla .about-image{object-fit:cover;margin-left:auto;margin-right:auto;margin-bottom:1.5em}div.quarto-about-jolla img.round{border-radius:50%}div.quarto-about-jolla img.rounded{border-radius:10px}div.quarto-about-jolla .quarto-title h1.title,div.quarto-about-jolla .quarto-title .title.h1{text-align:center}div.quarto-about-jolla .quarto-title .description{text-align:center}div.quarto-about-jolla h2,div.quarto-about-jolla .h2{border-bottom:none}div.quarto-about-jolla .about-sep{width:60%}div.quarto-about-jolla main{text-align:center}div.quarto-about-jolla .about-links{display:flex}@media(min-width: 992px){div.quarto-about-jolla .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-jolla .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-jolla .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-jolla .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-jolla .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-jolla .about-link:hover{color:#2761e3}div.quarto-about-jolla .about-link i.bi{margin-right:.15em}div.quarto-about-solana{display:flex !important;flex-direction:column;padding-top:3em !important;padding-bottom:1em}div.quarto-about-solana .about-entity{display:flex !important;align-items:start;justify-content:space-between}@media(min-width: 992px){div.quarto-about-solana .about-entity{flex-direction:row}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity{flex-direction:column-reverse;align-items:center;text-align:center}}div.quarto-about-solana .about-entity .entity-contents{display:flex;flex-direction:column}@media(max-width: 767.98px){div.quarto-about-solana .about-entity .entity-contents{width:100%}}div.quarto-about-solana .about-entity .about-image{object-fit:cover}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-image{margin-bottom:1.5em}}div.quarto-about-solana .about-entity img.round{border-radius:50%}div.quarto-about-solana .about-entity img.rounded{border-radius:10px}div.quarto-about-solana .about-entity .about-links{display:flex;justify-content:left;padding-bottom:1.2em}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-solana .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-solana .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-solana .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-solana .about-entity .about-link:hover{color:#2761e3}div.quarto-about-solana .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-solana .about-contents{padding-right:1.5em;flex-basis:0;flex-grow:1}div.quarto-about-solana .about-contents main.content{margin-top:0}div.quarto-about-solana .about-contents h2,div.quarto-about-solana .about-contents .h2{border-bottom:none}div.quarto-about-trestles{display:flex !important;flex-direction:row;padding-top:3em !important;padding-bottom:1em}@media(max-width: 991.98px){div.quarto-about-trestles{flex-direction:column;padding-top:0em !important}}div.quarto-about-trestles .about-entity{display:flex !important;flex-direction:column;align-items:center;text-align:center;padding-right:1em}@media(min-width: 992px){div.quarto-about-trestles .about-entity{flex:0 0 42%}}div.quarto-about-trestles .about-entity .about-image{object-fit:cover;margin-bottom:1.5em}div.quarto-about-trestles .about-entity img.round{border-radius:50%}div.quarto-about-trestles .about-entity img.rounded{border-radius:10px}div.quarto-about-trestles .about-entity .about-links{display:flex;justify-content:center}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-trestles .about-entity .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-trestles .about-entity .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-trestles .about-entity .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-trestles .about-entity .about-link:hover{color:#2761e3}div.quarto-about-trestles .about-entity .about-link i.bi{margin-right:.15em}div.quarto-about-trestles .about-contents{flex-basis:0;flex-grow:1}div.quarto-about-trestles .about-contents h2,div.quarto-about-trestles .about-contents .h2{border-bottom:none}@media(min-width: 992px){div.quarto-about-trestles .about-contents{border-left:solid 1px #dee2e6;padding-left:1.5em}}div.quarto-about-trestles .about-contents main.content{margin-top:0}div.quarto-about-marquee{padding-bottom:1em}div.quarto-about-marquee .about-contents{display:flex;flex-direction:column}div.quarto-about-marquee .about-image{max-height:550px;margin-bottom:1.5em;object-fit:cover}div.quarto-about-marquee img.round{border-radius:50%}div.quarto-about-marquee img.rounded{border-radius:10px}div.quarto-about-marquee h2,div.quarto-about-marquee .h2{border-bottom:none}div.quarto-about-marquee .about-links{display:flex;justify-content:center;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-marquee .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-marquee .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-marquee .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-marquee .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-marquee .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-marquee .about-link:hover{color:#2761e3}div.quarto-about-marquee .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-marquee .about-link{border:none}}div.quarto-about-broadside{display:flex;flex-direction:column;padding-bottom:1em}div.quarto-about-broadside .about-main{display:flex !important;padding-top:0 !important}@media(min-width: 992px){div.quarto-about-broadside .about-main{flex-direction:row;align-items:flex-start}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main{flex-direction:column}}@media(max-width: 991.98px){div.quarto-about-broadside .about-main .about-entity{flex-shrink:0;width:100%;height:450px;margin-bottom:1.5em;background-size:cover;background-repeat:no-repeat}}@media(min-width: 992px){div.quarto-about-broadside .about-main .about-entity{flex:0 10 50%;margin-right:1.5em;width:100%;height:100%;background-size:100%;background-repeat:no-repeat}}div.quarto-about-broadside .about-main .about-contents{padding-top:14px;flex:0 0 50%}div.quarto-about-broadside h2,div.quarto-about-broadside .h2{border-bottom:none}div.quarto-about-broadside .about-sep{margin-top:1.5em;width:60%;align-self:center}div.quarto-about-broadside .about-links{display:flex;justify-content:center;column-gap:20px;padding-top:1.5em}@media(min-width: 992px){div.quarto-about-broadside .about-links{flex-direction:row;column-gap:.8em;row-gap:15px;flex-wrap:wrap}}@media(max-width: 991.98px){div.quarto-about-broadside .about-links{flex-direction:column;row-gap:1em;width:100%;padding-bottom:1.5em}}div.quarto-about-broadside .about-link{color:#626d78;text-decoration:none;border:solid 1px}@media(min-width: 992px){div.quarto-about-broadside .about-link{font-size:.8em;padding:.25em .5em;border-radius:4px}}@media(max-width: 991.98px){div.quarto-about-broadside .about-link{font-size:1.1em;padding:.5em .5em;text-align:center;border-radius:6px}}div.quarto-about-broadside .about-link:hover{color:#2761e3}div.quarto-about-broadside .about-link i.bi{margin-right:.15em}@media(min-width: 992px){div.quarto-about-broadside .about-link{border:none}}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px #dee2e6;border-radius:.25rem;color:#343a40;font-size:.875rem}.tippy-box[data-theme~=quarto]>.tippy-backdrop{background-color:#fff}.tippy-box[data-theme~=quarto]>.tippy-arrow:after,.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{content:"";position:absolute;z-index:-1}.tippy-box[data-theme~=quarto]>.tippy-arrow:after{border-color:rgba(0,0,0,0);border-style:solid}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-6px}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-6px}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-6px}.tippy-box[data-placement^=left]>.tippy-arrow:before{right:-6px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:before{border-top-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-arrow:after{border-top-color:#dee2e6;border-width:7px 7px 0;top:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow>svg{top:16px}.tippy-box[data-theme~=quarto][data-placement^=top]>.tippy-svg-arrow:after{top:17px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:before{border-bottom-color:#fff;bottom:16px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-arrow:after{border-bottom-color:#dee2e6;border-width:0 7px 7px;bottom:17px;left:1px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow>svg{bottom:15px}.tippy-box[data-theme~=quarto][data-placement^=bottom]>.tippy-svg-arrow:after{bottom:17px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:before{border-left-color:#fff}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-arrow:after{border-left-color:#dee2e6;border-width:7px 0 7px 7px;left:17px;top:1px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow>svg{left:11px}.tippy-box[data-theme~=quarto][data-placement^=left]>.tippy-svg-arrow:after{left:12px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:before{border-right-color:#fff;right:16px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-arrow:after{border-width:7px 7px 7px 0;right:17px;top:1px;border-right-color:#dee2e6}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow>svg{right:11px}.tippy-box[data-theme~=quarto][data-placement^=right]>.tippy-svg-arrow:after{right:12px}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow{fill:#343a40}.tippy-box[data-theme~=quarto]>.tippy-svg-arrow:after{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNMCA2czEuNzk2LS4wMTMgNC42Ny0zLjYxNUM1Ljg1MS45IDYuOTMuMDA2IDggMGMxLjA3LS4wMDYgMi4xNDguODg3IDMuMzQzIDIuMzg1QzE0LjIzMyA2LjAwNSAxNiA2IDE2IDZIMHoiIGZpbGw9InJnYmEoMCwgOCwgMTYsIDAuMikiLz48L3N2Zz4=);background-size:16px 6px;width:16px;height:6px}.top-right{position:absolute;top:1em;right:1em}.visually-hidden{border:0;clip:rect(0 0 0 0);height:auto;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap}.hidden{display:none !important}.zindex-bottom{z-index:-1 !important}figure.figure{display:block}.quarto-layout-panel{margin-bottom:1em}.quarto-layout-panel>figure{width:100%}.quarto-layout-panel>figure>figcaption,.quarto-layout-panel>.panel-caption{margin-top:10pt}.quarto-layout-panel>.table-caption{margin-top:0px}.table-caption p{margin-bottom:.5em}.quarto-layout-row{display:flex;flex-direction:row;align-items:flex-start}.quarto-layout-valign-top{align-items:flex-start}.quarto-layout-valign-bottom{align-items:flex-end}.quarto-layout-valign-center{align-items:center}.quarto-layout-cell{position:relative;margin-right:20px}.quarto-layout-cell:last-child{margin-right:0}.quarto-layout-cell figure,.quarto-layout-cell>p{margin:.2em}.quarto-layout-cell img{max-width:100%}.quarto-layout-cell .html-widget{width:100% !important}.quarto-layout-cell div figure p{margin:0}.quarto-layout-cell figure{display:block;margin-inline-start:0;margin-inline-end:0}.quarto-layout-cell table{display:inline-table}.quarto-layout-cell-subref figcaption,figure .quarto-layout-row figure figcaption{text-align:center;font-style:italic}.quarto-figure{position:relative;margin-bottom:1em}.quarto-figure>figure{width:100%;margin-bottom:0}.quarto-figure-left>figure>p,.quarto-figure-left>figure>div{text-align:left}.quarto-figure-center>figure>p,.quarto-figure-center>figure>div{text-align:center}.quarto-figure-right>figure>p,.quarto-figure-right>figure>div{text-align:right}.quarto-figure>figure>div.cell-annotation,.quarto-figure>figure>div code{text-align:left}figure>p:empty{display:none}figure>p:first-child{margin-top:0;margin-bottom:0}figure>figcaption.quarto-float-caption-bottom{margin-bottom:.5em}figure>figcaption.quarto-float-caption-top{margin-top:.5em}div[id^=tbl-]{position:relative}.quarto-figure>.anchorjs-link{position:absolute;top:.6em;right:.5em}div[id^=tbl-]>.anchorjs-link{position:absolute;top:.7em;right:.3em}.quarto-figure:hover>.anchorjs-link,div[id^=tbl-]:hover>.anchorjs-link,h2:hover>.anchorjs-link,.h2:hover>.anchorjs-link,h3:hover>.anchorjs-link,.h3:hover>.anchorjs-link,h4:hover>.anchorjs-link,.h4:hover>.anchorjs-link,h5:hover>.anchorjs-link,.h5:hover>.anchorjs-link,h6:hover>.anchorjs-link,.h6:hover>.anchorjs-link,.reveal-anchorjs-link>.anchorjs-link{opacity:1}#title-block-header{margin-block-end:1rem;position:relative;margin-top:-1px}#title-block-header .abstract{margin-block-start:1rem}#title-block-header .abstract .abstract-title{font-weight:600}#title-block-header a{text-decoration:none}#title-block-header .author,#title-block-header .date,#title-block-header .doi{margin-block-end:.2rem}#title-block-header .quarto-title-block>div{display:flex}#title-block-header .quarto-title-block>div>h1,#title-block-header .quarto-title-block>div>.h1{flex-grow:1}#title-block-header .quarto-title-block>div>button{flex-shrink:0;height:2.25rem;margin-top:0}@media(min-width: 992px){#title-block-header .quarto-title-block>div>button{margin-top:5px}}tr.header>th>p:last-of-type{margin-bottom:0px}table,table.table{margin-top:.5rem;margin-bottom:.5rem}caption,.table-caption{padding-top:.5rem;padding-bottom:.5rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-top{margin-top:.5rem;margin-bottom:.25rem;text-align:center}figure.quarto-float-tbl figcaption.quarto-float-caption-bottom{padding-top:.25rem;margin-bottom:.5rem;text-align:center}.utterances{max-width:none;margin-left:-8px}iframe{margin-bottom:1em}details{margin-bottom:1em}details[show]{margin-bottom:0}details>summary{color:#6c757d}details>summary>p:only-child{display:inline}pre.sourceCode,code.sourceCode{position:relative}dd code:not(.sourceCode),p code:not(.sourceCode){white-space:pre-wrap}code{white-space:pre}@media print{code{white-space:pre-wrap}}pre>code{display:block}pre>code.sourceCode{white-space:pre-wrap}pre>code.sourceCode>span>a:first-child::before{text-decoration:none}pre.code-overflow-wrap>code.sourceCode{white-space:pre-wrap}pre.code-overflow-scroll>code.sourceCode{white-space:pre}code a:any-link{color:inherit;text-decoration:none}code a:hover{color:inherit;text-decoration:underline}ul.task-list{padding-left:1em}[data-tippy-root]{display:inline-block}.tippy-content .footnote-back{display:none}.footnote-back{margin-left:.2em}.tippy-content{overflow-x:auto}.quarto-embedded-source-code{display:none}.quarto-unresolved-ref{font-weight:600}.quarto-cover-image{max-width:35%;float:right;margin-left:30px}.cell-output-display .widget-subarea{margin-bottom:1em}.cell-output-display:not(.no-overflow-x),.knitsql-table:not(.no-overflow-x){overflow-x:auto}.panel-input{margin-bottom:1em}.panel-input>div,.panel-input>div>div{display:inline-block;vertical-align:top;padding-right:12px}.panel-input>p:last-child{margin-bottom:0}.layout-sidebar{margin-bottom:1em}.layout-sidebar .tab-content{border:none}.tab-content>.page-columns.active{display:grid}div.sourceCode>iframe{width:100%;height:300px;margin-bottom:-0.5em}a{text-underline-offset:3px}div.ansi-escaped-output{font-family:monospace;display:block}/*! * * ansi colors from IPython notebook's * diff --git a/site_libs/crosstalk-1.2.1/css/crosstalk.min.css b/site_libs/crosstalk-1.2.1/css/crosstalk.min.css deleted file mode 100644 index 6b45382..0000000 --- a/site_libs/crosstalk-1.2.1/css/crosstalk.min.css +++ /dev/null @@ -1 +0,0 @@ -.container-fluid.crosstalk-bscols{margin-left:-30px;margin-right:-30px;white-space:normal}body>.container-fluid.crosstalk-bscols{margin-left:auto;margin-right:auto}.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:inline-block;padding-right:12px;vertical-align:top}@media only screen and (max-width: 480px){.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column{display:block;padding-right:inherit}}.crosstalk-input{margin-bottom:15px}.crosstalk-input .control-label{margin-bottom:0;vertical-align:middle}.crosstalk-input input[type="checkbox"]{margin:4px 0 0;margin-top:1px;line-height:normal}.crosstalk-input .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.crosstalk-input .checkbox>label{padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.crosstalk-input .checkbox input[type="checkbox"],.crosstalk-input .checkbox-inline input[type="checkbox"]{position:absolute;margin-top:2px;margin-left:-20px}.crosstalk-input .checkbox+.checkbox{margin-top:-5px}.crosstalk-input .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.crosstalk-input .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px} diff --git a/site_libs/crosstalk-1.2.1/js/crosstalk.js b/site_libs/crosstalk-1.2.1/js/crosstalk.js deleted file mode 100644 index fd9eb53..0000000 --- a/site_libs/crosstalk-1.2.1/js/crosstalk.js +++ /dev/null @@ -1,1474 +0,0 @@ -(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o b) { - return 1; - } -} - -/** - * @private - */ - -var FilterSet = function () { - function FilterSet() { - _classCallCheck(this, FilterSet); - - this.reset(); - } - - _createClass(FilterSet, [{ - key: "reset", - value: function reset() { - // Key: handle ID, Value: array of selected keys, or null - this._handles = {}; - // Key: key string, Value: count of handles that include it - this._keys = {}; - this._value = null; - this._activeHandles = 0; - } - }, { - key: "update", - value: function update(handleId, keys) { - if (keys !== null) { - keys = keys.slice(0); // clone before sorting - keys.sort(naturalComparator); - } - - var _diffSortedLists = (0, _util.diffSortedLists)(this._handles[handleId], keys), - added = _diffSortedLists.added, - removed = _diffSortedLists.removed; - - this._handles[handleId] = keys; - - for (var i = 0; i < added.length; i++) { - this._keys[added[i]] = (this._keys[added[i]] || 0) + 1; - } - for (var _i = 0; _i < removed.length; _i++) { - this._keys[removed[_i]]--; - } - - this._updateValue(keys); - } - - /** - * @param {string[]} keys Sorted array of strings that indicate - * a superset of possible keys. - * @private - */ - - }, { - key: "_updateValue", - value: function _updateValue() { - var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._allKeys; - - var handleCount = Object.keys(this._handles).length; - if (handleCount === 0) { - this._value = null; - } else { - this._value = []; - for (var i = 0; i < keys.length; i++) { - var count = this._keys[keys[i]]; - if (count === handleCount) { - this._value.push(keys[i]); - } - } - } - } - }, { - key: "clear", - value: function clear(handleId) { - if (typeof this._handles[handleId] === "undefined") { - return; - } - - var keys = this._handles[handleId]; - if (!keys) { - keys = []; - } - - for (var i = 0; i < keys.length; i++) { - this._keys[keys[i]]--; - } - delete this._handles[handleId]; - - this._updateValue(); - } - }, { - key: "value", - get: function get() { - return this._value; - } - }, { - key: "_allKeys", - get: function get() { - var allKeys = Object.keys(this._keys); - allKeys.sort(naturalComparator); - return allKeys; - } - }]); - - return FilterSet; -}(); - -exports.default = FilterSet; - -},{"./util":11}],4:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.default = group; - -var _var2 = require("./var"); - -var _var3 = _interopRequireDefault(_var2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -// Use a global so that multiple copies of crosstalk.js can be loaded and still -// have groups behave as singletons across all copies. -global.__crosstalk_groups = global.__crosstalk_groups || {}; -var groups = global.__crosstalk_groups; - -function group(groupName) { - if (groupName && typeof groupName === "string") { - if (!groups.hasOwnProperty(groupName)) { - groups[groupName] = new Group(groupName); - } - return groups[groupName]; - } else if ((typeof groupName === "undefined" ? "undefined" : _typeof(groupName)) === "object" && groupName._vars && groupName.var) { - // Appears to already be a group object - return groupName; - } else if (Array.isArray(groupName) && groupName.length == 1 && typeof groupName[0] === "string") { - return group(groupName[0]); - } else { - throw new Error("Invalid groupName argument"); - } -} - -var Group = function () { - function Group(name) { - _classCallCheck(this, Group); - - this.name = name; - this._vars = {}; - } - - _createClass(Group, [{ - key: "var", - value: function _var(name) { - if (!name || typeof name !== "string") { - throw new Error("Invalid var name"); - } - - if (!this._vars.hasOwnProperty(name)) this._vars[name] = new _var3.default(this, name); - return this._vars[name]; - } - }, { - key: "has", - value: function has(name) { - if (!name || typeof name !== "string") { - throw new Error("Invalid var name"); - } - - return this._vars.hasOwnProperty(name); - } - }]); - - return Group; -}(); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./var":12}],5:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _group = require("./group"); - -var _group2 = _interopRequireDefault(_group); - -var _selection = require("./selection"); - -var _filter = require("./filter"); - -var _input = require("./input"); - -require("./input_selectize"); - -require("./input_checkboxgroup"); - -require("./input_slider"); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -var defaultGroup = (0, _group2.default)("default"); - -function var_(name) { - return defaultGroup.var(name); -} - -function has(name) { - return defaultGroup.has(name); -} - -if (global.Shiny) { - global.Shiny.addCustomMessageHandler("update-client-value", function (message) { - if (typeof message.group === "string") { - (0, _group2.default)(message.group).var(message.name).set(message.value); - } else { - var_(message.name).set(message.value); - } - }); -} - -var crosstalk = { - group: _group2.default, - var: var_, - has: has, - SelectionHandle: _selection.SelectionHandle, - FilterHandle: _filter.FilterHandle, - bind: _input.bind -}; - -/** - * @namespace crosstalk - */ -exports.default = crosstalk; - -global.crosstalk = crosstalk; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./group":4,"./input":6,"./input_checkboxgroup":7,"./input_selectize":8,"./input_slider":9,"./selection":10}],6:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.register = register; -exports.bind = bind; -var $ = global.jQuery; - -var bindings = {}; - -function register(reg) { - bindings[reg.className] = reg; - if (global.document && global.document.readyState !== "complete") { - $(function () { - bind(); - }); - } else if (global.document) { - setTimeout(bind, 100); - } -} - -function bind() { - Object.keys(bindings).forEach(function (className) { - var binding = bindings[className]; - $("." + binding.className).not(".crosstalk-input-bound").each(function (i, el) { - bindInstance(binding, el); - }); - }); -} - -// Escape jQuery identifier -function $escape(val) { - return val.replace(/([!"#$%&'()*+,./:;<=>?@[\\\]^`{|}~])/g, "\\$1"); -} - -function bindEl(el) { - var $el = $(el); - Object.keys(bindings).forEach(function (className) { - if ($el.hasClass(className) && !$el.hasClass("crosstalk-input-bound")) { - var binding = bindings[className]; - bindInstance(binding, el); - } - }); -} - -function bindInstance(binding, el) { - var jsonEl = $(el).find("script[type='application/json'][data-for='" + $escape(el.id) + "']"); - var data = JSON.parse(jsonEl[0].innerText); - - var instance = binding.factory(el, data); - $(el).data("crosstalk-instance", instance); - $(el).addClass("crosstalk-input-bound"); -} - -if (global.Shiny) { - var inputBinding = new global.Shiny.InputBinding(); - var _$ = global.jQuery; - _$.extend(inputBinding, { - find: function find(scope) { - return _$(scope).find(".crosstalk-input"); - }, - initialize: function initialize(el) { - if (!_$(el).hasClass("crosstalk-input-bound")) { - bindEl(el); - } - }, - getId: function getId(el) { - return el.id; - }, - getValue: function getValue(el) {}, - setValue: function setValue(el, value) {}, - receiveMessage: function receiveMessage(el, data) {}, - subscribe: function subscribe(el, callback) { - _$(el).data("crosstalk-instance").resume(); - }, - unsubscribe: function unsubscribe(el) { - _$(el).data("crosstalk-instance").suspend(); - } - }); - global.Shiny.inputBindings.register(inputBinding, "crosstalk.inputBinding"); -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{}],7:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; - -input.register({ - className: "crosstalk-input-checkboxgroup", - - factory: function factory(el, data) { - /* - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - var ctHandle = new _filter.FilterHandle(data.group); - - var lastKnownKeys = void 0; - var $el = $(el); - $el.on("change", "input[type='checkbox']", function () { - var checked = $el.find("input[type='checkbox']:checked"); - if (checked.length === 0) { - lastKnownKeys = null; - ctHandle.clear(); - } else { - var keys = {}; - checked.each(function () { - data.map[this.value].forEach(function (key) { - keys[key] = true; - }); - }); - var keyArray = Object.keys(keys); - keyArray.sort(); - lastKnownKeys = keyArray; - ctHandle.set(keyArray); - } - }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6}],8:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _util = require("./util"); - -var util = _interopRequireWildcard(_util); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; - -input.register({ - className: "crosstalk-input-select", - - factory: function factory(el, data) { - /* - * items: {value: [...], label: [...]} - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - - var first = [{ value: "", label: "(All)" }]; - var items = util.dataframeToD3(data.items); - var opts = { - options: first.concat(items), - valueField: "value", - labelField: "label", - searchField: "label" - }; - - var select = $(el).find("select")[0]; - - var selectize = $(select).selectize(opts)[0].selectize; - - var ctHandle = new _filter.FilterHandle(data.group); - - var lastKnownKeys = void 0; - selectize.on("change", function () { - if (selectize.items.length === 0) { - lastKnownKeys = null; - ctHandle.clear(); - } else { - var keys = {}; - selectize.items.forEach(function (group) { - data.map[group].forEach(function (key) { - keys[key] = true; - }); - }); - var keyArray = Object.keys(keys); - keyArray.sort(); - lastKnownKeys = keyArray; - ctHandle.set(keyArray); - } - }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6,"./util":11}],9:[function(require,module,exports){ -(function (global){ -"use strict"; - -var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); - -var _input = require("./input"); - -var input = _interopRequireWildcard(_input); - -var _filter = require("./filter"); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -var $ = global.jQuery; -var strftime = global.strftime; - -input.register({ - className: "crosstalk-input-slider", - - factory: function factory(el, data) { - /* - * map: {"groupA": ["keyA", "keyB", ...], ...} - * group: "ct-groupname" - */ - var ctHandle = new _filter.FilterHandle(data.group); - - var opts = {}; - var $el = $(el).find("input"); - var dataType = $el.data("data-type"); - var timeFormat = $el.data("time-format"); - var round = $el.data("round"); - var timeFormatter = void 0; - - // Set up formatting functions - if (dataType === "date") { - timeFormatter = strftime.utc(); - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } else if (dataType === "datetime") { - var timezone = $el.data("timezone"); - if (timezone) timeFormatter = strftime.timezone(timezone);else timeFormatter = strftime; - - opts.prettify = function (num) { - return timeFormatter(timeFormat, new Date(num)); - }; - } else if (dataType === "number") { - if (typeof round !== "undefined") opts.prettify = function (num) { - var factor = Math.pow(10, round); - return Math.round(num * factor) / factor; - }; - } - - $el.ionRangeSlider(opts); - - function getValue() { - var result = $el.data("ionRangeSlider").result; - - // Function for converting numeric value from slider to appropriate type. - var convert = void 0; - var dataType = $el.data("data-type"); - if (dataType === "date") { - convert = function convert(val) { - return formatDateUTC(new Date(+val)); - }; - } else if (dataType === "datetime") { - convert = function convert(val) { - // Convert ms to s - return +val / 1000; - }; - } else { - convert = function convert(val) { - return +val; - }; - } - - if ($el.data("ionRangeSlider").options.type === "double") { - return [convert(result.from), convert(result.to)]; - } else { - return convert(result.from); - } - } - - var lastKnownKeys = null; - - $el.on("change.crosstalkSliderInput", function (event) { - if (!$el.data("updating") && !$el.data("animating")) { - var _getValue = getValue(), - _getValue2 = _slicedToArray(_getValue, 2), - from = _getValue2[0], - to = _getValue2[1]; - - var keys = []; - for (var i = 0; i < data.values.length; i++) { - var val = data.values[i]; - if (val >= from && val <= to) { - keys.push(data.keys[i]); - } - } - keys.sort(); - ctHandle.set(keys); - lastKnownKeys = keys; - } - }); - - // let $el = $(el); - // $el.on("change", "input[type="checkbox"]", function() { - // let checked = $el.find("input[type="checkbox"]:checked"); - // if (checked.length === 0) { - // ctHandle.clear(); - // } else { - // let keys = {}; - // checked.each(function() { - // data.map[this.value].forEach(function(key) { - // keys[key] = true; - // }); - // }); - // let keyArray = Object.keys(keys); - // keyArray.sort(); - // ctHandle.set(keyArray); - // } - // }); - - return { - suspend: function suspend() { - ctHandle.clear(); - }, - resume: function resume() { - if (lastKnownKeys) ctHandle.set(lastKnownKeys); - } - }; - } -}); - -// Convert a number to a string with leading zeros -function padZeros(n, digits) { - var str = n.toString(); - while (str.length < digits) { - str = "0" + str; - }return str; -} - -// Given a Date object, return a string in yyyy-mm-dd format, using the -// UTC date. This may be a day off from the date in the local time zone. -function formatDateUTC(date) { - if (date instanceof Date) { - return date.getUTCFullYear() + "-" + padZeros(date.getUTCMonth() + 1, 2) + "-" + padZeros(date.getUTCDate(), 2); - } else { - return null; - } -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./filter":2,"./input":6}],10:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SelectionHandle = undefined; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _events = require("./events"); - -var _events2 = _interopRequireDefault(_events); - -var _group = require("./group"); - -var _group2 = _interopRequireDefault(_group); - -var _util = require("./util"); - -var util = _interopRequireWildcard(_util); - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -/** - * Use this class to read and write (and listen for changes to) the selection - * for a Crosstalk group. This is intended to be used for linked brushing. - * - * If two (or more) `SelectionHandle` instances in the same webpage share the - * same group name, they will share the same state. Setting the selection using - * one `SelectionHandle` instance will result in the `value` property instantly - * changing across the others, and `"change"` event listeners on all instances - * (including the one that initiated the sending) will fire. - * - * @param {string} [group] - The name of the Crosstalk group, or if none, - * null or undefined (or any other falsy value). This can be changed later - * via the [SelectionHandle#setGroup](#setGroup) method. - * @param {Object} [extraInfo] - An object whose properties will be copied to - * the event object whenever an event is emitted. - */ -var SelectionHandle = exports.SelectionHandle = function () { - function SelectionHandle() { - var group = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; - var extraInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; - - _classCallCheck(this, SelectionHandle); - - this._eventRelay = new _events2.default(); - this._emitter = new util.SubscriptionTracker(this._eventRelay); - - // Name of the group we're currently tracking, if any. Can change over time. - this._group = null; - // The Var we're currently tracking, if any. Can change over time. - this._var = null; - // The event handler subscription we currently have on var.on("change"). - this._varOnChangeSub = null; - - this._extraInfo = util.extend({ sender: this }, extraInfo); - - this.setGroup(group); - } - - /** - * Changes the Crosstalk group membership of this SelectionHandle. The group - * being switched away from (if any) will not have its selection value - * modified as a result of calling `setGroup`, even if this handle was the - * most recent handle to set the selection of the group. - * - * The group being switched to (if any) will also not have its selection value - * modified as a result of calling `setGroup`. If you want to set the - * selection value of the new group, call `set` explicitly. - * - * @param {string} group - The name of the Crosstalk group, or null (or - * undefined) to clear the group. - */ - - - _createClass(SelectionHandle, [{ - key: "setGroup", - value: function setGroup(group) { - var _this = this; - - // If group is unchanged, do nothing - if (this._group === group) return; - // Treat null, undefined, and other falsy values the same - if (!this._group && !group) return; - - if (this._var) { - this._var.off("change", this._varOnChangeSub); - this._var = null; - this._varOnChangeSub = null; - } - - this._group = group; - - if (group) { - this._var = (0, _group2.default)(group).var("selection"); - var sub = this._var.on("change", function (e) { - _this._eventRelay.trigger("change", e, _this); - }); - this._varOnChangeSub = sub; - } - } - - /** - * Retrieves the current selection for the group represented by this - * `SelectionHandle`. - * - * - If no selection is active, then this value will be falsy. - * - If a selection is active, but no data points are selected, then this - * value will be an empty array. - * - If a selection is active, and data points are selected, then the keys - * of the selected data points will be present in the array. - */ - - }, { - key: "_mergeExtraInfo", - - - /** - * Combines the given `extraInfo` (if any) with the handle's default - * `_extraInfo` (if any). - * @private - */ - value: function _mergeExtraInfo(extraInfo) { - // Important incidental effect: shallow clone is returned - return util.extend({}, this._extraInfo ? this._extraInfo : null, extraInfo ? extraInfo : null); - } - - /** - * Overwrites the current selection for the group, and raises the `"change"` - * event among all of the group's '`SelectionHandle` instances (including - * this one). - * - * @fires SelectionHandle#change - * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see - * {@link SelectionHandle#value}). - * @param {Object} [extraInfo] - Extra properties to be included on the event - * object that's passed to listeners (in addition to any options that were - * passed into the `SelectionHandle` constructor). - */ - - }, { - key: "set", - value: function set(selectedKeys, extraInfo) { - if (this._var) this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo)); - } - - /** - * Overwrites the current selection for the group, and raises the `"change"` - * event among all of the group's '`SelectionHandle` instances (including - * this one). - * - * @fires SelectionHandle#change - * @param {Object} [extraInfo] - Extra properties to be included on the event - * object that's passed to listeners (in addition to any that were passed - * into the `SelectionHandle` constructor). - */ - - }, { - key: "clear", - value: function clear(extraInfo) { - if (this._var) this.set(void 0, this._mergeExtraInfo(extraInfo)); - } - - /** - * Subscribes to events on this `SelectionHandle`. - * - * @param {string} eventType - Indicates the type of events to listen to. - * Currently, only `"change"` is supported. - * @param {SelectionHandle~listener} listener - The callback function that - * will be invoked when the event occurs. - * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel - * this subscription. - */ - - }, { - key: "on", - value: function on(eventType, listener) { - return this._emitter.on(eventType, listener); - } - - /** - * Cancels event subscriptions created by {@link SelectionHandle#on}. - * - * @param {string} eventType - The type of event to unsubscribe. - * @param {string|SelectionHandle~listener} listener - Either the callback - * function previously passed into {@link SelectionHandle#on}, or the - * string that was returned from {@link SelectionHandle#on}. - */ - - }, { - key: "off", - value: function off(eventType, listener) { - return this._emitter.off(eventType, listener); - } - - /** - * Shuts down the `SelectionHandle` object. - * - * Removes all event listeners that were added through this handle. - */ - - }, { - key: "close", - value: function close() { - this._emitter.removeAllListeners(); - this.setGroup(null); - } - }, { - key: "value", - get: function get() { - return this._var ? this._var.get() : null; - } - }]); - - return SelectionHandle; -}(); - -/** - * @callback SelectionHandle~listener - * @param {Object} event - An object containing details of the event. For - * `"change"` events, this includes the properties `value` (the new - * value of the selection, or `undefined` if no selection is active), - * `oldValue` (the previous value of the selection), and `sender` (the - * `SelectionHandle` instance that made the change). - */ - -/** - * @event SelectionHandle#change - * @type {object} - * @property {object} value - The new value of the selection, or `undefined` - * if no selection is active. - * @property {object} oldValue - The previous value of the selection. - * @property {SelectionHandle} sender - The `SelectionHandle` instance that - * changed the value. - */ - -},{"./events":1,"./group":4,"./util":11}],11:[function(require,module,exports){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -exports.extend = extend; -exports.checkSorted = checkSorted; -exports.diffSortedLists = diffSortedLists; -exports.dataframeToD3 = dataframeToD3; - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function extend(target) { - for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - sources[_key - 1] = arguments[_key]; - } - - for (var i = 0; i < sources.length; i++) { - var src = sources[i]; - if (typeof src === "undefined" || src === null) continue; - - for (var key in src) { - if (src.hasOwnProperty(key)) { - target[key] = src[key]; - } - } - } - return target; -} - -function checkSorted(list) { - for (var i = 1; i < list.length; i++) { - if (list[i] <= list[i - 1]) { - throw new Error("List is not sorted or contains duplicate"); - } - } -} - -function diffSortedLists(a, b) { - var i_a = 0; - var i_b = 0; - - if (!a) a = []; - if (!b) b = []; - - var a_only = []; - var b_only = []; - - checkSorted(a); - checkSorted(b); - - while (i_a < a.length && i_b < b.length) { - if (a[i_a] === b[i_b]) { - i_a++; - i_b++; - } else if (a[i_a] < b[i_b]) { - a_only.push(a[i_a++]); - } else { - b_only.push(b[i_b++]); - } - } - - if (i_a < a.length) a_only = a_only.concat(a.slice(i_a)); - if (i_b < b.length) b_only = b_only.concat(b.slice(i_b)); - return { - removed: a_only, - added: b_only - }; -} - -// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... } -// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ] -function dataframeToD3(df) { - var names = []; - var length = void 0; - for (var name in df) { - if (df.hasOwnProperty(name)) names.push(name); - if (_typeof(df[name]) !== "object" || typeof df[name].length === "undefined") { - throw new Error("All fields must be arrays"); - } else if (typeof length !== "undefined" && length !== df[name].length) { - throw new Error("All fields must be arrays of the same length"); - } - length = df[name].length; - } - var results = []; - var item = void 0; - for (var row = 0; row < length; row++) { - item = {}; - for (var col = 0; col < names.length; col++) { - item[names[col]] = df[names[col]][row]; - } - results.push(item); - } - return results; -} - -/** - * Keeps track of all event listener additions/removals and lets all active - * listeners be removed with a single operation. - * - * @private - */ - -var SubscriptionTracker = exports.SubscriptionTracker = function () { - function SubscriptionTracker(emitter) { - _classCallCheck(this, SubscriptionTracker); - - this._emitter = emitter; - this._subs = {}; - } - - _createClass(SubscriptionTracker, [{ - key: "on", - value: function on(eventType, listener) { - var sub = this._emitter.on(eventType, listener); - this._subs[sub] = eventType; - return sub; - } - }, { - key: "off", - value: function off(eventType, listener) { - var sub = this._emitter.off(eventType, listener); - if (sub) { - delete this._subs[sub]; - } - return sub; - } - }, { - key: "removeAllListeners", - value: function removeAllListeners() { - var _this = this; - - var current_subs = this._subs; - this._subs = {}; - Object.keys(current_subs).forEach(function (sub) { - _this._emitter.off(current_subs[sub], sub); - }); - } - }]); - - return SubscriptionTracker; -}(); - -},{}],12:[function(require,module,exports){ -(function (global){ -"use strict"; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _events = require("./events"); - -var _events2 = _interopRequireDefault(_events); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -var Var = function () { - function Var(group, name, /*optional*/value) { - _classCallCheck(this, Var); - - this._group = group; - this._name = name; - this._value = value; - this._events = new _events2.default(); - } - - _createClass(Var, [{ - key: "get", - value: function get() { - return this._value; - } - }, { - key: "set", - value: function set(value, /*optional*/event) { - if (this._value === value) { - // Do nothing; the value hasn't changed - return; - } - var oldValue = this._value; - this._value = value; - // Alert JavaScript listeners that the value has changed - var evt = {}; - if (event && (typeof event === "undefined" ? "undefined" : _typeof(event)) === "object") { - for (var k in event) { - if (event.hasOwnProperty(k)) evt[k] = event[k]; - } - } - evt.oldValue = oldValue; - evt.value = value; - this._events.trigger("change", evt, this); - - // TODO: Make this extensible, to let arbitrary back-ends know that - // something has changed - if (global.Shiny && global.Shiny.onInputChange) { - global.Shiny.onInputChange(".clientValue-" + (this._group.name !== null ? this._group.name + "-" : "") + this._name, typeof value === "undefined" ? null : value); - } - } - }, { - key: "on", - value: function on(eventType, listener) { - return this._events.on(eventType, listener); - } - }, { - key: "off", - value: function off(eventType, listener) { - return this._events.off(eventType, listener); - } - }]); - - return Var; -}(); - -exports.default = Var; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) - -},{"./events":1}]},{},[5]) -//# sourceMappingURL=crosstalk.js.map diff --git a/site_libs/crosstalk-1.2.1/js/crosstalk.js.map b/site_libs/crosstalk-1.2.1/js/crosstalk.js.map deleted file mode 100644 index cff94f0..0000000 --- a/site_libs/crosstalk-1.2.1/js/crosstalk.js.map +++ /dev/null @@ -1,37 +0,0 @@ -{ - "version": 3, - "sources": [ - "node_modules/browser-pack/_prelude.js", - "javascript/src/events.js", - "javascript/src/filter.js", - "javascript/src/filterset.js", - "javascript/src/group.js", - "javascript/src/index.js", - "javascript/src/input.js", - "javascript/src/input_checkboxgroup.js", - "javascript/src/input_selectize.js", - "javascript/src/input_slider.js", - "javascript/src/selection.js", - "javascript/src/util.js", - "javascript/src/var.js" - ], - "names": [], - "mappings": "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", - "file": "generated.js", - "sourceRoot": "", - "sourcesContent": [ - "(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n", - "import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n", - "import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n", - "import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n", - "let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n", - "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", - "import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n", - "import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n", - "import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n", - "export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n", - "import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n" - ] -} \ No newline at end of file diff --git a/site_libs/crosstalk-1.2.1/js/crosstalk.min.js b/site_libs/crosstalk-1.2.1/js/crosstalk.min.js deleted file mode 100644 index b7ec0ac..0000000 --- a/site_libs/crosstalk-1.2.1/js/crosstalk.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function o(u,a,l){function s(n,e){if(!a[n]){if(!u[n]){var t="function"==typeof require&&require;if(!e&&t)return t(n,!0);if(f)return f(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[n]={exports:{}};u[n][0].call(i.exports,function(e){var t=u[n][1][e];return s(t||e)},i,i.exports,o,u,a,l)}return a[n].exports}for(var f="function"==typeof require&&require,e=0;e?@[\\\]^`{|}~])/g,"\\$1")+"']"),r=JSON.parse(n[0].innerText),i=e.factory(t,r);o(t).data("crosstalk-instance",i),o(t).addClass("crosstalk-input-bound")}if(t.Shiny){var e=new t.Shiny.InputBinding,u=t.jQuery;u.extend(e,{find:function(e){return u(e).find(".crosstalk-input")},initialize:function(e){var t,n;u(e).hasClass("crosstalk-input-bound")||(n=o(t=e),Object.keys(r).forEach(function(e){n.hasClass(e)&&!n.hasClass("crosstalk-input-bound")&&i(r[e],t)}))},getId:function(e){return e.id},getValue:function(e){},setValue:function(e,t){},receiveMessage:function(e,t){},subscribe:function(e,t){u(e).data("crosstalk-instance").resume()},unsubscribe:function(e){u(e).data("crosstalk-instance").suspend()}}),t.Shiny.inputBindings.register(e,"crosstalk.inputBinding")}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],7:[function(r,e,t){(function(e){"use strict";var t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(r("./input")),n=r("./filter");var a=e.jQuery;t.register({className:"crosstalk-input-checkboxgroup",factory:function(e,r){var i=new n.FilterHandle(r.group),o=void 0,u=a(e);return u.on("change","input[type='checkbox']",function(){var e=u.find("input[type='checkbox']:checked");if(0===e.length)o=null,i.clear();else{var t={};e.each(function(){r.map[this.value].forEach(function(e){t[e]=!0})});var n=Object.keys(t);n.sort(),o=n,i.set(n)}}),{suspend:function(){i.clear()},resume:function(){o&&i.set(o)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6}],8:[function(r,e,t){(function(e){"use strict";var t=n(r("./input")),l=n(r("./util")),s=r("./filter");function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var f=e.jQuery;t.register({className:"crosstalk-input-select",factory:function(e,n){var t=l.dataframeToD3(n.items),r={options:[{value:"",label:"(All)"}].concat(t),valueField:"value",labelField:"label",searchField:"label"},i=f(e).find("select")[0],o=f(i).selectize(r)[0].selectize,u=new s.FilterHandle(n.group),a=void 0;return o.on("change",function(){if(0===o.items.length)a=null,u.clear();else{var t={};o.items.forEach(function(e){n.map[e].forEach(function(e){t[e]=!0})});var e=Object.keys(t);e.sort(),a=e,u.set(e)}}),{suspend:function(){u.clear()},resume:function(){a&&u.set(a)}}}})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./filter":2,"./input":6,"./util":11}],9:[function(n,e,t){(function(e){"use strict";var d=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=e[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!t||n.length!==t);r=!0);}catch(e){i=!0,o=e}finally{try{!r&&a.return&&a.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},t=function(e){{if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}}(n("./input")),a=n("./filter");var v=e.jQuery,p=e.strftime;function y(e,t){for(var n=e.toString();n.length {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Combine the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Close the handle. This clears this handle's contribution to the filter set,\n * and unsubscribes all event listeners.\n */\n close() {\n this._emitter.removeAllListeners();\n this.clear();\n this.setGroup(null);\n }\n\n /**\n * Clear this handle's contribution to the filter set.\n *\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n clear(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.clear(this._id);\n this._onChange(extraInfo);\n }\n\n /**\n * Set this handle's contribution to the filter set. This array should consist\n * of the keys of the rows that _should_ be displayed; any keys that are not\n * present in the array will be considered _filtered out_. Note that multiple\n * `FilterHandle` instances in the group may each contribute an array of keys,\n * and only those keys that appear in _all_ of the arrays make it through the\n * filter.\n *\n * @param {string[]} keys - Empty array, or array of keys. To clear the\n * filter, don't pass an empty array; instead, use the\n * {@link FilterHandle#clear} method.\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `FilterHandle` constructor).\n * \n * @fires FilterHandle#change\n */\n set(keys, extraInfo) {\n if (!this._filterSet)\n return;\n this._filterSet.update(this._id, keys);\n this._onChange(extraInfo);\n }\n\n /**\n * @return {string[]|null} - Either: 1) an array of keys that made it through\n * all of the `FilterHandle` instances, or, 2) `null`, which means no filter\n * is being applied (all data should be displayed).\n */\n get filteredKeys() {\n return this._filterSet ? this._filterSet.value : null;\n }\n\n /**\n * Subscribe to events on this `FilterHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {FilterHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link FilterHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancel event subscriptions created by {@link FilterHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|FilterHandle~listener} listener - Either the callback\n * function previously passed into {@link FilterHandle#on}, or the\n * string that was returned from {@link FilterHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n _onChange(extraInfo) {\n if (!this._filterSet)\n return;\n this._filterVar.set(this._filterSet.value, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * @callback FilterHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the filter set, or `null` if no filter set is active),\n * `oldValue` (the previous value of the filter set), and `sender` (the\n * `FilterHandle` instance that made the change).\n */\n\n}\n\n/**\n * @event FilterHandle#change\n * @type {object}\n * @property {object} value - The new value of the filter set, or `null`\n * if no filter set is active.\n * @property {object} oldValue - The previous value of the filter set.\n * @property {FilterHandle} sender - The `FilterHandle` instance that\n * changed the value.\n */\n","import { diffSortedLists } from \"./util\";\n\nfunction naturalComparator(a, b) {\n if (a === b) {\n return 0;\n } else if (a < b) {\n return -1;\n } else if (a > b) {\n return 1;\n }\n}\n\n/**\n * @private\n */\nexport default class FilterSet {\n constructor() {\n this.reset();\n }\n\n reset() {\n // Key: handle ID, Value: array of selected keys, or null\n this._handles = {};\n // Key: key string, Value: count of handles that include it\n this._keys = {};\n this._value = null;\n this._activeHandles = 0;\n }\n\n get value() {\n return this._value;\n }\n\n update(handleId, keys) {\n if (keys !== null) {\n keys = keys.slice(0); // clone before sorting\n keys.sort(naturalComparator);\n }\n\n let {added, removed} = diffSortedLists(this._handles[handleId], keys);\n this._handles[handleId] = keys;\n\n for (let i = 0; i < added.length; i++) {\n this._keys[added[i]] = (this._keys[added[i]] || 0) + 1;\n }\n for (let i = 0; i < removed.length; i++) {\n this._keys[removed[i]]--;\n }\n\n this._updateValue(keys);\n }\n\n /**\n * @param {string[]} keys Sorted array of strings that indicate\n * a superset of possible keys.\n * @private\n */\n _updateValue(keys = this._allKeys) {\n let handleCount = Object.keys(this._handles).length;\n if (handleCount === 0) {\n this._value = null;\n } else {\n this._value = [];\n for (let i = 0; i < keys.length; i++) {\n let count = this._keys[keys[i]];\n if (count === handleCount) {\n this._value.push(keys[i]);\n }\n }\n }\n }\n\n clear(handleId) {\n if (typeof(this._handles[handleId]) === \"undefined\") {\n return;\n }\n\n let keys = this._handles[handleId];\n if (!keys) {\n keys = [];\n }\n\n for (let i = 0; i < keys.length; i++) {\n this._keys[keys[i]]--;\n }\n delete this._handles[handleId];\n\n this._updateValue();\n }\n\n get _allKeys() {\n let allKeys = Object.keys(this._keys);\n allKeys.sort(naturalComparator);\n return allKeys;\n }\n}\n","import Var from \"./var\";\n\n// Use a global so that multiple copies of crosstalk.js can be loaded and still\n// have groups behave as singletons across all copies.\nglobal.__crosstalk_groups = global.__crosstalk_groups || {};\nlet groups = global.__crosstalk_groups;\n\nexport default function group(groupName) {\n if (groupName && typeof(groupName) === \"string\") {\n if (!groups.hasOwnProperty(groupName)) {\n groups[groupName] = new Group(groupName);\n }\n return groups[groupName];\n } else if (typeof(groupName) === \"object\" && groupName._vars && groupName.var) {\n // Appears to already be a group object\n return groupName;\n } else if (Array.isArray(groupName) &&\n groupName.length == 1 &&\n typeof(groupName[0]) === \"string\") {\n return group(groupName[0]);\n } else {\n throw new Error(\"Invalid groupName argument\");\n }\n}\n\nclass Group {\n constructor(name) {\n this.name = name;\n this._vars = {};\n }\n\n var(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n if (!this._vars.hasOwnProperty(name))\n this._vars[name] = new Var(this, name);\n return this._vars[name];\n }\n\n has(name) {\n if (!name || typeof(name) !== \"string\") {\n throw new Error(\"Invalid var name\");\n }\n\n return this._vars.hasOwnProperty(name);\n }\n}\n","import group from \"./group\";\nimport { SelectionHandle } from \"./selection\";\nimport { FilterHandle } from \"./filter\";\nimport { bind } from \"./input\";\nimport \"./input_selectize\";\nimport \"./input_checkboxgroup\";\nimport \"./input_slider\";\n\nconst defaultGroup = group(\"default\");\n\nfunction var_(name) {\n return defaultGroup.var(name);\n}\n\nfunction has(name) {\n return defaultGroup.has(name);\n}\n\nif (global.Shiny) {\n global.Shiny.addCustomMessageHandler(\"update-client-value\", function(message) {\n if (typeof(message.group) === \"string\") {\n group(message.group).var(message.name).set(message.value);\n } else {\n var_(message.name).set(message.value);\n }\n });\n}\n\nconst crosstalk = {\n group: group,\n var: var_,\n has: has,\n SelectionHandle: SelectionHandle,\n FilterHandle: FilterHandle,\n bind: bind\n};\n\n/**\n * @namespace crosstalk\n */\nexport default crosstalk;\nglobal.crosstalk = crosstalk;\n","let $ = global.jQuery;\n\nlet bindings = {};\n\nexport function register(reg) {\n bindings[reg.className] = reg;\n if (global.document && global.document.readyState !== \"complete\") {\n $(() => {\n bind();\n });\n } else if (global.document) {\n setTimeout(bind, 100);\n }\n}\n\nexport function bind() {\n Object.keys(bindings).forEach(function(className) {\n let binding = bindings[className];\n $(\".\" + binding.className).not(\".crosstalk-input-bound\").each(function(i, el) {\n bindInstance(binding, el);\n });\n });\n}\n\n// Escape jQuery identifier\nfunction $escape(val) {\n return val.replace(/([!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~])/g, \"\\\\$1\");\n}\n\nfunction bindEl(el) {\n let $el = $(el);\n Object.keys(bindings).forEach(function(className) {\n if ($el.hasClass(className) && !$el.hasClass(\"crosstalk-input-bound\")) {\n let binding = bindings[className];\n bindInstance(binding, el);\n }\n });\n}\n\nfunction bindInstance(binding, el) {\n let jsonEl = $(el).find(\"script[type='application/json'][data-for='\" + $escape(el.id) + \"']\");\n let data = JSON.parse(jsonEl[0].innerText);\n\n let instance = binding.factory(el, data);\n $(el).data(\"crosstalk-instance\", instance);\n $(el).addClass(\"crosstalk-input-bound\");\n}\n\nif (global.Shiny) {\n let inputBinding = new global.Shiny.InputBinding();\n let $ = global.jQuery;\n $.extend(inputBinding, {\n find: function(scope) {\n return $(scope).find(\".crosstalk-input\");\n },\n initialize: function(el) {\n if (!$(el).hasClass(\"crosstalk-input-bound\")) {\n bindEl(el);\n }\n },\n getId: function(el) {\n return el.id;\n },\n getValue: function(el) {\n\n },\n setValue: function(el, value) {\n\n },\n receiveMessage: function(el, data) {\n\n },\n subscribe: function(el, callback) {\n $(el).data(\"crosstalk-instance\").resume();\n },\n unsubscribe: function(el) {\n $(el).data(\"crosstalk-instance\").suspend();\n }\n });\n global.Shiny.inputBindings.register(inputBinding, \"crosstalk.inputBinding\");\n}\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-checkboxgroup\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n let $el = $(el);\n $el.on(\"change\", \"input[type='checkbox']\", function() {\n let checked = $el.find(\"input[type='checkbox']:checked\");\n if (checked.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n checked.each(function() {\n data.map[this.value].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport * as util from \"./util\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\n\ninput.register({\n className: \"crosstalk-input-select\",\n\n factory: function(el, data) {\n /*\n * items: {value: [...], label: [...]}\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n\n let first = [{value: \"\", label: \"(All)\"}];\n let items = util.dataframeToD3(data.items);\n let opts = {\n options: first.concat(items),\n valueField: \"value\",\n labelField: \"label\",\n searchField: \"label\"\n };\n\n let select = $(el).find(\"select\")[0];\n\n let selectize = $(select).selectize(opts)[0].selectize;\n\n let ctHandle = new FilterHandle(data.group);\n\n let lastKnownKeys;\n selectize.on(\"change\", function() {\n if (selectize.items.length === 0) {\n lastKnownKeys = null;\n ctHandle.clear();\n } else {\n let keys = {};\n selectize.items.forEach(function(group) {\n data.map[group].forEach(function(key) {\n keys[key] = true;\n });\n });\n let keyArray = Object.keys(keys);\n keyArray.sort();\n lastKnownKeys = keyArray;\n ctHandle.set(keyArray);\n }\n });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n","import * as input from \"./input\";\nimport { FilterHandle } from \"./filter\";\n\nlet $ = global.jQuery;\nlet strftime = global.strftime;\n\ninput.register({\n className: \"crosstalk-input-slider\",\n\n factory: function(el, data) {\n /*\n * map: {\"groupA\": [\"keyA\", \"keyB\", ...], ...}\n * group: \"ct-groupname\"\n */\n let ctHandle = new FilterHandle(data.group);\n\n let opts = {};\n let $el = $(el).find(\"input\");\n let dataType = $el.data(\"data-type\");\n let timeFormat = $el.data(\"time-format\");\n let round = $el.data(\"round\");\n let timeFormatter;\n\n // Set up formatting functions\n if (dataType === \"date\") {\n timeFormatter = strftime.utc();\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n\n } else if (dataType === \"datetime\") {\n let timezone = $el.data(\"timezone\");\n if (timezone)\n timeFormatter = strftime.timezone(timezone);\n else\n timeFormatter = strftime;\n\n opts.prettify = function(num) {\n return timeFormatter(timeFormat, new Date(num));\n };\n } else if (dataType === \"number\") {\n if (typeof round !== \"undefined\")\n opts.prettify = function(num) {\n let factor = Math.pow(10, round);\n return Math.round(num * factor) / factor;\n };\n }\n\n $el.ionRangeSlider(opts);\n\n function getValue() {\n let result = $el.data(\"ionRangeSlider\").result;\n\n // Function for converting numeric value from slider to appropriate type.\n let convert;\n let dataType = $el.data(\"data-type\");\n if (dataType === \"date\") {\n convert = function(val) {\n return formatDateUTC(new Date(+val));\n };\n } else if (dataType === \"datetime\") {\n convert = function(val) {\n // Convert ms to s\n return +val / 1000;\n };\n } else {\n convert = function(val) { return +val; };\n }\n\n if ($el.data(\"ionRangeSlider\").options.type === \"double\") {\n return [convert(result.from), convert(result.to)];\n } else {\n return convert(result.from);\n }\n }\n\n let lastKnownKeys = null;\n\n $el.on(\"change.crosstalkSliderInput\", function(event) {\n if (!$el.data(\"updating\") && !$el.data(\"animating\")) {\n let [from, to] = getValue();\n let keys = [];\n for (let i = 0; i < data.values.length; i++) {\n let val = data.values[i];\n if (val >= from && val <= to) {\n keys.push(data.keys[i]);\n }\n }\n keys.sort();\n ctHandle.set(keys);\n lastKnownKeys = keys;\n }\n });\n\n\n // let $el = $(el);\n // $el.on(\"change\", \"input[type=\"checkbox\"]\", function() {\n // let checked = $el.find(\"input[type=\"checkbox\"]:checked\");\n // if (checked.length === 0) {\n // ctHandle.clear();\n // } else {\n // let keys = {};\n // checked.each(function() {\n // data.map[this.value].forEach(function(key) {\n // keys[key] = true;\n // });\n // });\n // let keyArray = Object.keys(keys);\n // keyArray.sort();\n // ctHandle.set(keyArray);\n // }\n // });\n\n return {\n suspend: function() {\n ctHandle.clear();\n },\n resume: function() {\n if (lastKnownKeys)\n ctHandle.set(lastKnownKeys);\n }\n };\n }\n});\n\n\n// Convert a number to a string with leading zeros\nfunction padZeros(n, digits) {\n let str = n.toString();\n while (str.length < digits)\n str = \"0\" + str;\n return str;\n}\n\n// Given a Date object, return a string in yyyy-mm-dd format, using the\n// UTC date. This may be a day off from the date in the local time zone.\nfunction formatDateUTC(date) {\n if (date instanceof Date) {\n return date.getUTCFullYear() + \"-\" +\n padZeros(date.getUTCMonth()+1, 2) + \"-\" +\n padZeros(date.getUTCDate(), 2);\n\n } else {\n return null;\n }\n}\n","import Events from \"./events\";\nimport grp from \"./group\";\nimport * as util from \"./util\";\n\n/**\n * Use this class to read and write (and listen for changes to) the selection\n * for a Crosstalk group. This is intended to be used for linked brushing.\n *\n * If two (or more) `SelectionHandle` instances in the same webpage share the\n * same group name, they will share the same state. Setting the selection using\n * one `SelectionHandle` instance will result in the `value` property instantly\n * changing across the others, and `\"change\"` event listeners on all instances\n * (including the one that initiated the sending) will fire.\n *\n * @param {string} [group] - The name of the Crosstalk group, or if none,\n * null or undefined (or any other falsy value). This can be changed later\n * via the [SelectionHandle#setGroup](#setGroup) method.\n * @param {Object} [extraInfo] - An object whose properties will be copied to\n * the event object whenever an event is emitted.\n */\nexport class SelectionHandle {\n\n constructor(group = null, extraInfo = null) {\n this._eventRelay = new Events();\n this._emitter = new util.SubscriptionTracker(this._eventRelay);\n\n // Name of the group we're currently tracking, if any. Can change over time.\n this._group = null;\n // The Var we're currently tracking, if any. Can change over time.\n this._var = null;\n // The event handler subscription we currently have on var.on(\"change\").\n this._varOnChangeSub = null;\n\n this._extraInfo = util.extend({ sender: this }, extraInfo);\n\n this.setGroup(group);\n }\n\n /**\n * Changes the Crosstalk group membership of this SelectionHandle. The group\n * being switched away from (if any) will not have its selection value\n * modified as a result of calling `setGroup`, even if this handle was the\n * most recent handle to set the selection of the group.\n *\n * The group being switched to (if any) will also not have its selection value\n * modified as a result of calling `setGroup`. If you want to set the\n * selection value of the new group, call `set` explicitly.\n *\n * @param {string} group - The name of the Crosstalk group, or null (or\n * undefined) to clear the group.\n */\n setGroup(group) {\n // If group is unchanged, do nothing\n if (this._group === group)\n return;\n // Treat null, undefined, and other falsy values the same\n if (!this._group && !group)\n return;\n\n if (this._var) {\n this._var.off(\"change\", this._varOnChangeSub);\n this._var = null;\n this._varOnChangeSub = null;\n }\n\n this._group = group;\n\n if (group) {\n this._var = grp(group).var(\"selection\");\n let sub = this._var.on(\"change\", (e) => {\n this._eventRelay.trigger(\"change\", e, this);\n });\n this._varOnChangeSub = sub;\n }\n }\n\n /**\n * Retrieves the current selection for the group represented by this\n * `SelectionHandle`.\n *\n * - If no selection is active, then this value will be falsy.\n * - If a selection is active, but no data points are selected, then this\n * value will be an empty array.\n * - If a selection is active, and data points are selected, then the keys\n * of the selected data points will be present in the array.\n */\n get value() {\n return this._var ? this._var.get() : null;\n }\n\n /**\n * Combines the given `extraInfo` (if any) with the handle's default\n * `_extraInfo` (if any).\n * @private\n */\n _mergeExtraInfo(extraInfo) {\n // Important incidental effect: shallow clone is returned\n return util.extend({},\n this._extraInfo ? this._extraInfo : null,\n extraInfo ? extraInfo : null);\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {string[]} selectedKeys - Falsy, empty array, or array of keys (see\n * {@link SelectionHandle#value}).\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any options that were\n * passed into the `SelectionHandle` constructor).\n */\n set(selectedKeys, extraInfo) {\n if (this._var)\n this._var.set(selectedKeys, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Overwrites the current selection for the group, and raises the `\"change\"`\n * event among all of the group's '`SelectionHandle` instances (including\n * this one).\n *\n * @fires SelectionHandle#change\n * @param {Object} [extraInfo] - Extra properties to be included on the event\n * object that's passed to listeners (in addition to any that were passed\n * into the `SelectionHandle` constructor).\n */\n clear(extraInfo) {\n if (this._var)\n this.set(void 0, this._mergeExtraInfo(extraInfo));\n }\n\n /**\n * Subscribes to events on this `SelectionHandle`.\n *\n * @param {string} eventType - Indicates the type of events to listen to.\n * Currently, only `\"change\"` is supported.\n * @param {SelectionHandle~listener} listener - The callback function that\n * will be invoked when the event occurs.\n * @return {string} - A token to pass to {@link SelectionHandle#off} to cancel\n * this subscription.\n */\n on(eventType, listener) {\n return this._emitter.on(eventType, listener);\n }\n\n /**\n * Cancels event subscriptions created by {@link SelectionHandle#on}.\n *\n * @param {string} eventType - The type of event to unsubscribe.\n * @param {string|SelectionHandle~listener} listener - Either the callback\n * function previously passed into {@link SelectionHandle#on}, or the\n * string that was returned from {@link SelectionHandle#on}.\n */\n off(eventType, listener) {\n return this._emitter.off(eventType, listener);\n }\n\n /**\n * Shuts down the `SelectionHandle` object.\n *\n * Removes all event listeners that were added through this handle.\n */\n close() {\n this._emitter.removeAllListeners();\n this.setGroup(null);\n }\n}\n\n/**\n * @callback SelectionHandle~listener\n * @param {Object} event - An object containing details of the event. For\n * `\"change\"` events, this includes the properties `value` (the new\n * value of the selection, or `undefined` if no selection is active),\n * `oldValue` (the previous value of the selection), and `sender` (the\n * `SelectionHandle` instance that made the change).\n */\n\n/**\n * @event SelectionHandle#change\n * @type {object}\n * @property {object} value - The new value of the selection, or `undefined`\n * if no selection is active.\n * @property {object} oldValue - The previous value of the selection.\n * @property {SelectionHandle} sender - The `SelectionHandle` instance that\n * changed the value.\n */\n","export function extend(target, ...sources) {\n for (let i = 0; i < sources.length; i++) {\n let src = sources[i];\n if (typeof(src) === \"undefined\" || src === null)\n continue;\n\n for (let key in src) {\n if (src.hasOwnProperty(key)) {\n target[key] = src[key];\n }\n }\n }\n return target;\n}\n\nexport function checkSorted(list) {\n for (let i = 1; i < list.length; i++) {\n if (list[i] <= list[i-1]) {\n throw new Error(\"List is not sorted or contains duplicate\");\n }\n }\n}\n\nexport function diffSortedLists(a, b) {\n let i_a = 0;\n let i_b = 0;\n\n if (!a) a = [];\n if (!b) b = [];\n\n let a_only = [];\n let b_only = [];\n\n checkSorted(a);\n checkSorted(b);\n\n while (i_a < a.length && i_b < b.length) {\n if (a[i_a] === b[i_b]) {\n i_a++;\n i_b++;\n } else if (a[i_a] < b[i_b]) {\n a_only.push(a[i_a++]);\n } else {\n b_only.push(b[i_b++]);\n }\n }\n\n if (i_a < a.length)\n a_only = a_only.concat(a.slice(i_a));\n if (i_b < b.length)\n b_only = b_only.concat(b.slice(i_b));\n return {\n removed: a_only,\n added: b_only\n };\n}\n\n// Convert from wide: { colA: [1,2,3], colB: [4,5,6], ... }\n// to long: [ {colA: 1, colB: 4}, {colA: 2, colB: 5}, ... ]\nexport function dataframeToD3(df) {\n let names = [];\n let length;\n for (let name in df) {\n if (df.hasOwnProperty(name))\n names.push(name);\n if (typeof(df[name]) !== \"object\" || typeof(df[name].length) === \"undefined\") {\n throw new Error(\"All fields must be arrays\");\n } else if (typeof(length) !== \"undefined\" && length !== df[name].length) {\n throw new Error(\"All fields must be arrays of the same length\");\n }\n length = df[name].length;\n }\n let results = [];\n let item;\n for (let row = 0; row < length; row++) {\n item = {};\n for (let col = 0; col < names.length; col++) {\n item[names[col]] = df[names[col]][row];\n }\n results.push(item);\n }\n return results;\n}\n\n/**\n * Keeps track of all event listener additions/removals and lets all active\n * listeners be removed with a single operation.\n *\n * @private\n */\nexport class SubscriptionTracker {\n constructor(emitter) {\n this._emitter = emitter;\n this._subs = {};\n }\n\n on(eventType, listener) {\n let sub = this._emitter.on(eventType, listener);\n this._subs[sub] = eventType;\n return sub;\n }\n\n off(eventType, listener) {\n let sub = this._emitter.off(eventType, listener);\n if (sub) {\n delete this._subs[sub];\n }\n return sub;\n }\n\n removeAllListeners() {\n let current_subs = this._subs;\n this._subs = {};\n Object.keys(current_subs).forEach((sub) => {\n this._emitter.off(current_subs[sub], sub);\n });\n }\n}\n","import Events from \"./events\";\n\nexport default class Var {\n constructor(group, name, /*optional*/ value) {\n this._group = group;\n this._name = name;\n this._value = value;\n this._events = new Events();\n }\n\n get() {\n return this._value;\n }\n\n set(value, /*optional*/ event) {\n if (this._value === value) {\n // Do nothing; the value hasn't changed\n return;\n }\n let oldValue = this._value;\n this._value = value;\n // Alert JavaScript listeners that the value has changed\n let evt = {};\n if (event && typeof(event) === \"object\") {\n for (let k in event) {\n if (event.hasOwnProperty(k))\n evt[k] = event[k];\n }\n }\n evt.oldValue = oldValue;\n evt.value = value;\n this._events.trigger(\"change\", evt, this);\n\n // TODO: Make this extensible, to let arbitrary back-ends know that\n // something has changed\n if (global.Shiny && global.Shiny.onInputChange) {\n global.Shiny.onInputChange(\n \".clientValue-\" +\n (this._group.name !== null ? this._group.name + \"-\" : \"\") +\n this._name,\n typeof(value) === \"undefined\" ? null : value\n );\n }\n }\n\n on(eventType, listener) {\n return this._events.on(eventType, listener);\n }\n\n off(eventType, listener) {\n return this._events.off(eventType, listener);\n }\n}\n"]} \ No newline at end of file diff --git a/site_libs/crosstalk-1.2.1/scss/crosstalk.scss b/site_libs/crosstalk-1.2.1/scss/crosstalk.scss deleted file mode 100644 index 3566561..0000000 --- a/site_libs/crosstalk-1.2.1/scss/crosstalk.scss +++ /dev/null @@ -1,75 +0,0 @@ -/* Adjust margins outwards, so column contents line up with the edges of the - parent of container-fluid. */ -.container-fluid.crosstalk-bscols { - margin-left: -30px; - margin-right: -30px; - white-space: normal; -} - -/* But don't adjust the margins outwards if we're directly under the body, - i.e. we were the top-level of something at the console. */ -body > .container-fluid.crosstalk-bscols { - margin-left: auto; - margin-right: auto; -} - -.crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { - display: inline-block; - padding-right: 12px; - vertical-align: top; -} - -@media only screen and (max-width:480px) { - .crosstalk-input-checkboxgroup .crosstalk-options-group .crosstalk-options-column { - display: block; - padding-right: inherit; - } -} - -/* Relevant BS3 styles to make filter_checkbox() look reasonable without Bootstrap */ -.crosstalk-input { - margin-bottom: 15px; /* a la .form-group */ - .control-label { - margin-bottom: 0; - vertical-align: middle; - } - input[type="checkbox"] { - margin: 4px 0 0; - margin-top: 1px; - line-height: normal; - } - .checkbox { - position: relative; - display: block; - margin-top: 10px; - margin-bottom: 10px; - } - .checkbox > label{ - padding-left: 20px; - margin-bottom: 0; - font-weight: 400; - cursor: pointer; - } - .checkbox input[type="checkbox"], - .checkbox-inline input[type="checkbox"] { - position: absolute; - margin-top: 2px; - margin-left: -20px; - } - .checkbox + .checkbox { - margin-top: -5px; - } - .checkbox-inline { - position: relative; - display: inline-block; - padding-left: 20px; - margin-bottom: 0; - font-weight: 400; - vertical-align: middle; - cursor: pointer; - } - .checkbox-inline + .checkbox-inline { - margin-top: 0; - margin-left: 10px; - } -} diff --git a/site_libs/htmltools-fill-0.5.8.1/fill.css b/site_libs/htmltools-fill-0.5.8.1/fill.css deleted file mode 100644 index 841ea9d..0000000 --- a/site_libs/htmltools-fill-0.5.8.1/fill.css +++ /dev/null @@ -1,21 +0,0 @@ -@layer htmltools { - .html-fill-container { - display: flex; - flex-direction: column; - /* Prevent the container from expanding vertically or horizontally beyond its - parent's constraints. */ - min-height: 0; - min-width: 0; - } - .html-fill-container > .html-fill-item { - /* Fill items can grow and shrink freely within - available vertical space in fillable container */ - flex: 1 1 auto; - min-height: 0; - min-width: 0; - } - .html-fill-container > :not(.html-fill-item) { - /* Prevent shrinking or growing of non-fill items */ - flex: 0 0 auto; - } -} diff --git a/site_libs/htmlwidgets-1.6.4/htmlwidgets.js b/site_libs/htmlwidgets-1.6.4/htmlwidgets.js deleted file mode 100644 index 1067d02..0000000 --- a/site_libs/htmlwidgets-1.6.4/htmlwidgets.js +++ /dev/null @@ -1,901 +0,0 @@ -(function() { - // If window.HTMLWidgets is already defined, then use it; otherwise create a - // new object. This allows preceding code to set options that affect the - // initialization process (though none currently exist). - window.HTMLWidgets = window.HTMLWidgets || {}; - - // See if we're running in a viewer pane. If not, we're in a web browser. - var viewerMode = window.HTMLWidgets.viewerMode = - /\bviewer_pane=1\b/.test(window.location); - - // See if we're running in Shiny mode. If not, it's a static document. - // Note that static widgets can appear in both Shiny and static modes, but - // obviously, Shiny widgets can only appear in Shiny apps/documents. - var shinyMode = window.HTMLWidgets.shinyMode = - typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings; - - // We can't count on jQuery being available, so we implement our own - // version if necessary. - function querySelectorAll(scope, selector) { - if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) { - return scope.find(selector); - } - if (scope.querySelectorAll) { - return scope.querySelectorAll(selector); - } - } - - function asArray(value) { - if (value === null) - return []; - if ($.isArray(value)) - return value; - return [value]; - } - - // Implement jQuery's extend - function extend(target /*, ... */) { - if (arguments.length == 1) { - return target; - } - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var prop in source) { - if (source.hasOwnProperty(prop)) { - target[prop] = source[prop]; - } - } - } - return target; - } - - // IE8 doesn't support Array.forEach. - function forEach(values, callback, thisArg) { - if (values.forEach) { - values.forEach(callback, thisArg); - } else { - for (var i = 0; i < values.length; i++) { - callback.call(thisArg, values[i], i, values); - } - } - } - - // Replaces the specified method with the return value of funcSource. - // - // Note that funcSource should not BE the new method, it should be a function - // that RETURNS the new method. funcSource receives a single argument that is - // the overridden method, it can be called from the new method. The overridden - // method can be called like a regular function, it has the target permanently - // bound to it so "this" will work correctly. - function overrideMethod(target, methodName, funcSource) { - var superFunc = target[methodName] || function() {}; - var superFuncBound = function() { - return superFunc.apply(target, arguments); - }; - target[methodName] = funcSource(superFuncBound); - } - - // Add a method to delegator that, when invoked, calls - // delegatee.methodName. If there is no such method on - // the delegatee, but there was one on delegator before - // delegateMethod was called, then the original version - // is invoked instead. - // For example: - // - // var a = { - // method1: function() { console.log('a1'); } - // method2: function() { console.log('a2'); } - // }; - // var b = { - // method1: function() { console.log('b1'); } - // }; - // delegateMethod(a, b, "method1"); - // delegateMethod(a, b, "method2"); - // a.method1(); - // a.method2(); - // - // The output would be "b1", "a2". - function delegateMethod(delegator, delegatee, methodName) { - var inherited = delegator[methodName]; - delegator[methodName] = function() { - var target = delegatee; - var method = delegatee[methodName]; - - // The method doesn't exist on the delegatee. Instead, - // call the method on the delegator, if it exists. - if (!method) { - target = delegator; - method = inherited; - } - - if (method) { - return method.apply(target, arguments); - } - }; - } - - // Implement a vague facsimilie of jQuery's data method - function elementData(el, name, value) { - if (arguments.length == 2) { - return el["htmlwidget_data_" + name]; - } else if (arguments.length == 3) { - el["htmlwidget_data_" + name] = value; - return el; - } else { - throw new Error("Wrong number of arguments for elementData: " + - arguments.length); - } - } - - // http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex - function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - } - - function hasClass(el, className) { - var re = new RegExp("\\b" + escapeRegExp(className) + "\\b"); - return re.test(el.className); - } - - // elements - array (or array-like object) of HTML elements - // className - class name to test for - // include - if true, only return elements with given className; - // if false, only return elements *without* given className - function filterByClass(elements, className, include) { - var results = []; - for (var i = 0; i < elements.length; i++) { - if (hasClass(elements[i], className) == include) - results.push(elements[i]); - } - return results; - } - - function on(obj, eventName, func) { - if (obj.addEventListener) { - obj.addEventListener(eventName, func, false); - } else if (obj.attachEvent) { - obj.attachEvent(eventName, func); - } - } - - function off(obj, eventName, func) { - if (obj.removeEventListener) - obj.removeEventListener(eventName, func, false); - else if (obj.detachEvent) { - obj.detachEvent(eventName, func); - } - } - - // Translate array of values to top/right/bottom/left, as usual with - // the "padding" CSS property - // https://developer.mozilla.org/en-US/docs/Web/CSS/padding - function unpackPadding(value) { - if (typeof(value) === "number") - value = [value]; - if (value.length === 1) { - return {top: value[0], right: value[0], bottom: value[0], left: value[0]}; - } - if (value.length === 2) { - return {top: value[0], right: value[1], bottom: value[0], left: value[1]}; - } - if (value.length === 3) { - return {top: value[0], right: value[1], bottom: value[2], left: value[1]}; - } - if (value.length === 4) { - return {top: value[0], right: value[1], bottom: value[2], left: value[3]}; - } - } - - // Convert an unpacked padding object to a CSS value - function paddingToCss(paddingObj) { - return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px"; - } - - // Makes a number suitable for CSS - function px(x) { - if (typeof(x) === "number") - return x + "px"; - else - return x; - } - - // Retrieves runtime widget sizing information for an element. - // The return value is either null, or an object with fill, padding, - // defaultWidth, defaultHeight fields. - function sizingPolicy(el) { - var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']"); - if (!sizingEl) - return null; - var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}"); - if (viewerMode) { - return sp.viewer; - } else { - return sp.browser; - } - } - - // @param tasks Array of strings (or falsy value, in which case no-op). - // Each element must be a valid JavaScript expression that yields a - // function. Or, can be an array of objects with "code" and "data" - // properties; in this case, the "code" property should be a string - // of JS that's an expr that yields a function, and "data" should be - // an object that will be added as an additional argument when that - // function is called. - // @param target The object that will be "this" for each function - // execution. - // @param args Array of arguments to be passed to the functions. (The - // same arguments will be passed to all functions.) - function evalAndRun(tasks, target, args) { - if (tasks) { - forEach(tasks, function(task) { - var theseArgs = args; - if (typeof(task) === "object") { - theseArgs = theseArgs.concat([task.data]); - task = task.code; - } - var taskFunc = tryEval(task); - if (typeof(taskFunc) !== "function") { - throw new Error("Task must be a function! Source:\n" + task); - } - taskFunc.apply(target, theseArgs); - }); - } - } - - // Attempt eval() both with and without enclosing in parentheses. - // Note that enclosing coerces a function declaration into - // an expression that eval() can parse - // (otherwise, a SyntaxError is thrown) - function tryEval(code) { - var result = null; - try { - result = eval("(" + code + ")"); - } catch(error) { - if (!(error instanceof SyntaxError)) { - throw error; - } - try { - result = eval(code); - } catch(e) { - if (e instanceof SyntaxError) { - throw error; - } else { - throw e; - } - } - } - return result; - } - - function initSizing(el) { - var sizing = sizingPolicy(el); - if (!sizing) - return; - - var cel = document.getElementById("htmlwidget_container"); - if (!cel) - return; - - if (typeof(sizing.padding) !== "undefined") { - document.body.style.margin = "0"; - document.body.style.padding = paddingToCss(unpackPadding(sizing.padding)); - } - - if (sizing.fill) { - document.body.style.overflow = "hidden"; - document.body.style.width = "100%"; - document.body.style.height = "100%"; - document.documentElement.style.width = "100%"; - document.documentElement.style.height = "100%"; - cel.style.position = "absolute"; - var pad = unpackPadding(sizing.padding); - cel.style.top = pad.top + "px"; - cel.style.right = pad.right + "px"; - cel.style.bottom = pad.bottom + "px"; - cel.style.left = pad.left + "px"; - el.style.width = "100%"; - el.style.height = "100%"; - - return { - getWidth: function() { return cel.getBoundingClientRect().width; }, - getHeight: function() { return cel.getBoundingClientRect().height; } - }; - - } else { - el.style.width = px(sizing.width); - el.style.height = px(sizing.height); - - return { - getWidth: function() { return cel.getBoundingClientRect().width; }, - getHeight: function() { return cel.getBoundingClientRect().height; } - }; - } - } - - // Default implementations for methods - var defaults = { - find: function(scope) { - return querySelectorAll(scope, "." + this.name); - }, - renderError: function(el, err) { - var $el = $(el); - - this.clearError(el); - - // Add all these error classes, as Shiny does - var errClass = "shiny-output-error"; - if (err.type !== null) { - // use the classes of the error condition as CSS class names - errClass = errClass + " " + $.map(asArray(err.type), function(type) { - return errClass + "-" + type; - }).join(" "); - } - errClass = errClass + " htmlwidgets-error"; - - // Is el inline or block? If inline or inline-block, just display:none it - // and add an inline error. - var display = $el.css("display"); - $el.data("restore-display-mode", display); - - if (display === "inline" || display === "inline-block") { - $el.hide(); - if (err.message !== "") { - var errorSpan = $("").addClass(errClass); - errorSpan.text(err.message); - $el.after(errorSpan); - } - } else if (display === "block") { - // If block, add an error just after the el, set visibility:none on the - // el, and position the error to be on top of the el. - // Mark it with a unique ID and CSS class so we can remove it later. - $el.css("visibility", "hidden"); - if (err.message !== "") { - var errorDiv = $("
    ").addClass(errClass).css("position", "absolute") - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - // setting width can push out the page size, forcing otherwise - // unnecessary scrollbars to appear and making it impossible for - // the element to shrink; so use max-width instead - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - errorDiv.text(err.message); - $el.after(errorDiv); - - // Really dumb way to keep the size/position of the error in sync with - // the parent element as the window is resized or whatever. - var intId = setInterval(function() { - if (!errorDiv[0].parentElement) { - clearInterval(intId); - return; - } - errorDiv - .css("top", el.offsetTop) - .css("left", el.offsetLeft) - .css("maxWidth", el.offsetWidth) - .css("height", el.offsetHeight); - }, 500); - } - } - }, - clearError: function(el) { - var $el = $(el); - var display = $el.data("restore-display-mode"); - $el.data("restore-display-mode", null); - - if (display === "inline" || display === "inline-block") { - if (display) - $el.css("display", display); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } else if (display === "block"){ - $el.css("visibility", "inherit"); - $(el.nextSibling).filter(".htmlwidgets-error").remove(); - } - }, - sizing: {} - }; - - // Called by widget bindings to register a new type of widget. The definition - // object can contain the following properties: - // - name (required) - A string indicating the binding name, which will be - // used by default as the CSS classname to look for. - // - initialize (optional) - A function(el) that will be called once per - // widget element; if a value is returned, it will be passed as the third - // value to renderValue. - // - renderValue (required) - A function(el, data, initValue) that will be - // called with data. Static contexts will cause this to be called once per - // element; Shiny apps will cause this to be called multiple times per - // element, as the data changes. - window.HTMLWidgets.widget = function(definition) { - if (!definition.name) { - throw new Error("Widget must have a name"); - } - if (!definition.type) { - throw new Error("Widget must have a type"); - } - // Currently we only support output widgets - if (definition.type !== "output") { - throw new Error("Unrecognized widget type '" + definition.type + "'"); - } - // TODO: Verify that .name is a valid CSS classname - - // Support new-style instance-bound definitions. Old-style class-bound - // definitions have one widget "object" per widget per type/class of - // widget; the renderValue and resize methods on such widget objects - // take el and instance arguments, because the widget object can't - // store them. New-style instance-bound definitions have one widget - // object per widget instance; the definition that's passed in doesn't - // provide renderValue or resize methods at all, just the single method - // factory(el, width, height) - // which returns an object that has renderValue(x) and resize(w, h). - // This enables a far more natural programming style for the widget - // author, who can store per-instance state using either OO-style - // instance fields or functional-style closure variables (I guess this - // is in contrast to what can only be called C-style pseudo-OO which is - // what we required before). - if (definition.factory) { - definition = createLegacyDefinitionAdapter(definition); - } - - if (!definition.renderValue) { - throw new Error("Widget must have a renderValue function"); - } - - // For static rendering (non-Shiny), use a simple widget registration - // scheme. We also use this scheme for Shiny apps/documents that also - // contain static widgets. - window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || []; - // Merge defaults into the definition; don't mutate the original definition. - var staticBinding = extend({}, defaults, definition); - overrideMethod(staticBinding, "find", function(superfunc) { - return function(scope) { - var results = superfunc(scope); - // Filter out Shiny outputs, we only want the static kind - return filterByClass(results, "html-widget-output", false); - }; - }); - window.HTMLWidgets.widgets.push(staticBinding); - - if (shinyMode) { - // Shiny is running. Register the definition with an output binding. - // The definition itself will not be the output binding, instead - // we will make an output binding object that delegates to the - // definition. This is because we foolishly used the same method - // name (renderValue) for htmlwidgets definition and Shiny bindings - // but they actually have quite different semantics (the Shiny - // bindings receive data that includes lots of metadata that it - // strips off before calling htmlwidgets renderValue). We can't - // just ignore the difference because in some widgets it's helpful - // to call this.renderValue() from inside of resize(), and if - // we're not delegating, then that call will go to the Shiny - // version instead of the htmlwidgets version. - - // Merge defaults with definition, without mutating either. - var bindingDef = extend({}, defaults, definition); - - // This object will be our actual Shiny binding. - var shinyBinding = new Shiny.OutputBinding(); - - // With a few exceptions, we'll want to simply use the bindingDef's - // version of methods if they are available, otherwise fall back to - // Shiny's defaults. NOTE: If Shiny's output bindings gain additional - // methods in the future, and we want them to be overrideable by - // HTMLWidget binding definitions, then we'll need to add them to this - // list. - delegateMethod(shinyBinding, bindingDef, "getId"); - delegateMethod(shinyBinding, bindingDef, "onValueChange"); - delegateMethod(shinyBinding, bindingDef, "onValueError"); - delegateMethod(shinyBinding, bindingDef, "renderError"); - delegateMethod(shinyBinding, bindingDef, "clearError"); - delegateMethod(shinyBinding, bindingDef, "showProgress"); - - // The find, renderValue, and resize are handled differently, because we - // want to actually decorate the behavior of the bindingDef methods. - - shinyBinding.find = function(scope) { - var results = bindingDef.find(scope); - - // Only return elements that are Shiny outputs, not static ones - var dynamicResults = results.filter(".html-widget-output"); - - // It's possible that whatever caused Shiny to think there might be - // new dynamic outputs, also caused there to be new static outputs. - // Since there might be lots of different htmlwidgets bindings, we - // schedule execution for later--no need to staticRender multiple - // times. - if (results.length !== dynamicResults.length) - scheduleStaticRender(); - - return dynamicResults; - }; - - // Wrap renderValue to handle initialization, which unfortunately isn't - // supported natively by Shiny at the time of this writing. - - shinyBinding.renderValue = function(el, data) { - Shiny.renderDependencies(data.deps); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var i = 0; data.evals && i < data.evals.length; i++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]); - } - if (!bindingDef.renderOnNullValue) { - if (data.x === null) { - el.style.visibility = "hidden"; - return; - } else { - el.style.visibility = "inherit"; - } - } - if (!elementData(el, "initialized")) { - initSizing(el); - - elementData(el, "initialized", true); - if (bindingDef.initialize) { - var rect = el.getBoundingClientRect(); - var result = bindingDef.initialize(el, rect.width, rect.height); - elementData(el, "init_result", result); - } - } - bindingDef.renderValue(el, data.x, elementData(el, "init_result")); - evalAndRun(data.jsHooks.render, elementData(el, "init_result"), [el, data.x]); - }; - - // Only override resize if bindingDef implements it - if (bindingDef.resize) { - shinyBinding.resize = function(el, width, height) { - // Shiny can call resize before initialize/renderValue have been - // called, which doesn't make sense for widgets. - if (elementData(el, "initialized")) { - bindingDef.resize(el, width, height, elementData(el, "init_result")); - } - }; - } - - Shiny.outputBindings.register(shinyBinding, bindingDef.name); - } - }; - - var scheduleStaticRenderTimerId = null; - function scheduleStaticRender() { - if (!scheduleStaticRenderTimerId) { - scheduleStaticRenderTimerId = setTimeout(function() { - scheduleStaticRenderTimerId = null; - window.HTMLWidgets.staticRender(); - }, 1); - } - } - - // Render static widgets after the document finishes loading - // Statically render all elements that are of this widget's class - window.HTMLWidgets.staticRender = function() { - var bindings = window.HTMLWidgets.widgets || []; - forEach(bindings, function(binding) { - var matches = binding.find(document.documentElement); - forEach(matches, function(el) { - var sizeObj = initSizing(el, binding); - - var getSize = function(el) { - if (sizeObj) { - return {w: sizeObj.getWidth(), h: sizeObj.getHeight()} - } else { - var rect = el.getBoundingClientRect(); - return {w: rect.width, h: rect.height} - } - }; - - if (hasClass(el, "html-widget-static-bound")) - return; - el.className = el.className + " html-widget-static-bound"; - - var initResult; - if (binding.initialize) { - var size = getSize(el); - initResult = binding.initialize(el, size.w, size.h); - elementData(el, "init_result", initResult); - } - - if (binding.resize) { - var lastSize = getSize(el); - var resizeHandler = function(e) { - var size = getSize(el); - if (size.w === 0 && size.h === 0) - return; - if (size.w === lastSize.w && size.h === lastSize.h) - return; - lastSize = size; - binding.resize(el, size.w, size.h, initResult); - }; - - on(window, "resize", resizeHandler); - - // This is needed for cases where we're running in a Shiny - // app, but the widget itself is not a Shiny output, but - // rather a simple static widget. One example of this is - // an rmarkdown document that has runtime:shiny and widget - // that isn't in a render function. Shiny only knows to - // call resize handlers for Shiny outputs, not for static - // widgets, so we do it ourselves. - if (window.jQuery) { - window.jQuery(document).on( - "shown.htmlwidgets shown.bs.tab.htmlwidgets shown.bs.collapse.htmlwidgets", - resizeHandler - ); - window.jQuery(document).on( - "hidden.htmlwidgets hidden.bs.tab.htmlwidgets hidden.bs.collapse.htmlwidgets", - resizeHandler - ); - } - - // This is needed for the specific case of ioslides, which - // flips slides between display:none and display:block. - // Ideally we would not have to have ioslide-specific code - // here, but rather have ioslides raise a generic event, - // but the rmarkdown package just went to CRAN so the - // window to getting that fixed may be long. - if (window.addEventListener) { - // It's OK to limit this to window.addEventListener - // browsers because ioslides itself only supports - // such browsers. - on(document, "slideenter", resizeHandler); - on(document, "slideleave", resizeHandler); - } - } - - var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']"); - if (scriptData) { - var data = JSON.parse(scriptData.textContent || scriptData.text); - // Resolve strings marked as javascript literals to objects - if (!(data.evals instanceof Array)) data.evals = [data.evals]; - for (var k = 0; data.evals && k < data.evals.length; k++) { - window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]); - } - binding.renderValue(el, data.x, initResult); - evalAndRun(data.jsHooks.render, initResult, [el, data.x]); - } - }); - }); - - invokePostRenderHandlers(); - } - - - function has_jQuery3() { - if (!window.jQuery) { - return false; - } - var $version = window.jQuery.fn.jquery; - var $major_version = parseInt($version.split(".")[0]); - return $major_version >= 3; - } - - /* - / Shiny 1.4 bumped jQuery from 1.x to 3.x which means jQuery's - / on-ready handler (i.e., $(fn)) is now asyncronous (i.e., it now - / really means $(setTimeout(fn)). - / https://jquery.com/upgrade-guide/3.0/#breaking-change-document-ready-handlers-are-now-asynchronous - / - / Since Shiny uses $() to schedule initShiny, shiny>=1.4 calls initShiny - / one tick later than it did before, which means staticRender() is - / called renderValue() earlier than (advanced) widget authors might be expecting. - / https://github.com/rstudio/shiny/issues/2630 - / - / For a concrete example, leaflet has some methods (e.g., updateBounds) - / which reference Shiny methods registered in initShiny (e.g., setInputValue). - / Since leaflet is privy to this life-cycle, it knows to use setTimeout() to - / delay execution of those methods (until Shiny methods are ready) - / https://github.com/rstudio/leaflet/blob/18ec981/javascript/src/index.js#L266-L268 - / - / Ideally widget authors wouldn't need to use this setTimeout() hack that - / leaflet uses to call Shiny methods on a staticRender(). In the long run, - / the logic initShiny should be broken up so that method registration happens - / right away, but binding happens later. - */ - function maybeStaticRenderLater() { - if (shinyMode && has_jQuery3()) { - window.jQuery(window.HTMLWidgets.staticRender); - } else { - window.HTMLWidgets.staticRender(); - } - } - - if (document.addEventListener) { - document.addEventListener("DOMContentLoaded", function() { - document.removeEventListener("DOMContentLoaded", arguments.callee, false); - maybeStaticRenderLater(); - }, false); - } else if (document.attachEvent) { - document.attachEvent("onreadystatechange", function() { - if (document.readyState === "complete") { - document.detachEvent("onreadystatechange", arguments.callee); - maybeStaticRenderLater(); - } - }); - } - - - window.HTMLWidgets.getAttachmentUrl = function(depname, key) { - // If no key, default to the first item - if (typeof(key) === "undefined") - key = 1; - - var link = document.getElementById(depname + "-" + key + "-attachment"); - if (!link) { - throw new Error("Attachment " + depname + "/" + key + " not found in document"); - } - return link.getAttribute("href"); - }; - - window.HTMLWidgets.dataframeToD3 = function(df) { - var names = []; - var length; - for (var name in df) { - if (df.hasOwnProperty(name)) - names.push(name); - if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") { - throw new Error("All fields must be arrays"); - } else if (typeof(length) !== "undefined" && length !== df[name].length) { - throw new Error("All fields must be arrays of the same length"); - } - length = df[name].length; - } - var results = []; - var item; - for (var row = 0; row < length; row++) { - item = {}; - for (var col = 0; col < names.length; col++) { - item[names[col]] = df[names[col]][row]; - } - results.push(item); - } - return results; - }; - - window.HTMLWidgets.transposeArray2D = function(array) { - if (array.length === 0) return array; - var newArray = array[0].map(function(col, i) { - return array.map(function(row) { - return row[i] - }) - }); - return newArray; - }; - // Split value at splitChar, but allow splitChar to be escaped - // using escapeChar. Any other characters escaped by escapeChar - // will be included as usual (including escapeChar itself). - function splitWithEscape(value, splitChar, escapeChar) { - var results = []; - var escapeMode = false; - var currentResult = ""; - for (var pos = 0; pos < value.length; pos++) { - if (!escapeMode) { - if (value[pos] === splitChar) { - results.push(currentResult); - currentResult = ""; - } else if (value[pos] === escapeChar) { - escapeMode = true; - } else { - currentResult += value[pos]; - } - } else { - currentResult += value[pos]; - escapeMode = false; - } - } - if (currentResult !== "") { - results.push(currentResult); - } - return results; - } - // Function authored by Yihui/JJ Allaire - window.HTMLWidgets.evaluateStringMember = function(o, member) { - var parts = splitWithEscape(member, '.', '\\'); - for (var i = 0, l = parts.length; i < l; i++) { - var part = parts[i]; - // part may be a character or 'numeric' member name - if (o !== null && typeof o === "object" && part in o) { - if (i == (l - 1)) { // if we are at the end of the line then evalulate - if (typeof o[part] === "string") - o[part] = tryEval(o[part]); - } else { // otherwise continue to next embedded object - o = o[part]; - } - } - } - }; - - // Retrieve the HTMLWidget instance (i.e. the return value of an - // HTMLWidget binding's initialize() or factory() function) - // associated with an element, or null if none. - window.HTMLWidgets.getInstance = function(el) { - return elementData(el, "init_result"); - }; - - // Finds the first element in the scope that matches the selector, - // and returns the HTMLWidget instance (i.e. the return value of - // an HTMLWidget binding's initialize() or factory() function) - // associated with that element, if any. If no element matches the - // selector, or the first matching element has no HTMLWidget - // instance associated with it, then null is returned. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.find = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var el = scope.querySelector(selector); - if (el === null) { - return null; - } else { - return window.HTMLWidgets.getInstance(el); - } - }; - - // Finds all elements in the scope that match the selector, and - // returns the HTMLWidget instances (i.e. the return values of - // an HTMLWidget binding's initialize() or factory() function) - // associated with the elements, in an array. If elements that - // match the selector don't have an associated HTMLWidget - // instance, the returned array will contain nulls. - // - // The scope argument is optional, and defaults to window.document. - window.HTMLWidgets.findAll = function(scope, selector) { - if (arguments.length == 1) { - selector = scope; - scope = document; - } - - var nodes = scope.querySelectorAll(selector); - var results = []; - for (var i = 0; i < nodes.length; i++) { - results.push(window.HTMLWidgets.getInstance(nodes[i])); - } - return results; - }; - - var postRenderHandlers = []; - function invokePostRenderHandlers() { - while (postRenderHandlers.length) { - var handler = postRenderHandlers.shift(); - if (handler) { - handler(); - } - } - } - - // Register the given callback function to be invoked after the - // next time static widgets are rendered. - window.HTMLWidgets.addPostRenderHandler = function(callback) { - postRenderHandlers.push(callback); - }; - - // Takes a new-style instance-bound definition, and returns an - // old-style class-bound definition. This saves us from having - // to rewrite all the logic in this file to accomodate both - // types of definitions. - function createLegacyDefinitionAdapter(defn) { - var result = { - name: defn.name, - type: defn.type, - initialize: function(el, width, height) { - return defn.factory(el, width, height); - }, - renderValue: function(el, x, instance) { - return instance.renderValue(x); - }, - resize: function(el, width, height, instance) { - return instance.resize(width, height); - } - }; - - if (defn.find) - result.find = defn.find; - if (defn.renderError) - result.renderError = defn.renderError; - if (defn.clearError) - result.clearError = defn.clearError; - - return result; - } -})(); diff --git a/site_libs/plotly-binding-4.10.4/plotly.js b/site_libs/plotly-binding-4.10.4/plotly.js deleted file mode 100644 index 7a2a143..0000000 --- a/site_libs/plotly-binding-4.10.4/plotly.js +++ /dev/null @@ -1,941 +0,0 @@ - -HTMLWidgets.widget({ - name: "plotly", - type: "output", - - initialize: function(el, width, height) { - return {}; - }, - - resize: function(el, width, height, instance) { - if (instance.autosize) { - var width = instance.width || width; - var height = instance.height || height; - Plotly.relayout(el.id, {width: width, height: height}); - } - }, - - renderValue: function(el, x, instance) { - - // Plotly.relayout() mutates the plot input object, so make sure to - // keep a reference to the user-supplied width/height *before* - // we call Plotly.plot(); - var lay = x.layout || {}; - instance.width = lay.width; - instance.height = lay.height; - instance.autosize = lay.autosize || true; - - /* - / 'inform the world' about highlighting options this is so other - / crosstalk libraries have a chance to respond to special settings - / such as persistent selection. - / AFAIK, leaflet is the only library with such intergration - / https://github.com/rstudio/leaflet/pull/346/files#diff-ad0c2d51ce5fdf8c90c7395b102f4265R154 - */ - var ctConfig = crosstalk.var('plotlyCrosstalkOpts').set(x.highlight); - - if (typeof(window) !== "undefined") { - // make sure plots don't get created outside the network (for on-prem) - window.PLOTLYENV = window.PLOTLYENV || {}; - window.PLOTLYENV.BASE_URL = x.base_url; - - // Enable persistent selection when shift key is down - // https://stackoverflow.com/questions/1828613/check-if-a-key-is-down - var persistOnShift = function(e) { - if (!e) window.event; - if (e.shiftKey) { - x.highlight.persistent = true; - x.highlight.persistentShift = true; - } else { - x.highlight.persistent = false; - x.highlight.persistentShift = false; - } - }; - - // Only relevant if we haven't forced persistent mode at command line - if (!x.highlight.persistent) { - window.onmousemove = persistOnShift; - } - } - - var graphDiv = document.getElementById(el.id); - - // TODO: move the control panel injection strategy inside here... - HTMLWidgets.addPostRenderHandler(function() { - - // lower the z-index of the modebar to prevent it from highjacking hover - // (TODO: do this via CSS?) - // https://github.com/ropensci/plotly/issues/956 - // https://www.w3schools.com/jsref/prop_style_zindex.asp - var modebars = document.querySelectorAll(".js-plotly-plot .plotly .modebar"); - for (var i = 0; i < modebars.length; i++) { - modebars[i].style.zIndex = 1; - } - }); - - // inject a "control panel" holding selectize/dynamic color widget(s) - if ((x.selectize || x.highlight.dynamic) && !instance.plotly) { - var flex = document.createElement("div"); - flex.class = "plotly-crosstalk-control-panel"; - flex.style = "display: flex; flex-wrap: wrap"; - - // inject the colourpicker HTML container into the flexbox - if (x.highlight.dynamic) { - var pickerDiv = document.createElement("div"); - - var pickerInput = document.createElement("input"); - pickerInput.id = el.id + "-colourpicker"; - pickerInput.placeholder = "asdasd"; - - var pickerLabel = document.createElement("label"); - pickerLabel.for = pickerInput.id; - pickerLabel.innerHTML = "Brush color  "; - - pickerDiv.appendChild(pickerLabel); - pickerDiv.appendChild(pickerInput); - flex.appendChild(pickerDiv); - } - - // inject selectize HTML containers (one for every crosstalk group) - if (x.selectize) { - var ids = Object.keys(x.selectize); - - for (var i = 0; i < ids.length; i++) { - var container = document.createElement("div"); - container.id = ids[i]; - container.style = "width: 80%; height: 10%"; - container.class = "form-group crosstalk-input-plotly-highlight"; - - var label = document.createElement("label"); - label.for = ids[i]; - label.innerHTML = x.selectize[ids[i]].group; - label.class = "control-label"; - - var selectDiv = document.createElement("div"); - var select = document.createElement("select"); - select.multiple = true; - - selectDiv.appendChild(select); - container.appendChild(label); - container.appendChild(selectDiv); - flex.appendChild(container); - } - } - - // finally, insert the flexbox inside the htmlwidget container, - // but before the plotly graph div - graphDiv.parentElement.insertBefore(flex, graphDiv); - - if (x.highlight.dynamic) { - var picker = $("#" + pickerInput.id); - var colors = x.highlight.color || []; - // TODO: let users specify options? - var opts = { - value: colors[0], - showColour: "both", - palette: "limited", - allowedCols: colors.join(" "), - width: "20%", - height: "10%" - }; - picker.colourpicker({changeDelay: 0}); - picker.colourpicker("settings", opts); - picker.colourpicker("value", opts.value); - // inform crosstalk about a change in the current selection colour - var grps = x.highlight.ctGroups || []; - for (var i = 0; i < grps.length; i++) { - crosstalk.group(grps[i]).var('plotlySelectionColour') - .set(picker.colourpicker('value')); - } - picker.on("change", function() { - for (var i = 0; i < grps.length; i++) { - crosstalk.group(grps[i]).var('plotlySelectionColour') - .set(picker.colourpicker('value')); - } - }); - } - } - - // if no plot exists yet, create one with a particular configuration - if (!instance.plotly) { - - var plot = Plotly.newPlot(graphDiv, x); - instance.plotly = true; - - } else if (x.layout.transition) { - - var plot = Plotly.react(graphDiv, x); - - } else { - - // this is essentially equivalent to Plotly.newPlot(), but avoids creating - // a new webgl context - // https://github.com/plotly/plotly.js/blob/2b24f9def901831e61282076cf3f835598d56f0e/src/plot_api/plot_api.js#L531-L532 - - // TODO: restore crosstalk selections? - Plotly.purge(graphDiv); - // TODO: why is this necessary to get crosstalk working? - graphDiv.data = undefined; - graphDiv.layout = undefined; - var plot = Plotly.newPlot(graphDiv, x); - } - - // Trigger plotly.js calls defined via `plotlyProxy()` - plot.then(function() { - if (HTMLWidgets.shinyMode) { - Shiny.addCustomMessageHandler("plotly-calls", function(msg) { - var gd = document.getElementById(msg.id); - if (!gd) { - throw new Error("Couldn't find plotly graph with id: " + msg.id); - } - // This isn't an official plotly.js method, but it's the only current way to - // change just the configuration of a plot - // https://community.plot.ly/t/update-config-function/9057 - if (msg.method == "reconfig") { - Plotly.react(gd, gd.data, gd.layout, msg.args); - return; - } - if (!Plotly[msg.method]) { - throw new Error("Unknown method " + msg.method); - } - var args = [gd].concat(msg.args); - Plotly[msg.method].apply(null, args); - }); - } - - // plotly's mapbox API doesn't currently support setting bounding boxes - // https://www.mapbox.com/mapbox-gl-js/example/fitbounds/ - // so we do this manually... - // TODO: make sure this triggers on a redraw and relayout as well as on initial draw - var mapboxIDs = graphDiv._fullLayout._subplots.mapbox || []; - for (var i = 0; i < mapboxIDs.length; i++) { - var id = mapboxIDs[i]; - var mapOpts = x.layout[id] || {}; - var args = mapOpts._fitBounds || {}; - if (!args) { - continue; - } - var mapObj = graphDiv._fullLayout[id]._subplot.map; - mapObj.fitBounds(args.bounds, args.options); - } - - }); - - // Attach attributes (e.g., "key", "z") to plotly event data - function eventDataWithKey(eventData) { - if (eventData === undefined || !eventData.hasOwnProperty("points")) { - return null; - } - return eventData.points.map(function(pt) { - var obj = { - curveNumber: pt.curveNumber, - pointNumber: pt.pointNumber, - x: pt.x, - y: pt.y - }; - - // If 'z' is reported with the event data, then use it! - if (pt.hasOwnProperty("z")) { - obj.z = pt.z; - } - - if (pt.hasOwnProperty("customdata")) { - obj.customdata = pt.customdata; - } - - /* - TL;DR: (I think) we have to select the graph div (again) to attach keys... - - Why? Remember that crosstalk will dynamically add/delete traces - (see traceManager.prototype.updateSelection() below) - For this reason, we can't simply grab keys from x.data (like we did previously) - Moreover, we can't use _fullData, since that doesn't include - unofficial attributes. It's true that click/hover events fire with - pt.data, but drag events don't... - */ - var gd = document.getElementById(el.id); - var trace = gd.data[pt.curveNumber]; - - if (!trace._isSimpleKey) { - var attrsToAttach = ["key"]; - } else { - // simple keys fire the whole key - obj.key = trace.key; - var attrsToAttach = []; - } - - for (var i = 0; i < attrsToAttach.length; i++) { - var attr = trace[attrsToAttach[i]]; - if (Array.isArray(attr)) { - if (typeof pt.pointNumber === "number") { - obj[attrsToAttach[i]] = attr[pt.pointNumber]; - } else if (Array.isArray(pt.pointNumber)) { - obj[attrsToAttach[i]] = attr[pt.pointNumber[0]][pt.pointNumber[1]]; - } else if (Array.isArray(pt.pointNumbers)) { - obj[attrsToAttach[i]] = pt.pointNumbers.map(function(idx) { return attr[idx]; }); - } - } - } - return obj; - }); - } - - - var legendEventData = function(d) { - // if legendgroup is not relevant just return the trace - var trace = d.data[d.curveNumber]; - if (!trace.legendgroup) return trace; - - // if legendgroup was specified, return all traces that match the group - var legendgrps = d.data.map(function(trace){ return trace.legendgroup; }); - var traces = []; - for (i = 0; i < legendgrps.length; i++) { - if (legendgrps[i] == trace.legendgroup) { - traces.push(d.data[i]); - } - } - - return traces; - }; - - - // send user input event data to shiny - if (HTMLWidgets.shinyMode && Shiny.setInputValue) { - - // Some events clear other input values - // TODO: always register these? - var eventClearMap = { - plotly_deselect: ["plotly_selected", "plotly_selecting", "plotly_brushed", "plotly_brushing", "plotly_click"], - plotly_unhover: ["plotly_hover"], - plotly_doubleclick: ["plotly_click"] - }; - - Object.keys(eventClearMap).map(function(evt) { - graphDiv.on(evt, function() { - var inputsToClear = eventClearMap[evt]; - inputsToClear.map(function(input) { - Shiny.setInputValue(input + "-" + x.source, null, {priority: "event"}); - }); - }); - }); - - var eventDataFunctionMap = { - plotly_click: eventDataWithKey, - plotly_sunburstclick: eventDataWithKey, - plotly_hover: eventDataWithKey, - plotly_unhover: eventDataWithKey, - // If 'plotly_selected' has already been fired, and you click - // on the plot afterwards, this event fires `undefined`?!? - // That might be considered a plotly.js bug, but it doesn't make - // sense for this input change to occur if `d` is falsy because, - // even in the empty selection case, `d` is truthy (an object), - // and the 'plotly_deselect' event will reset this input - plotly_selected: function(d) { if (d) { return eventDataWithKey(d); } }, - plotly_selecting: function(d) { if (d) { return eventDataWithKey(d); } }, - plotly_brushed: function(d) { - if (d) { return d.range ? d.range : d.lassoPoints; } - }, - plotly_brushing: function(d) { - if (d) { return d.range ? d.range : d.lassoPoints; } - }, - plotly_legendclick: legendEventData, - plotly_legenddoubleclick: legendEventData, - plotly_clickannotation: function(d) { return d.fullAnnotation } - }; - - var registerShinyValue = function(event) { - var eventDataPreProcessor = eventDataFunctionMap[event] || function(d) { return d ? d : el.id }; - // some events are unique to the R package - var plotlyJSevent = (event == "plotly_brushed") ? "plotly_selected" : (event == "plotly_brushing") ? "plotly_selecting" : event; - // register the event - graphDiv.on(plotlyJSevent, function(d) { - Shiny.setInputValue( - event + "-" + x.source, - JSON.stringify(eventDataPreProcessor(d)), - {priority: "event"} - ); - }); - } - - var shinyEvents = x.shinyEvents || []; - shinyEvents.map(registerShinyValue); - } - - // Given an array of {curveNumber: x, pointNumber: y} objects, - // return a hash of { - // set1: {value: [key1, key2, ...], _isSimpleKey: false}, - // set2: {value: [key3, key4, ...], _isSimpleKey: false} - // } - function pointsToKeys(points) { - var keysBySet = {}; - for (var i = 0; i < points.length; i++) { - - var trace = graphDiv.data[points[i].curveNumber]; - if (!trace.key || !trace.set) { - continue; - } - - // set defaults for this keySet - // note that we don't track the nested property (yet) since we always - // emit the union -- http://cpsievert.github.io/talks/20161212b/#21 - keysBySet[trace.set] = keysBySet[trace.set] || { - value: [], - _isSimpleKey: trace._isSimpleKey - }; - - // Use pointNumber by default, but aggregated traces should emit pointNumbers - var ptNum = points[i].pointNumber; - var hasPtNum = typeof ptNum === "number"; - var ptNum = hasPtNum ? ptNum : points[i].pointNumbers; - - // selecting a point of a "simple" trace means: select the - // entire key attached to this trace, which is useful for, - // say clicking on a fitted line to select corresponding observations - var key = trace._isSimpleKey ? trace.key : Array.isArray(ptNum) ? ptNum.map(function(idx) { return trace.key[idx]; }) : trace.key[ptNum]; - // http://stackoverflow.com/questions/10865025/merge-flatten-an-array-of-arrays-in-javascript - var keyFlat = trace._isNestedKey ? [].concat.apply([], key) : key; - - // TODO: better to only add new values? - keysBySet[trace.set].value = keysBySet[trace.set].value.concat(keyFlat); - } - - return keysBySet; - } - - - x.highlight.color = x.highlight.color || []; - // make sure highlight color is an array - if (!Array.isArray(x.highlight.color)) { - x.highlight.color = [x.highlight.color]; - } - - var traceManager = new TraceManager(graphDiv, x.highlight); - - // Gather all *unique* sets. - var allSets = []; - for (var curveIdx = 0; curveIdx < x.data.length; curveIdx++) { - var newSet = x.data[curveIdx].set; - if (newSet) { - if (allSets.indexOf(newSet) === -1) { - allSets.push(newSet); - } - } - } - - // register event listeners for all sets - for (var i = 0; i < allSets.length; i++) { - - var set = allSets[i]; - var selection = new crosstalk.SelectionHandle(set); - var filter = new crosstalk.FilterHandle(set); - - var filterChange = function(e) { - removeBrush(el); - traceManager.updateFilter(set, e.value); - }; - filter.on("change", filterChange); - - - var selectionChange = function(e) { - - // Workaround for 'plotly_selected' now firing previously selected - // points (in addition to new ones) when holding shift key. In our case, - // we just want the new keys - if (x.highlight.on === "plotly_selected" && x.highlight.persistentShift) { - // https://stackoverflow.com/questions/1187518/how-to-get-the-difference-between-two-arrays-in-javascript - Array.prototype.diff = function(a) { - return this.filter(function(i) {return a.indexOf(i) < 0;}); - }; - e.value = e.value.diff(e.oldValue); - } - - // array of "event objects" tracking the selection history - // this is used to avoid adding redundant selections - var selectionHistory = crosstalk.var("plotlySelectionHistory").get() || []; - - // Construct an event object "defining" the current event. - var event = { - receiverID: traceManager.gd.id, - plotlySelectionColour: crosstalk.group(set).var("plotlySelectionColour").get() - }; - event[set] = e.value; - // TODO: is there a smarter way to check object equality? - if (selectionHistory.length > 0) { - var ev = JSON.stringify(event); - for (var i = 0; i < selectionHistory.length; i++) { - var sel = JSON.stringify(selectionHistory[i]); - if (sel == ev) { - return; - } - } - } - - // accumulate history for persistent selection - if (!x.highlight.persistent) { - selectionHistory = [event]; - } else { - selectionHistory.push(event); - } - crosstalk.var("plotlySelectionHistory").set(selectionHistory); - - // do the actual updating of traces, frames, and the selectize widget - traceManager.updateSelection(set, e.value); - // https://github.com/selectize/selectize.js/blob/master/docs/api.md#methods_items - if (x.selectize) { - if (!x.highlight.persistent || e.value === null) { - selectize.clear(true); - } - selectize.addItems(e.value, true); - selectize.close(); - } - } - selection.on("change", selectionChange); - - // Set a crosstalk variable selection value, triggering an update - var turnOn = function(e) { - if (e) { - var selectedKeys = pointsToKeys(e.points); - // Keys are group names, values are array of selected keys from group. - for (var set in selectedKeys) { - if (selectedKeys.hasOwnProperty(set)) { - selection.set(selectedKeys[set].value, {sender: el}); - } - } - } - }; - if (x.highlight.debounce > 0) { - turnOn = debounce(turnOn, x.highlight.debounce); - } - graphDiv.on(x.highlight.on, turnOn); - - graphDiv.on(x.highlight.off, function turnOff(e) { - // remove any visual clues - removeBrush(el); - // remove any selection history - crosstalk.var("plotlySelectionHistory").set(null); - // trigger the actual removal of selection traces - selection.set(null, {sender: el}); - }); - - // register a callback for selectize so that there is bi-directional - // communication between the widget and direct manipulation events - if (x.selectize) { - var selectizeID = Object.keys(x.selectize)[i]; - var options = x.selectize[selectizeID]; - var first = [{value: "", label: "(All)"}]; - var opts = $.extend({ - options: first.concat(options.items), - searchField: "label", - valueField: "value", - labelField: "label", - maxItems: 50 - }, - options - ); - var select = $("#" + selectizeID).find("select")[0]; - var selectize = $(select).selectize(opts)[0].selectize; - // NOTE: this callback is triggered when *directly* altering - // dropdown items - selectize.on("change", function() { - var currentItems = traceManager.groupSelections[set] || []; - if (!x.highlight.persistent) { - removeBrush(el); - for (var i = 0; i < currentItems.length; i++) { - selectize.removeItem(currentItems[i], true); - } - } - var newItems = selectize.items.filter(function(idx) { - return currentItems.indexOf(idx) < 0; - }); - if (newItems.length > 0) { - traceManager.updateSelection(set, newItems); - } else { - // Item has been removed... - // TODO: this logic won't work for dynamically changing palette - traceManager.updateSelection(set, null); - traceManager.updateSelection(set, selectize.items); - } - }); - } - } // end of selectionChange - - } // end of renderValue -}); // end of widget definition - -/** - * @param graphDiv The Plotly graph div - * @param highlight An object with options for updating selection(s) - */ -function TraceManager(graphDiv, highlight) { - // The Plotly graph div - this.gd = graphDiv; - - // Preserve the original data. - // TODO: try using Lib.extendFlat() as done in - // https://github.com/plotly/plotly.js/pull/1136 - this.origData = JSON.parse(JSON.stringify(graphDiv.data)); - - // avoid doing this over and over - this.origOpacity = []; - for (var i = 0; i < this.origData.length; i++) { - this.origOpacity[i] = this.origData[i].opacity === 0 ? 0 : (this.origData[i].opacity || 1); - } - - // key: group name, value: null or array of keys representing the - // most recently received selection for that group. - this.groupSelections = {}; - - // selection parameters (e.g., transient versus persistent selection) - this.highlight = highlight; -} - -TraceManager.prototype.close = function() { - // TODO: Unhook all event handlers -}; - -TraceManager.prototype.updateFilter = function(group, keys) { - - if (typeof(keys) === "undefined" || keys === null) { - - this.gd.data = JSON.parse(JSON.stringify(this.origData)); - - } else { - - var traces = []; - for (var i = 0; i < this.origData.length; i++) { - var trace = this.origData[i]; - if (!trace.key || trace.set !== group) { - continue; - } - var matchFunc = getMatchFunc(trace); - var matches = matchFunc(trace.key, keys); - - if (matches.length > 0) { - if (!trace._isSimpleKey) { - // subsetArrayAttrs doesn't mutate trace (it makes a modified clone) - trace = subsetArrayAttrs(trace, matches); - } - traces.push(trace); - } - } - this.gd.data = traces; - } - - Plotly.redraw(this.gd); - - // NOTE: we purposely do _not_ restore selection(s), since on filter, - // axis likely will update, changing the pixel -> data mapping, leading - // to a likely mismatch in the brush outline and highlighted marks - -}; - -TraceManager.prototype.updateSelection = function(group, keys) { - - if (keys !== null && !Array.isArray(keys)) { - throw new Error("Invalid keys argument; null or array expected"); - } - - // if selection has been cleared, or if this is transient - // selection, delete the "selection traces" - var nNewTraces = this.gd.data.length - this.origData.length; - if (keys === null || !this.highlight.persistent && nNewTraces > 0) { - var tracesToRemove = []; - for (var i = 0; i < this.gd.data.length; i++) { - if (this.gd.data[i]._isCrosstalkTrace) tracesToRemove.push(i); - } - Plotly.deleteTraces(this.gd, tracesToRemove); - this.groupSelections[group] = keys; - } else { - // add to the groupSelection, rather than overwriting it - // TODO: can this be removed? - this.groupSelections[group] = this.groupSelections[group] || []; - for (var i = 0; i < keys.length; i++) { - var k = keys[i]; - if (this.groupSelections[group].indexOf(k) < 0) { - this.groupSelections[group].push(k); - } - } - } - - if (keys === null) { - - Plotly.restyle(this.gd, {"opacity": this.origOpacity}); - - } else if (keys.length >= 1) { - - // placeholder for new "selection traces" - var traces = []; - // this variable is set in R/highlight.R - var selectionColour = crosstalk.group(group).var("plotlySelectionColour").get() || - this.highlight.color[0]; - - for (var i = 0; i < this.origData.length; i++) { - // TODO: try using Lib.extendFlat() as done in - // https://github.com/plotly/plotly.js/pull/1136 - var trace = JSON.parse(JSON.stringify(this.gd.data[i])); - if (!trace.key || trace.set !== group) { - continue; - } - // Get sorted array of matching indices in trace.key - var matchFunc = getMatchFunc(trace); - var matches = matchFunc(trace.key, keys); - - if (matches.length > 0) { - // If this is a "simple" key, that means select the entire trace - if (!trace._isSimpleKey) { - trace = subsetArrayAttrs(trace, matches); - } - // reach into the full trace object so we can properly reflect the - // selection attributes in every view - var d = this.gd._fullData[i]; - - /* - / Recursively inherit selection attributes from various sources, - / in order of preference: - / (1) official plotly.js selected attribute - / (2) highlight(selected = attrs_selected(...)) - */ - // TODO: it would be neat to have a dropdown to dynamically specify these! - $.extend(true, trace, this.highlight.selected); - - // if it is defined, override color with the "dynamic brush color"" - if (d.marker) { - trace.marker = trace.marker || {}; - trace.marker.color = selectionColour || trace.marker.color || d.marker.color; - } - if (d.line) { - trace.line = trace.line || {}; - trace.line.color = selectionColour || trace.line.color || d.line.color; - } - if (d.textfont) { - trace.textfont = trace.textfont || {}; - trace.textfont.color = selectionColour || trace.textfont.color || d.textfont.color; - } - if (d.fillcolor) { - // TODO: should selectionColour inherit alpha from the existing fillcolor? - trace.fillcolor = selectionColour || trace.fillcolor || d.fillcolor; - } - // attach a sensible name/legendgroup - trace.name = trace.name || keys.join("
    "); - trace.legendgroup = trace.legendgroup || keys.join("
    "); - - // keep track of mapping between this new trace and the trace it targets - // (necessary for updating frames to reflect the selection traces) - trace._originalIndex = i; - trace._newIndex = this.gd._fullData.length + traces.length; - trace._isCrosstalkTrace = true; - traces.push(trace); - } - } - - if (traces.length > 0) { - - Plotly.addTraces(this.gd, traces).then(function(gd) { - // incrementally add selection traces to frames - // (this is heavily inspired by Plotly.Plots.modifyFrames() - // in src/plots/plots.js) - var _hash = gd._transitionData._frameHash; - var _frames = gd._transitionData._frames || []; - - for (var i = 0; i < _frames.length; i++) { - - // add to _frames[i].traces *if* this frame references selected trace(s) - var newIndices = []; - for (var j = 0; j < traces.length; j++) { - var tr = traces[j]; - if (_frames[i].traces.indexOf(tr._originalIndex) > -1) { - newIndices.push(tr._newIndex); - _frames[i].traces.push(tr._newIndex); - } - } - - // nothing to do... - if (newIndices.length === 0) { - continue; - } - - var ctr = 0; - var nFrameTraces = _frames[i].data.length; - - for (var j = 0; j < nFrameTraces; j++) { - var frameTrace = _frames[i].data[j]; - if (!frameTrace.key || frameTrace.set !== group) { - continue; - } - - var matchFunc = getMatchFunc(frameTrace); - var matches = matchFunc(frameTrace.key, keys); - - if (matches.length > 0) { - if (!trace._isSimpleKey) { - frameTrace = subsetArrayAttrs(frameTrace, matches); - } - var d = gd._fullData[newIndices[ctr]]; - if (d.marker) { - frameTrace.marker = d.marker; - } - if (d.line) { - frameTrace.line = d.line; - } - if (d.textfont) { - frameTrace.textfont = d.textfont; - } - ctr = ctr + 1; - _frames[i].data.push(frameTrace); - } - } - - // update gd._transitionData._frameHash - _hash[_frames[i].name] = _frames[i]; - } - - }); - - // dim traces that have a set matching the set of selection sets - var tracesToDim = [], - opacities = [], - sets = Object.keys(this.groupSelections), - n = this.origData.length; - - for (var i = 0; i < n; i++) { - var opacity = this.origOpacity[i] || 1; - // have we already dimmed this trace? Or is this even worth doing? - if (opacity !== this.gd._fullData[i].opacity || this.highlight.opacityDim === 1) { - continue; - } - // is this set an element of the set of selection sets? - var matches = findMatches(sets, [this.gd.data[i].set]); - if (matches.length) { - tracesToDim.push(i); - opacities.push(opacity * this.highlight.opacityDim); - } - } - - if (tracesToDim.length > 0) { - Plotly.restyle(this.gd, {"opacity": opacities}, tracesToDim); - // turn off the selected/unselected API - Plotly.restyle(this.gd, {"selectedpoints": null}); - } - - } - - } -}; - -/* -Note: in all of these match functions, we assume needleSet (i.e. the selected keys) -is a 1D (or flat) array. The real difference is the meaning of haystack. -findMatches() does the usual thing you'd expect for -linked brushing on a scatterplot matrix. findSimpleMatches() returns a match iff -haystack is a subset of the needleSet. findNestedMatches() returns -*/ - -function getMatchFunc(trace) { - return (trace._isNestedKey) ? findNestedMatches : - (trace._isSimpleKey) ? findSimpleMatches : findMatches; -} - -// find matches for "flat" keys -function findMatches(haystack, needleSet) { - var matches = []; - haystack.forEach(function(obj, i) { - if (obj === null || needleSet.indexOf(obj) >= 0) { - matches.push(i); - } - }); - return matches; -} - -// find matches for "simple" keys -function findSimpleMatches(haystack, needleSet) { - var match = haystack.every(function(val) { - return val === null || needleSet.indexOf(val) >= 0; - }); - // yes, this doesn't make much sense other than conforming - // to the output type of the other match functions - return (match) ? [0] : [] -} - -// find matches for a "nested" haystack (2D arrays) -function findNestedMatches(haystack, needleSet) { - var matches = []; - for (var i = 0; i < haystack.length; i++) { - var hay = haystack[i]; - var match = hay.every(function(val) { - return val === null || needleSet.indexOf(val) >= 0; - }); - if (match) { - matches.push(i); - } - } - return matches; -} - -function isPlainObject(obj) { - return ( - Object.prototype.toString.call(obj) === '[object Object]' && - Object.getPrototypeOf(obj) === Object.prototype - ); -} - -function subsetArrayAttrs(obj, indices) { - var newObj = {}; - Object.keys(obj).forEach(function(k) { - var val = obj[k]; - - if (k.charAt(0) === "_") { - newObj[k] = val; - } else if (k === "transforms" && Array.isArray(val)) { - newObj[k] = val.map(function(transform) { - return subsetArrayAttrs(transform, indices); - }); - } else if (k === "colorscale" && Array.isArray(val)) { - newObj[k] = val; - } else if (isPlainObject(val)) { - newObj[k] = subsetArrayAttrs(val, indices); - } else if (Array.isArray(val)) { - newObj[k] = subsetArray(val, indices); - } else { - newObj[k] = val; - } - }); - return newObj; -} - -function subsetArray(arr, indices) { - var result = []; - for (var i = 0; i < indices.length; i++) { - result.push(arr[indices[i]]); - } - return result; -} - -// Convenience function for removing plotly's brush -function removeBrush(el) { - var outlines = el.querySelectorAll(".select-outline"); - for (var i = 0; i < outlines.length; i++) { - outlines[i].remove(); - } -} - - -// https://davidwalsh.name/javascript-debounce-function - -// Returns a function, that, as long as it continues to be invoked, will not -// be triggered. The function will be called after it stops being called for -// N milliseconds. If `immediate` is passed, trigger the function on the -// leading edge, instead of the trailing. -function debounce(func, wait, immediate) { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; -}; diff --git a/structures/structures.html b/structures/structures.html index 4636891..9319908 100644 --- a/structures/structures.html +++ b/structures/structures.html @@ -200,7 +200,7 @@

    Structure Data Analysis for Group Project

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/transcriptomics/transcriptomics.html b/transcriptomics/transcriptomics.html index 8507d51..a0c8aad 100644 --- a/transcriptomics/transcriptomics.html +++ b/transcriptomics/transcriptomics.html @@ -289,7 +289,7 @@

    Transcriptomics Data Analysis for Group Project

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    diff --git a/transcriptomics/week-3/data-raw/xlaevis_counts_S14.csv b/transcriptomics/week-3/data-raw/xlaevis_counts_S14.csv index 167ebfc..a6a06f5 100644 --- a/transcriptomics/week-3/data-raw/xlaevis_counts_S14.csv +++ b/transcriptomics/week-3/data-raw/xlaevis_counts_S14.csv @@ -1,4 +1,4 @@ -xenbase_gene_id,S14_C_1,S14_C_2,S14_C_A,S14_F_1,S14_F_2,S14_F_A +xenbase_gene_id,S14_C_1,S14_C_2,S14_C_3,S14_F_1,S14_F_2,S14_F_3 XB-GENE-1000007,111,77,124,198,68,133 XB-GENE-1000023,347,283,581,530,269,711 XB-GENE-1000062,154,98,176,236,95,198 diff --git a/transcriptomics/week-3/data-raw/xlaevis_counts_S20.csv b/transcriptomics/week-3/data-raw/xlaevis_counts_S20.csv index a1ac5ce..2fde97c 100644 --- a/transcriptomics/week-3/data-raw/xlaevis_counts_S20.csv +++ b/transcriptomics/week-3/data-raw/xlaevis_counts_S20.csv @@ -1,4 +1,4 @@ -xenbase_gene_id,S20_C_1,S20_C_2,S20_C_A,S20_F_1,S20_F_2,S20_F_A +xenbase_gene_id,S20_C_1,S20_C_2,S20_C_3,S20_F_1,S20_F_2,S20_F_3 XB-GENE-1000007,231,127,136,134,169,244 XB-GENE-1000023,610,292,483,384,609,725 XB-GENE-1000062,140,67,65,86,81,132 diff --git a/transcriptomics/week-3/overview.html b/transcriptomics/week-3/overview.html index c2f7d95..dc7c184 100644 --- a/transcriptomics/week-3/overview.html +++ b/transcriptomics/week-3/overview.html @@ -286,7 +286,7 @@

    Overview

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    @@ -298,7 +298,7 @@

    Overview

    -

    This week you will meet your data. The independent study will concisely cover how these data were generated and how they have been processed before being given to you. There will also be an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of ’omics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.

    +

    This week you will meet your data. The independent study will summarise how these data were generated and how they have been processed before being given to you. There will also be an overview of the analysis we will carry out over three workshops. In the workshop, you will learn what steps to take to get a good understanding of transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.

    We suggest you sit together with your group in the workshop.

    Learning objectives

    @@ -316,13 +316,13 @@

    Instructions

    1. Prepare

        -
      1. 📖 Read how the data were generated and how they have been processed so far
      2. +
      3. 📖 Read how the data were generated and how they have been processed so far and a summary of the analysis we will carry out over three workshops.
    2. Workshop

      1. 💻 Set up a Project

      2. 💻 Import data

      3. -
      4. 💻 Explore the distribution of values across samples/cells and across genes/species

      5. +
      6. 💻 Explore the distribution of values across rows and columns

      7. 💻 Look after future you!

    3. Consolidate

      diff --git a/transcriptomics/week-3/study_after_workshop.html b/transcriptomics/week-3/study_after_workshop.html index 5f70954..bcda183 100644 --- a/transcriptomics/week-3/study_after_workshop.html +++ b/transcriptomics/week-3/study_after_workshop.html @@ -279,7 +279,7 @@

      Independent Study to consolidate this week

      Published
      -

      18 September, 2024

      +

      2 October, 2024

      @@ -292,13 +292,12 @@

      Independent Study to consolidate this week

      You need only do the section for your own project data

      -

      🐸 Frogs

      -

      🎬 Open your frogs-88H Project. Make a new script and, using cont-fgf-s30.R as a template, repeat the analysis on one of the other comparisons.

      -

      🐭 Mice

      -

      🎬 Open your mice-88H Project. Open your hspc-prog.R script and, using you code working with the hspc cells as a template, repeat the analysis on the prog cells.

      -

      🍂 xxxx

      -

      Follow one of the other examples.

      - +

      🐸 Frog development

      +

      🎬 Open your frogs-88H Project. Make a new script and, using cont-fgf-s30.R as a template, repeat the analysis on one of the other comparisons. It does not matter which one you choose. I recommend making a new script.

      +

      🐭 Stem cells

      +

      🎬 Open your mice-88H Project. Open your hspc-prog.R script and, using your code working with the hspc cells as a template, repeat the analysis on the prog cells. Add the code to hspc-prog.R as you will later add the statistical comparison between these cell types.

      +

      🎄 Arabidopisis

      +

      💉 Leishmania

      diff --git a/transcriptomics/week-3/study_before_workshop.html b/transcriptomics/week-3/study_before_workshop.html index f8b9cde..225834f 100644 --- a/transcriptomics/week-3/study_before_workshop.html +++ b/transcriptomics/week-3/study_before_workshop.html @@ -368,7 +368,7 @@

      Independent Study to prepare for workshop

    -

    18 September, 2024

    +

    2 October, 2024

    Overview

    @@ -383,11 +383,12 @@

    Overview

    The Data

    -

    There are three datasets

    +

    There are three transcriptomic datasets

      -
    • 🐸 transcriptomic data (bulk RNA-seq) from frog embryos.

    • -
    • 🐭 transcriptomic data (single cell RNA-seq) from stemcells

    • -
    • 🍂 ??????? Metabolomic / Metagenomic data from anaerobic digesters

    • +
    • 🐸 bulk RNA-seq from Xenopus laevis embryos.

    • +
    • 🐭 single cell RNA-seq from mouse stemcells

    • +
    • 🎄 bulk RNA-seq from Arabidopsis thaliana

    • +
    • 💉 bulk RNA-seq from Leishmania mexicana

    @@ -405,7 +406,7 @@

    🐸 Experimental design

    Schematic of frog development experiment

    • 3 fertilisations

    • -
    • two siblings from each fertilisation one control, on FGF treated

    • +
    • two siblings from each fertilisation one control, one FGF treated

    • sequenced at three time points

    • 3 x 2 x 3 = 18 groups

    @@ -427,8 +428,7 @@

    🐸 Experimental design

    🐸 Aim

      -
    • find genes important in frog development

    • -
    • Important means the genes that are differentially expressed between the control-treated and the FGF-treated siblings

    • +
    • Find genes that are “differentially expressed” between control-treated and FGF-treated siblings

    • Differentially expressed means the expression in one group is significantly higher than in the other

    @@ -438,8 +438,9 @@

    🐸 Guided analysis

    • The workshops will take you through comparing the control and FGF treated sibling at S30

    • -
    • This is the “least interesting” comparison

    • +
    • You will make other comparisons independently

    • You will be guided to carefully document your work so you can apply the same methods to other comparisons

    • +
    • Do the independent study before and after the workshop!

    @@ -473,8 +474,7 @@

    🐭 Experimental design

    🐭 Aim

      -
    • find genes for cell surface proteins that are important in stem cell identity

    • -
    • Important means genes that are differentially expressed between at least two cell types

    • +
    • find genes that are “differentially expressed” between at least two cell types

    • Differentially expressed means the expression in one group is significantly higher than in the other

    @@ -484,55 +484,30 @@

    🐭 Guided analysis

    • The workshops will take you through comparing the HSPC and Prog cells

    • -
    • This is the “least interesting” comparison

    • +
    • You will make other comparisons independently

    • You will be guided to carefully document your work so you can apply the same methods to other comparisons

    • +
    • Do the independent study before and after the workshop!

    -
    -

    The raw data

    +
    +

    Where do the data come from?

    -
    +

    Raw Sequence data

      -
    • The raw data are “reads” from a sequencing machine.

    • -
    • A read is sequence of DNA or RNA shorter than the whole genome or transcriptome

    • +
    • The raw data are “reads” from a sequencing machine in FASTQ files

    • +
    • A read is sequence of RNA which is shorter than the whole transcriptome

    • The length of the reads depends on the type of sequencing machine

        -
      • Short-read technologies e.g. Illumina have higher base accuracy but are harder to align
      • -
      • Long-read technologies e.g. Nanopore have lower base accuracy but are easier to align
      • +
      • Short-read technologies (e.g. Illumina) have higher base accuracy but are harder to align
      • +
      • Long-read technologies (e.g. Nanopore) have lower base accuracy but are easier to align
    • +
    • Optional: You can read more about Sequencing technologies in Statistically useful experimental design (Rand and Forrester 2022)

    -
    -
    -
    -
    -

    The raw data

    - -
    -
    -

    Raw Sequence data

    -
    - -
    -
    -
    -

    Raw Sequence data

    -
    -
      -
    • The RNA-seq data are from an Illumina machine 150-300bp

    • -
    • Reads are in FASTQ files

    • -
    • FASTQ files contain the sequence of each read and a quality score for each base

    • -
    -
    -
    -

    What has been done to the data so far

    @@ -541,32 +516,32 @@

    What has been done to the data so far

    General steps

      -
    • Reads are filtered and trimmed on the basis of the quality score

    • +
    • Reads are filtered and trimmed on the basis of a quality score

    • They are then aligned/pseudo-aligned to a reference genome/transcriptome

    • -
    • Reads are then counted to quantify the expression

    • -
    • Counts will need to be normalised to account for differences in sequencing depth and gene/transcript/ length before, or as part of, statistical analysis.

    • +
    • And then counted to quantify the expression

    • +
    • Counts need to be normalised to account for differences in sequencing depth and transcript length before, or as part of, statistical analysis.

    🐸 Data

    🐭 Data

      -
    • Published in Nestorowa et al. (2016)

    • -
    • Expression for a subset of genes, the surfaceome

    • -
    • Values are log2 normalised values

    • -
    • The statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values

    • +
    • Published in Nestorowa et al. (2016)

    • +
    • Expression for a subset of genes, the surfaceome

    • +
    • Values are log2 normalised values

    • +
    • The statistical analysis method we will use scran (Lun, McCarthy, and Marioni 2016) requires normalised values

    -
    -
    +
    +

    Workshops

    @@ -574,20 +549,27 @@

    Workshops

    Workshops

      -
    • Transcriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across samples and across genes to check things are as we expect and detect genes/samples that need to be removed

    • -
    • Transcriptomics 2: Statistical Analysis Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.

    • -
    • Transcriptomics 3: Visualising and Interpreting Production of volcano plots and heatmaps to visualise the results of the statistical analysis. We will also look at how to interpret the results and how to find out more about the genes of interest.

    • +
    • Transcriptomics 1: Hello data Getting to know the data. Checking the distributions of values overall, across rows and columns to check things are as we expect and detect rows/columns that need to be removed

    • +
    • Transcriptomics 2: Statistical Analysis. Identifying which genes are differentially expressed between treatments. This is the main analysis step. We will use different methods for bulk and single cell data.

    • +
    • Transcriptomics 3: Visualising. Principal Component Analysis (PCA) volcano plots to visualise the results of the

    -
    +

    References

    +

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)

    +
    +
    +
    +Allaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. Quarto.” https://doi.org/10.5281/zenodo.5960048. +
    Love, Michael I., Wolfgang Huber, and Simon Anders. 2014. “Moderated Estimation of Fold Change and Dispersion for RNA-Seq Data with DESeq2.” Genome Biology 15: 550. https://doi.org/10.1186/s13059-014-0550-8.
    @@ -597,9 +579,24 @@

    References

    Nestorowa, Sonia, Fiona K. Hamey, Blanca Pijuan Sala, Evangelia Diamanti, Mairi Shepherd, Elisa Laurenti, Nicola K. Wilson, David G. Kent, and Berthold Göttgens. 2016. “A Single-Cell Resolution Map of Mouse Hematopoietic Stem and Progenitor Cell Differentiation.” Blood 128 (8): e20–31. https://doi.org/10.1182/blood-2016-05-716480.
    +
    +R Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/. +
    Rand, Emma, and Sarah Forrester. 2022. “Statistically Useful Experimental Design.” https://cloud-span.github.io/experimental_design00-overview/.
    +
    +Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. +
    +
    +———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/. +
    +
    +———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/. +
    +
    +Zhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra. +
    diff --git a/transcriptomics/week-3/workshop.html b/transcriptomics/week-3/workshop.html index 1f89562..55be756 100644 --- a/transcriptomics/week-3/workshop.html +++ b/transcriptomics/week-3/workshop.html @@ -302,53 +302,62 @@
  • Session overview
  • +
  • Set up a Project
  • +
  • Examine data using a spreadsheet
  • -Exercises +Explore data in R
      -
    • Set up a Project
    • -
    • Examine the data in a spreadsheet
    • -
    • Import
    • -
    • -Explore -
    • Filtering for QC -
        -
      • 🐸 Frog filtering
      • -
      • 🐭 Mouse filtering
      • +
      • 🤗 Look after future you! -
      • 🥳 Finished
      • @@ -377,7 +386,7 @@

        Workshop

        Published
        -

        18 September, 2024

        +

        2 October, 2024

        @@ -389,9 +398,8 @@

        Workshop

        Introduction

        Session overview

        In this workshop you will learn what steps to take to get a good understanding of your transcriptomics data before you consider any statistical analysis. This is an often overlooked, but very valuable and informative, part of any data pipeline. It gives you the deep understanding of the data structures and values that you will need to code and trouble-shoot code, allows you to spot failed or problematic samples and informs your decisions on quality control.

        -

        You should examine all three data sets because the comparisons will give you a stronger understanding of your own project data.

        -

        Exercises

        -

        Set up a Project

        +

        In this session, you should examine all four data sets because the comparisons will give you a much stronger understanding of your own project data. Compare and contrast is a very useful way to build understanding.

        +

        Set up a Project

        🎬 Start RStudio from the Start menu

        🎬 Make an RStudio project. Be deliberate about where you create it so that it is a good place for you

        🎬 Use the Files pane to make new folders for the data. I suggest data-raw and data-processed

        @@ -401,71 +409,68 @@

        Workshop

        -

        Examine the data in a spreadsheet

        -

        These are the three datasets. Each set compromises several files.

        -

        🐸 Frog development data:

        +

        Examine data using a spreadsheet

        +

        These are the four datasets. Each set compromises several files.

        +

        🐸 Frog development:

        -

        🐭 Stem cell data:

        +

        🐭 Stem cells:

        -

        🍂 xxxx data:

        +

        🎄 Arabidopsis:

        • xxx
        • xxx
        +

        💉 Leishmania:

        +
          +
        • xxx
        • +

        🎬 Save the files to data-raw and open them in Excel

        🎬 Answer the following questions:

        • Describe how the sets of data are similar and how they are different.
        • What is in the rows and columns of each file?
        • How many rows and columns are there in each file? Are these the same? In all cases or some cases? Why?
        • -
        • Google an id. Where does your search take you? How much information is available?
        • +
        • Google gene id. Where does your search take you? How much information is available?

        🎬 Did you record all that??

        -

        Import

        -

        Now let’s get the data into R and visualise it.

        -

        🎬 Import xlaevis_counts_S30.csv, surfaceome_hspc.csv and xxxxxxxx

        -
        -
        # 🐸 import the s30 data
        -s30 <- read_csv("data-raw/xlaevis_counts_S30.csv")
        -
        -
        -
        # 🐭 import the hspc data
        -hspc <- read_csv("data-raw/surfaceome_hspc.csv")
        -
        -
        -
        # 🍂 xxxx import the xxxx data
        -# prog <- read_csv("")
        -
        -

        🎬 Check these have the number of rows and column you were expecting and that column types and names are as expected.

        -

        Explore

        +

        Explore data in R

        The first task is to get an overview. We want to know

          -
        • are there any missing values? If so, how many and how are they distributed?
        • -
        • how may zeros are there and how are they distributed
        • -
        • does it look as tough all the samples/cells were equally “successful”? Can we spot any problematic anomalies?
        • -
        • what is the distribution of values?
        • +
        • how may zeros are there and how are they distributed?
        • +
        • what is the distribution of non-zero values?
        • +
        • does it look as though all the samples/cells were equally “successful”? Can we spot any problems?
        • +
        • can we determine a quality threshold for filtering out genes with very low counts?
        -

        If our data collection has gone well we would hope to see approximately the same average expression in each sample or cell of the same type. That is replicates should be similar. We would also expect to see that the average expression of genes varies. We might have genes which are zero in every cell/sample. We will want to to filter those out.

        +

        Genes which are zero in every cell/sample, i.e., genes that are not expressed at all give us no information. We will want to to filter those out. We will also want to filter out genes with very low counts for quality control. These are mostly likely false positives. If our data collection has gone well we would hope to see approximately the same average expression in each sample/cell of the same type. That is, replicates should be similar. In contrast, we would expect to see that the average expression of genes varies.

        We get this overview by looking at:

          -
        • The distribution of values across the whole dataset

        • -
        • The distribution of values across the sample/cells (i.e., averaged across genes). This allows us to see variation between samples/cells:

        • -
        • The distribution of values across the genes (i.e., averaged across samples/cells). This allows us to see variation between genes.

        • +
        • The distribution of values across all the data in the file

        • +
        • The distribution of values across the samples/cells (i.e., averaged across genes). This allows us to see variation between samples/cells:

        • +
        • The distribution of values across the genes (i.e., averaged across samples/cells). This allows us to see variation between genes.

        -

        Distribution of values across the whole dataset

        -

        In all data sets, the values are spread over multiple columns so in order to plot the distribution as a whole, we will need to first use pivot_longer() to put the data in ‘tidy’ format (Wickham2014-nl?) by stacking the columns. We could save a copy of the stacked data and then plot it, but here, I have just piped the stacked data straight into ggplot().

        -

        🐸 Frogs

        -

        🎬 Pivot the counts (stack the columns) so all the counts are in a single column (count) and pipe into ggplot() to create a histogram:

        +

        The next sections will guide you through each of these for each of the data sets. Start with your own data set then move on to at least one of the others.

        +

        🐸 Frog development

        +

        Import

        +

        Import the data for stage 30.

        +

        🎬 Import xlaevis_counts_S30.csv

        -
        s30 |>
        +
        # 🐸 import the s30 data
        +s30 <- read_csv("data-raw/xlaevis_counts_S30.csv")
        +
        +

        🎬 Check the dataframe has the number of rows and columns you were expecting and that column types and names are as expected.

        +

        Distribution of values across all the data in the file

        +

        The values are spread over multiple columns so in order to plot the distribution as a whole, we will need to first use pivot_longer() to put the data in ‘tidy’ format (Wickham 2014) by stacking the columns. We could save a copy of the stacked data and then plot it, but here, I have just piped the stacked data straight into ggplot(). This helps me avoid cluttering my R environment with temporary objects.

        +

        🎬 Pivot the counts (stack the columns) so all the counts are in a single column (count) labelled in sample by the column it came from and pipe into ggplot() to create a histogram:

        +
        +
        s30 |>
           pivot_longer(cols = -xenbase_gene_id,
                        names_to = "sample",
                        values_to = "count") |>
        @@ -473,53 +478,33 @@ 

        Workshop

        geom_histogram()
        -

        +

        -

        This data is very skewed - there are so many low values that we can’t see the tiny bars for the higher values. Logging the counts is a way to make the distribution more visible.

        -

        🎬 Repeat the plot on log of the counts.

        +

        This data is very skewed - there are very many low counts and a very few higher numbers. It is hard to see the very low bars for the higher values. Logging the counts is a way to make the distribution more visible. You cannot take the log of 0 so we add 1 to the count before logging. The log of 1 is zero so we will be able to see how many zeros we had.

        +

        🎬 Repeat the plot of log of the counts.

        -
        s30 |>
        +
        s30 |>
           pivot_longer(cols = -xenbase_gene_id,
                        names_to = "sample",
                        values_to = "count") |>
        -  ggplot(aes(x = log10(count))) +
        -  geom_histogram()
        -
        -
        -

        -
        -
        -
        -
        -

        I’ve used base 10 only because it easy to convert to the original scale (1 is 10, 2 is 100, 3 is 1000 etc). The warning about rows being removed is expected - these are the counts of 0 since you can’t log a value of 0. The peak at zero suggests quite a few counts of 1. We would expect we would expect the distribution of counts to be roughly log normal because this is expression of all the genes in the genome1. That small peak near the low end suggests that these lower counts might be anomalies.

        -

        The excess number of low counts indicates we might want to create a cut off for quality control. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across samples and genes.

        -

        🐭 Mice

        -

        🎬 Pivot the expression values (stack the columns) so all the counts are in a single column (expr) and pipe into ggplot() to create a histogram:

        -
        -
        hspc |>
        -  pivot_longer(cols = -ensembl_gene_id,
        -               names_to = "cell",
        -               values_to = "expr") |> 
        -  ggplot(aes(x = expr)) +
        +  ggplot(aes(x = log10(count + 1))) +
           geom_histogram()
        -

        +

        -

        This is a very striking distribution. Is it what we are expecting? Again,the excess number of low values is almost certainly anomalous. They will be inaccurate measure and we will want to exclude expression values below (about) 1. We will revisit this after we have considered the distribution of expression across cells and genes.

        -

        What about the bimodal appearance of the the ‘real’ values? If we had the whole genome we would not expect to see such a pattern - we’d expect to see a roughly normal distribution2. However, this is a subset of the genome and the nature of the subsetting has had an influence here. These are a subset of cell surface proteins that show a significant difference between at least two of twelve cell subtypes. That is, all of these genes are either high or low.

        -

        Distribution of values across the sample/cells

        -

        🐸 Frog samples

        -

        Summary statistics including the the number of NAs can be seen using the summary(). It is most helpful which you have up to about 30 columns. There is nothing special about the number 30, it is just that text summaries of a larger number of columns are difficult to grasp.

        -

        🎬 Get a quick overview of the columns:

        +

        I’ve used base 10 only because it easy to convert to the original scale (1 is 10, 2 is 100, 3 is 1000 etc). Notice we have a peak at zero indicating there are many zeros. We would expect the distribution of counts to be roughly log normal because this is expression of all the genes in the genome1. The number of low counts is inflated (small peak near the low end). This suggests that these lower counts might be false positives. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across samples and genes.

        +

        Distribution of values across the samples

        +

        Summary statistics including the the number of NAs can be seen using the summary(). It is most helpful which you have up to about 25 columns. There is nothing special about the number 25, it is just that summaries of a larger number of columns are difficult to grasp.

        +

        🎬 Get a quick overview of the 7 columns:

        -
        # examine all the columns quickly
        +
        # examine all the columns quickly
         # works well with smaller numbers of column
         summary(s30)
        @@ -539,51 +524,56 @@

        Workshop

        Max. :117573.0 Max. :130672.0 Max. :61531.0
        -

        Notice that: - the minimum count is 0 and the maximums are very high in all the columns - the medians are quite a lot lower than the means so the data are skewed (hump to the left, tail to the right) - there must be quite a lot of zeros - the columns are roughly similar and it doesn’t look like there is an anomalous replicate.

        -

        To find out how may zeros there are in a column we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. This means sum(S30_C_1 == 0) gives the number of 0 in the S30_C_1 column

        -

        🎬 Find the number of zeros in all six columns:

        +

        Notice that:

        +
          +
        • the minimum count is 0 and the maximums are very high in all the columns
        • +
        • the medians are quite a lot lower than the means so the data are skewed (hump to the left, tail to the right) and there must be quite a lot of zeros
        • +
        • +S30_F_3 does have a somewhat lower maximum count
        • +
        +

        We want to know how many zeros there are in each a column. A useful trick to determine this is to make use we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. This means you can sum a column of TRUE/FALSE values to get the number of TRUE values. For example, sum(S30_C_1 > 0) gives the number of values above zero in the S30_C_1 column. If you wanted the number of zeros, you would use sum(S30_C_1 == 0).

        +

        🎬 Find the number values above zero in all six columns:

        -
        s30 |>
        -  summarise(sum(S30_C_1 == 0),
        -            sum(S30_C_2 == 0),
        -            sum(S30_C_3 == 0),
        -            sum(S30_F_1 == 0),
        -            sum(S30_F_2 == 0),
        -            sum(S30_F_3 == 0))
        +
        s30 |>
        +  summarise(sum(S30_C_1 > 0),
        +            sum(S30_C_2 > 0),
        +            sum(S30_C_3 > 0),
        +            sum(S30_F_1 > 0),
        +            sum(S30_F_2 > 0),
        +            sum(S30_F_3 > 0))
        # A tibble: 1 × 6
        -  `sum(S30_C_1 == 0)` `sum(S30_C_2 == 0)` `sum(S30_C_3 == 0)`
        -                <int>               <int>               <int>
        -1                1340                1361                 998
        -# ℹ 3 more variables: `sum(S30_F_1 == 0)` <int>, `sum(S30_F_2 == 0)` <int>,
        -#   `sum(S30_F_3 == 0)` <int>
        + `sum(S30_C_1 > 0)` `sum(S30_C_2 > 0)` `sum(S30_C_3 > 0)` `sum(S30_F_1 > 0)` + <int> <int> <int> <int> +1 10553 10532 10895 10683 +# ℹ 2 more variables: `sum(S30_F_2 > 0)` <int>, `sum(S30_F_3 > 0)` <int>
        -

        There is a better way of doing this that saves you having to repeat so much code - especially useful if you have a lot more than 6 columns. We can use pivot_longer() to put the data in tidy format and then use the group_by() and summarise() approach we have used extensively before.

        +

        There is a better way of doing this that saves you having to repeat so much code - very useful if you have a lot more than 6 columns! We can use pivot_longer() to put the data in tidy format and then use the group_by() and summarise() approach we have used extensively before.

        🎬 Find the number of zeros in all columns:

        -
        s30 |>
        +
        s30 |>
           pivot_longer(cols = -xenbase_gene_id,
                        names_to = "sample",
                        values_to = "count") |>
           group_by(sample) |>
        -  summarise(n_zero = sum(count == 0))
        + summarise(n_above_zero = sum(count > 0))
        # A tibble: 6 × 2
        -  sample  n_zero
        -  <chr>    <int>
        -1 S30_C_1   1340
        -2 S30_C_2   1361
        -3 S30_C_3    998
        -4 S30_F_1   1210
        -5 S30_F_2   1199
        -6 S30_F_3    963
        + sample n_above_zero + <chr> <int> +1 S30_C_1 10553 +2 S30_C_2 10532 +3 S30_C_3 10895 +4 S30_F_1 10683 +5 S30_F_2 10694 +6 S30_F_3 10930
        -

        You could expand to get all the summary information

        +

        You could expand this code to get get other useful summary information

        🎬 Summarise all the samples:

        -
        s30 |>
        +
        s30 |>
           pivot_longer(cols = -xenbase_gene_id,
                        names_to = "sample",
                        values_to = "count") |>
        @@ -594,1445 +584,48 @@ 

        Workshop

        median = median(count), upperq = quantile(count, 0.75), max = max(count), - n_zero = sum(count == 0))
        + n_above_zero = sum(count > 0))
        # A tibble: 6 × 8
        -  sample    min lowerq  mean median upperq    max n_zero
        -  <chr>   <dbl>  <dbl> <dbl>  <dbl>  <dbl>  <dbl>  <int>
        -1 S30_C_1     0     14  317.     70    205 101746   1340
        -2 S30_C_2     0     14  336.     75    220 118708   1361
        -3 S30_C_3     0     23  426.    107    301 117945    998
        -4 S30_F_1     0     19  376.     88    251 117573   1210
        -5 S30_F_2     0     17  376.     84    246 130672   1199
        -6 S30_F_3     0     16  260.     69    187  61531    963
        + sample min lowerq mean median upperq max n_above_zero + <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int> +1 S30_C_1 0 14 317. 70 205 101746 10553 +2 S30_C_2 0 14 336. 75 220 118708 10532 +3 S30_C_3 0 23 426. 107 301 117945 10895 +4 S30_F_1 0 19 376. 88 251 117573 10683 +5 S30_F_2 0 17 376. 84 246 130672 10694 +6 S30_F_3 0 16 260. 69 187 61531 10930
        -

        The mean count ranges from 260 to 426.

        -

        One advantage this has over using summary() is that the output is a dataframe. For results, this is useful, and makes it easier to:

        -
          -
        • write to file
        • -
        • use in ggplot() -
        • -
        • format in a Quarto report
        • -
        -

        🎬 Save the summary as a dataframe, s30_summary_samp.

        -

        We can write to file using write_csv()

        -

        🎬 Write s30_summary_samp to a file called “s30_summary_samp.csv”:

        -
        -
        write_csv(s30_summary_samp, 
        -          file = "data-processed/s30_summary_samp.csv")
        -
        -

        Plotting the distribution of values is perhaps the easiest way to understand the data. We could plot each column separately or we can pipe the tidy format of data into ggplot() and make use of facet_wrap()

        -

        🎬 Pivot the data and pipe into ggplot:

        +

        The mean count ranges from 260 to 426. S30_F_3 does stand out a little but not by too much. If we had more replicates we might consider analysing with and with out this replicate. Since we have just 3, we will leave it in. The potential effect of an odd replicate is slightly statistical power. The major differences in gene expression will still be uncovered. Differences between genes with lower average expression and or more variable expression might be missed. Whether this matters depends on the biological question you are asking. In this case, it does not matter because the major differences in gene expression will be enough.

        +

        🎬 Save the summary as a dataframe, s30_summary_samp (using assignment).

        +

        We can also plot the distribution of counts across samples. We have many values (11893) so we are not limited to using geom_histogram(). geom_density() gives us a smooth distribution.

        +

        🎬 Plot the log10 of the counts + 1 again but this time facet by the sample:

        -
        s30 |>
        +
        s30 |>
           pivot_longer(cols = -xenbase_gene_id,
                        names_to = "sample",
                        values_to = "count") |>
        -  ggplot(aes(count)) +
        +  ggplot(aes(log10(count + 1))) +
           geom_density() +
           facet_wrap(. ~ sample, nrow = 3)
        -

        -
        -
        -
        -
        -

        We have many values (11893) so we are not limited to using geom_histogram(). geom_density() gives us a smooth distribution.

        -

        We have many low values and a few very high ones which makes it tricky to see the distributions. Logging the counts will make these clearer.

        -

        🎬 Repeat the graph but taking the base 10 log of the counts:

        -
        -
        s30 |>
        -  pivot_longer(cols = -xenbase_gene_id,
        -               names_to = "sample",
        -               values_to = "count") |>
        -  ggplot(aes(log10(count))) +
        -  geom_density() +
        -  facet_wrap(. ~ sample, nrow = 3)
        -
        -
        -

        +

        The key information to take from these plots is:

          -
        • the distributions are roughly similar in width, height, location and overall shape so it doesn’t look as though we have any suspect samples
        • +
        • the distributions are roughly similar with S30_F_3 does stand out a little
        • the peak at zero suggests quite a few counts of 1.
        • since we would expect the distribution of counts in each sample to be roughly log normal so that the small rise near the low end, even before the peak at zero, suggests that these lower counts might be anomalies.
        -

        The excess number of low counts indicates we might want to create a cut off for quality control. The removal of low counts is a common processing step in ’omic data. We will revisit this after we have considered the distribution of counts across genes (averaged over the samples).

        -

        🐭 Mouse cells

        -

        We used the summary() function to get an overview of the columns in the frog data. Let’s try that here.

        -

        🎬 Get a quick overview of the columns:

        -
        -
        summary(hspc)
        -
        -
         ensembl_gene_id       HSPC_001         HSPC_002         HSPC_003      
        - Length:280         Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - Class :character   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Mode  :character   Median : 0.000   Median : 0.000   Median : 0.9929  
        -                    Mean   : 2.143   Mean   : 1.673   Mean   : 2.5964  
        -                    3rd Qu.: 2.120   3rd Qu.: 2.239   3rd Qu.: 6.1559  
        -                    Max.   :12.567   Max.   :11.976   Max.   :11.1138  
        -    HSPC_004         HSPC_006         HSPC_008         HSPC_009    
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   :0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000  
        - Median : 0.000   Median : 1.276   Median : 0.000   Median :0.000  
        - Mean   : 1.851   Mean   : 2.338   Mean   : 2.375   Mean   :2.220  
        - 3rd Qu.: 2.466   3rd Qu.: 3.536   3rd Qu.: 3.851   3rd Qu.:3.594  
        - Max.   :11.133   Max.   :10.014   Max.   :11.574   Max.   :9.997  
        -    HSPC_011         HSPC_012         HSPC_014         HSPC_015     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.750   Median : 0.000   Median : 0.000  
        - Mean   : 2.285   Mean   : 2.431   Mean   : 2.295   Mean   : 2.515  
        - 3rd Qu.: 3.193   3rd Qu.: 3.741   3rd Qu.: 3.150   3rd Qu.: 3.789  
        - Max.   :11.260   Max.   :10.905   Max.   :11.051   Max.   :10.751  
        -    HSPC_016          HSPC_017         HSPC_018         HSPC_020     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.9488   Median : 0.000   Median : 1.248   Median : 0.000  
        - Mean   : 2.6115   Mean   : 2.146   Mean   : 2.710   Mean   : 2.509  
        - 3rd Qu.: 5.9412   3rd Qu.: 2.357   3rd Qu.: 6.006   3rd Qu.: 4.470  
        - Max.   :11.3082   Max.   :12.058   Max.   :11.894   Max.   :11.281  
        -    HSPC_021         HSPC_022         HSPC_023         HSPC_024     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.170   Mean   : 2.287   Mean   : 2.314   Mean   : 2.195  
        - 3rd Qu.: 2.996   3rd Qu.: 3.351   3rd Qu.: 2.749   3rd Qu.: 2.944  
        - Max.   :10.709   Max.   :11.814   Max.   :12.113   Max.   :11.279  
        -    HSPC_025         HSPC_026         HSPC_027         HSPC_028     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.572   Median : 1.385   Median : 0.000   Median : 0.000  
        - Mean   : 2.710   Mean   : 2.721   Mean   : 2.458   Mean   : 1.906  
        - 3rd Qu.: 5.735   3rd Qu.: 6.392   3rd Qu.: 5.496   3rd Qu.: 2.037  
        - Max.   :11.309   Max.   :10.865   Max.   :11.266   Max.   :10.777  
        -    HSPC_030         HSPC_031          HSPC_033         HSPC_034      
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.119   Median : 0.9026   Median : 0.000   Median : 0.7984  
        - Mean   : 2.338   Mean   : 2.3049   Mean   : 1.938   Mean   : 2.3220  
        - 3rd Qu.: 3.005   3rd Qu.: 2.9919   3rd Qu.: 2.434   3rd Qu.: 4.8324  
        - Max.   :11.391   Max.   :11.1748   Max.   :10.808   Max.   :10.6707  
        -    HSPC_035         HSPC_036          HSPC_037         HSPC_038     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.8879   Median : 1.517   Median : 0.000  
        - Mean   : 1.810   Mean   : 2.6918   Mean   : 2.327   Mean   : 2.212  
        - 3rd Qu.: 2.175   3rd Qu.: 5.9822   3rd Qu.: 3.079   3rd Qu.: 2.867  
        - Max.   :11.221   Max.   :11.3018   Max.   :11.399   Max.   :12.275  
        -    HSPC_040         HSPC_041         HSPC_042          HSPC_043     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.8673   Median : 1.342  
        - Mean   : 2.509   Mean   : 2.492   Mean   : 2.3673   Mean   : 2.420  
        - 3rd Qu.: 3.995   3rd Qu.: 3.943   3rd Qu.: 3.8371   3rd Qu.: 3.731  
        - Max.   :11.863   Max.   :11.016   Max.   :11.4852   Max.   :11.123  
        -    HSPC_044         HSPC_045         HSPC_046          HSPC_047     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.8452   Median : 2.195  
        - Mean   : 2.382   Mean   : 2.277   Mean   : 1.9707   Mean   : 2.498  
        - 3rd Qu.: 3.998   3rd Qu.: 2.843   3rd Qu.: 2.0656   3rd Qu.: 3.937  
        - Max.   :10.782   Max.   :10.629   Max.   :11.0311   Max.   :10.180  
        -    HSPC_048         HSPC_049         HSPC_050         HSPC_051      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.108   Median : 1.275   Median : 0.000   Median : 0.9757  
        - Mean   : 2.289   Mean   : 2.453   Mean   : 2.673   Mean   : 2.2693  
        - 3rd Qu.: 2.988   3rd Qu.: 3.819   3rd Qu.: 5.772   3rd Qu.: 3.1644  
        - Max.   :10.335   Max.   :11.844   Max.   :11.301   Max.   :10.8692  
        -    HSPC_052         HSPC_053         HSPC_054         HSPC_055     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.509   Median : 0.818   Median : 0.000   Median : 0.000  
        - Mean   : 2.561   Mean   : 2.684   Mean   : 2.107   Mean   : 1.959  
        - 3rd Qu.: 4.644   3rd Qu.: 5.937   3rd Qu.: 2.568   3rd Qu.: 2.573  
        - Max.   :11.674   Max.   :11.624   Max.   :10.770   Max.   :11.105  
        -    HSPC_056         HSPC_057         HSPC_058         HSPC_060     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.399   Median : 0.000  
        - Mean   : 2.295   Mean   : 2.430   Mean   : 2.296   Mean   : 2.112  
        - 3rd Qu.: 3.721   3rd Qu.: 3.806   3rd Qu.: 3.199   3rd Qu.: 2.201  
        - Max.   :11.627   Max.   :10.575   Max.   :11.134   Max.   :10.631  
        -    HSPC_061         HSPC_062         HSPC_063         HSPC_064     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.515   Median : 1.101  
        - Mean   : 1.934   Mean   : 2.129   Mean   : 2.508   Mean   : 2.696  
        - 3rd Qu.: 2.489   3rd Qu.: 2.875   3rd Qu.: 4.895   3rd Qu.: 6.412  
        - Max.   :11.190   Max.   :10.433   Max.   :10.994   Max.   :10.873  
        -    HSPC_065          HSPC_066         HSPC_067         HSPC_068     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.4852   Median : 0.000   Median : 1.441   Median : 0.000  
        - Mean   : 2.2676   Mean   : 2.136   Mean   : 2.480   Mean   : 2.449  
        - 3rd Qu.: 3.8217   3rd Qu.: 2.632   3rd Qu.: 3.548   3rd Qu.: 4.517  
        - Max.   :10.9023   Max.   :11.608   Max.   :11.147   Max.   :10.901  
        -    HSPC_069         HSPC_070          HSPC_071          HSPC_072     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.8949   Median : 0.9272   Median : 1.121  
        - Mean   : 2.406   Mean   : 2.5826   Mean   : 2.2844   Mean   : 2.545  
        - 3rd Qu.: 4.705   3rd Qu.: 5.4749   3rd Qu.: 3.2531   3rd Qu.: 4.939  
        - Max.   :11.258   Max.   :11.6715   Max.   :10.7886   Max.   :11.397  
        -    HSPC_073         HSPC_074        HSPC_075         HSPC_076     
        - Min.   : 0.000   Min.   : 0.00   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.00   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.00   Median : 1.674   Median : 0.000  
        - Mean   : 2.491   Mean   : 2.46   Mean   : 2.413   Mean   : 2.289  
        - 3rd Qu.: 4.134   3rd Qu.: 3.40   3rd Qu.: 3.013   3rd Qu.: 2.550  
        - Max.   :11.844   Max.   :11.66   Max.   :11.976   Max.   :12.136  
        -    HSPC_077          HSPC_078         HSPC_079         HSPC_080     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.6624   Median : 1.492   Median : 1.384   Median : 1.013  
        - Mean   : 2.4336   Mean   : 2.637   Mean   : 2.432   Mean   : 2.881  
        - 3rd Qu.: 5.4937   3rd Qu.: 5.472   3rd Qu.: 3.617   3rd Qu.: 7.220  
        - Max.   :11.6020   Max.   :10.673   Max.   :11.199   Max.   :11.836  
        -    HSPC_081          HSPC_082         HSPC_083         HSPC_084     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.7671   Median : 0.000   Median : 1.896   Median : 1.128  
        - Mean   : 1.9227   Mean   : 2.474   Mean   : 2.864   Mean   : 2.289  
        - 3rd Qu.: 1.6349   3rd Qu.: 3.488   3rd Qu.: 5.101   3rd Qu.: 2.792  
        - Max.   :11.4681   Max.   :11.962   Max.   :10.865   Max.   :11.834  
        -    HSPC_085         HSPC_087         HSPC_088         HSPC_089     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.157   Mean   : 2.314   Mean   : 2.202   Mean   : 2.329  
        - 3rd Qu.: 3.010   3rd Qu.: 3.245   3rd Qu.: 2.092   3rd Qu.: 3.246  
        - Max.   :10.809   Max.   :10.976   Max.   :11.362   Max.   :11.301  
        -    HSPC_090         HSPC_094         HSPC_095         HSPC_096    
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   :0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000  
        - Median : 0.000   Median : 0.000   Median : 2.055   Median :0.000  
        - Mean   : 2.286   Mean   : 2.186   Mean   : 2.756   Mean   :2.348  
        - 3rd Qu.: 4.174   3rd Qu.: 2.002   3rd Qu.: 4.370   3rd Qu.:4.482  
        - Max.   :11.124   Max.   :11.694   Max.   :11.385   Max.   :9.601  
        -    HSPC_098         HSPC_099         HSPC_100         HSPC_101     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.007  
        - Mean   : 2.209   Mean   : 2.082   Mean   : 2.313   Mean   : 2.587  
        - 3rd Qu.: 3.354   3rd Qu.: 2.505   3rd Qu.: 2.775   3rd Qu.: 5.334  
        - Max.   :11.070   Max.   :10.200   Max.   :11.452   Max.   :11.456  
        -    HSPC_102         HSPC_103         HSPC_104         HSPC_105     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.111   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.210   Mean   : 2.853   Mean   : 2.099   Mean   : 1.893  
        - 3rd Qu.: 2.993   3rd Qu.: 6.123   3rd Qu.: 2.720   3rd Qu.: 2.129  
        - Max.   :11.153   Max.   :11.328   Max.   :10.746   Max.   :10.721  
        -    HSPC_106         HSPC_107         HSPC_108         HSPC_109     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.595  
        - Mean   : 1.980   Mean   : 2.279   Mean   : 2.296   Mean   : 2.420  
        - 3rd Qu.: 2.425   3rd Qu.: 3.396   3rd Qu.: 3.361   3rd Qu.: 4.006  
        - Max.   :10.919   Max.   :10.982   Max.   :11.744   Max.   :10.463  
        -    HSPC_110         HSPC_111         HSPC_114          HSPC_115     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.9173   Median : 2.349  
        - Mean   : 2.159   Mean   : 1.800   Mean   : 1.8376   Mean   : 2.943  
        - 3rd Qu.: 2.667   3rd Qu.: 2.214   3rd Qu.: 1.8741   3rd Qu.: 6.223  
        - Max.   :11.121   Max.   :11.109   Max.   :10.4645   Max.   :11.124  
        -    HSPC_117         HSPC_118         HSPC_119         HSPC_120     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.187  
        - Mean   : 1.919   Mean   : 1.855   Mean   : 2.289   Mean   : 2.041  
        - 3rd Qu.: 2.306   3rd Qu.: 2.387   3rd Qu.: 3.292   3rd Qu.: 2.610  
        - Max.   :14.579   Max.   :11.119   Max.   :12.534   Max.   :11.438  
        -    HSPC_121         HSPC_122         HSPC_123         HSPC_125     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.803   Mean   : 2.072   Mean   : 2.200   Mean   : 2.116  
        - 3rd Qu.: 5.798   3rd Qu.: 2.140   3rd Qu.: 3.215   3rd Qu.: 2.409  
        - Max.   :11.320   Max.   :11.013   Max.   :11.163   Max.   :11.368  
        -    HSPC_126          HSPC_127         HSPC_130         HSPC_131     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.9381   Median : 1.147   Median : 0.000   Median : 0.000  
        - Mean   : 2.0014   Mean   : 2.287   Mean   : 2.551   Mean   : 2.240  
        - 3rd Qu.: 2.2215   3rd Qu.: 3.051   3rd Qu.: 3.968   3rd Qu.: 3.773  
        - Max.   :10.9622   Max.   :11.028   Max.   :10.585   Max.   :11.216  
        -    HSPC_132          HSPC_133         HSPC_134         HSPC_135     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.4438   Median : 2.234   Median : 0.000   Median : 0.000  
        - Mean   : 2.1659   Mean   : 2.582   Mean   : 2.335   Mean   : 2.402  
        - 3rd Qu.: 1.8512   3rd Qu.: 4.591   3rd Qu.: 3.659   3rd Qu.: 4.134  
        - Max.   :10.6431   Max.   :10.730   Max.   :11.995   Max.   :11.573  
        -    HSPC_136         HSPC_138          HSPC_139         HSPC_140     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.7062   Median : 2.078   Median : 0.000  
        - Mean   : 2.546   Mean   : 2.1054   Mean   : 2.876   Mean   : 2.220  
        - 3rd Qu.: 5.219   3rd Qu.: 1.8181   3rd Qu.: 4.604   3rd Qu.: 3.716  
        - Max.   :11.281   Max.   :11.1177   Max.   :11.013   Max.   :10.893  
        -    HSPC_141         HSPC_142         HSPC_143         HSPC_144     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.075  
        - Mean   : 2.385   Mean   : 2.232   Mean   : 2.592   Mean   : 2.004  
        - 3rd Qu.: 4.149   3rd Qu.: 2.523   3rd Qu.: 4.248   3rd Qu.: 2.441  
        - Max.   :11.099   Max.   :11.902   Max.   :12.932   Max.   :11.121  
        -    HSPC_146         HSPC_148         HSPC_149         HSPC_151      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.9711  
        - Mean   : 2.418   Mean   : 2.385   Mean   : 2.314   Mean   : 2.4375  
        - 3rd Qu.: 4.430   3rd Qu.: 3.288   3rd Qu.: 3.139   3rd Qu.: 3.2523  
        - Max.   :10.385   Max.   :12.823   Max.   :10.910   Max.   :11.7148  
        -    HSPC_152         HSPC_153         HSPC_154         HSPC_155     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.247   Mean   : 2.415   Mean   : 2.476   Mean   : 2.468  
        - 3rd Qu.: 3.293   3rd Qu.: 3.524   3rd Qu.: 4.653   3rd Qu.: 3.621  
        - Max.   :12.463   Max.   :12.205   Max.   :11.437   Max.   :11.207  
        -    HSPC_156          HSPC_157         HSPC_158         HSPC_159     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.5545   Median : 1.993   Median : 0.000   Median : 0.000  
        - Mean   : 2.2297   Mean   : 2.493   Mean   : 2.119   Mean   : 2.461  
        - 3rd Qu.: 2.0977   3rd Qu.: 3.692   3rd Qu.: 2.930   3rd Qu.: 3.340  
        - Max.   :11.2431   Max.   :10.539   Max.   :11.336   Max.   :11.123  
        -    HSPC_161         HSPC_162          HSPC_164         HSPC_165     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.701   Median : 0.7152   Median : 0.000   Median : 0.000  
        - Mean   : 2.533   Mean   : 2.3473   Mean   : 2.161   Mean   : 2.084  
        - 3rd Qu.: 3.616   3rd Qu.: 2.4973   3rd Qu.: 2.553   3rd Qu.: 3.020  
        - Max.   :11.429   Max.   :11.0065   Max.   :11.865   Max.   :10.282  
        -    HSPC_166         HSPC_168         HSPC_169         HSPC_170     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.002   Median : 1.158   Median : 0.000  
        - Mean   : 2.177   Mean   : 2.390   Mean   : 2.038   Mean   : 2.401  
        - 3rd Qu.: 3.296   3rd Qu.: 4.701   3rd Qu.: 2.232   3rd Qu.: 3.703  
        - Max.   :11.427   Max.   :10.393   Max.   :10.447   Max.   :11.288  
        -    HSPC_171         HSPC_172          HSPC_173         HSPC_174     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.525   Median : 0.7679   Median : 0.000   Median : 1.257  
        - Mean   : 2.312   Mean   : 2.3115   Mean   : 2.288   Mean   : 2.444  
        - 3rd Qu.: 2.729   3rd Qu.: 3.7889   3rd Qu.: 3.037   3rd Qu.: 4.996  
        - Max.   :10.468   Max.   :11.1442   Max.   :11.074   Max.   :11.095  
        -    HSPC_175         HSPC_176         HSPC_177         HSPC_178     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.496   Median : 2.024   Median : 1.971   Median : 1.003  
        - Mean   : 2.613   Mean   : 2.593   Mean   : 2.421   Mean   : 2.277  
        - 3rd Qu.: 4.845   3rd Qu.: 4.092   3rd Qu.: 3.665   3rd Qu.: 2.812  
        - Max.   :11.235   Max.   :10.379   Max.   :10.864   Max.   :10.979  
        -    HSPC_179         HSPC_180         HSPC_181         HSPC_182     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.836   Median : 1.544   Median : 2.030   Median : 0.000  
        - Mean   : 2.205   Mean   : 2.556   Mean   : 2.890   Mean   : 2.363  
        - 3rd Qu.: 2.300   3rd Qu.: 4.798   3rd Qu.: 4.846   3rd Qu.: 3.779  
        - Max.   :11.244   Max.   :10.802   Max.   :10.945   Max.   :10.399  
        -    HSPC_183         HSPC_185         HSPC_186         HSPC_187     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.020   Median : 0.000   Median : 1.606   Median : 0.000  
        - Mean   : 2.242   Mean   : 2.708   Mean   : 2.053   Mean   : 2.360  
        - 3rd Qu.: 2.842   3rd Qu.: 4.855   3rd Qu.: 2.834   3rd Qu.: 3.541  
        - Max.   :10.530   Max.   :11.079   Max.   :11.016   Max.   :10.923  
        -    HSPC_189         HSPC_190         HSPC_191         HSPC_192     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.412  
        - Mean   : 2.120   Mean   : 2.417   Mean   : 2.175   Mean   : 2.192  
        - 3rd Qu.: 2.652   3rd Qu.: 5.226   3rd Qu.: 2.574   3rd Qu.: 2.669  
        - Max.   :11.300   Max.   :11.023   Max.   :11.454   Max.   :10.225  
        -    HSPC_193         HSPC_195          HSPC_196         HSPC_198     
        - Min.   :0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.:0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median :0.9691   Median : 0.9175   Median : 1.379   Median : 1.105  
        - Mean   :2.5448   Mean   : 2.7307   Mean   : 2.327   Mean   : 2.155  
        - 3rd Qu.:5.1191   3rd Qu.: 5.8899   3rd Qu.: 2.625   3rd Qu.: 2.756  
        - Max.   :9.8728   Max.   :10.4757   Max.   :11.319   Max.   :11.405  
        -    HSPC_199         HSPC_200         HSPC_202          HSPC_203     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 1.069   Median : 1.572   Median : 0.8045   Median : 1.311  
        - Mean   : 1.909   Mean   : 2.346   Mean   : 2.1384   Mean   : 2.058  
        - 3rd Qu.: 2.431   3rd Qu.: 2.791   3rd Qu.: 2.0569   3rd Qu.: 2.792  
        - Max.   :11.377   Max.   :11.334   Max.   :11.0516   Max.   :10.852  
        -    HSPC_204         HSPC_205         HSPC_206         HSPC_207      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.342   Median : 1.997   Median : 1.076   Median : 0.9235  
        - Mean   : 2.716   Mean   : 2.520   Mean   : 2.426   Mean   : 2.2974  
        - 3rd Qu.: 5.611   3rd Qu.: 4.244   3rd Qu.: 4.057   3rd Qu.: 2.6736  
        - Max.   :10.269   Max.   :10.817   Max.   :11.866   Max.   :11.4287  
        -    HSPC_208         HSPC_210         HSPC_211         HSPC_212     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 2.263   Median : 1.021   Median : 1.351   Median : 0.000  
        - Mean   : 2.893   Mean   : 2.315   Mean   : 2.425   Mean   : 2.336  
        - 3rd Qu.: 5.014   3rd Qu.: 2.676   3rd Qu.: 3.820   3rd Qu.: 3.443  
        - Max.   :11.375   Max.   :12.208   Max.   :11.360   Max.   :11.808  
        -    HSPC_213         HSPC_214          HSPC_215         HSPC_216      
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.270   Median : 0.9195   Median : 1.653   Median : 0.8022  
        - Mean   : 2.483   Mean   : 2.1976   Mean   : 2.563   Mean   : 2.6010  
        - 3rd Qu.: 4.903   3rd Qu.: 2.7139   3rd Qu.: 4.344   3rd Qu.: 6.0076  
        - Max.   :11.548   Max.   :10.6947   Max.   :10.933   Max.   :11.2119  
        -    HSPC_218         HSPC_219         HSPC_220         HSPC_221     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.027   Median : 0.000   Median : 1.269  
        - Mean   : 2.467   Mean   : 2.291   Mean   : 2.449   Mean   : 2.641  
        - 3rd Qu.: 3.980   3rd Qu.: 2.853   3rd Qu.: 4.486   3rd Qu.: 3.617  
        - Max.   :11.654   Max.   :10.801   Max.   :10.410   Max.   :11.651  
        -    HSPC_222         HSPC_223         HSPC_224         HSPC_225     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.449   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.262   Mean   : 2.271   Mean   : 2.492   Mean   : 2.585  
        - 3rd Qu.: 3.271   3rd Qu.: 3.727   3rd Qu.: 3.769   3rd Qu.: 5.253  
        - Max.   :11.133   Max.   :12.000   Max.   :11.114   Max.   :11.671  
        -    HSPC_227         HSPC_228         HSPC_229         HSPC_230     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 2.484   Median : 0.000  
        - Mean   : 2.492   Mean   : 2.370   Mean   : 2.742   Mean   : 2.586  
        - 3rd Qu.: 3.692   3rd Qu.: 4.488   3rd Qu.: 4.836   3rd Qu.: 5.188  
        - Max.   :10.815   Max.   :10.165   Max.   :11.143   Max.   :10.734  
        -    HSPC_231         HSPC_232         HSPC_233         HSPC_235     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.869   Median : 1.254   Median : 0.000  
        - Mean   : 2.379   Mean   : 2.264   Mean   : 2.531   Mean   : 2.552  
        - 3rd Qu.: 4.787   3rd Qu.: 3.163   3rd Qu.: 3.925   3rd Qu.: 4.389  
        - Max.   :10.790   Max.   :12.098   Max.   :11.533   Max.   :11.765  
        -    HSPC_236         HSPC_237         HSPC_239         HSPC_240     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 2.207   Median : 0.892  
        - Mean   : 2.205   Mean   : 2.457   Mean   : 2.656   Mean   : 2.049  
        - 3rd Qu.: 3.748   3rd Qu.: 3.488   3rd Qu.: 4.904   3rd Qu.: 2.617  
        - Max.   :10.234   Max.   :10.630   Max.   :10.858   Max.   :10.528  
        -    HSPC_243         HSPC_244          HSPC_245         HSPC_246     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.118   Median : 0.7872   Median : 1.459   Median : 1.629  
        - Mean   : 2.311   Mean   : 2.6638   Mean   : 2.360   Mean   : 2.321  
        - 3rd Qu.: 2.574   3rd Qu.: 6.2395   3rd Qu.: 3.000   3rd Qu.: 3.229  
        - Max.   :11.069   Max.   :10.0730   Max.   :11.297   Max.   :11.237  
        -    HSPC_247        HSPC_248          HSPC_249         HSPC_250     
        - Min.   :0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.:0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median :0.000   Median : 0.8453   Median : 0.000   Median : 1.278  
        - Mean   :2.537   Mean   : 2.3719   Mean   : 1.803   Mean   : 2.751  
        - 3rd Qu.:4.687   3rd Qu.: 3.3090   3rd Qu.: 2.335   3rd Qu.: 6.330  
        - Max.   :9.821   Max.   :10.8128   Max.   :10.568   Max.   :11.256  
        -    HSPC_251          HSPC_253         HSPC_254         HSPC_255      
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.9714   Median : 1.265   Median : 0.000   Median : 0.9098  
        - Mean   : 2.5626   Mean   : 2.492   Mean   : 2.177   Mean   : 2.1878  
        - 3rd Qu.: 4.9167   3rd Qu.: 4.185   3rd Qu.: 3.437   3rd Qu.: 2.4313  
        - Max.   :11.1252   Max.   :10.435   Max.   :10.422   Max.   :10.7952  
        -    HSPC_256          HSPC_257         HSPC_258         HSPC_261      
        - Min.   : 0.0000   Min.   : 0.000   Min.   :0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.:0.0000   1st Qu.: 0.0000  
        - Median : 0.8248   Median : 1.241   Median :0.8526   Median : 0.5387  
        - Mean   : 2.1051   Mean   : 2.630   Mean   :2.0295   Mean   : 2.1419  
        - 3rd Qu.: 2.3331   3rd Qu.: 5.646   3rd Qu.:3.0784   3rd Qu.: 1.9352  
        - Max.   :13.0375   Max.   :11.499   Max.   :9.9116   Max.   :11.3247  
        -    HSPC_263         HSPC_264         HSPC_265         HSPC_266     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.538   Median : 1.426   Median : 1.883   Median : 1.839  
        - Mean   : 2.613   Mean   : 2.374   Mean   : 3.177   Mean   : 2.833  
        - 3rd Qu.: 4.485   3rd Qu.: 3.238   3rd Qu.: 5.702   3rd Qu.: 5.801  
        - Max.   :10.571   Max.   :11.136   Max.   :12.436   Max.   :10.338  
        -    HSPC_267          HSPC_268          HSPC_269          HSPC_270      
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 0.9675   Median : 0.7787   Median : 0.8632   Median : 0.9637  
        - Mean   : 2.4910   Mean   : 2.5342   Mean   : 2.4029   Mean   : 2.6899  
        - 3rd Qu.: 3.5345   3rd Qu.: 4.9871   3rd Qu.: 4.3176   3rd Qu.: 5.7266  
        - Max.   :10.0139   Max.   :10.7848   Max.   :11.2689   Max.   :11.1648  
        -    HSPC_271         HSPC_274         HSPC_275          HSPC_276     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 1.352   Median : 1.730   Median : 0.5252   Median : 1.156  
        - Mean   : 2.493   Mean   : 2.382   Mean   : 2.5375   Mean   : 2.485  
        - 3rd Qu.: 4.430   3rd Qu.: 3.360   3rd Qu.: 5.7329   3rd Qu.: 4.623  
        - Max.   :11.636   Max.   :11.165   Max.   :11.6234   Max.   :11.562  
        -    HSPC_278         HSPC_279         HSPC_280         HSPC_281     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.487   Median : 1.608   Median : 2.611  
        - Mean   : 2.161   Mean   : 2.497   Mean   : 2.580   Mean   : 2.737  
        - 3rd Qu.: 2.270   3rd Qu.: 3.813   3rd Qu.: 3.985   3rd Qu.: 4.731  
        - Max.   :11.734   Max.   :10.900   Max.   :11.673   Max.   :10.076  
        -    HSPC_282          HSPC_283         HSPC_285          HSPC_286     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.7021   Median : 1.911   Median : 0.8658   Median : 1.178  
        - Mean   : 2.4272   Mean   : 2.534   Mean   : 2.4868   Mean   : 2.293  
        - 3rd Qu.: 4.1254   3rd Qu.: 3.888   3rd Qu.: 5.3804   3rd Qu.: 2.597  
        - Max.   :11.1094   Max.   :10.258   Max.   :10.5533   Max.   :11.112  
        -    HSPC_287         HSPC_288          HSPC_289         HSPC_290     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.049   Median : 0.8548   Median : 1.953   Median : 1.176  
        - Mean   : 2.775   Mean   : 2.6412   Mean   : 2.925   Mean   : 2.304  
        - 3rd Qu.: 5.476   3rd Qu.: 5.4204   3rd Qu.: 5.613   3rd Qu.: 3.445  
        - Max.   :10.925   Max.   :11.0814   Max.   :10.199   Max.   :11.094  
        -    HSPC_291         HSPC_292         HSPC_293         HSPC_294      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.176   Median : 1.320   Median : 1.077   Median : 0.9161  
        - Mean   : 2.662   Mean   : 2.534   Mean   : 2.538   Mean   : 2.4365  
        - 3rd Qu.: 5.690   3rd Qu.: 4.297   3rd Qu.: 3.458   3rd Qu.: 4.8204  
        - Max.   :12.255   Max.   :11.090   Max.   :10.987   Max.   :10.6135  
        -    HSPC_295        HSPC_296         HSPC_297         HSPC_298     
        - Min.   :0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.:0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median :1.479   Median : 2.157   Median : 2.444   Median : 1.281  
        - Mean   :2.849   Mean   : 2.977   Mean   : 3.062   Mean   : 2.277  
        - 3rd Qu.:5.282   3rd Qu.: 5.006   3rd Qu.: 5.005   3rd Qu.: 2.749  
        - Max.   :9.986   Max.   :10.830   Max.   :11.009   Max.   :10.636  
        -    HSPC_299         HSPC_300         HSPC_301         HSPC_302     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.716   Median : 1.163   Median : 2.235   Median : 2.240  
        - Mean   : 2.597   Mean   : 2.346   Mean   : 2.739   Mean   : 2.890  
        - 3rd Qu.: 3.762   3rd Qu.: 2.876   3rd Qu.: 4.593   3rd Qu.: 4.945  
        - Max.   :11.663   Max.   :11.690   Max.   :10.364   Max.   :10.498  
        -    HSPC_303          HSPC_304          HSPC_305         HSPC_306     
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.8348   Median : 0.9727   Median : 1.152   Median : 1.303  
        - Mean   : 2.3400   Mean   : 2.3710   Mean   : 2.469   Mean   : 2.496  
        - 3rd Qu.: 3.2942   3rd Qu.: 2.9942   3rd Qu.: 3.300   3rd Qu.: 3.015  
        - Max.   :10.3022   Max.   :11.7185   Max.   :11.051   Max.   :11.211  
        -    HSPC_307        HSPC_308         HSPC_309         HSPC_310     
        - Min.   :0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.:0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median :1.976   Median : 1.634   Median : 1.804   Median : 1.743  
        - Mean   :2.873   Mean   : 2.812   Mean   : 2.892   Mean   : 2.874  
        - 3rd Qu.:5.396   3rd Qu.: 5.089   3rd Qu.: 5.165   3rd Qu.: 5.004  
        - Max.   :9.921   Max.   :10.527   Max.   :10.476   Max.   :11.107  
        -    HSPC_312         HSPC_313         HSPC_314         HSPC_315     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.420   Median : 1.592   Median : 1.635   Median : 2.262  
        - Mean   : 2.645   Mean   : 2.637   Mean   : 2.564   Mean   : 2.628  
        - 3rd Qu.: 4.925   3rd Qu.: 4.257   3rd Qu.: 4.297   3rd Qu.: 4.092  
        - Max.   :11.367   Max.   :10.644   Max.   :10.882   Max.   :12.140  
        -    HSPC_317         HSPC_318         HSPC_320         HSPC_321     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 2.335   Median : 1.728   Median : 2.340   Median : 1.835  
        - Mean   : 2.648   Mean   : 2.637   Mean   : 3.064   Mean   : 2.742  
        - 3rd Qu.: 4.103   3rd Qu.: 4.483   3rd Qu.: 5.325   3rd Qu.: 4.340  
        - Max.   :10.933   Max.   :11.712   Max.   :11.589   Max.   :11.695  
        -    HSPC_322          HSPC_323         HSPC_324         HSPC_325     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.9842   Median : 0.989   Median : 1.088   Median : 2.132  
        - Mean   : 2.5948   Mean   : 2.905   Mean   : 2.655   Mean   : 3.091  
        - 3rd Qu.: 3.4619   3rd Qu.: 5.629   3rd Qu.: 3.772   3rd Qu.: 5.191  
        - Max.   :11.9594   Max.   :12.267   Max.   :11.310   Max.   :11.134  
        -    HSPC_326         HSPC_327         HSPC_328         HSPC_329     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.781   Median : 1.085   Median : 1.936   Median : 1.954  
        - Mean   : 3.021   Mean   : 2.838   Mean   : 2.582   Mean   : 3.034  
        - 3rd Qu.: 5.582   3rd Qu.: 6.388   3rd Qu.: 4.048   3rd Qu.: 5.497  
        - Max.   :11.268   Max.   :11.433   Max.   :11.908   Max.   :10.927  
        -    HSPC_330         HSPC_331         HSPC_332         HSPC_333     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.870   Median : 2.953   Median : 1.644   Median : 1.320  
        - Mean   : 2.791   Mean   : 3.058   Mean   : 2.768   Mean   : 2.428  
        - 3rd Qu.: 4.409   3rd Qu.: 5.118   3rd Qu.: 5.141   3rd Qu.: 2.985  
        - Max.   :11.561   Max.   :10.855   Max.   :10.420   Max.   :11.946  
        -    HSPC_334         HSPC_335         HSPC_336         HSPC_337     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.931   Median : 1.541   Median : 2.761   Median : 0.000  
        - Mean   : 2.894   Mean   : 2.746   Mean   : 3.051   Mean   : 2.415  
        - 3rd Qu.: 4.160   3rd Qu.: 4.461   3rd Qu.: 4.408   3rd Qu.: 4.188  
        - Max.   :11.592   Max.   :11.076   Max.   :11.246   Max.   :10.205  
        -    HSPC_338         HSPC_339         HSPC_341          HSPC_342      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.9553   Median : 0.4452  
        - Mean   : 2.205   Mean   : 2.325   Mean   : 2.0823   Mean   : 2.4572  
        - 3rd Qu.: 2.449   3rd Qu.: 3.136   3rd Qu.: 2.0118   3rd Qu.: 4.9582  
        - Max.   :12.052   Max.   :11.858   Max.   :11.3855   Max.   :11.8066  
        -    HSPC_343         HSPC_344         HSPC_345         HSPC_346      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.5197  
        - Mean   : 2.363   Mean   : 2.290   Mean   : 1.984   Mean   : 2.5126  
        - 3rd Qu.: 4.285   3rd Qu.: 3.238   3rd Qu.: 2.561   3rd Qu.: 5.2033  
        - Max.   :11.422   Max.   :11.877   Max.   :10.939   Max.   :11.1527  
        -    HSPC_348         HSPC_349         HSPC_350        HSPC_351     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.00   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.00   1st Qu.: 0.000  
        - Median : 1.113   Median : 0.000   Median : 0.00   Median : 0.000  
        - Mean   : 2.232   Mean   : 1.949   Mean   : 2.11   Mean   : 2.259  
        - 3rd Qu.: 2.875   3rd Qu.: 2.784   3rd Qu.: 3.07   3rd Qu.: 3.214  
        - Max.   :11.161   Max.   :10.720   Max.   :11.15   Max.   :10.912  
        -    HSPC_352         HSPC_353         HSPC_354         HSPC_356     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.333   Mean   : 2.162   Mean   : 2.427   Mean   : 2.135  
        - 3rd Qu.: 3.197   3rd Qu.: 2.819   3rd Qu.: 3.808   3rd Qu.: 2.709  
        - Max.   :12.275   Max.   :11.351   Max.   :11.190   Max.   :10.662  
        -    HSPC_358         HSPC_359         HSPC_360         HSPC_361     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.278   Mean   : 2.012   Mean   : 2.381   Mean   : 2.137  
        - 3rd Qu.: 3.608   3rd Qu.: 1.460   3rd Qu.: 3.044   3rd Qu.: 2.875  
        - Max.   :10.924   Max.   :11.678   Max.   :11.203   Max.   :10.847  
        -    HSPC_362         HSPC_363         HSPC_365         HSPC_367     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 1.783   Mean   : 1.987   Mean   : 2.937   Mean   : 2.449  
        - 3rd Qu.: 1.594   3rd Qu.: 2.750   3rd Qu.: 5.572   3rd Qu.: 3.936  
        - Max.   :11.889   Max.   :10.389   Max.   :12.427   Max.   :11.081  
        -    HSPC_368         HSPC_370          HSPC_371          HSPC_372     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.7971   Median : 0.7613   Median : 0.000  
        - Mean   : 1.877   Mean   : 2.7681   Mean   : 2.4278   Mean   : 2.487  
        - 3rd Qu.: 2.018   3rd Qu.: 6.5358   3rd Qu.: 4.9578   3rd Qu.: 4.226  
        - Max.   :11.523   Max.   :11.9636   Max.   :11.4223   Max.   :11.700  
        -    HSPC_373         HSPC_374        HSPC_376         HSPC_377     
        - Min.   : 0.000   Min.   : 0.00   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.00   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.00   Median : 0.000   Median : 0.000  
        - Mean   : 2.330   Mean   : 2.21   Mean   : 2.625   Mean   : 2.456  
        - 3rd Qu.: 3.784   3rd Qu.: 2.44   3rd Qu.: 4.365   3rd Qu.: 4.875  
        - Max.   :11.672   Max.   :12.04   Max.   :12.011   Max.   :11.282  
        -    HSPC_380         HSPC_382          HSPC_383         HSPC_386     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.9728   Median : 1.753   Median : 0.000  
        - Mean   : 2.291   Mean   : 2.3318   Mean   : 2.307   Mean   : 2.351  
        - 3rd Qu.: 2.403   3rd Qu.: 2.7605   3rd Qu.: 3.113   3rd Qu.: 3.704  
        - Max.   :11.415   Max.   :11.3370   Max.   :11.592   Max.   :11.079  
        -    HSPC_387         HSPC_388          HSPC_389         HSPC_390     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.9037   Median : 0.000   Median : 0.000  
        - Mean   : 2.255   Mean   : 2.4969   Mean   : 2.081   Mean   : 2.131  
        - 3rd Qu.: 3.151   3rd Qu.: 5.3587   3rd Qu.: 2.723   3rd Qu.: 2.738  
        - Max.   :11.700   Max.   :10.9923   Max.   :11.868   Max.   :10.913  
        -    HSPC_391         HSPC_392         HSPC_393         HSPC_395     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.026   Mean   : 2.356   Mean   : 2.063   Mean   : 1.779  
        - 3rd Qu.: 2.126   3rd Qu.: 3.781   3rd Qu.: 2.163   3rd Qu.: 1.924  
        - Max.   :12.021   Max.   :11.370   Max.   :10.530   Max.   :12.219  
        -    HSPC_396         HSPC_398         HSPC_399         HSPC_400     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.164   Mean   : 2.309   Mean   : 1.831   Mean   : 2.091  
        - 3rd Qu.: 2.681   3rd Qu.: 3.994   3rd Qu.: 1.844   3rd Qu.: 2.781  
        - Max.   :11.292   Max.   :11.431   Max.   :11.343   Max.   :10.863  
        -    HSPC_402         HSPC_403        HSPC_404         HSPC_405      
        - Min.   : 0.000   Min.   : 0.00   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.00   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.00   Median : 0.000   Median : 0.5496  
        - Mean   : 2.343   Mean   : 2.06   Mean   : 1.878   Mean   : 2.3660  
        - 3rd Qu.: 4.552   3rd Qu.: 2.45   3rd Qu.: 1.644   3rd Qu.: 2.5449  
        - Max.   :11.444   Max.   :12.00   Max.   :11.188   Max.   :12.2605  
        -    HSPC_406         HSPC_407         HSPC_408          HSPC_409     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.565   Median : 0.5775   Median : 0.000  
        - Mean   : 2.169   Mean   : 2.611   Mean   : 1.9174   Mean   : 2.234  
        - 3rd Qu.: 2.606   3rd Qu.: 6.000   3rd Qu.: 1.3086   3rd Qu.: 3.044  
        - Max.   :10.866   Max.   :11.296   Max.   :12.8185   Max.   :11.595  
        -    HSPC_410         HSPC_411          HSPC_412          HSPC_413     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.9059   Median : 0.6614   Median : 0.000  
        - Mean   : 2.308   Mean   : 3.1194   Mean   : 3.0437   Mean   : 2.433  
        - 3rd Qu.: 4.022   3rd Qu.: 7.7574   3rd Qu.: 7.4695   3rd Qu.: 3.329  
        - Max.   :11.620   Max.   :12.0858   Max.   :11.5582   Max.   :12.549  
        -    HSPC_415         HSPC_416         HSPC_417          HSPC_418     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.7222   Median : 0.000  
        - Mean   : 2.904   Mean   : 2.228   Mean   : 2.4242   Mean   : 2.508  
        - 3rd Qu.: 5.531   3rd Qu.: 3.111   3rd Qu.: 3.0795   3rd Qu.: 3.249  
        - Max.   :12.359   Max.   :11.338   Max.   :12.0314   Max.   :11.857  
        -    HSPC_419          HSPC_420         HSPC_421         HSPC_422     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.6924   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.6246   Mean   : 2.514   Mean   : 2.075   Mean   : 2.552  
        - 3rd Qu.: 4.8156   3rd Qu.: 5.709   3rd Qu.: 3.682   3rd Qu.: 5.382  
        - Max.   :12.0526   Max.   :11.270   Max.   :10.250   Max.   :11.691  
        -    HSPC_423        HSPC_424         HSPC_425         HSPC_426     
        - Min.   : 0.00   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.00   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.00   Median : 0.000   Median : 1.016   Median : 0.000  
        - Mean   : 2.12   Mean   : 2.225   Mean   : 2.658   Mean   : 2.235  
        - 3rd Qu.: 1.55   3rd Qu.: 2.471   3rd Qu.: 6.474   3rd Qu.: 3.134  
        - Max.   :11.56   Max.   :11.734   Max.   :11.303   Max.   :10.888  
        -    HSPC_427         HSPC_431         HSPC_432        HSPC_435     
        - Min.   : 0.000   Min.   : 0.000   Min.   :0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.102   Median :0.000   Median : 1.098  
        - Mean   : 1.829   Mean   : 2.360   Mean   :2.169   Mean   : 2.060  
        - 3rd Qu.: 2.980   3rd Qu.: 3.640   3rd Qu.:3.261   3rd Qu.: 2.744  
        - Max.   :10.517   Max.   :10.533   Max.   :9.911   Max.   :10.677  
        -    HSPC_436          HSPC_440         HSPC_441         HSPC_442     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.4719   Median : 1.385   Median : 1.084   Median : 0.595  
        - Mean   : 2.3880   Mean   : 1.712   Mean   : 2.265   Mean   : 2.109  
        - 3rd Qu.: 4.3738   3rd Qu.: 2.079   3rd Qu.: 2.828   3rd Qu.: 2.193  
        - Max.   :11.2839   Max.   :11.065   Max.   :11.152   Max.   :11.560  
        -    HSPC_443          HSPC_444         HSPC_446         HSPC_447     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.7734   Median : 1.374   Median : 0.000   Median : 1.113  
        - Mean   : 2.5663   Mean   : 2.262   Mean   : 1.475   Mean   : 2.446  
        - 3rd Qu.: 4.9423   3rd Qu.: 2.952   3rd Qu.: 1.683   3rd Qu.: 4.733  
        - Max.   :10.9262   Max.   :10.705   Max.   :10.545   Max.   :10.303  
        -    HSPC_448         HSPC_449         HSPC_450         HSPC_451     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.139   Median : 1.344   Median : 0.000   Median : 1.759  
        - Mean   : 2.396   Mean   : 2.164   Mean   : 1.946   Mean   : 1.806  
        - 3rd Qu.: 3.660   3rd Qu.: 2.490   3rd Qu.: 2.483   3rd Qu.: 2.528  
        - Max.   :11.091   Max.   :11.324   Max.   :10.397   Max.   :10.395  
        -    HSPC_453          HSPC_454          HSPC_455         HSPC_456      
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.9321   Median : 0.5303   Median : 0.000   Median : 0.6497  
        - Mean   : 2.4906   Mean   : 2.4477   Mean   : 2.379   Mean   : 2.4263  
        - 3rd Qu.: 4.9604   3rd Qu.: 4.8773   3rd Qu.: 3.016   3rd Qu.: 5.4740  
        - Max.   :10.5263   Max.   :11.1628   Max.   :11.437   Max.   :10.9787  
        -    HSPC_457         HSPC_459         HSPC_460         HSPC_461     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.313  
        - Mean   : 2.060   Mean   : 2.403   Mean   : 1.712   Mean   : 1.875  
        - 3rd Qu.: 2.937   3rd Qu.: 3.029   3rd Qu.: 1.598   3rd Qu.: 2.104  
        - Max.   :11.746   Max.   :12.135   Max.   :12.526   Max.   :10.210  
        -    HSPC_462         HSPC_463          HSPC_465         HSPC_466      
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.7257   Median : 0.000   Median : 0.5816  
        - Mean   : 2.095   Mean   : 2.2325   Mean   : 2.000   Mean   : 1.9972  
        - 3rd Qu.: 2.578   3rd Qu.: 2.3442   3rd Qu.: 2.633   3rd Qu.: 2.2384  
        - Max.   :11.429   Max.   :11.1776   Max.   :11.064   Max.   :11.5475  
        -    HSPC_467         HSPC_468         HSPC_470         HSPC_471     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.177   Median : 0.649   Median : 0.000   Median : 0.000  
        - Mean   : 1.866   Mean   : 2.130   Mean   : 1.774   Mean   : 2.279  
        - 3rd Qu.: 2.258   3rd Qu.: 2.513   3rd Qu.: 1.931   3rd Qu.: 2.744  
        - Max.   :10.632   Max.   :10.527   Max.   :10.781   Max.   :11.533  
        -    HSPC_472         HSPC_473         HSPC_474         HSPC_475     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.265   Mean   : 2.168   Mean   : 2.016   Mean   : 2.339  
        - 3rd Qu.: 2.982   3rd Qu.: 2.677   3rd Qu.: 2.061   3rd Qu.: 3.319  
        - Max.   :11.795   Max.   :12.071   Max.   :11.732   Max.   :10.672  
        -    HSPC_477          HSPC_478         HSPC_479         HSPC_480     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.6278   Median : 0.000   Median : 1.281   Median : 1.034  
        - Mean   : 1.9910   Mean   : 2.068   Mean   : 2.175   Mean   : 2.239  
        - 3rd Qu.: 1.6695   3rd Qu.: 3.402   3rd Qu.: 3.028   3rd Qu.: 2.642  
        - Max.   :11.1171   Max.   :12.113   Max.   :11.277   Max.   :10.641  
        -    HSPC_482         HSPC_483         HSPC_485          HSPC_486     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.088   Median : 0.6036   Median : 1.411  
        - Mean   : 1.998   Mean   : 2.454   Mean   : 2.3824   Mean   : 2.078  
        - 3rd Qu.: 2.648   3rd Qu.: 3.006   3rd Qu.: 4.8213   3rd Qu.: 2.579  
        - Max.   :13.948   Max.   :10.722   Max.   :11.8691   Max.   :10.155  
        -    HSPC_488         HSPC_489         HSPC_490         HSPC_491     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.310   Median : 0.000  
        - Mean   : 1.809   Mean   : 1.947   Mean   : 2.518   Mean   : 2.268  
        - 3rd Qu.: 2.120   3rd Qu.: 2.330   3rd Qu.: 4.140   3rd Qu.: 3.300  
        - Max.   :11.271   Max.   :11.518   Max.   :11.646   Max.   :10.366  
        -    HSPC_492         HSPC_493         HSPC_494         HSPC_495     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.127   Mean   : 2.054   Mean   : 2.255   Mean   : 2.326  
        - 3rd Qu.: 2.322   3rd Qu.: 3.060   3rd Qu.: 3.386   3rd Qu.: 3.812  
        - Max.   :11.674   Max.   :10.404   Max.   :10.461   Max.   :10.304  
        -    HSPC_496         HSPC_497         HSPC_498          HSPC_499     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.945   Median : 0.5839   Median : 0.000  
        - Mean   : 1.938   Mean   : 2.287   Mean   : 2.3731   Mean   : 2.045  
        - 3rd Qu.: 2.227   3rd Qu.: 2.872   3rd Qu.: 3.6112   3rd Qu.: 2.358  
        - Max.   :11.323   Max.   :11.873   Max.   :11.3264   Max.   :10.632  
        -    HSPC_500         HSPC_501         HSPC_502          HSPC_503      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.9146   Median : 0.7789  
        - Mean   : 2.199   Mean   : 2.209   Mean   : 2.2727   Mean   : 2.4495  
        - 3rd Qu.: 2.678   3rd Qu.: 3.150   3rd Qu.: 2.8888   3rd Qu.: 5.4034  
        - Max.   :11.665   Max.   :10.727   Max.   :11.4591   Max.   :11.5376  
        -    HSPC_504         HSPC_505         HSPC_506         HSPC_507     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.137   Mean   : 2.132   Mean   : 2.017   Mean   : 2.314  
        - 3rd Qu.: 3.035   3rd Qu.: 2.744   3rd Qu.: 2.794   3rd Qu.: 3.175  
        - Max.   :11.625   Max.   :11.385   Max.   :11.467   Max.   :11.232  
        -    HSPC_508          HSPC_509         HSPC_510         HSPC_512     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.2297   Median : 1.691   Median : 1.166   Median : 0.000  
        - Mean   : 1.9265   Mean   : 2.548   Mean   : 2.319   Mean   : 2.482  
        - 3rd Qu.: 0.8975   3rd Qu.: 4.397   3rd Qu.: 3.492   3rd Qu.: 3.753  
        - Max.   :12.0747   Max.   :10.603   Max.   :10.885   Max.   :12.492  
        -    HSPC_514         HSPC_515         HSPC_516          HSPC_518     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.109   Median : 0.8853   Median : 0.000  
        - Mean   : 2.295   Mean   : 2.298   Mean   : 2.5439   Mean   : 2.649  
        - 3rd Qu.: 2.429   3rd Qu.: 2.560   3rd Qu.: 4.6629   3rd Qu.: 5.581  
        - Max.   :11.783   Max.   :12.193   Max.   :12.1718   Max.   :11.838  
        -    HSPC_520         HSPC_521         HSPC_522         HSPC_523      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.3648  
        - Mean   : 2.295   Mean   : 2.348   Mean   : 2.529   Mean   : 1.9471  
        - 3rd Qu.: 2.975   3rd Qu.: 3.375   3rd Qu.: 5.350   3rd Qu.: 1.5726  
        - Max.   :12.289   Max.   :11.712   Max.   :10.364   Max.   :12.5906  
        -    HSPC_524         HSPC_526         HSPC_527         HSPC_528     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.777   Median : 0.532  
        - Mean   : 1.989   Mean   : 2.218   Mean   : 2.133   Mean   : 2.238  
        - 3rd Qu.: 3.267   3rd Qu.: 2.431   3rd Qu.: 1.651   3rd Qu.: 2.095  
        - Max.   :12.105   Max.   :10.870   Max.   :12.017   Max.   :12.183  
        -    HSPC_530         HSPC_532         HSPC_533          HSPC_534     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.7537   Median : 0.000  
        - Mean   : 2.017   Mean   : 1.856   Mean   : 1.7546   Mean   : 2.183  
        - 3rd Qu.: 2.514   3rd Qu.: 1.816   3rd Qu.: 1.3378   3rd Qu.: 2.311  
        - Max.   :11.549   Max.   :11.255   Max.   :11.5862   Max.   :11.696  
        -    HSPC_535         HSPC_537         HSPC_538         HSPC_539     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.122   Mean   : 2.010   Mean   : 2.501   Mean   : 2.463  
        - 3rd Qu.: 2.733   3rd Qu.: 2.541   3rd Qu.: 4.886   3rd Qu.: 4.100  
        - Max.   :10.793   Max.   :10.305   Max.   :11.359   Max.   :11.755  
        -    HSPC_540          HSPC_541         HSPC_543         HSPC_544      
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.9898   Median : 2.362   Median : 0.000   Median : 0.8222  
        - Mean   : 2.1775   Mean   : 2.613   Mean   : 2.275   Mean   : 2.8070  
        - 3rd Qu.: 1.9846   3rd Qu.: 4.440   3rd Qu.: 2.690   3rd Qu.: 6.4209  
        - Max.   :12.2963   Max.   :11.844   Max.   :10.983   Max.   :10.7976  
        -    HSPC_545         HSPC_546         HSPC_547          HSPC_548     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 1.485   Median : 0.000   Median : 0.6548   Median : 1.456  
        - Mean   : 2.215   Mean   : 2.424   Mean   : 2.5255   Mean   : 2.415  
        - 3rd Qu.: 2.677   3rd Qu.: 3.573   3rd Qu.: 2.8714   3rd Qu.: 2.639  
        - Max.   :11.815   Max.   :11.235   Max.   :11.8801   Max.   :11.955  
        -    HSPC_549         HSPC_550         HSPC_551         HSPC_552     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.750   Median : 1.287   Median : 1.226  
        - Mean   : 2.149   Mean   : 2.592   Mean   : 2.680   Mean   : 2.236  
        - 3rd Qu.: 2.289   3rd Qu.: 4.686   3rd Qu.: 4.007   3rd Qu.: 2.669  
        - Max.   :11.827   Max.   :12.064   Max.   :11.874   Max.   :11.581  
        -    HSPC_553          HSPC_554         HSPC_555         HSPC_556      
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.4709   Median : 0.000   Median : 0.000   Median : 0.9369  
        - Mean   : 2.6931   Mean   : 2.090   Mean   : 1.903   Mean   : 2.4784  
        - 3rd Qu.: 6.4420   3rd Qu.: 2.158   3rd Qu.: 2.579   3rd Qu.: 3.4024  
        - Max.   :11.0566   Max.   :11.755   Max.   :11.245   Max.   :11.9838  
        -    HSPC_557         HSPC_559         HSPC_560         HSPC_562     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.681   Median : 0.000  
        - Mean   : 1.972   Mean   : 1.937   Mean   : 2.082   Mean   : 2.470  
        - 3rd Qu.: 1.880   3rd Qu.: 2.411   3rd Qu.: 2.436   3rd Qu.: 4.148  
        - Max.   :11.792   Max.   :11.871   Max.   :11.761   Max.   :11.958  
        -    HSPC_563        HSPC_566         HSPC_567         HSPC_568     
        - Min.   : 0.00   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.00   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.00   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 1.83   Mean   : 2.486   Mean   : 2.186   Mean   : 2.267  
        - 3rd Qu.: 2.29   3rd Qu.: 3.577   3rd Qu.: 2.254   3rd Qu.: 2.957  
        - Max.   :10.59   Max.   :12.452   Max.   :11.302   Max.   :10.851  
        -    HSPC_569         HSPC_571         HSPC_573         HSPC_574      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.771   Median : 1.042   Median : 0.000   Median : 0.7547  
        - Mean   : 2.283   Mean   : 2.213   Mean   : 2.089   Mean   : 2.3196  
        - 3rd Qu.: 3.021   3rd Qu.: 2.879   3rd Qu.: 2.291   3rd Qu.: 5.6078  
        - Max.   :10.720   Max.   :10.939   Max.   :11.397   Max.   :10.4741  
        -    HSPC_575         HSPC_576         HSPC_577         HSPC_578     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.606   Median : 0.000  
        - Mean   : 2.016   Mean   : 2.206   Mean   : 2.358   Mean   : 2.257  
        - 3rd Qu.: 2.267   3rd Qu.: 2.741   3rd Qu.: 3.198   3rd Qu.: 2.923  
        - Max.   :10.687   Max.   :11.201   Max.   :11.613   Max.   :12.323  
        -    HSPC_579         HSPC_580          HSPC_582         HSPC_584     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.182   Median : 0.9442   Median : 0.000   Median : 0.000  
        - Mean   : 2.472   Mean   : 2.4264   Mean   : 2.218   Mean   : 2.276  
        - 3rd Qu.: 5.009   3rd Qu.: 3.5841   3rd Qu.: 3.332   3rd Qu.: 3.067  
        - Max.   :11.096   Max.   :10.6790   Max.   :10.882   Max.   :10.954  
        -    HSPC_585         HSPC_586          HSPC_589         HSPC_590     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.8915   Median : 0.000   Median : 1.192  
        - Mean   : 2.034   Mean   : 2.0490   Mean   : 2.274   Mean   : 2.252  
        - 3rd Qu.: 2.157   3rd Qu.: 1.8340   3rd Qu.: 3.655   3rd Qu.: 2.364  
        - Max.   :11.956   Max.   :11.4729   Max.   :11.198   Max.   :10.673  
        -    HSPC_592         HSPC_593         HSPC_594         HSPC_595     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.228   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.317   Mean   : 2.329   Mean   : 2.474   Mean   : 1.463  
        - 3rd Qu.: 2.671   3rd Qu.: 3.263   3rd Qu.: 4.396   3rd Qu.: 1.757  
        - Max.   :12.036   Max.   :10.626   Max.   :11.347   Max.   :11.286  
        -    HSPC_596         HSPC_597         HSPC_598         HSPC_599     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.392   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.283   Mean   : 1.858   Mean   : 1.954   Mean   : 1.905  
        - 3rd Qu.: 3.425   3rd Qu.: 2.296   3rd Qu.: 2.320   3rd Qu.: 2.497  
        - Max.   :10.899   Max.   :11.002   Max.   :11.117   Max.   :11.248  
        -    HSPC_600         HSPC_601         HSPC_602         HSPC_603     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.662   Median : 0.000  
        - Mean   : 2.335   Mean   : 1.905   Mean   : 2.343   Mean   : 2.281  
        - 3rd Qu.: 3.827   3rd Qu.: 2.376   3rd Qu.: 3.272   3rd Qu.: 3.048  
        - Max.   :11.208   Max.   :11.022   Max.   :10.908   Max.   :11.464  
        -    HSPC_604         HSPC_606         HSPC_607         HSPC_608     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.136   Mean   : 2.392   Mean   : 2.142   Mean   : 2.139  
        - 3rd Qu.: 2.516   3rd Qu.: 4.726   3rd Qu.: 3.187   3rd Qu.: 2.885  
        - Max.   :11.743   Max.   :11.210   Max.   :10.319   Max.   :10.802  
        -    HSPC_610         HSPC_612         HSPC_613         HSPC_614     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.315  
        - Mean   : 2.327   Mean   : 2.298   Mean   : 2.228   Mean   : 2.364  
        - 3rd Qu.: 3.718   3rd Qu.: 3.138   3rd Qu.: 2.705   3rd Qu.: 3.136  
        - Max.   :10.860   Max.   :11.564   Max.   :10.560   Max.   :11.824  
        -    HSPC_615         HSPC_617          HSPC_618         HSPC_620     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.8525   Median : 0.000   Median : 0.000  
        - Mean   : 1.964   Mean   : 2.2100   Mean   : 2.229   Mean   : 1.881  
        - 3rd Qu.: 2.451   3rd Qu.: 2.3301   3rd Qu.: 2.885   3rd Qu.: 2.518  
        - Max.   :11.058   Max.   :10.9434   Max.   :11.210   Max.   :11.388  
        -    HSPC_623         HSPC_624          HSPC_625         HSPC_626     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.7201   Median : 0.000   Median : 0.000  
        - Mean   : 2.563   Mean   : 2.0968   Mean   : 2.042   Mean   : 2.262  
        - 3rd Qu.: 4.626   3rd Qu.: 1.8437   3rd Qu.: 2.938   3rd Qu.: 3.424  
        - Max.   :10.954   Max.   :10.9459   Max.   :11.226   Max.   :11.770  
        -    HSPC_627         HSPC_628         HSPC_629         HSPC_630     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.269   Mean   : 2.302   Mean   : 2.212   Mean   : 2.519  
        - 3rd Qu.: 3.952   3rd Qu.: 2.875   3rd Qu.: 2.625   3rd Qu.: 4.511  
        - Max.   :11.426   Max.   :11.792   Max.   :11.139   Max.   :11.519  
        -    HSPC_631         HSPC_633         HSPC_634         HSPC_635     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.303   Mean   : 2.329   Mean   : 2.268   Mean   : 2.054  
        - 3rd Qu.: 2.685   3rd Qu.: 3.619   3rd Qu.: 3.662   3rd Qu.: 2.629  
        - Max.   :10.996   Max.   :12.011   Max.   :11.406   Max.   :11.178  
        -    HSPC_636         HSPC_637          HSPC_638          HSPC_639      
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.9389   Median : 0.5101   Median : 0.9966  
        - Mean   : 1.953   Mean   : 2.1351   Mean   : 1.6966   Mean   : 1.5879  
        - 3rd Qu.: 2.129   3rd Qu.: 2.4817   3rd Qu.: 1.6879   3rd Qu.: 1.6840  
        - Max.   :11.057   Max.   :11.1881   Max.   :10.8837   Max.   :10.9561  
        -    HSPC_640         HSPC_641         HSPC_643         HSPC_644      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.025   Median : 1.000   Median : 1.706   Median : 0.4904  
        - Mean   : 2.136   Mean   : 1.957   Mean   : 2.468   Mean   : 2.4726  
        - 3rd Qu.: 2.119   3rd Qu.: 2.001   3rd Qu.: 3.329   3rd Qu.: 5.6227  
        - Max.   :11.173   Max.   :11.056   Max.   :12.016   Max.   :11.0232  
        -    HSPC_645          HSPC_646          HSPC_648         HSPC_649      
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.7157   Median : 0.9959   Median : 1.519   Median : 0.7139  
        - Mean   : 2.3517   Mean   : 2.0594   Mean   : 2.267   Mean   : 2.3593  
        - 3rd Qu.: 4.5630   3rd Qu.: 2.3154   3rd Qu.: 2.722   3rd Qu.: 4.1542  
        - Max.   :10.9922   Max.   :11.6070   Max.   :11.243   Max.   :10.7707  
        -    HSPC_651         HSPC_652         HSPC_654         HSPC_656    
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   :0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000  
        - Median : 0.000   Median : 0.000   Median : 1.398   Median :0.000  
        - Mean   : 2.550   Mean   : 1.764   Mean   : 2.108   Mean   :1.983  
        - 3rd Qu.: 5.615   3rd Qu.: 2.038   3rd Qu.: 2.562   3rd Qu.:2.505  
        - Max.   :11.202   Max.   :10.897   Max.   :10.367   Max.   :9.673  
        -    HSPC_657         HSPC_658         HSPC_660        HSPC_661     
        - Min.   : 0.000   Min.   : 0.000   Min.   :0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median :1.253   Median : 1.491  
        - Mean   : 1.839   Mean   : 2.319   Mean   :2.542   Mean   : 2.401  
        - 3rd Qu.: 2.239   3rd Qu.: 4.021   3rd Qu.:5.274   3rd Qu.: 2.775  
        - Max.   :12.132   Max.   :11.264   Max.   :9.852   Max.   :11.647  
        -    HSPC_662         HSPC_663         HSPC_664          HSPC_665      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 0.9407   Median : 0.6452  
        - Mean   : 2.298   Mean   : 2.726   Mean   : 2.4039   Mean   : 2.1211  
        - 3rd Qu.: 2.939   3rd Qu.: 6.519   3rd Qu.: 3.4095   3rd Qu.: 2.0744  
        - Max.   :11.277   Max.   :12.152   Max.   :10.9423   Max.   :12.0111  
        -    HSPC_666         HSPC_667         HSPC_668         HSPC_669     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.130   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.815   Mean   : 2.075   Mean   : 2.245   Mean   : 1.992  
        - 3rd Qu.: 6.359   3rd Qu.: 2.549   3rd Qu.: 2.407   3rd Qu.: 2.426  
        - Max.   :11.052   Max.   :11.406   Max.   :11.061   Max.   :11.752  
        -    HSPC_670         HSPC_671         HSPC_672         HSPC_673     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.336   Mean   : 2.349   Mean   : 2.041   Mean   : 2.148  
        - 3rd Qu.: 3.188   3rd Qu.: 3.777   3rd Qu.: 2.057   3rd Qu.: 2.723  
        - Max.   :11.021   Max.   :10.846   Max.   :11.212   Max.   :11.579  
        -    HSPC_674         HSPC_676         HSPC_678         HSPC_679     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.525   Median : 1.531  
        - Mean   : 1.801   Mean   : 2.239   Mean   : 2.298   Mean   : 2.133  
        - 3rd Qu.: 1.892   3rd Qu.: 3.097   3rd Qu.: 3.089   3rd Qu.: 2.737  
        - Max.   :10.875   Max.   :10.496   Max.   :12.125   Max.   :11.583  
        -    HSPC_680         HSPC_681         HSPC_682         HSPC_683     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.037   Median : 1.043   Median : 1.180  
        - Mean   : 2.573   Mean   : 2.277   Mean   : 2.586   Mean   : 2.498  
        - 3rd Qu.: 4.165   3rd Qu.: 4.210   3rd Qu.: 5.432   3rd Qu.: 3.929  
        - Max.   :11.100   Max.   :10.154   Max.   :11.095   Max.   :10.859  
        -    HSPC_687         HSPC_689         HSPC_690         HSPC_692     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 2.091   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.136   Mean   : 2.489   Mean   : 2.686   Mean   : 2.285  
        - 3rd Qu.: 2.911   3rd Qu.: 4.106   3rd Qu.: 5.055   3rd Qu.: 3.427  
        - Max.   :11.380   Max.   :10.693   Max.   :10.408   Max.   :12.242  
        -    HSPC_695          HSPC_696         HSPC_697         HSPC_698     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.2681   Median : 1.538   Median : 1.271   Median : 0.000  
        - Mean   : 1.6151   Mean   : 2.688   Mean   : 2.529   Mean   : 2.531  
        - 3rd Qu.: 0.6895   3rd Qu.: 5.560   3rd Qu.: 4.779   3rd Qu.: 4.387  
        - Max.   :12.4139   Max.   :10.880   Max.   :10.292   Max.   :12.146  
        -    HSPC_699         HSPC_700         HSPC_701         HSPC_702     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 1.157   Median : 0.000  
        - Mean   : 2.586   Mean   : 2.402   Mean   : 2.401   Mean   : 2.723  
        - 3rd Qu.: 4.595   3rd Qu.: 4.797   3rd Qu.: 3.889   3rd Qu.: 4.822  
        - Max.   :11.389   Max.   :10.630   Max.   :11.750   Max.   :11.805  
        -    HSPC_703         HSPC_704         HSPC_705          HSPC_706     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 2.193   Median : 0.000   Median : 0.9795   Median : 1.273  
        - Mean   : 2.543   Mean   : 2.598   Mean   : 2.5048   Mean   : 2.364  
        - 3rd Qu.: 3.935   3rd Qu.: 4.335   3rd Qu.: 5.0680   3rd Qu.: 3.492  
        - Max.   :11.710   Max.   :11.488   Max.   :11.3580   Max.   :10.447  
        -    HSPC_707         HSPC_708         HSPC_709         HSPC_714     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.361   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.371   Mean   : 2.509   Mean   : 2.601   Mean   : 2.326  
        - 3rd Qu.: 3.626   3rd Qu.: 3.832   3rd Qu.: 5.060   3rd Qu.: 3.324  
        - Max.   :11.796   Max.   :10.865   Max.   :10.145   Max.   :11.126  
        -    HSPC_716         HSPC_717         HSPC_719         HSPC_720      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 1.154   Median : 1.855   Median : 0.8206  
        - Mean   : 2.325   Mean   : 2.302   Mean   : 2.519   Mean   : 2.5768  
        - 3rd Qu.: 3.356   3rd Qu.: 2.833   3rd Qu.: 4.115   3rd Qu.: 5.5594  
        - Max.   :11.812   Max.   :11.047   Max.   :12.237   Max.   :10.5895  
        -    HSPC_721         HSPC_722         HSPC_723          HSPC_724      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 2.113   Median : 1.185   Median : 0.8421   Median : 0.6485  
        - Mean   : 2.205   Mean   : 1.814   Mean   : 2.6174   Mean   : 1.9644  
        - 3rd Qu.: 3.456   3rd Qu.: 2.269   3rd Qu.: 4.9545   3rd Qu.: 1.9402  
        - Max.   :10.706   Max.   :10.709   Max.   :11.5956   Max.   :11.3505  
        -    HSPC_725         HSPC_727         HSPC_729          HSPC_730     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 1.577   Median : 1.576   Median : 0.9579   Median : 1.135  
        - Mean   : 2.483   Mean   : 2.436   Mean   : 2.2448   Mean   : 2.445  
        - 3rd Qu.: 3.741   3rd Qu.: 3.447   3rd Qu.: 2.7343   3rd Qu.: 3.475  
        - Max.   :10.647   Max.   :11.512   Max.   :10.9657   Max.   :11.121  
        -    HSPC_731         HSPC_732          HSPC_733         HSPC_734      
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.130   Median : 0.6937   Median : 1.436   Median : 0.7333  
        - Mean   : 2.854   Mean   : 2.1051   Mean   : 2.489   Mean   : 2.5404  
        - 3rd Qu.: 6.019   3rd Qu.: 2.0311   3rd Qu.: 3.738   3rd Qu.: 5.6282  
        - Max.   :10.471   Max.   :11.0494   Max.   :10.929   Max.   :10.4547  
        -    HSPC_735         HSPC_736          HSPC_737         HSPC_738     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.033   Median : 0.6789   Median : 1.185   Median : 1.514  
        - Mean   : 2.389   Mean   : 2.0224   Mean   : 2.722   Mean   : 2.503  
        - 3rd Qu.: 3.056   3rd Qu.: 2.0017   3rd Qu.: 5.669   3rd Qu.: 3.602  
        - Max.   :10.866   Max.   :11.8100   Max.   :11.076   Max.   :10.473  
        -    HSPC_740         HSPC_742          HSPC_743         HSPC_744     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.8437   Median : 1.122   Median : 1.213  
        - Mean   : 2.506   Mean   : 1.8949   Mean   : 2.028   Mean   : 2.048  
        - 3rd Qu.: 3.794   3rd Qu.: 1.7586   3rd Qu.: 2.840   3rd Qu.: 2.309  
        - Max.   :10.618   Max.   :11.6327   Max.   :10.449   Max.   :10.598  
        -    HSPC_745         HSPC_746         HSPC_747         HSPC_748     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 2.403   Median : 2.184   Median : 0.000   Median : 1.181  
        - Mean   : 2.309   Mean   : 2.153   Mean   : 2.543   Mean   : 2.017  
        - 3rd Qu.: 3.793   3rd Qu.: 3.016   3rd Qu.: 4.751   3rd Qu.: 2.264  
        - Max.   :10.882   Max.   :10.988   Max.   :10.860   Max.   :12.153  
        -    HSPC_749         HSPC_750         HSPC_751         HSPC_752     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.444   Median : 1.030   Median : 1.567   Median : 2.228  
        - Mean   : 2.477   Mean   : 2.370   Mean   : 2.416   Mean   : 2.529  
        - 3rd Qu.: 3.501   3rd Qu.: 3.052   3rd Qu.: 3.435   3rd Qu.: 3.976  
        - Max.   :11.391   Max.   :11.167   Max.   :10.239   Max.   :10.586  
        -    HSPC_753         HSPC_755         HSPC_756         HSPC_757     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.062   Median : 0.740   Median : 1.731   Median : 1.395  
        - Mean   : 2.313   Mean   : 2.102   Mean   : 2.592   Mean   : 2.477  
        - 3rd Qu.: 2.961   3rd Qu.: 2.509   3rd Qu.: 4.107   3rd Qu.: 3.253  
        - Max.   :11.202   Max.   :10.559   Max.   :10.783   Max.   :10.973  
        -    HSPC_758          HSPC_759          HSPC_760         HSPC_761      
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.8648   Median : 0.9415   Median : 1.052   Median : 0.6917  
        - Mean   : 2.6819   Mean   : 2.1274   Mean   : 2.288   Mean   : 2.2992  
        - 3rd Qu.: 4.7233   3rd Qu.: 2.2271   3rd Qu.: 2.404   3rd Qu.: 2.6015  
        - Max.   :11.1096   Max.   :11.2534   Max.   :11.008   Max.   :11.7228  
        -    HSPC_762         HSPC_764         HSPC_765         HSPC_766      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 1.271   Median : 1.784   Median : 2.116   Median : 0.9828  
        - Mean   : 2.242   Mean   : 2.068   Mean   : 2.100   Mean   : 2.1721  
        - 3rd Qu.: 2.734   3rd Qu.: 3.059   3rd Qu.: 2.939   3rd Qu.: 2.6115  
        - Max.   :12.043   Max.   :11.003   Max.   :12.757   Max.   :10.2002  
        -    HSPC_767          HSPC_768         HSPC_769         HSPC_770     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.6646   Median : 1.703   Median : 0.000   Median : 1.760  
        - Mean   : 1.9552   Mean   : 2.365   Mean   : 2.080   Mean   : 2.343  
        - 3rd Qu.: 1.9730   3rd Qu.: 3.325   3rd Qu.: 3.289   3rd Qu.: 3.122  
        - Max.   :11.3033   Max.   :10.958   Max.   :11.176   Max.   :10.497  
        -    HSPC_771         HSPC_772         HSPC_773          HSPC_774      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.0000  
        - Median : 1.178   Median : 1.601   Median : 0.9901   Median : 0.9736  
        - Mean   : 2.527   Mean   : 2.283   Mean   : 1.8628   Mean   : 2.5263  
        - 3rd Qu.: 3.342   3rd Qu.: 2.828   3rd Qu.: 1.9851   3rd Qu.: 5.4694  
        - Max.   :11.156   Max.   :10.625   Max.   :10.7274   Max.   :10.7701  
        -    HSPC_776         HSPC_777         HSPC_778        HSPC_780     
        - Min.   : 0.000   Min.   : 0.000   Min.   :0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.053   Median :1.435   Median : 1.178  
        - Mean   : 2.315   Mean   : 2.110   Mean   :2.130   Mean   : 2.476  
        - 3rd Qu.: 3.788   3rd Qu.: 2.673   3rd Qu.:3.488   3rd Qu.: 3.769  
        - Max.   :11.105   Max.   :11.646   Max.   :9.535   Max.   :11.265  
        -    HSPC_781         HSPC_782         HSPC_783         HSPC_784     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.050  
        - Mean   : 1.911   Mean   : 2.416   Mean   : 2.254   Mean   : 2.175  
        - 3rd Qu.: 2.884   3rd Qu.: 3.872   3rd Qu.: 2.548   3rd Qu.: 2.468  
        - Max.   :11.445   Max.   :10.161   Max.   :10.970   Max.   :10.958  
        -    HSPC_785         HSPC_786         HSPC_787         HSPC_788      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 1.148   Median : 0.000   Median : 0.9386  
        - Mean   : 2.230   Mean   : 2.467   Mean   : 2.100   Mean   : 1.9749  
        - 3rd Qu.: 2.466   3rd Qu.: 3.899   3rd Qu.: 2.991   3rd Qu.: 2.6662  
        - Max.   :11.041   Max.   :11.080   Max.   :10.690   Max.   :11.1078  
        -    HSPC_789         HSPC_790         HSPC_791         HSPC_794     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.181   Median : 1.353   Median : 1.790   Median : 1.113  
        - Mean   : 2.225   Mean   : 2.255   Mean   : 2.699   Mean   : 2.225  
        - 3rd Qu.: 2.876   3rd Qu.: 2.852   3rd Qu.: 4.931   3rd Qu.: 2.768  
        - Max.   :11.245   Max.   :11.558   Max.   :11.104   Max.   :11.118  
        -    HSPC_795          HSPC_796          HSPC_797          HSPC_798     
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.8317   Median : 0.7001   Median : 0.8722   Median : 1.531  
        - Mean   : 2.3985   Mean   : 2.6865   Mean   : 2.6172   Mean   : 2.485  
        - 3rd Qu.: 3.4461   3rd Qu.: 5.6688   3rd Qu.: 5.3078   3rd Qu.: 3.098  
        - Max.   :11.0956   Max.   :11.0829   Max.   :11.4339   Max.   :10.933  
        -    HSPC_799         HSPC_800         HSPC_801         HSPC_802     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 1.033  
        - Mean   : 2.179   Mean   : 2.173   Mean   : 2.427   Mean   : 2.613  
        - 3rd Qu.: 3.517   3rd Qu.: 2.865   3rd Qu.: 4.665   3rd Qu.: 3.780  
        - Max.   :11.666   Max.   :11.263   Max.   :10.905   Max.   :10.864  
        -    HSPC_803         HSPC_804         HSPC_806         HSPC_807      
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.000   Median : 0.000   Median : 2.103   Median : 0.7501  
        - Mean   : 2.395   Mean   : 2.301   Mean   : 2.222   Mean   : 2.2476  
        - 3rd Qu.: 3.883   3rd Qu.: 3.167   3rd Qu.: 3.445   3rd Qu.: 2.3481  
        - Max.   :10.766   Max.   :11.298   Max.   :10.326   Max.   :11.2700  
        -    HSPC_808          HSPC_809         HSPC_810         HSPC_812      
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Median : 0.6619   Median : 1.788   Median : 1.651   Median : 0.8459  
        - Mean   : 2.1677   Mean   : 2.544   Mean   : 2.471   Mean   : 2.2960  
        - 3rd Qu.: 2.5355   3rd Qu.: 3.730   3rd Qu.: 3.662   3rd Qu.: 2.6906  
        - Max.   :10.9302   Max.   :11.791   Max.   :10.829   Max.   :11.5500  
        -    HSPC_813          HSPC_814         HSPC_815          HSPC_816     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.6278   Median : 1.110   Median : 0.9631   Median : 1.346  
        - Mean   : 2.2448   Mean   : 2.762   Mean   : 2.4587   Mean   : 2.341  
        - 3rd Qu.: 2.3066   3rd Qu.: 5.996   3rd Qu.: 3.4228   3rd Qu.: 2.842  
        - Max.   :12.0043   Max.   :10.406   Max.   :11.4527   Max.   :11.151  
        -    HSPC_818          HSPC_819         HSPC_820          HSPC_821     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000  
        - Median : 0.9967   Median : 1.365   Median : 0.8099   Median : 1.382  
        - Mean   : 2.3081   Mean   : 2.426   Mean   : 2.1063   Mean   : 2.532  
        - 3rd Qu.: 2.9942   3rd Qu.: 3.632   3rd Qu.: 2.4643   3rd Qu.: 3.462  
        - Max.   :11.9931   Max.   :10.672   Max.   :11.2412   Max.   :12.126  
        -    HSPC_822         HSPC_824         HSPC_825         HSPC_826     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.387   Median : 0.000   Median : 1.386   Median : 1.324  
        - Mean   : 2.503   Mean   : 2.084   Mean   : 2.162   Mean   : 2.398  
        - 3rd Qu.: 3.799   3rd Qu.: 2.342   3rd Qu.: 2.897   3rd Qu.: 3.150  
        - Max.   :11.892   Max.   :11.365   Max.   :11.498   Max.   :11.198  
        -    HSPC_827         HSPC_828         HSPC_831         HSPC_832     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.746   Median : 1.003   Median : 1.304   Median : 1.035  
        - Mean   : 2.239   Mean   : 2.145   Mean   : 2.589   Mean   : 2.384  
        - 3rd Qu.: 2.638   3rd Qu.: 2.326   3rd Qu.: 3.866   3rd Qu.: 3.450  
        - Max.   :12.101   Max.   :10.710   Max.   :10.839   Max.   :10.686  
        -    HSPC_833          HSPC_834          HSPC_835         HSPC_836     
        - Min.   : 0.0000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.7166   Median : 0.9245   Median : 1.006   Median : 0.000  
        - Mean   : 2.3553   Mean   : 2.0872   Mean   : 2.552   Mean   : 2.471  
        - 3rd Qu.: 3.9364   3rd Qu.: 2.4568   3rd Qu.: 4.034   3rd Qu.: 3.994  
        - Max.   :11.1695   Max.   :11.1803   Max.   :11.779   Max.   :11.316  
        -    HSPC_837         HSPC_838          HSPC_839         HSPC_840     
        - Min.   : 0.000   Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.312   Median : 0.9838   Median : 1.083   Median : 1.867  
        - Mean   : 2.590   Mean   : 2.5281   Mean   : 2.380   Mean   : 2.548  
        - 3rd Qu.: 4.443   3rd Qu.: 3.5551   3rd Qu.: 3.743   3rd Qu.: 3.609  
        - Max.   :10.672   Max.   :11.2707   Max.   :10.966   Max.   :10.867  
        -    HSPC_841         HSPC_842         HSPC_843         HSPC_844     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.439   Median : 1.774   Median : 1.257   Median : 1.584  
        - Mean   : 2.408   Mean   : 2.380   Mean   : 2.845   Mean   : 2.627  
        - 3rd Qu.: 3.494   3rd Qu.: 3.490   3rd Qu.: 6.768   3rd Qu.: 3.951  
        - Max.   :10.930   Max.   :11.137   Max.   :11.933   Max.   :11.446  
        -    HSPC_845         HSPC_846         HSPC_848         HSPC_849     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 1.227   Median : 1.401   Median : 0.000   Median : 1.602  
        - Mean   : 2.464   Mean   : 2.240   Mean   : 2.152   Mean   : 2.402  
        - 3rd Qu.: 3.377   3rd Qu.: 2.920   3rd Qu.: 2.554   3rd Qu.: 2.920  
        - Max.   :10.535   Max.   :11.519   Max.   :11.266   Max.   :11.678  
        -    HSPC_851         HSPC_852     
        - Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000  
        - Mean   : 2.319   Mean   : 2.143  
        - 3rd Qu.: 3.373   3rd Qu.: 2.901  
        - Max.   :11.602   Max.   :11.469  
        -
        -
        -

        Hmmmm, did you get all that? Nope, me neither! We have 701 cells but we only have 6 samples for the frogs. We will need a different approach to get an overview but I find it is still useful to look at the few columns

        -

        🎬 Get a quick overview the first 20 columns:

        -
        -
        summary(hspc[1:20])
        -
        -
         ensembl_gene_id       HSPC_001         HSPC_002         HSPC_003      
        - Length:280         Min.   : 0.000   Min.   : 0.000   Min.   : 0.0000  
        - Class :character   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.0000  
        - Mode  :character   Median : 0.000   Median : 0.000   Median : 0.9929  
        -                    Mean   : 2.143   Mean   : 1.673   Mean   : 2.5964  
        -                    3rd Qu.: 2.120   3rd Qu.: 2.239   3rd Qu.: 6.1559  
        -                    Max.   :12.567   Max.   :11.976   Max.   :11.1138  
        -    HSPC_004         HSPC_006         HSPC_008         HSPC_009    
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   :0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.:0.000  
        - Median : 0.000   Median : 1.276   Median : 0.000   Median :0.000  
        - Mean   : 1.851   Mean   : 2.338   Mean   : 2.375   Mean   :2.220  
        - 3rd Qu.: 2.466   3rd Qu.: 3.536   3rd Qu.: 3.851   3rd Qu.:3.594  
        - Max.   :11.133   Max.   :10.014   Max.   :11.574   Max.   :9.997  
        -    HSPC_011         HSPC_012         HSPC_014         HSPC_015     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 1.750   Median : 0.000   Median : 0.000  
        - Mean   : 2.285   Mean   : 2.431   Mean   : 2.295   Mean   : 2.515  
        - 3rd Qu.: 3.193   3rd Qu.: 3.741   3rd Qu.: 3.150   3rd Qu.: 3.789  
        - Max.   :11.260   Max.   :10.905   Max.   :11.051   Max.   :10.751  
        -    HSPC_016          HSPC_017         HSPC_018         HSPC_020     
        - Min.   : 0.0000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.0000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.9488   Median : 0.000   Median : 1.248   Median : 0.000  
        - Mean   : 2.6115   Mean   : 2.146   Mean   : 2.710   Mean   : 2.509  
        - 3rd Qu.: 5.9412   3rd Qu.: 2.357   3rd Qu.: 6.006   3rd Qu.: 4.470  
        - Max.   :11.3082   Max.   :12.058   Max.   :11.894   Max.   :11.281  
        -    HSPC_021         HSPC_022         HSPC_023         HSPC_024     
        - Min.   : 0.000   Min.   : 0.000   Min.   : 0.000   Min.   : 0.000  
        - 1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000   1st Qu.: 0.000  
        - Median : 0.000   Median : 0.000   Median : 0.000   Median : 0.000  
        - Mean   : 2.170   Mean   : 2.287   Mean   : 2.314   Mean   : 2.195  
        - 3rd Qu.: 2.996   3rd Qu.: 3.351   3rd Qu.: 2.749   3rd Qu.: 2.944  
        - Max.   :10.709   Max.   :11.814   Max.   :12.113   Max.   :11.279  
        -
        -
        -

        Notice that:

        -
          -
        • the maximum value is much less high than for the frogs and has decimals. That is because the mouse data are logged (to base 2) normalised counts, not raw counts as they are in the frog data set.
        • -
        • a minimum value of 0 appears in all 20 columns - perhaps that is true across the whole dataset (or at least common)
        • -
        • at least some of the medians are zeros so there must be quite a lot of zeros
        • -
        • the few columns we can see are roughly similar
        • -
        • it would not be very practical to plot the distributions of values in cell cell using facet_wrap().
        • -
        -

        In this data set, there is even more of an advantage of using the pivot_longer(), group_by() and summarise() approach. We will be able to open the dataframe in the Viewer and make plots to examine whether the distributions are similar across cells.

        -

        🎬 Summarise all the cells:

        -
        -
        hspc_summary_samp <- hspc |>
        -  pivot_longer(cols = -ensembl_gene_id,
        -               names_to = "cell",
        -               values_to = "expr") |>
        -  group_by(cell) |>
        -  summarise(min = min(expr),
        -            lowerq = quantile(expr, 0.25),
        -            mean = mean(expr),
        -            median = median(expr),
        -            sd = sd(expr),
        -            upperq = quantile(expr, 0.75),
        -            max = max(expr),
        -            n_zero = sum(expr == 0))
        -
        -

        Notice that I have used cell as the column name rather than sample and expr (expression) rather than count. I’ve also added the standard deviation.

        -

        🎬 View the hspc_summary_samp dataframe (click on it in the environment).

        -

        All cells have quite a few zeros and the lower quartile is 0 for all cells, i.e., every cell has many genes with zero expression.

        -

        To get a better understanding of the distribution of expressions in cells we can create a ggplot using the pointrange geom. Pointrange puts a dot at the mean and a line between a minimum and a maximum such as +/- one s.d. Not unlike a boxplot, but when you need the boxes too be very narrow!

        -

        🎬 Create a pointrange plot.

        -
        -
        hspc_summary_samp |> 
        -  ggplot(aes(x = cell, y = mean)) +
        -  geom_pointrange(aes(ymin = mean - sd, 
        -                      ymax = mean + sd ),
        -                  size = 0.1)
        -
        -
        -

        -
        -
        -
        -
        -

        You will need to use the Zoom button to pop the plot window out so you can make it as wide as possible

        -

        The things to notice are:

        -
          -
        • the average expression in cells is similar for all cells. This is good to know - if some cells had much lower expression perhaps there is something wrong with them, or their sequencing, and they should be excluded.
        • -
        • the distributions are roughly similar in width too
        • -
        -

        The default order of cell is alphabetical. It can be easier to see these (non-) effects if we order the lines by the size of the mean.

        -

        🎬 Order a pointrange plot with reorder(variable_to_order, order_by).

        -
        -
        hspc_summary_samp |> 
        -  ggplot(aes(x = reorder(cell, mean), y = mean)) +
        -  geom_pointrange(aes(ymin = mean - sd, 
        -                      ymax = mean + sd ),
        -                  size = 0.1)
        -
        -
        -

        -
        -
        -
        -
        -

        reorder() arranges cell in increasing size of mean

        -

        🎬 Write hspc_summary_samp to a file called “hspc_summary_samp.csv”:

        -

        Distribution of values across the genes

        -

        🐸 Frog genes

        -

        There are lots of genes in this dataset therefore we will take the same approach as that we took for the distributions across mouse cells. We will pivot the data to tidy and then summarise the counts for each gene.

        -

        🎬 Summarise the counts for each genes:

        -
        -
        s30_summary_gene <- s30 |>
        -  pivot_longer(cols = -xenbase_gene_id,
        -               names_to = "sample",
        -               values_to = "count") |>
        -  group_by(xenbase_gene_id) |>
        -  summarise(min = min(count),
        -            lowerq = quantile(count, 0.25),
        -            sd = sd(count),
        -            mean = mean(count),
        -            median = median(count),
        -            upperq = quantile(count, 0.75),
        -            max = max(count),
        -            total = sum(count),
        -            n_zero = sum(count == 0))
        -
        -

        I have calculated the values we used before with one addition: the sum of the counts (total).

        +

        We have found the distribution across samples to be like that to the distribution over all. This is good because it means that the samples are fairly consistent with each other. We can now move on to the next step.

        +

        Distribution of values across the genes

        +

        There are lots of genes in this dataset therefore we will take a slightly different approach. We would not want to use plot a distribution for each gene in the same way. Will pivot the data to tidy and then summarise the counts for each gene.

        +

        🎬 Summarise the counts for each gene and save the result as s30_summary_gene. Include the same columns as we had in the by sample summary (s30_summary_samp) and an additional column, total for the total number of counts for each gene.

        🎬 View the s30_summary_gene dataframe.

        Notice that we have:

          @@ -2040,111 +633,81 @@

          Workshop

        • a lot of genes with zero counts in several of the samples
        • some very very low counts.
        -

        These should be filtered out because they are unreliable - or, at the least, uninformative. The goal of our downstream analysis will be to see if there is a significant difference in gene expression between the control and FGF-treated sibling. Since we have only three replicates in each group, having one or two unreliable, missing or zero values, makes such a determination impossible for a particular gene. We will use the total counts and the number of samples with non-zero values to filter our genes later.

        -

        As we have a lot of genes, it is again helpful to plot the mean counts with pointrange to get an overview. We will plot the log of the counts - we saw earlier that logging made it easier to understand the distribution of counts over such a wide range. We will also order the genes from lowest to highest mean count.

        +

        Genes with very low counts should be filtered out because they are unreliable - or, at the least, uninformative. The goal of our downstream analysis will be to see if there is a significant difference in gene expression between the control and FGF-treated sibling. Since we have only three replicates in each group, having one or two unreliable, missing or zero values, makes such a determination impossible for a particular gene. We will use the total counts (total) and the number of samples with non-zero values (n_above_zero) in this dataframe to filter our genes later.

        +

        As we have a lot of genes, it is again helpful to plot the mean counts with geom_pointrange() to get an overview of the distributions. We will again plot the log of the mean counts. We will also order the genes from lowest to highest mean count.

        🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():

        -
        s30_summary_gene |> 
        +
        s30_summary_gene |> 
           ggplot(aes(x = reorder(xenbase_gene_id, mean), y = log10(mean))) +
           geom_pointrange(aes(ymin = log10(mean - sd), 
                               ymax = log10(mean + sd )),
                           size = 0.1)
        -

        +

        -

        (Remember, the warning is expected since we have zeros).

        +

        (Note the warning is expected since we have zero means).

        You can see we also have quite a few genes with means less than 1 (log below zero). Note that the variability between genes (average counts between 0 and 102586) is far greater than between samples (average counts from 260 to 426) which is exactly what we would expect to see.

        -

        🎬 Write s30_summary_gene to a file called “s30_summary_gene.csv”:

        -

        🐭 Mouse genes

        -

        There are fewer genes in this dataset, but still more than you can understand without the overview provided by a plot. We will again pivot the data to tidy and then summarise the expression for each gene.

        -

        🎬 Summarise the expression for each genes:

        -
        -
        hspc_summary_gene <- hspc |>
        -  pivot_longer(cols = -ensembl_gene_id,
        -               names_to = "cell",
        -               values_to = "expr") |>
        -  group_by(ensembl_gene_id) |>
        -  summarise(min = min(expr),
        -            lowerq = quantile(expr, 0.25),
        -            sd = sd(expr),
        -            mean = mean(expr),
        -            median = median(expr),
        -            upperq = quantile(expr, 0.75),
        -            max = max(expr),
        -            total = sum(expr),
        -            n_zero = sum(expr == 0))
        -
        -

        🎬 View the hspc_summary_gene dataframe. Remember these are normalised and logged (base 2) so we should not see very large values.

        -

        Notice that we have:

        -
          -
        • no genes with 0 in every cell
        • -
        • very few genes (9) with no zeros at all
        • -
        • quite a few genes with zero in many cells but this matters less than zeros in the frog samples because we had just 6 samples and we have 701 cells.
        • -
        -

        As we have a lot of genes, it is again helpful to plot the mean expression with pointrange to get an overview. We do not need to log the values but ordering the genes will help.

        -

        🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():

        -
        -
        hspc_summary_gene |> 
        -  ggplot(aes(x = reorder(ensembl_gene_id, mean), y = mean)) +
        -  geom_pointrange(aes(ymin = mean - sd, 
        -                      ymax = mean + sd),
        -                  size = 0.1)
        -
        -
        -

        -
        -
        -
        -
        -

        Note again that the variability between genes (average expression between 0.02 and and 10.03) is far greater than between cells (average expression from1.46 to 3.18) which is expected.

        -

        🎬 Write s30_summary_gene to a file called “s30_summary_gene.csv”:

        -

        Filtering for QC

        -

        🐸 Frog filtering

        -

        Our samples look to be similarly well sequenced. There are no samples we should remove. However, some genes are not express or the expression values are so low in for a gene that they are uninformative. We will filter the s30_summary_gene dataframe to obtain a list of xenbase_gene_id we can use to filter s30.

        -

        My suggestion is to include only the genes with counts in at least 3 samples3 and those with total counts above 20.

        +

        🐭 Stem cells

        +

        Distribution of values across all the data in the file

        +

        Distribution of values across the samples

        +

        Distribution of values across the genes

        +

        🎄 Arabidopsis

        +

        Distribution of values across all the data in the file

        +

        Distribution of values across the samples

        +

        Distribution of values across the genes

        +

        💉 Leishmania

        +

        Distribution of values across all the data in the file

        +

        Distribution of values across the samples

        +

        Distribution of values across the genes

        +

        Filtering for QC

        +

        🐸 Frog development

        +

        Our samples look to be similarly well sequenced. There are no samples we should remove. However, some genes are not expressed or the expression values are so low in for a gene that they are uninformative. We will filter the s30_summary_gene dataframe to obtain a list of xenbase_gene_id we can use to filter s30.

        +

        My suggestion is to include only the genes with counts in at least 3 samples. and those with total counts above 20. I chose 3 because that would keep genes expressed only in one sample: [0, 0, 0] [#,#,#]. This is a difference we cannot test statistically, but which matters biologically.

        🎬 Filter the summary by gene dataframe:

        -
        s30_summary_gene_filtered <- s30_summary_gene |> 
        +
        s30_summary_gene_filtered <- s30_summary_gene |> 
           filter(total > 20) |> 
        -  filter(n_zero < 4)
        -
        -

        🎬 Write the filtered summary by gene to file:

        -
        -
        write_csv(s30_summary_gene_filtered, 
        -          file = "data-processed/s30_summary_gene_filtered.csv")
        + filter(n_above_zero >= 3)
        +

        ❓ How many genes do you have left

        + + +

        🎬 Use the list of xenbase_gene_id in the filtered summary to filter the original dataset:

        -
        s30_filtered <- s30 |> 
        +
        s30_filtered <- s30 |> 
           filter(xenbase_gene_id %in%  s30_summary_gene_filtered$xenbase_gene_id)

        🎬 Write the filtered original to file:

        -
        write_csv(s30_filtered, 
        +
        write_csv(s30_filtered, 
                   file = "data-processed/s30_filtered.csv")
        -

        🐭 Mouse filtering

        +

        🐭 Stem cells

        We will take a different approach to filtering the single cell data. For the Frog samples we are examining the control and the FGF treated samples. This means have a low number of counts overall means the gene is not really expressed (detected) in any condition, and filtering out those genes is removing things that definitely are not interesting. For the mice, we have examined only one cell type but will be making comparisons between cells types. It may be that low expression of a gene in this cell type tells us something if that gene is highly expressed in another cell type. Instead, we will make statistical comparisons between the cell types and then filter based on overall expression, the difference in expression between cell types and whether that difference is significant.

        The number of “replicates” is also important. When you have only three in each group it is not possible to make statistical comparisons when several replicates are zero. This is less of an issue with single cell data.

        -

        🤗 Look after future you!

        -

        You need only do the section for your own project data

        -

        🐸 Frogs and future you

        +

        🎄 Arabidopsis

        +

        💉 Leishmania

        +

        🤗 Look after future you!

        +

        You need only do the section for your own project data but completing this step is important.

        +

        🐸 Frogs and future you

        🎬 Create a new Project, frogs-88H, populated with folders and your data. Make a script file called cont-fgf-s30.R. This will a be commented analysis of the control vs FGF at S30 comparison. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.

        -

        🐭 Mice and future you

        +

        🐭 Mice and future you

        🎬 Create a new Project, mice-88H, populated with folders and your data. Make a script file called hspc-prog.R. This will a be commented analysis of the hspc cells vs the prog cells. At this point you will have only code for the hspc cells. You will build on this each workshop and be able to use it as a template to examine other comparisons. Copy in the appropriate code and comments from workshop-1.R. Edit to improve your comments where your understanding has developed since you made them. Make sure you can close down RStudio, reopen it and run your whole script again.

        -

        🍂 xxxx and future you

        -

        🥳 Finished

        +

        🎄 Arabidopsis and future you

        +

        💉 Leishmania and future you

        +
  • 🥳 Finished

    Well Done!

    Independent study following the workshop

    Consolidate

    The Code file

    These contain all the code needed in the workshop even where it is not visible on the webpage.

    -

    The workshop.qmd file is the file I use to compile the practical. Qmd stands for Quarto markdown. It allows code and ordinary text to be interleaved to produce well-formatted reports including webpages. Right-click on the link and choose Save-As to download. You will be able to open the Qmd file in RStudio. Alternatively, View in Browser. Coding and thinking answers are marked with #---CODING ANSWER--- and #---THINKING ANSWER---

    -

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)

    +

    The workshop.qmd file is the file I use to compile the practical. Qmd stands for Quarto markdown. It allows code and ordinary text to be interleaved to produce well-formatted reports including webpages. Right-click on the link and choose Save-As to download. You will be able to open the Qmd file in RStudio. Alternatively, View in Browser. Coding and thinking answers are marked with #---CODING ANSWER--- and #---THINKING ANSWER---

    +

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)

    @@ -2156,11 +719,20 @@

    Workshop

    R Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
    +
    +Wickham, Hadley. 2014. “Tidy Data.” Journal of Statistical Software, Articles 59 (10): 1–23. https://vita.had.co.nz/papers/tidy-data.pdf. +
    Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
    +
    +Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. +
    +
    +———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/. +
    -Xie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/. +———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
    Zhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra. @@ -2168,8 +740,6 @@

    Workshop

    Footnotes

    1. This a result of the Central limit theorem,one consequence of which is that adding together lots of distributions - whatever distributions they are - will tend to a normal distribution.↩︎

    2. -
    3. This a result of the Central limit theorem,one consequence of which is that adding together lots of distributions - whatever distributions they are - will tend to a normal distribution.↩︎

    4. -
    5. I chose three because that would keep [0, 0, 0] [#,#,#]. This is difference we cannot test statistically, but which would matter biologically.↩︎

    - - - + @@ -305,28 +302,53 @@
  • Session overview
  • -
  • Set up
  • -🐸 Analysis +Set up
  • -🐭 Analysis +Import
  • +
  • +log2 transform the normalised counts + +
  • +
  • +Write the significant genes to file + +
  • +
  • +Principal Component Analysis (PCA) + +
  • +
  • +Visualise all the results with a volcano plot + +
  • +
  • Save you plots
  • +
  • 🐭 Analysis
  • 🤗 Look after future you!
  • 🥳 Finished
  • Independent study following the workshop
  • @@ -337,7 +359,7 @@

    Workshop

    -

    Transcriptomics 3: Visualising and Interpreting

    +

    Transcriptomics 3: Visualising

    @@ -354,7 +376,7 @@

    Workshop

    Published
    -

    18 September, 2024

    +

    2 October, 2024

    @@ -365,20 +387,23 @@

    Workshop

    Introduction

    Session overview

    -

    In the workshop, you will learn how to merge gene information into our results, conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot and heatmap.

    +

    In the workshop, you will learn how to conduct and plot a Principle Component Analysis (PCA) as well as how to create a nicely formatted Volcano plot. You will also save significant genes to file to make it easier to identify genes of interest and perform Gene Ontology (GO) term enrichment analysis.

    +

    import log where needed write sig to file add go terms prep data for pca do pca and plot volcano go term enrichment

    Set up

    -

    Either:

    -

    🎬 Open 🐸 frogs-88H Project and the cont-fgf-s30.R script.

    -

    Or

    -

    🎬 Open 🐭 mice-88H Project and the hspc-prog.R script.

    -

    🎬 Make a new folder figures in the project directory. You can use the New Folder button in the Files pane but here I have used the fs (Hester, Wickham, and Csárdi 2023) package

    -
    -
    fs::dir_create("figures")
    -
    -

    This is where we will save our figure files.

    -

    🎬 Load tidyverse (Wickham et al. 2019) and conflicted (Wickham 2023). You most likely have this code at the top of cont-fgf-s30.R or hspc-prog.R already.

    +

    🐸 Frog development

    +

    🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.

    +

    🎄 Arabidopisis

    +

    🎬 Open the arabi-88H RStudio Project and the wildsuf-wilddef-s30.R script.

    +

    💉 Leishmania mexicana

    +

    🎬 Open the leish-88H RStudio Project and the pro-meta-s30.R script.

    +

    🐭 Stem cells

    +

    🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.

    +

    Everyone

    +

    🎬 Make a new folder figures in the project directory.

    +

    This is where we will save our figure files

    +

    🎬 Load tidyverse (Wickham et al. 2019) and conflicted (Wickham 2023). You most likely have this code at the top of your script already.

    -
    ── Attaching core tidyverse packages ─────────────────────────────────────────────── tidyverse 2.0.0 ──
    @@ -391,88 +416,112 @@ 

    Workshop

    ✖ dplyr::filter() masks stats::filter() ✖ dplyr::lag() masks stats::lag() ℹ Use the conflicted package to force all conflicts to become errors
    +

    I recommend you set the dplyr versions of filter() and select() to use by default

    🎬 Use the dplyr version of filter() by default:

    -
    conflict_prefer("filter", "dplyr")
    +
    -

    🐸 Analysis

    -

    We will carry out several steps

    -
      -
    1. Import data and merge statistical results with normalised values
    2. -
    3. Add gene information from Xenbase (Fisher et al. 2023) -
    4. -
    5. log2 transform the data
    6. -
    7. Write the significant genes to file
    8. -
    9. View the relationship between samples using PCA
    10. -
    11. Visualise the expression of the most significant genes using a heatmap
    12. -
    13. Visual all the results with a volcano plot
    14. -
    -

    Import

    -

    We need to import both the normalised counts and the statistical results. We will need all of these for the visualisation and interpretation.

    -

    🎬 Import files saved from last week from the results folder: S30_normalised_counts.csv and S30_results.csv. I used the names s30_count_norm and s30_results for the dataframes.

    +

    Import

    +

    Everyone

    +

    🎬 Import your results data. This should be a file in the results folder called xxxx_results.csv where xxxx indicates the comparison you made.

    🎬 Remind yourself what is in the rows and columns and the structure of the dataframes (perhaps using glimpse())

    - - - - - - - - + + + + + + + - - - -

    It is useful to have this information in a single dataframe to which we will add the gene information from xenbase. Having all the information together will make it easier to interpret the results and select genes of interest.

    -

    🎬 Merge the two dataframes:

    -
    -
    # merge the results with the normalised counts
    -s30_results <- s30_count_norm |>
    -  left_join(s30_results, by = "xenbase_gene_id")
    -
    -

    This means you have the counts for each sample along with the statistical results for each gene.

    -

    🎬 Import the metadata that maps the sample names to treatments:

    -
    -
    # Import metadata that maps the sample names to treatments
    -meta <- read_table("meta/frog_meta_data.txt")
    -row.names(meta) <- meta$sample_id
    -# We only need the s30
    -meta_s30 <- meta |>
    -  dplyr::filter(stage == "stage_30")
    -
    -

    log2 transform the data

    + + +

    When we do PCA we will want to label the samples with their treatment for figures. This labelling information is most easily added using the metadata. You will need to select only the samples for the comparison that was made in the results file. You may need to refer back to the Week 4 Statistical Analysis workshop to remind yourself how to import and select the metadata you need

    +

    🎬 Import the metadata that maps the sample names to treatments. Remember to select only the samples for comparison that was made.

    +

    log2 transform the normalised counts

    We use the normalised counts for data visualisations so that the comparisons are meaningful. Since the fold changes are given is log2 it is useful to log2 transform the normalised counts too. We will add columns to the dataframe with these transformed values. Since we have some counts of 0 we will add a tiny amount to avoid -Inf values.

    -

    🎬 log2 transform the normalised counts:

    +

    log2 transformation would be applied to one column like this:

    +
    +
    # DO NOT DO
    +# log2 transform the counts plus a tiny amount to avoid log(0)
    +dataframe <- dataframe |>
    +  mutate(log2_mycolumn = log2(mycolumn + 0.001))
    +
    +

    We are going to use a wonderful bit of R wizardry to apply a transformation to multiple columns. This is the across() function which has three arguments:

    +
    across(.cols, .fns, .names)
    +

    where:

    +
      +
    • +.cols is the selection of columns to transform
    • +
    • +.fns is the function we want to apply to the selected columns
    • +
    • +.names is the naming convention for the new columns
    • +
    +

    The general form of the code you need is:

    -
    # log2 transform the counts plus a tiny amount to avoid log(0)
    -s30_results <- s30_results |>
    -  mutate(across(starts_with("s30"), 
    +
    # DO NOT DO
    +# log2 transform the counts plus a tiny amount to avoid log(0)
    +xxxx_results <- xxxx_results |>
    +  mutate(across(starts_with("pattern"), 
                     \(x) log2(x + 0.001),
                     .names = "log2_{.col}"))
    -

    This is a wonderful bit or R wizardry. We are using the across() function to apply a transformation to multiple columns. We have selected all the columns that start with s30. The \(x) is an “anonymous” function that takes the value of the column and adds 0.001 to it before applying the log2() function. The .names = "log2_{.col}" argument tells across() to name the new columns with the prefix log2_ followed by the original column name. You can read more about across() and anonymous functions from my posit::conf(2023) workshop

    -

    I recommend viewing the dataframe to see the new columns.

    -

    We now have dataframe with all the information we need: normalised counts, log2 normalised counts, statistical comparisons with fold changes and p values, and information about the gene other than just the id.

    -

    Write the significant genes to file

    -

    We will create dataframe of the significant genes and write them to file. These are the files you want to examine in more detail along with the visualisations to select your genes of interest.

    -

    🎬 Create a dataframe of the genes significant at the 0.01 level:

    +

    where:

    +
      +
    • +xxxx_results is the name of the dataframe of results
    • +
    • +pattern matches the starting letters for all of the normalised counts so that starts_with("pattern") gives the selection of columns to transform
    • +
    • the bit after the \(x) is the function we want to apply to the selected columns
    • +
    • the \(x) means it is an “anonymous” function which means we don’t have to define a function name.
    • +
    • +"log2_{.col}" means the columns will have the same name (in the .col) but with the prefix log2_ added.
    • +
    +

    You can read more about across() and anonymous functions from my posit::conf(2024) workshop

    +

    🐸 Frog, 🎄 Arab and 💉 Leish

    +

    🎬 Design the code to log2 transform the normalised counts using the template given

    +

    I recommend viewing the dataframe to see the new columns. Check you have the expected number of columns.

    +

    🐭 Stem cells

    +

    do not because the data is already log2 transformed.

    +

    Everyone

    +

    We now all have dataframes with all the information we need: normalised counts, log2 normalised counts, statistical comparisons with fold changes and p-values, and information about the gene.

    +

    Write the significant genes to file

    +

    Everyone

    +

    We will create dataframe of the significant genes and write them to file. This is subset from the results file but will make it a little easier to examine and select genes of interest.

    +

    The general form of the code you need is:

    -
    s30_results_sig0.01 <- s30_results |> 
    -  filter(padj <= 0.01)
    +
    # DO NOT DO
    +# create a dataframe of genes significant at 0.05 level
    +xxxx_results_sig0.05 <- xxxx_results |> 
    +  filter(padj <= 0.05)
    -

    🎬 Write the dataframe to file

    -

    🎬 Create a dataframe of the genes significant at the 0.05 level and write to file:

    +

    Note that you determine the significance level using the adjusted p-values (padj or FDR) rather than the uncorrected p-values.

    +

    🎬 Create a dataframe of the genes significant at the 0.05 level.

    ❓How many genes are significant at the 0.01 and 0.05 levels?

    - - -

    View the relationship between samples using PCA

    -

    We have 10,136 genes in our dataset. PCA will allow us to plot our samples in the “gene expression” space so we can see if FGF-treated sample cluster together and control samples cluster together as we would expect. We do this on the log2 transformed normalised counts.

    -

    Our data have genes in rows and samples in columns which is a common organisation for gene expression data. However, PCA expects samples in rows and genes, the variables, in columns. We can transpose the data to get it in the correct format.

    + + + + + +

    🎬 Write the dataframe to a csv file. I recommend using the same file name as you used for the dataframe.

    +

    Principal Component Analysis (PCA)

    +

    We have many genes in our datasets. PCA will allow us to plot our samples in the “gene expression” space so we can see if replicates with the same treatment cluster together as we would expect. PCA is a dimension reduction technique that finds the directions of maximum variance in the data. We are doing PCA after our statistical analysis but often it is one of the first techniques used to explore the data. If we do not see treatment effects in a PCA plot then we are not likely to see them in the statistical analysis. PCA can also help you identify any outlier replicates. The PCA is best conducted on the normalised counts or the log2 transformed normalised counts. We will use the log2 transformed normalised counts.

    +

    We will carry out the following steps to do the PCA:

    +
      +
    • Select the log2 transformed normalised counts. You can only use numerical data in PCA.
    • +
    • Transpose our data. We have genes in rows and samples in columns (this is common for gene expression data). However, to treatment the genes as variables, PCA expects samples in rows and genes in columns.
    • +
    • Add the gene names as column names in the transposed data
    • +
    • Perform the PCA
    • +
    • Extract the scores on the first two principal components and label the data
    • +
    • Plot the the first two principal components as a scatter plot
    • +
    +

    🐸 Frog development

    🎬 Transpose the log2 transformed normalised counts:

    -
    s30_log2_trans <- s30_results |> 
    +
    s30_log2_trans <- s30_results |> 
       select(starts_with("log2_")) |>
       t() |> 
       data.frame()
    @@ -480,16 +529,16 @@

    Workshop

    We have used the select() function to select all the columns that start with log2_. We then use the t() function to transpose the dataframe. We then convert the resulting matrix to a dataframe using data.frame(). If you view that dataframe you’ll see it has default column name which we can fix using colnames() to set the column names to the Xenbase gene ids.

    🎬 Set the column names to the Xenbase gene ids:

    -
    colnames(s30_log2_trans) <- s30_results$xenbase_gene_id
    +
    colnames(s30_log2_trans) <- s30_results$xenbase_gene_id

    🎬 Perform PCA on the log2 transformed normalised counts:

    -
    pca <- s30_log2_trans |>
    +
    pca <- s30_log2_trans |>
       prcomp(rank. = 4) 

    The rank. argument tells prcomp() to only calculate the first 4 principal components. This is useful for visualisation as we can only plot in 2 or 3 dimensions. We can see the results of the PCA by viewing the summary() of the pca object.

    -
    summary(pca)
    +
    summary(pca)
    Importance of first k=4 (out of 6) components:
                                PC1     PC2     PC3     PC4
    @@ -498,23 +547,26 @@ 

    Workshop

    Cumulative Proportion 0.4243 0.6562 0.8095 0.9116
    -

    The Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.4243 of the variance, the second 0.2320, and the third 0.1532. Together the first three components explain nearly 81% of the total variance in the data. Plotting PC1 against PC2 will capture about 66% of the variance which is likely much better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 score from the pca object and add labels for the samples.

    -

    🎬 Remove log2 from the row names:

    +

    The Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.4243 of the variance, the second 0.2320, and the third 0.1532. Together the first three components explain nearly 81% of the total variance in the data. Plotting PC1 against PC2 will capture about 66% of the variance which is likely very much better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 “scores” from the PCA object and add labels for the samples. Those labels will come from the row names of the transformed data which has the sample ids and from the metadata.

    +

    🎬 Create a vector of the sample ids from the row names. These include the log2 prefix which we can removed for labelling:

    -
    sample_id <- row.names(s30_log2_trans) |> str_remove("log2_")
    +
    sample_id <- row.names(s30_log2_trans) |> str_remove("log2_")
    -

    🎬 Create a dataframe of the PC1 and PC2 scores which are in pca$x and add the sample ids:

    +

    You might want to check the result.

    +

    Now we will extract the PC1 and PC2 scores from the PCA object and add. Our PCA object is called pca and the scores are in pca$x. We will create a dataframe of the scores and add the sample ids.

    +

    🎬 Create a dataframe of PC1 and PC2 scores and add the sample ids:

    -
    pca_labelled <- data.frame(pca$x,
    +
    pca_labelled <- data.frame(pca$x,
                                sample_id)

    🎬 Merge with the metadata so we can label points by treatment and sibling pair:

    -
    pca_labelled <- pca_labelled |> 
    +
    pca_labelled <- pca_labelled |> 
       left_join(meta_s30, 
                 by = "sample_id")
    -

    Since the metadata contained the sample ids, it was especially important to remove the log2_ from the row names so that the join would work. The dataframe should look like this:

    +

    Since the metadata contained the sample ids, it was especially important to remove the log2_ from the row names so that the join would work.

    +

    The dataframe should look like this:

    @@ -544,151 +596,194 @@

    Workshop

    - + - + - + - + - + - + - + - + - + - + - + - +
    0.814699 -60.728327 -5.820669S30_C_5S30_C_1 stage_30 controlfiveone
    -67.02571 25.668563 51.476835 28.480254S30_C_6S30_C_2 stage_30 controlsixtwo
    -14.02772 -78.474054 15.282058 -9.213076S30_C_AS30_C_3 stage_30 controlAthree
    47.60726 49.035510 -19.288753 20.928290S30_F_5S30_F_1 stage_30 FGFfiveone
    26.04954 32.914201 20.206072 -55.752818S30_F_6S30_F_2 stage_30 FGFsixtwo
    83.78054 -29.958919 -6.947884 21.378020S30_F_AS30_F_3 stage_30 FGFAthree
    -

    🎬 Plot PC1 against PC2 and colour by sibling pair and shape by treatment:

    +

    The next task is to plot PC2 against PC1 and colour by sibling pair. This is just a scatterplot so we can use geom_point(). We will use colour to indicate the sibling pair and shape to indicate the treatment.

    +

    🎬 Plot PC2 against PC1 and colour by sibling pair and shape by treatment:

    -
    pca <- pca_labelled |> 
    +
    pca_labelled |> 
    +  ggplot(aes(x = PC1, y = PC2, 
    +             colour = sibling_rep,
    +             shape = treatment)) +
    +  geom_point(size = 3) +
    +  theme_classic()
    +
    +
    +

    +
    +
    +
    +
    +

    There is a good separation between treatments on PCA1. The sibling pairs do not seem to cluster together. You can also try plotting PC3 or PC4.

    +

    I prefer to customise the colours and shapes. I especially like the
    +viridis colour scales which provide colour scales that are perceptually uniform in both colour and black-and-white. They are also designed to be perceived by viewers with common forms of colour blindness. See Introduction to viridis for more information.

    +

    ggplot provides functions to access the viridis scales. Here I use scale_fill_viridis_d(). The d stands for discrete. The function scale_fill_viridis_c() would be used for continuous data. I’ve used the default “viridis” (or “D”) option (do ?scale_fill_viridis_d for all the options) and used the begin and end arguments to control the range of colour - I have set the range to be from 0.15 to 0.95 the avoid the strongest contrast. I have also set the name argument to provide a label for the legend.

    +

    I have used scale_shape_manual() to set the shapes for the treatments. I have used the values 21 and 19 which are the codes for filled and open circles and filled triangles. I have set the name argument to NULL to remove the label (it’s obvious what that categories are treatments) and the labels argument to improve the legend.

    +

    🎬 Plot PC2 against PC1 and colour by sibling pair and shape by treatment:

    +
    +
    pca_labelled |> 
       ggplot(aes(x = PC1, y = PC2, 
                  colour = sibling_rep,
                  shape = treatment)) +
       geom_point(size = 3) +
       scale_colour_viridis_d(end = 0.95, begin = 0.15,
    -                         name = "Sibling pair",
    -                         labels = c("A", ".5", ".6")) +
    +                         name = "Sibling pair") +
       scale_shape_manual(values = c(21, 19),
                          name = NULL,
                          labels = c("Control", "FGF-Treated")) +
    -  theme_classic()
    -pca
    + theme_classic()
    -

    +

    -

    There is a good separation between treatments on PCA1. The sibling pairs do not seem to cluster together.

    -

    🎬 Save the plot to file:

    +

    🎄 Arabidopsis

    +

    💉 Leishmainia mexicana

    +

    🐭 Stem cells

    +

    Visualise all the results with a volcano plot

    +

    A volcano plot is a scatterplot that shows statistical significance (p-value) versus magnitude of change (fold change). As the independent study explained, we plot -log10(adjusted p-value) on the y-axis so that the most significant genes are uppermost.

    +

    🐸 Frog development

    +

    We will add a column to the results dataframe that contains the -log10(padj). You could perform this transformation within the plot command without adding a column to the data if you prefer.

    +

    🎬 Add a column to the results dataframe that contains the -log10(padj):

    -
    ggsave("figures/frog-s30-pca.png",
    -       plot = pca,
    -       height = 3, 
    -       width = 4,
    -       units = "in",
    -       device = "png")
    +
    s30_results <- s30_results |> 
    +  mutate(log10_padj = -log10(padj)) 
    -

    Visualise the expression of the most significant genes using a heatmap

    -

    A heatmap is a common way to visualise gene expression data. Often people will create heatmaps with thousands of genes but it can be more informative to use a subset along with clustering methods. We will use the genes which are significant at the 0.01 level.

    -

    We are going to create an interactive heatmap with the heatmaply (Galili et al. 2017) package. heatmaply takes a matrix as input so we need to convert a dataframe of the log2 values to a matrix. We will also set the rownames to the Xenbase gene symbols.

    -

    🎬 Convert a dataframe of the log2 values to a matrix:

    +

    🎬 Create a volcano plot of the results:

    -
    mat <- s30_results_sig0.01 |> 
    -  select(starts_with("log2_")) |>
    -  as.matrix()
    +
    s30_results |> 
    +  ggplot(aes(x = log2FoldChange, 
    +             y = log10_padj)) +
    +  geom_point() +
    +  geom_hline(yintercept = -log10(0.05), 
    +             linetype = "dashed") +
    +  geom_vline(xintercept = 2, 
    +             linetype = "dashed") +
    +  geom_vline(xintercept = -2, 
    +             linetype = "dashed") +
    +  scale_x_continuous(expand = c(0, 0)) +
    +  scale_y_continuous(expand = c(0, 0)) +
    +  theme_classic() +
    +  theme(legend.position = "none")
    +
    +
    +

    +
    -

    🎬 Set the rownames to the Xenbase gene symbols:

    -
    -
    rownames(mat) <- s30_results_sig0.01$xenbase_gene_symbol
    -

    You might want to view the matrix by clicking on it in the environment pane.

    -

    🎬 Load the heatmaply package:

    - -

    We need to tell the clustering algorithm how many clusters to create. We will set the number of clusters for the treatments to be 2 and the number of clusters for the genes to be the same since it makes sense to see what clusters of genes correlate with the treatments.

    -

    🎬 Set the number of clusters for the treatments and genes:

    +

    Our dashed lines are at -log10(0.05) and log2(2) and log2(-2) to make more clear which genes (points) are significantly different between the control and the FGF-treated samples and have a fold change of at least 2.

    +

    In most cases, people colour the points to show that the quadrants. I like to add columns to the dataframe to indicate if the gene is significant and if the fold change is large and use those variables in the plot.

    +

    🎬 Add columns to the results dataframe to indicate if the gene is significant and if the fold change is large:

    -
    n_treatment_clusters <- 2
    -n_gene_clusters <- 2
    +
    s30_results <- s30_results |> 
    +  mutate(sig = padj <= 0.05,
    +         bigfc = abs(log2FoldChange) >= 2) 
    -

    🎬 Create the heatmap:

    +

    The use of abs() (absolute) means genes with a fold change of at least 2 in either direction will be considered to have a large fold change.

    +

    Now we can colour the points by these new columns. I use interaction() to create four categories:

    +
      +
    • not significant and not large fold change (FF)
    • +
    • significant and not large fold change (TF)
    • +
    • not significant and large fold (FT)
    • +
    • significant and large fold change (TT)
    • +
    +

    And I use scale_colour_manual() to set the colours for these categories.

    +

    🎬 Create a volcano plot of the results with the points coloured by significance and fold change:

    -
    heatmaply(mat, 
    -          scale = "row",
    -          k_col = n_treatment_clusters,
    -          k_row = n_gene_clusters,
    -          fontsize_row = 7, fontsize_col = 10,
    -          labCol = str_remove(colnames(mat), pattern = "log2_"),
    -          labRow = rownames(mat),
    -          heatmap_layers = theme(axis.line = element_blank()))
    +
    s30_results |> 
    +  ggplot(aes(x = log2FoldChange, 
    +             y = log10_padj, 
    +             colour = interaction(sig, bigfc))) +
    +  geom_point() +
    +  geom_hline(yintercept = -log10(0.05), 
    +             linetype = "dashed") +
    +  geom_vline(xintercept = 2, 
    +             linetype = "dashed") +
    +  geom_vline(xintercept = -2, 
    +             linetype = "dashed") +
    +  scale_x_continuous(expand = c(0, 0)) +
    +  scale_y_continuous(expand = c(0, 0)) +
    +  scale_colour_manual(values = c("gray", 
    +                                 "pink",
    +                                 "gray30",
    +                                 "deeppink")) +
    +  theme_classic() +
    +  theme(legend.position = "none")
    -
    - +
    +

    +
    -

    On the vertical axis are genes which are differentially expressed at the 0.01 level. On the horizontal axis are samples. We can see that the FGF-treated samples cluster together and the control samples cluster together. We can also see two clusters of genes; one of these shows genes upregulated (more yellow) in the FGF-treated samples (the pink cluster) and the other shows genes down regulated (more blue, the blue cluster) in the FGF-treated samples.

    -

    The heatmap will open in the viewer pane (rather than the plot pane) because it is html. You can “Show in a new window” to see it in a larger format. You can also zoom in and out and pan around the heatmap and download it as a png. You might feel the colour bars is not adding much to the plot. You can remove it by setting hide_colorbar = TRUE, in the heatmaply() function.

    -

    Visualise all the results with a volcano plot

    -

    colour the points if padj < 0.05 and log2FoldChange > 1

    - +

    For exploring the data, I like add labels to all the significant genes with a large fold change so I can very quickly identity them. The ggrepel package has a function geom_text_repel() that is useful for adding labels so that they don’t overlap.

    +

    🎬 Load the package:

    -
    s30_results <- s30_results |> 
    -  mutate(log10_padj = -log10(padj),
    -         sig = padj < 0.05,
    -         bigfc = abs(log2FoldChange) >= 2) 
    +
    +

    🎬 Add labels to the significant genes with a large fold change:

    -
    vol <- s30_results |> 
    +
    s30_results |> 
       ggplot(aes(x = log2FoldChange, 
                  y = log10_padj, 
                  colour = interaction(sig, bigfc))) +
    @@ -705,224 +800,29 @@ 

    Workshop

    "pink", "gray30", "deeppink")) + - geom_text_repel(data = subset(s30_results, - bigfc & sig), + geom_text_repel(data = s30_results |> + filter(bigfc == TRUE, sig == TRUE), aes(label = xenbase_gene_symbol), size = 3, max.overlaps = 50) + theme_classic() + - theme(legend.position = "none") -vol
    -
    -
    Error in `geom_text_repel()`:
    -! Problem while computing aesthetics.
    -ℹ Error occurred in the 5th layer.
    -Caused by error:
    -! object 'xenbase_gene_symbol' not found
    -
    -
    -
    -
    ggsave("figures/frog-s30-volcano.png",
    -       plot = vol,
    -       height = 4.5, 
    -       width = 4.5,
    -       units = "in",
    -       device = "png")
    -
    -
    Error in `geom_text_repel()`:
    -! Problem while computing aesthetics.
    -ℹ Error occurred in the 5th layer.
    -Caused by error:
    -! object 'xenbase_gene_symbol' not found
    -
    -
    -

    🐭 Analysis

    -

    We will carry out several steps

    -
      -
    1. Import data and merge statistical results with normalised values
    2. -
    3. Add gene information from the NCBI using biomaRt
    4. -
    5. Write the significant genes to file
    6. -
    7. View the relationship between cells using PCA
    8. -
    9. Visualise the expression of the most significant genes using a heatmap
    10. -
    11. Visual all the results with a volcano plot
    12. -
    -

    Import

    -

    We need to import both the normalised counts and the statistical results. We will need all of these for the visualisation and interpretation.

    -

    🎬 Import the normalised counts for the Prog and HSPC cell types. I used the names prog and hspc for the dataframes.

    -

    🎬 Combine the two dataframes (minus one set of gene ids) into one dataframe called prog_hspc:

    -
    -
    # combine into one dataframe dropping one of the gene id columns
    -prog_hspc <- bind_cols(prog, hspc[-1])
    -
    -

    🎬 Import the statistical results in results/prog_hspc_results.csv. I used the name prog_hspc_results for the dataframe.

    -

    🎬 Remind yourself what is in the rows and columns and the structure of the dataframe (perhaps using glimpse())

    - - - - - - -

    It is useful to have this information in a single dataframe to which we will add the gene information from Ensembl Having all the information together will make it easier to interpret the results and select genes of interest.

    -

    🎬 Merge the two dataframes:

    -
    -
    # merge stats results with normalise values
    -prog_hspc_results <- prog_hspc_results |> 
    -  left_join(prog_hspc, by = "ensembl_gene_id")
    -
    -

    This means you have the counts for each sample along with the statistical results for each gene.

    -

    Write the significant genes to file

    -

    We will create dateframe of the signifcant genes and write them to file. These are the files you want to examine in more detail along with the visualisations to select your genes of interest.

    -

    🎬 Create a dataframe of the genes significant at the 0.01 level:

    -
    -
    prog_hspc_results_sig0.01 <- prog_hspc_results |> 
    -  filter(FDR <= 0.01)
    -
    -

    🎬 Write the dataframe to file

    -

    🎬 Create a dataframe of the genes significant at the 0.05 level and write to file:

    -

    ❓How many genes are significant at the 0.01 and 0.05 levels?

    - - - -

    View the relationship between cells using PCA

    -

    We have 280 genes in our dataset. PCA will allow us to plot our cells in the “gene expression” space so we can see if Prog cells cluster together and HSPC cells cluster together as we would expect. We do this on the log2 transformed normalised counts.

    -

    Our data have genes in rows and samples in columns which is a common organisation for gene expression data. However, PCA expects cells in rows and genes, the variables, in columns. We can transpose the data to get it in the correct format.

    -

    🎬 Transpose the log2 transformed normalised counts:

    -
    -
    prog_hspc_trans <- prog_hspc_results |> 
    -  dplyr::select(starts_with(c("Prog_", "HSPC_"))) |>
    -  t() |> 
    -  data.frame()
    -
    -

    We have used the select() function to select all the columns that start with Prog_ or HSPC_. We then use the t() function to transpose the dataframe. We then convert the resulting matrix to a dataframe using data.frame(). If you view that dataframe you’ll see it has default column name which we can fix using colnames() to set the column names to the gene ids.

    -

    🎬 Set the column names to the gene ids:

    -
    -
    colnames(prog_hspc_trans) <- prog_hspc_results$ensembl_gene_id
    -
    -

    perform PCA using standard functions

    -
    -
    pca <- prog_hspc_trans |>
    -  prcomp(rank. = 15) 
    -
    -

    The rank. argument tells prcomp() to only calculate the first 15 principal components. This is useful for visualisation as we can only plot in 2 or 3 dimensions. We can see the results of the PCA by viewing the summary() of the pca object.

    -
    -
    summary(pca)
    -
    -
    Importance of first k=15 (out of 280) components:
    -                           PC1     PC2     PC3     PC4     PC5     PC6     PC7
    -Standard deviation     12.5612 8.36646 5.98988 5.41386 4.55730 4.06142 3.84444
    -Proportion of Variance  0.1099 0.04874 0.02498 0.02041 0.01446 0.01149 0.01029
    -Cumulative Proportion   0.1099 0.15861 0.18359 0.20400 0.21846 0.22995 0.24024
    -                           PC8     PC9   PC10    PC11    PC12    PC13    PC14
    -Standard deviation     3.70848 3.66899 3.5549 3.48508 3.44964 3.42393 3.37882
    -Proportion of Variance 0.00958 0.00937 0.0088 0.00846 0.00829 0.00816 0.00795
    -Cumulative Proportion  0.24982 0.25919 0.2680 0.27645 0.28473 0.29290 0.30085
    -                          PC15
    -Standard deviation     3.33622
    -Proportion of Variance 0.00775
    -Cumulative Proportion  0.30860
    -
    -
    -

    The Proportion of Variance tells us how much of the variance is explained by each component. We can see that the first component explains 0.1099 of the variance, the second 0.04874, and the third 0.2498. Together the first three components explain 18% of the total variance in the data. Plotting PC1 against PC2 will capture about 16% of the variance. This is not that high but it likely better than we would get plotting any two genes against each other. To plot the PC1 against PC2 we will need to extract the PC1 and PC2 score from the pca object and add labels for the cells.

    -

    🎬 Create a dataframe of the PC1 and PC2 scores which are in pca$x and add the cell ids:

    -
    -
    pca_labelled <- data.frame(pca$x,
    -                           cell_id = row.names(prog_hspc_trans))
    -
    -

    It will be helpful to add a column for the cell type so we can label points. One way to do this is to extract the information in the cell_id column into two columns.

    -

    🎬 Extract the cell type and cell number from the cell_id column (keeping the cell_id column):

    -
    -
    pca_labelled <- pca_labelled |> 
    -  extract(cell_id, 
    -          remove = FALSE,
    -          c("cell_type", "cell_number"),
    -          "([a-zA-Z]{4})_([0-9]{3})")
    -
    -

    "([a-zA-Z]{4})_([0-9]{3})" is a regular expression - or regex. [a-zA-Z] means any lower or upper case letter, {4} means 4 of them, and [0-9] means any number, {3} means 3 of them. The brackets around the two parts of the regex mean we want to extract those parts. The first part goes into cell_type and the second part goes into cell_number. The _ between the two patterns matches the underscore and the fact it isn’t in a bracket means we don’t want to keep it.

    -

    We can now plot the PC1 and PC2 scores.

    -

    🎬 Plot PC1 against PC2 and colour the points by cell type:

    -
    -
    pca <- pca_labelled |> 
    -  ggplot(aes(x = PC1, y = PC2, 
    -             colour = cell_type)) +
    -  geom_point(alpha = 0.4) +
    -  scale_colour_viridis_d(end = 0.8, begin = 0.15,
    -                         name = "Cell type") +
    -  theme_classic()
    -pca
    + theme(legend.position = "none")
    -

    +

    -

    Fairly good separation of cell types but plenty of overlap

    -

    🎬 Save the plot to file:

    -
    -
    ggsave("figures/prog_hspc-pca.png",
    -       plot = pca,
    -       height = 3, 
    -       width = 4,
    -       units = "in",
    -       device = "png")
    -
    -

    Visualise the expression of the most significant genes using a heatmap

    -

    A heatmap is a common way to visualise gene expression data. Often people will create heatmaps with thousands of genes but it can be more informative to use a subset along with clustering methods. We will use the genes which are significant at the 0.01 level.

    -

    We are going to create an interactive heatmap with the heatmaply (Galili et al. 2017) package. heatmaply takes a matrix as input so we need to convert a dataframe of the log2 values to a matrix. We will also set the rownames to the gene names.

    -

    🎬 Convert a dataframe of the log2 values to a matrix. I have used sample() to select 70 random columns so the heatmap is generated quickly:

    -
    -
    mat <- prog_hspc_results_sig0.01 |> 
    -  dplyr::select(starts_with(c("Prog", "HSPC"))) |>
    -  dplyr::select(sample(1:1499, size = 70)) |>
    -  as.matrix()
    -
    -

    🎬 Set the row names to the gene names:

    -
    -
    rownames(mat) <- prog_hspc_results_sig0.01$external_gene_name
    -
    -

    You might want to view the matrix by clicking on it in the environment pane.

    -

    🎬 Load the heatmaply package:

    - -

    We need to tell the clustering algorithm how many clusters to create. We will set the number of clusters for the cell types to be 2 and the number of clusters for the genes to be the same since it makes sense to see what clusters of genes correlate with the cell types.

    -
    -
    n_cell_clusters <- 2
    -n_gene_clusters <- 2
    -
    -

    🎬 Create the heatmap:

    -
    -
    heatmaply(mat, 
    -          scale = "row",
    -          k_col = n_cell_clusters,
    -          k_row = n_gene_clusters,
    -          fontsize_row = 7, fontsize_col = 10,
    -          labCol = colnames(mat),
    -          labRow = rownames(mat),
    -          heatmap_layers = theme(axis.line = element_blank()))
    -
    -
    - -
    -
    -

    It will take a minute to run and display. On the vertical axis are genes which are differentially expressed at the 0.01 level. On the horizontal axis are cells. We can see that cells of the same type don’t cluster that well together. We can also see two clusters of genes but the pattern of gene is not as clear as it was for the frogs and the correspondence with the cell clusters is not as strong.

    -

    The heatmap will open in the viewer pane (rather than the plot pane) because it is html. You can “Show in a new window” to see it in a larger format. You can also zoom in and out and pan around the heatmap and download it as a png. You might feel the colour bars is not adding much to the plot. You can remove it by setting hide_colorbar = TRUE, in the heatmaply() function.

    -

    Using all the cells is worth doing but it will take a while to generate the heatmap and then show in the viewer so do it sometime when you’re ready for a coffee break.

    -

    Visualise all the results with a volcano plot

    -

    colour the points if FDR < 0.05 and prog_hspc_results > 1

    - -
    -
    prog_hspc_results <- prog_hspc_results |> 
    -  mutate(log10_FDR = -log10(FDR),
    -         sig = FDR < 0.05,
    -         bigfc = abs(summary.logFC) >= 2) 
    -
    +

    Notice that I have used filter() label only the genes that are both significant and have a large fold change. In systems you are familiar with, this labelling is very informative and can help you quickly identify common themes. Key to interpreting the volcano plot is to remember that positive fold changes means the gene is up-regulated in the FGF-treated samples and negative fold changes means the gene is down-regulated (i.e., higher in the control). This was determined by the order of the treatments in the contrast used in the DESeq2 analysis

    +

    If you do forget which way round you did the comparison, you can always examine the results dataframe to see which of the treatments seem to be higher for the positive fold changes.

    +

    Please note that Betsy doesn’t like graphs like this in the report!

    +

    When you have a gene of interest, you may wish to label it on the plot. This is done in the same way except that you filter the data to only include the gene of interest. I have used and then use geom_label_repel() rather than geom_text_repel() to put the label in a box and nudged it’s position to get a line connecting the point and the label. I have also increased the size of the point.

    +

    🎬 Add a label to one gene of interest (hoxb9.S) and :

    -
    vol <- prog_hspc_results |> 
    -  ggplot(aes(x = summary.logFC, 
    -             y = log10_FDR, 
    +
    s30_results |> 
    +  ggplot(aes(x = log2FoldChange, 
    +             y = log10_padj, 
                  colour = interaction(sig, bigfc))) +
       geom_point() +
       geom_hline(yintercept = -log10(0.05), 
    @@ -933,51 +833,50 @@ 

    Workshop

    linetype = "dashed") + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0)) + - scale_colour_manual(values = c("gray", + scale_colour_manual(values = c("gray", "pink", + "gray30", "deeppink")) + - geom_text_repel(data = subset(prog_hspc_results, - bigfc & sig), - aes(label = external_gene_name), - size = 3, - max.overlaps = 50) + + geom_label_repel(data = s30_results |> + filter(xenbase_gene_symbol == "hoxb9.S"), + aes(label = xenbase_gene_symbol), + size = 4, + nudge_x = .5, + nudge_y = 1.5) + + geom_point(data = s30_results |> + filter(xenbase_gene_symbol == "hoxb9.S"), + size = 3) + theme_classic() + - theme(legend.position = "none") -vol
    -
    -
    Error in `geom_text_repel()`:
    -! Problem while computing aesthetics.
    -ℹ Error occurred in the 5th layer.
    -Caused by error:
    -! object 'external_gene_name' not found
    + theme(legend.position = "none")
    +
    +
    +

    +
    +
    +

    Save you plots

    +

    Once you have finished designing your plots, you should save them using ggsave(). You will want to assign the plot to a variable and use code similar to this:

    -
    ggsave("figures/prog-hspc-volcano.png",
    +
    ggsave("figures/my-informative-file-name.png",
            plot = vol,
            height = 4.5, 
            width = 4.5,
            units = "in",
            device = "png")
    -
    -
    Error in `geom_text_repel()`:
    -! Problem while computing aesthetics.
    -ℹ Error occurred in the 5th layer.
    -Caused by error:
    -! object 'external_gene_name' not found
    -
    - - - - - - -

    🤗 Look after future you!

    -

    🎬 Go through your script (cont-fgf-s30.R or hspc-prog.R) and tidy up. I would suggest restarting R and trying to run the full pipeline from start to finish. You might need to :

    +

    🐭 Analysis

    +

    We will carry out several steps

    +
      +
    1. Import data
    2. +
    3. Write the significant genes to file
    4. +
    5. View the relationship between cells using PCA
    6. +
    7. Visual all the results with a volcano plot
    8. +

    🤗 Look after future you!

    +

    🎬 Go through your script and tidy up. I would suggest restarting R and trying to run the full pipeline from start to finish. You might need to:

    • collect together library statements at the top of the script
    • -
    • remove code that you needed to start today but which wouldn’t be needed running the script from the top (e.g., importing)
    • +
    • remove code that you needed to start today but which wouldn’t be needed running the script from the top (e.g., importing the results)
    • edit your comments for clarity
    • rename variables for consistency or clarity
    • remove house keeping or exploratory code
    • @@ -988,8 +887,8 @@

      Workshop

      Consolidate

    The Code file

    These contain all the code needed in the workshop even where it is not visible on the webpage.

    -

    The workshop.qmd file is the file I use to compile the practical. Qmd stands for Quarto markdown. It allows code and ordinary text to be interleaved to produce well-formatted reports including webpages. Right-click on the link and choose Save-As to download. You will be able to open the Qmd file in RStudio. Alternatively, View in Browser. Coding and thinking answers are marked with #---CODING ANSWER--- and #---THINKING ANSWER---

    -

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr [Xie (2024); knitr2; knitr3], kableExtra (Zhu 2021)

    +

    The workshop.qmd file is the file I use to compile the practical. Qmd stands for Quarto markdown. It allows code and ordinary text to be interleaved to produce well-formatted reports including webpages. Right-click on the link and choose Save-As to download. You will be able to open the Qmd file in RStudio. Alternatively, View in Browser. Coding and thinking answers are marked with #---CODING ANSWER--- and #---THINKING ANSWER---

    +

    Pages made with R (R Core Team 2024), Quarto (Allaire et al. 2024), knitr (Xie 2024, 2015, 2014), kableExtra (Zhu 2021)

    @@ -998,15 +897,6 @@

    Workshop

    Allaire, J. J., Charles Teague, Carlos Scheidegger, Yihui Xie, and Christophe Dervieux. 2024. Quarto.” https://doi.org/10.5281/zenodo.5960048.
    -
    -Fisher, Malcolm, Christina James-Zorn, Virgilio Ponferrada, Andrew J Bell, Nivitha Sundararaj, Erik Segerdell, Praneet Chaturvedi, et al. 2023. “Xenbase: Key Features and Resources of the Xenopus Model Organism Knowledgebase.” Genetics 224 (1): iyad018. https://doi.org/10.1093/genetics/iyad018. -
    -
    -Galili, Tal, O’Callaghan, Alan, Sidi, Jonathan, Sievert, and Carson. 2017. “Heatmaply: An r Package for Creating Interactive Cluster Heatmaps for Online Publishing.” Bioinformatics. https://doi.org/10.1093/bioinformatics/btx657. -
    -
    -Hester, Jim, Hadley Wickham, and Gábor Csárdi. 2023. “Fs: Cross-Platform File System Operations Based on ’Libuv’.” -
    R Core Team. 2024. R: A Language and Environment for Statistical Computing. Vienna, Austria: R Foundation for Statistical Computing. https://www.R-project.org/.
    @@ -1016,8 +906,14 @@

    Workshop

    Wickham, Hadley, Mara Averick, Jennifer Bryan, Winston Chang, Lucy D’Agostino McGowan, Romain François, Garrett Grolemund, et al. 2019. “Welcome to the tidyverse.” Journal of Open Source Software 4 (43): 1686. https://doi.org/10.21105/joss.01686.
    +
    +Xie, Yihui. 2014. “Knitr: A Comprehensive Tool for Reproducible Research in R.” In Implementing Reproducible Computational Research, edited by Victoria Stodden, Friedrich Leisch, and Roger D. Peng. Chapman; Hall/CRC. +
    +
    +———. 2015. Dynamic Documents with R and Knitr. 2nd ed. Boca Raton, Florida: Chapman; Hall/CRC. https://yihui.org/knitr/. +
    -Xie, Yihui. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/. +———. 2024. Knitr: A General-Purpose Package for Dynamic Report Generation in r. https://yihui.org/knitr/.
    Zhu, Hao. 2021. “kableExtra: Construct Complex Table with ’Kable’ and Pipe Syntax.” https://CRAN.R-project.org/package=kableExtra. diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-21-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-21-1.png deleted file mode 100644 index 5ab236d71dd614f5238840b9d75908714bfecd7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29002 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 OZ0Vxq3s2a3Zu=2szMo70 diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-37-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-37-1.png new file mode 100644 index 0000000000000000000000000000000000000000..5965ef89d79f30a8f684e82f489ab34ff303454e GIT binary patch literal 25654 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ℜ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 literal 0 HcmV?d00001 diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-40-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-40-1.png new file mode 100644 index 0000000000000000000000000000000000000000..45f25f07aedb0e1d3b0d723c7c1d66ffb3a87eb8 GIT binary patch literal 31519 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 literal 0 HcmV?d00001 diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-42-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-42-1.png new file mode 100644 index 0000000000000000000000000000000000000000..7c3df70fece8d032a91f3b593b730a61d4893241 GIT binary patch literal 64084 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é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 RrVAgq@M}l$CA-x>{tI@Z&zJxJ literal 0 HcmV?d00001 diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-45-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-45-1.png new file mode 100644 index 0000000000000000000000000000000000000000..3982dcab7b790c977a883fceb807cb044886d807 GIT binary patch literal 67885 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ºgng~p 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

    $sA5Bn@x^xsJpI9lfC zj3NSoSzHm{z+H4kviGWrfrkj?v6%2dJ@}I-#hEc(p$eZuP?|mn$7hK<*XB!*G|4-3dJ?Xx8~3 zf|+0m(1|f#>o=w$gQns@A2s&J{b*1R{sEz)d%4Q5>m>lHuljEE<~rLQGCd!IA3>Wy2E=B?ksqWzpr*g-2)_CiD``oJMX~ovdh`HM)U68ydy&@Wq z$yw{4rXFF`sfh5W*c(Jx^2{`FE<{++emaHzU|9Lh$Y?oT6(<&(CRz&kM^bes*#a4; z{-EH}KDqo~ds9FjIjJ|sywx^_R6nm6Tq>Kxi&C+K`ps(ahh#UZ>kv4-5lQBL<*_Zl zd9oorP^fd;Y0M~lhG44sLe92ddH8wTT4}ATLhQjcpB&%N8xBW;aYI23(1%MNi^~z6NjM&8`$^WN99Wx4oB3P;DfrFq$j$a}%G_($*ri5++9H z0;FvnMWOg`i`9>3?PA`|R!t()oE@`eyMO!6<3wvw2w)gxt-(W)H>4!Llu7trPc1t8 zK}Y}m7=(#5^1Qe~-Cz%69N+om8%TJ@R!*^56@_-oQzj=UIc6FEu=a1Px_zF`l5Bhn zVo%`8_blkoh;U+AG$`RI{PKECg#!U1hpd8SWy0{RSU6EQEW4!Q7Ch=>EKp6hfmTgQEsYBNas3J;&jsIwHn1GeFI^D-t#c{)c=_3o#{AvH`1Y4h*>iIlIrK>R))7wB&i9c8Qv4zA}9oxrOdkJ=-@r(to+xhW*f zVA{-kZl;n#|HvXH(jcZjR{PMp;T+yP8JXy z5Nzf_WT6p>Xe4s{A(~tv;FdC>pKm#gStM{Q;C1eIbpWo(l=Jmx6CnJ^-VBT0q-_F~cUvfne#SkHS2N6J%~ znY2WB)iG>zEQhk-2&`g0NY4$8Wj~D(zsCYa3c-PjFIO}3Wfm_Ms=x|~;sGy?Q-CGk z9tb0>DP6>9Lu6Bc={7XLQ{ks0s|9 zbJKM1*-I*kuQU=NL7w@mLG28xj(eh`Jd;_xRHWvw5`##RZ_}A}dpkNSa1YyDjd}sx z5rcAPWTcD>^`~FnTP0sJE>np04_K2KHX=y`&|hgZSQ$3TMzXx`LFm|%pkk{ zpjE>d-A$xPI2$ptSB=JsR0E~X zl~q(AI8v+v6yv;k={9m1r0(0bWDJUQcv|7$hzqRu=vZHDur#b4*}}R-kMR4#dX6jEpketv zFV5e@RGkjS8aUm<1qq^U(l>svdXaiI?;tU&AcmRPuHMM_>fFnRVr!IEO^=Iw0!Q}Y zfzYqYzI1i`rnO}cFIpF%MdKAnU@9mW?e2NX*l=DE7Yo&+Re(Xp!j>J)M&?0zM#KwhnH zFG`L{kk~VR`QNx6&GC=IQ*3khMM&PPQ?3Tq3xio`f~SMIflwlfXa_5LM%`h#O#e@Ssn*`TSS1 zKZB-3b(RwQX0yQCuJuQE@r+=ItP8`u8MegA6oXzYJ;)p*819xqcXnVsl~JDq0SE3~ zPxakO75TQ|fIrH2lm7fk3oFje08t0r!rzUHv;H<{g|I0SBw`lg_*p|G$QzKy?cDHWqcbPI^Ew?LvBcivv>F0JxzoObwj7@bY^%nAJgOW2>E%L zIl$!)R^^AxfhoOCa1xKozUcYYdrn0g)`z2on~+u=NH}6XXOLW3fXDKY{`F zG8GI;FY_R-X{%J3NQFR$vg|i+S$21m-5Id(Awk>|uPUJ4)vQ&6sZ-x6QME1wl|t~C z9mG`}O*bb9`i$RfDc^5Gj)>;-?Qi}9T1)Ws@TzS%-<~5q^q2w~zhkv=LuhtdbUe^Kv%$Fg^O{N{AgwzFr6wC#iWc;j_f z&t}N~0R01jlqT7jn9q`T9_vk@ewTwDSOZ0Miiv${Ku6t@VC5h96ZAJWlV6i_tnRq1USo3GK5$#F@kLh%X>zg%C@g8xcyD2a-owIBmt^xlm# zT<^y7rV0(ZULcMrVxi=e=01xs5H3o`X!9%0uU~umJfNU2uThe&nc+g_hV)O~haO|v z9W@diSwyZ7?CGZ0!hBxEq}f`yAXC!+XhkZ8+rQHdo--mMHZ)oJ1qz9y!0x7Lzollq z)X;Cp_fL?NsZR3jRcb}P7lCl6PG13Z+3>+lG9LHQSdnj_vX$|0LJZ=oBw9Ii3Ocjn24@66v z<6Qd1e*m@YJFV$@SYv~3g7=U&hSIu=DHUnLQ#jtiB?C1Mbw2kJS@2(I=hPR#FbFL` zCLDZ8k0u%YZuQ|x@sRiO)q9lBjyZrror3K3e5g6$hR@V@?J_q)df_zH-IS73(UNy) z=p$WtifV6G@IL*15l5LVGk!TXrogmezgK%v-a=jXEO2KuJ9U0t*Ha;fC2{}r{z``F zvzBQt2*VOA8FY@O3ZBgMNdxza@#6Q0cR1+8F(4F5fC=Rz{FPPc#UmL27ZpE#V#?OP z0KvcLn?8M7B~8@6_p}#YxXFR<^z7WTE>+-Z$bHeW+E+5i?tgBATeA8Yq z&}$g@2QwPq*Q9nng9XX(V*7mUL`rJ`AHtwC32dsR`ae1)76Y!p(sEIt6_rw3E;W*E zm)))-cZ_g^0jQUkU6|SyJ@}A3*tl znhQ{1W_Yok8Ss+a2zMH*H|+8q3#P8j7dYF2kxbZ1`Xp-U`vHwEa;neEZSzLo`~6FBr?GMDeOP@alFIt_{ z0mWqz)9{bnv_%2*QGxby{=(VMiSf4AP8uyf|M)|o|Co_lZIuZw6lJEte3G_k(N1-NQ>Or? ziTZcJll2AbMvmJJb%`Mu{#^v5b~82BhQZ*B67r%_P09`Tt>>)yr7Nuux?X#T9RRl3 zGh*;`lG|~9w{dgaKD$@2Z$-d(>FIh{-u3mP6GiCwQb}+Kugn;;0qZabD;yx4-Dt$v zfwANf_r&i|C=hVXvvl!_Lygm1(niInBl{XYKdj9$B9bF0O@3C-8c>)`9n7A1BxB*y z8)TC?d9~d*oN8w4OKnSLj>QR1xIsSdPpo2WE8<8%HbK+AKtPSoi8d98&Qx0oNE-O4 zjwVyAPcOjEtmyKUJq-sdoZ3QN12Mh->%w76{}0E-rE$Mjel;$IiG~I{*$KAP5agNp^y1d+lc#&vx{ff|GV} zPA>sgH@N?ID^KRvA!BIs){pn$VisMp2ppJxH`z*fZI=bM3_hZzyg)inYwXDH;g8ZuizN+v#H?I_v*UGPv{X zGH6a&l=OB$pNFud)7#E_vdujc5yeVhjyye-74*^L=OQmUA0jUB2-s`xy3UJsTJc$Ecl7u7)k|#Z@B^GugTDa(M}c0I;eEQJ^JOi3OA8 zY=`(;)(`eRcA)PR!qu8<9?e#tYb>XQlFI^Bn1vPEKy{^^gP)&?XMXQRXnHOOilb?W z()?AHoQb*x5Y=#z*GZ$R;UJJ=_5$(H3g7Wm7B2`YW-kqSA`7p5ew89EmJm2lajIm15Sp?HI>f81&uY}9wYjpfo`L_+r?E*Yp3J8yN-p+ z_UlXLYOpaqLP|h?fsKAV%Hjr_ap&Eyy_2yKzaFI8OIt~~%;)P$4A(VXjMiK8Cw_5> zPi?^(Q2K4s5R5)eQSTaGT!~qFKM@tC-DiP(<|+gIOlk@uA$J(s`oG_u?0@*ImeS1URI+^&pV9 z7l4$$SpbHdC4erVy9KWm$p}9GX#*vySAudVAqy!$G&!H&!Yg3mlV>WRZw^rI_O!|r z$iJHmK+DV}E>5Rjo|aEO-UU2x_N2IbkEfFOu(lj*|Aca4-*<2o>3N6kQaM5+2bfZi z$B_QQ8DHuUvl+)?i-XlB`9OC8<3!S66c+Bdlu@N3%LHkY3bxQ7nE7wactJA=h#D)l zEVu~DI*-Y$M@P7jb$=_O3ks?hT^BluNBnghj`v{A1=%^^y_)==hKvHqRBII|$q@!9NOdNIMK=uz1d}6hkK8}!&O-!mcPn=oJJd_X*`#7o?q|kdS0o8J*W*ZqS3HJI(s)Wr3;7Ln+va{x zqI{zLZxJ%~zeR|kC7suU`BST`D|e;)%tsGv3iFqyR|L3G#?%U47BPFT1m5Slx+OQI z)p z__;iQAs>w@M{O*WKKlhGR!L^m^QI@Z6|d$z?X~h(sA6|aB5|=nI(pUeZMLWw^D+G( z6RrQ)tLAW;5;_|7yRUiid&fI<^L*#b1W8nG^CS1`sL?6S7hpeT{-P8$Iq|o&$@T;O z{r=l^CbVyeiVbMB)r?AsIZIT3rDln&MtR_3H}h(Ldtd z-tn@|$QK+d{?|k$fNrQPZ|pXk)10Pw@cU{%U_~TKW}Fc}8DP!UeF8L`emuo8&)-HC zN6JeF17?VdJ7n_oi4&*j0GlGVNnhpl6abwlu)P+wFJO9`w)$X#OjY+ zpPI(sxd3gQGw}#-V^NQ~~S9 zUCS26LjX%UXjJHIi(DqF($uwhyZwiat$ed?=q9k82L-*JiB|s34qJa7UQYF?a^*@A z7YTHsZvn`Uf`OH3#r8sI$Zxv+-8wvfDGH?wnEp{>LxTM9UhTuH)wU1d6i2|rXJo+E z|BTpdIm(1zTtpdK?jD78K<1lPIbl@YY&ljULIkW*&R482z1!#M6{b>&wod5JR=jMB zNf1Z8@Mu-C#)w-xoNIW0njS~vFMkNT57w~TWrv4+<#gbeD%w4A_>c~p+z0wcG_}rJ zp=*hsv+LM$vOmo49T0F@pzozJ$U$t88Vgn-aHvu1`y|bnIsxzKXI<6nZ75vBeknGR zn^`*W6gdg z#%6r924L(5hITlt8@a6c?opf(0pNGIBBEVcq|p~fZZ`o7Ca$>qpnK`*dA5B^m2KME zG2MEH@fSAKW+OgA6a3DnPCvod#IbN-pOb*j)7faUWKeUGma`uM}pS|}ti93wy4Lf*jUS?xdL>PK8%FfO7W-U<610H-0Vw3s{~f9 z^;$q`HgpsW`Yn&Phi!~lu0T!q5~wPUH>6H+g@az>Ko7z~0=74}5^!RcxAYWx?!n19 z-uHC`3H8m?Gz3XTmZbM)^cqLNp_JJCppLrLDS>F{X7S z1ai4(gE2gRqYDF4W+KF5*(Z16=Iw1>e2#=3P>au3 zccN%9M$uB&rPoDn_n)2j=hf{{ss4R=A3W091KuyrQlud{x!$^~Nc~up#)-xaBsWGq zAFNOyd?kw;f|DUnxijQ?kKmkP8=fEZReBI}EzkKAriM@G-y4r0zwCEizI$L`vtmV1 zF5jGGg?H3N5O_Z_1T+y!+^|&LlcImQFHwDvcN0Cl&53LH}Pcp1y~j&5Bpx) z3O{z47ee%m1f5(Soc^xse;XyJJaXs9m5%5KSe|g;mlM&|OzLsPjI-w6?Q9{SfAoyX z#sC$H9ii@Y@i3z$pUA?Rrlj;wEtRwoG>GNuBv`Bd5F2w%_Lr_=HoI)qclB^tR!;E}8Hmj_#O%DT?O*Qa>Ecn{ zSw&=uTew0gVC#%Rx#|@-rnh{hB?eCeOGz4Y1I#>z9(i+b8_5nJXA8lfP%)TeXV&;W z$Uq5vSYQ&Lg6i>_QAeIo=`~r}ck9G%B_vY(ZXX}{M9%JODtK^+ii9+4156i~Kf;44 zTF*bBuXHtJ=Nin=HN%JgHQhL6gi4&{`rIpyh@=I1 z)4F3}#YUzi$xlj9ejF0|dEf!$dn87BjdZ-cp|vxVw`+R(cOKI@`7I)$qAn?{haVWs zh5sDWIqR0~9mUXY7o{kRo;v#DpfYQ9^3JF;|ATErBC?=LZKyY1two>)zLsDDrto=@8uz{9X0)EX$tl7~{Q%cOI~7um{!U1Sv0=pmG7OeV)6KP>6n zs=OQ;nq6bzOoD}2AGY)IbkhR33_4!R5rN)Bh8OQ}MP)ly|I3=(@y7HXf*BKyoSAb6 zLAY5OZN76%s6pj4{R9_rTa`JDU1K5{`jdX|(&9hO1EoqGV+e00s)LUTlrq*W?kx+v zC6vsA#4?JnKRzz;KjV{^zhb|aNdL`uNuN7f1=T@Zjx z9sQ;J6F8{pEkFO&rTq^7f|7N|hwCc1irR((@N+BM$sS*r-+9oguk%yKby&YXMgJw`~?|_I= zc+emBB_3(&veX}x5s;9*RP`K4SKypzWK?u&uo#{;xT!^it3sIb&8;C#&7gLT7f`g7_WYgaJKMWx?TKIMbgvd%gz=>~9Q;0TE|B)uu-w7_XK=6DrJ6(yvN>M1V6%_<5;45#}U9H!%nF}%&;lvcj@#lgmo_ zo1zP)v4d=OKPtFj{_yIaZn0bn0vOm@x3)3|kLk+&1NpFa`3@h} z)5tYS{w<7Iwnw#43SzP+u=sP~MuA+z8epY$2Hs;MWiaq-J1bxyp(9bQGT^qPa$sUg zHCKKS{LLGM9i<{04zeGdm`@%F2XXxEi}HWT5KG5pr6w*L@%dNHG)Qhctv^mvRBUZ0K<#ewo+o2!yqM=qQp?67SgJh7b66B zrOF^C5fAsj^q+6CAznWW|J=d7_IN7OqJ)yK z?A|I0Fk<~)eK)ke=Imh;mQp5xkhLJe4TO*Za#GabD#44&Qox6eZ9}DL_j-PMYvq6v zUP(z?qq6*WGo)fgZQrG&(t-;SRUO#cf&edGx-vn2Tx{xAlA9NH_(`qp7-eJf*gbsv zH!{ET+a2lbQors3B(fV3=J{V>MLEm%_R>j`i5q@i1ioI_Cu^2Frv`!#czos^9hC|| zWiZrP2ymq2e;~We>iUr?4^FAE(?k!#Z~tKv%(LS&d9A3oCGI`O>Z!!+_uZP|ryd!x zg8!e$24b_k3Y;qy)4>Dz^X;yUkeBVDan8^`Y_U(myl5$Pf$rPmJ^C->WCicV*PY@R zIqMkKE@u*gCFN~bS%?3CLBo=DoM&Fb8!DK6hp|blt7^Yqx+u(xmPlXDgN&eEI-E8< z)@!yOJnIN`ksynug9)Cpl7 zJ6V^D3arr(&K@rn3uC*S$(}*~_-mX2#%pbR>L=7@*r2pjjX}=q*Ir!-UrKIxw?|^l zeP!U@LG*q&$Rr!!qla=?*xhUT{A&CPx>!H(hY?-r-C8**_=3ck) zxz+^CY4wM$Ef~_Waots}qS&SPC&NI~me&4^H)5r8D9ffL9A(^66TFTPoB0260lJC9 zP2DCE(P1ceV&y{8t_=2*IK4Tt^~cuu7pN;bwF(u+UN^$PU9QWJ#Vk=*AnktrB^b@P2?qsl0IlVvy=;*dabX73DNS&EqmkKbmTkH zhyI~YZI@DTdZ{=97%vhY+1aH#XG5Nw2c5oE{*DfU?P|UCn^tV7 zQf*&?t}$hjru?};lF{NmG=!O#5QAJ79BG7Hlh|=uuG>;OK``!OH~A++@s}`Y=I}7i z5|MJ7l>UfUXnp%&@oR&`h&=p zp(rnhA&m3TfQa$KYf}B5a3%_p+@AF7qM~C{8BL>_3JKPGLvOy`l|A5inYgh02Dp>n zeLH`<2e=p-ag?z|Y%mPY{;EBfQZN2lzIgDnF%|j)ttqN8=;2#RUps;|GvZ)CCFO@6 zsKkuydg8^{r&B~#&h6vcq2fZM@6==mG}H;NEesp+Pn~_CO?D4M4w$gX$PN5fLW7{* z|A_5_r~QORq;8Gz?!&)sEK>El2q(4vFR1IBK5#^>fwh2a3rcdd$dp>uu zG3U{|1TJA4n8iYFRHHCX^ewFb`rjjD zP1%ZM!n;mSd+N}7^+zxy%YW9W%^*iHnGE+rHFN!?dsdjBZfivzYjczM(J3)&w4&0C zK)z=mt(~RcCb@g6&EfRJ>%-f_rPrGaAw~Jr9?#hs4wJ1Q_{+~@kI#pmxqC`)O{^J} zO(Rv)K;mI+F*!e^ml+(}ABs_(KO2}}z6iAB7}(K36?hEBnlyT2-IqD%N?~G4(09qYU=Zti`4HbB`roO>fPh5ML2bjJ`qhvU{8hY&BfK_w1zecp8fkk`%9cSbz5|yhYqx zsxKQpvW-=&dYPA{)H$ywMhT-U_W_Fv%LOXMlLIfN(z3Xx7_iXoT z_tLBa-gfZUToGu>!i;G}*$##j1b<=prc1XDBSzyv`-dfBuylpc9b7V*di$V0PM=l% z&=F*iqyLG^>k+%Fu(H`;{F8C@D&5Q4R#>$j7P<6ZV|ZMy*5xvNav?@8d8PV1wJmK? zmx)mPQ+_jM@#1b!R%Bj@ zve-lA1wu@Ia)EUwGDy@kuI3*Jm!HA?` zy2l6)E4$;xyrpu=DnQitey8?aCR+(p7W5|;LA)QUuzawYD|EJRlTEvxwi`WW96Z|# z_w80tKOAhEO&RueBa!oUB}1VgsO#!tlSQgoi>2!RzQg%I-h)=V!gB9;C?)<8sEM_p z&N;^fZPukbX!ztt_kQ?c?8Ch{r<`|N`pVWvkc0-!KtKUqE{ZDsYF4fk;_BAN_MJpV z3)6~BA@fMF!c2LvM>^s(iVtOVDmzknF|zCM_f)qlw8qf4hpmF=Lt|3Ab`H*h5dx@y zQqO*ylO)cZZ9+2rEUG4_5nl~8ySago(bhPAHCtqHqG6i|T`0gfFUH4yb@QYsnAFY3 zKRZW78CuGx9WK{Va-BjDhFVaI*XTYOfeE70tNg!=a!sM>o)YNr*iqH{zJ-O^Eup+YC<=(XJR3mro&TSio(nWP}>?!wK|NcP=%=y~VY*-xOncwtk7*dp}K2p9gHIXxOd1r=Um1UP9W5L~TE-snbT&T%>M9 zgG&ZI^=WY~mt>ZvRR?>3F4{N|*K#&rnv*-yU-m3cOEpFfIv}kZ2cLc?`0dD;{*C=y znb>r-AFoCa4t#lvNw4AG`7^UtZ7_}}Ut!;Z_x9|ZP~dRVwlkyDBLMm@N(3d24k6Sm zJ#xFZpmovuI=wR4pCJr@kofmwm@MaigFqBFKzTfvjj=5Z1hPt~R9dkZ=QOGN63~8| z(UpE*DNQ?lTy3rTsSI6@Y6VZFiI*gHgBeLL4_CWY9NvexgU< zMO0z$<3!hN=!xCj!YP*>OjhVz^Tv4u_ghQ11t;!2~X6Ua;`R!AZs!NR1gxl!QC+qt)qbpyS=-b0bFV8OAM;eg6OB#;9-`*mu< zvPOp3uPfgD3aQqp7D&xL_VUCCcG%4Kk1k1lscqRJF?uTsB$)L=RJbR5`5l9>AkIr9;DS7q4Wrg=>j z<^s;wWuqEE((aWp8q12&MK$)>$MzA`5{#{*cTAtCA?934FP} zJt(ngh307$0d3d0ofv(1>u4~$g@we*omB5Tca zy;VxF&gMd*ldgVu<*3Fm-QAieaQA5VzV4a`T|jMngi;1rUlw3RH&;%Ky7+tC8Uz}` zf~ZzHZ#zV*QGL(Sj@{+@xxb8NoQ(ds1^xgOqCFkzd81Y+czpyQf7UaPT*XBkHAdvy zjhU%TfQG2fU4t)e|4FVW5;K|(#)CD!%_z4HUziv9ITIsQo;X62K!Qz{A$0IQ)vLfA z350#=&$u=%s6V}mzT|aWl{OIdVd_56eR=hGdI7*&MQgK4efK*i{YRC|(6G1+554j< z7G+o7?;E&8Me_N74Fy;wYGd>!r4`idWyo11-%{(>4r<=&10Ie}c1O)(PhzLu5&Ka^ zS>g;WTQCBiLk+{9Kec7*GX9HR^xh2bafTX#fRY?~r(5gCTq4*4DGv)g^9{(61tw>}f5BP97) zynIQvaPyDQ{m^{U>uWJ>N>ua*rRCW~&sY`tQDC1oGK@FbpH$wDUWg9?o*%)@okkw# zc`j)USormg>jIcwck37PuERVVUOZK41^~HYJM?yV<`DmgDG9fYuRegQUa>f1U2=BK1WJ zqTUrxuUG4dJXGXVOX)ao?{0Z7zHWEyhq*l-i133B+8bNd^xjPM7i}k zw?GoLiCc1-s4)_-?CWdfK9=0uq8^@bA4rkVkU!)Hh9{1)b9q^$1TwCrbB7wE%EP^? zFn@{B6A5t_!h2U}Z^hKViMTE^{=5L&ar}FBaTapK&*2ynh;&HW3;1={yN-Wzp^v7S z@La^Gf0g7%rAZUat+H1O8`H>7`P0`H+P~mq$6^d8yI^wm?S#@%9JJ?8Wmlv+>FANr zs($qijZP&GE4jH5Exo=qV|3hAs4(&q(pBgu0B#ipZEIzvo)LC{z>g_`m!Xi^`B=+e z{A0=0kk0?rd&|98jmEL;CdQt#=k*1wMlhWx4mG-{HSj<{3#d1C~eRXNaSh5t9yY3k-+u-QErNHRNCVvQsIs zzJt2WjC)LiJQvYCDU0G}TN3it80W6+G>0ld2O|hdLKtdngsgfQqGOoxDS-oPY_?+w zB!JPI#OH5Z)o^0eLLl#@gYPM_iEFPr;Vr7Oc&K(={y1z=HCe+>7hm0kZ2x^NKJ+rf z_{h~6M;MT02AI9#{3e8nN=&AFNAVk(r~y%!C$MbRi{hcQrTegEKW$7kW~5s0VC1yy z%rK6?d7fG{%@i13nv(_7tpL3|ea$ZMrnFSS+rzs~rB69l*o1K@n+@NSv}vIg4x=53T?dB;@MoR)Aw}C|g)RYSl)Vuv-zDTTP{Vd<SZBsS%)n&-kEL$&+#J zk$d-A-Zsyw$qBUfrnY&DY*GBM7MYLY_CLyz`{=j(37<6JlFgX5mSMcMO8;_psI+?8 zUyg>PTiVLJqXXRtD3LT6^oe+^k%4H5pFGEeDmT#?H0O@Jeja6M=gC#+ay!A>&Sse+)K z@g$plxLmz}KFofvL?plsETW#{_Hg3nkr~*UlUDp*nC`Y zW~mQ-3j9D$*LGHB)U@PU5~?`G_h{yMH-b>px9Le{e$y-*Uu3~`(NFG~chR4=ni15( z81`WR-n`_nAl-EsFn$+7{=W$Ti8@ks{aD&haMPSc$|#3_6{$?N;s9ms)f|)=ur=zA zWQNg#`KQ`#jL_Psil-BSh$m10<_#M&#zl15Q#WWSC>q3|(_}*{#fk0Z3;#paFgQ}` zUZJ1};hWU8TlC%sGiCoa5TN0;PvbY&6ns)|*bxmpS^sHMT0TjdKbk$LG<)(BiU_*0 zqXBnL!{1Y2mE?Tzn++U<(;tNuqm;ny@eEYNIF+u!nfwm3_jH$z?wTA(Nf}atw(wMi z0Gq5Cjp|%nJsA-BErZ;g)NK^*OjZopr_c@q78cp(K}`v3hl;c_&mma@?R-* zd%H~6^D=F^C&vly*(G%Ni)|~8;b}!qO@J&)Z|+-N%4BE2G|WX?;cIApst{HoyzcyQ zN-_*AEa*A*GH^h{IS}&ouTWl==X zvVuA~`K+(?vN>ReWLT~rE6{CIA28P5^-~4FPqzRx(BiqnN1NZxTuZ3$;jB*tA(n!I zOr1tz+z-#Q-%Hh{3gdS={1Lxv>#I*nVd;lB4f^j%!nlXn5p+EUC!~n;+A-JR3i_tP z7cG4#Nd>7PN+J~=Qk#kYp&RJV2whhqEH3nNq3pNKk^777DcT&N{jHm0BQ@X^*=bl^5;q@B{$G=^X7V2f|FBjD zyv;8%QIY59Z@;5*Gy_bhgB<1^jA}^Fvdly0<<7ilPHWXA8H$n+19kI`T<3y>x;f?BL&|e5WMO3!rD}MT9yQIkrDXKXKp0mfa8P3` zA4sw`Qv)IusfpwVv%I%J*HPbDk@spU_9Krf$ct`z;B7}72w{#@hielt_XaSh)9WbA zKkHXkgt&ANI?z(u$q1qmBV)kNnsU%r9?hDkkSm%YVGx2ZwwnlGpfGLKwx&m>PLV7Yty0{{f}59AS^k#*AOCEX3^vo_v;l^9V zDH2qF+LS@k)*qhjpYvlp{WeUfH+U?OsH3oCgaBOpR=XBl8z5qw>vwsehHbdI8gA&7 zTQh>I2?loQ=FvD|^bk#=h`EonzR~o^w2IP6ib4kp&gQKtlWVodZ`(nD?(gm5^qNgR zdMMSY9NW2Vs_y_;j*Kb(yka-lLXraY4psHA<^@CRs#7xi*SIDH{o7{k(3D%k#hdEEA_dydoXpmCK&Y+C^G|C;i zoJ$R$<9mCPD9&6tzHJb{J>93>P@`}6zq&O=2`QlYd|vr}P@z47-(wZHp(>Qgu5&R` zAIPm^En{6iNx;j#hik-g|dY3_lM5%s(&d_$0#+`vNQ@rXUv3&v^ zI23y-c%PF2bp~722;1nfp=U+uP2+>ve_OHNLLLSFYENtj5oqF_ygZYezg~Zmo#R9F zK2gR-%Bj%=Xbm_M7n`gIe7o8BCBVEgJPXJZSEnFuTQ&0bL5wq1U zDOq?yg?SR8Z@~7hiV%{ibwxHwS|q#)Sd(AuoQ;83XBX{h6iGLnVZ|zv^LNW3P#M)s zi^jbM5Bu@Ox}a_wz3eotLJq|1OGQi1Qaypx8A9;ym~7=-!S@Z?llnmq33M;{9f8&g z^O{n9NZ6_veon1Dyw69xRmT2JbNmF8EI87im0fHz?JAP9>hP7&xYu74iXm%TtsN<& z`Y5-QvNmL~LcFjH#q_#5EFTwD?x61xYGzX+n1}g5D$&;X$o4H(ypKVLf|El&diH6g zFC8%$R~wn7d=32Yzg2L0N#I7a+Y}EM^us}GstZbjtCRs(7SJp3yLf((BJ#|q^um#= zruMbCh?hwEO!`Q>OnO<>%T3Rv##?GDV6^$~1}4lz26DV#(~(*`jzu@_ zNVRU?<>}%XYYHd{z~)PE4~gh{_>9TEYXH{EOaXYHmw_e)Nqkp*yip|LwyLwn*#99Td`U51CisF;5DyS z@SaQhZIrj|h}Ir@#1W)q?FRZM7PT35Dr25XF~=gpP>M6^pl@f>3-h3n1rw&OI=&!1+KDcu$=;@;OU;CzqHT_PoP z{}Za5!n9Pwol=@!bG$cF{#7W*tv=A&-n8PYgNxom+QU%)V;-}h<3YFp(Y-P$&)aid zLOM&Qw^vE%gPy^41?306^XD@0?jxlz46;_lBq$- zuwPZUB?upFiePU201W*b&vq3Wql#9C(}ivG&Zl=|8(aEaYB{ads1boZ`&NyMeLx2A zqhX7Ryc~lUk6(^5RJT7O!1>8X1`&{}p>H`Z_S7@A=rm+@b97uBD2F&i-Re{H!4Lhe zb;~=dh#k8YUgXXX6dg;2fQbn~2Pg0~Wkw_y^s3OiyLpng{kK529<>{fy`k8V?blN0 z(h9*yZWI}cQX+COr-U}4NcEdJh^{6L`uS+~xh$e|MKwQXhM+Cw z{ia1@Y2G3nE78rmL7$c4x71WD_};d!;jh3~aqv65ltE2`VDP*lnEgMr{Qr98Ee-&y z9q1^~u1bkAj@AGyr&Q~+)!e#l$l#``EJ4)NqKGXpa+kzf7k+kv&jgO&JYzEiCypxaJF_tFlzBQ4lB`in|#zvh=Z&xj{y9tu-3 zk{jq>Z(_)3>wfO&`o_S3Y`;n*K_9PMw{x?)b8P&(Zk?|?r@mvM z!^`^ovc;6V2JH}|3@2~u?^QnIpVD&EB^8Z437GPdb02ujF$aYV#-ESiPB}|b zyW&67=YO?NFkQ_~bZH2DCiwrj08a_i;Q>&9sbacyy>8>zbnNG9N!tSOz}8)yJJ3Oh z6zTP^HXnkHo}H}TDQPTVd;^!fxHk4|I0&P$7}S3B(3q%U5a8TV2dLCj?an^%6r8m{N3@+L44)hV8y@K8%xI;mve-v2^=LJy8c4z?A#g5`49u^;VJ~04z2;@xeofbo=DQJKe zcbvdI2f(|Z*#C#!G4IsFfON)Cg{$M4C5S^$<10JD6H~bj3Kl#x& z#a14=kl#_+4Uy)gE~6f1l|KlVX)$!UPMciszL?%RBT32Y<^V3lA^Vn&ud+>gfWhhX z$2fv8&i5zEf8BZiih%4QI)EXwlC|5aFu_I27|4)=*5gAGQw1Pqq)2}}>>Z~J0ur1& zjcQK3l?{06Q)6ErOTLW^i+G{wza$|FZ0C>2ASr7Ufo*=4PcrTY&cpn$`;DCi5*t`M z7^NN7kY^DG>b*!yzgbl2tk)PN^iPbl7KTK~e@z7nMJyX43+T_DwgPW=`M%MX2H8!Q zUkfqx%z>44>R6Xw7A=^~tl?|8>yuHYOI+Zo@u!VB<1_ICcr|$^3^E~)bE3iSg8kyNFmQISV8oE#}OS@sAfPa>~s^4U-U=r8k5alUz%p2f%fg{AWnD~sH? z7_CYNp-w^i4jY$_8;$NG)?A2cqz=OCZ-uRmYzfLAY_a99X#9W@05&L|kEmN{47>H` zs$nD>>c4iY`Sw6I&K>)FeNM&W1Z%c8Fn^9F!+@70!U-ev?~%XNQXeJx0G_%>!^42h zay-WSP_ZVPF%7X|*vwR{`rltDL)QZi?(Tv&WSks_<`l6m6FJm+gmS(@YOGHm-N61e zog3?xidnjlr<%ladQFv-$b{kAsSjVcVI#+eN+bGoq5ez!UbY7_LQ(js$ zk_ly~X~njsOiIHJmM}1Y2j1_?K=yyTO_sv}U;Ipcp&6W*bbo@BM#~c3>G=7^<xkt* zY;swpfRZom7wucA5Itlb-|aJ&QH!*>4yBxep-!JZ>m5S#wrwW@E~y4ec=WIl8vO?6 z>eYg-FT!AANOoUSVh>+}^ZT5ER{gmIs55T$B*8cqHOL~>OmEaYR9!xBSSL`lfd8HS z^`aDv|F~bG))nm+b8?c_oDT*(mHOHl)!ebNOg1Nv$~;|95xmv<_LF~nHuMDT>$Vep zt|g3^@qcFzJVr$_XgOpv+q?Jt5YKU+;re&HW$18r6O(r1eSkuN`k7gC{x&Vzi9}mQ znI{`)N`OYY(WhgHu)}cxog$WMD$Rt%nFrNIEwAtuc^EBURBBhR%dgRXl2!lH7Gr8G8K0R;0tDf_ZI;-hu5*NX@iw3X+u z>N>BVfh1*fkE_lJ5uarHuH72qU^n=>3LFTCKqLZdd7nu*8NhD+j@=q^`ajdh4&uu4 zBt}`%n&9X8tTJjRF`o5C#ex;_(}tzZBD*V-YMzw-u!V}rCJKF;IGV#rdq-2JDRG8b z2@<=`>VVEv)n;akgUB&eRjX_zS*NTpgQs5UEmwkRF(n5F4cK7JmZ7k$O2ar*Q!ZFi z4rQ|oAEf4SKqg3Ve6MN_!p9EJt?uWZpXbx$c7zfC(nsdGx*Q&zjDcI2pFgT)jlQ=0 zh2%{-6{h+=)_d%)?LU~=J(%4tla2(s(}SzKoL;@qB!1;hD!F_85%`W{qGQ*VT~U`> z_82sls+?N^Bm)0SDF#@H?a($08RpcC>MHJH5&PQiltWB$jc=(kR&^+PaSCXRUyHQ{ zLnI{)sNtCabBTnt2Tr9GI{W2_&l~$}&PL5PdIQqb!2>AF+4;PzfvJNh1*kx5VsE^V zCF-$eKoXoas7)u{d}$QXFWW!$%}q#kOKcu-WyPcD<0{5O&8CcWdoYs$fXvE&@2>yq z(nJ-X+$ZRZ7jHY-Ea&^TJXktGVfdxvZ=4nhD=kl|90C3*!cm zmPmf%?YdQ+%Q4VtS!8_dPY&R&O1~SZ`S^C34rMFGVNRya;Z@9@*!1}N~n7v+-Z5U3J5}uBI z1gDH+k2-Tw{xG|67!%tdRNSG=V;C%f32NOTNBpZcq+;FBLG$d2)jCmcEU0=DhLR|} zBrM*aG`G*M66Qi%l!(L<&wc$xLEnI7gxy$=*|?Jf@VOO-n)oYr!GYcv5mA5j3F5Vg z`jxH`O0KU8qkSRvi}DIX(3SP2ZwxYidS`VaSlwXP|-mhrJ;7YQys~XY;$ zjDF`8TSduT&ImZ|2B)MO-Ljtpts56S$abf@<^1oH)vmC1>CcXa`~5^K3J~8_Y0nwk zE)&qbgtx#Tfy4m1=V4RR@D<;oSAU-5;4asAi(J&M275Io987#GD>$>0wgD0Fs^k8U zsX$wzlITf);XpH=038|q(^U{Tom+O60N7sGTYK1}!c-F7=ITXDNn&!_J~E4Hhur_b z<@(trquCXx z#tw&}0nzKFOn-BrQgz9Q^u4&o{D+Wb)bsDb3)O1RJ}o@Ef%OnFr;m%sNR(2Jo{I(# zsgtZBiQE4W2|BnpYp@X>t|bzdIqFM&Q7!EIp@SWQo&CoU{H zl(~g`9?h_OP3#1BrfzzjK3wfk2uKH}seL)f%aJ0q1w0 z5!-G%yP8%4UT;jwX5)$ml?cO<^O%9sn6K)L%1Fi znUIIz>Aq)9f8tFw=_?OeIBfb!QtaPH8zGXXcGO-7EH%kz&BMAtKNxe8`&mgpxNkVXnU@mDXmNN^ zetV2$FSL~}%+)hs$@{7g51JZkd3)WRe!E*%I*iDB=Ci8V5U=CJGw{FO0=o7ljm-b3 zGQI!nmXIjKogUDE3pJU?x@Tg9HnUuZGpg%U7*-6pB2WFer5sD0YEB=O?JN!t96F`u zDWL9lhgN4$eDxL}+^Fk~WbyOaDqxDL^#0qIE3}l+_YFaT_)G-}Ij;a@iTnrj!vv@s z>sT<9)2)C#Jz($bK0)E}d6wBMA@2QUpW4wR(+iAOOP5TWs)*NJSp@fD7RP-QIAPqR?Kd zM{?1~{yq!{ZnOfh2M);mO4~vFT%Sk{WLg$!HKm=*9#i$E+&4qX|7;Fi8t1ord6?ls z_;HzFO)$K20rzZq43xc&ifZAYrfo-!o1x;**y+i&M<{vqD{DWn#!e?sL z`Hvs{opGucl%9Uv?Z8p^L|Z|yeZJE|zU0eG3dy(cJ5TycQbz)8f}Ii|G{k0^JW~D- z1$urPlx4WUSSjcMX)2#Y%4PPvHO?BLQr>`0-ZB=S-^dP&8WE1)`)uoJ>5TVnB-XC8 za)y2MXmRxchHSrS{@{I}LC!QCX3(p5k2_lbLw`UpOMIu(;3$w!hN4 z-hOndwU}QL+>gC98ev{){I{A_V48l>^SnPV2XBZ&lU>V|{}WX`rvKR+=Mzf?hJ?hg zJU326%!VX{KpryxrU0F@AZOlvluJGbi1~Yk)(9K69hZZ z3floQu(@Ul31RCW{Qt_bCg4nnYtM&nVX>HN+AZH8}8 zMWqyJMaa}kNXMI-WbGn9z+-Ssn^Vo~fy9DyJ4F;0f!*>yIJ*5Utb{m#Z=fj}@MD17 zb6_o#Jw1pArsq@`fVG6*R;nBPbzHHNZ~wlGOgToU*=HFCnP9-}n*}+~9P^oG(x+Ou zEduD@z)}F}=OF^ra1pSMn@eY}5^=;)3@9D8nJfD9>+_lSVbeta0)Cnb1BD4%`9E}q zm1g|`V5>8ZUsWm3(3cPGR|}M&H4isct1dlb#l{2Obs3`|1aGi_Q${kb5y(B%J7>N3K2Z z{yrXx=g|aa@>)>f&n+S+Vf#9xtXb~I=Sy)MS`cu=)bqyWC^-15mRtp%%!eiaM5J5t z?YJy^?dTv*rSM(8%uF#pO{)H>-vgp04s9w?j-TUtT zkJp>`&{)dVYTVoXzD(`>j$m}GoMJV_-_JIcmB8FkNt7l5;9RB^-Y?gWFCA;hH0_1- zj33bh07Q#KCYD{gqOo2JKGd_NV~U=S@y|}CD+^azK7^};kkxFHmUTA7uLIcQ0WT4z zghreT#SYtL*AT$`ui7%;!$bDQk-xke0(y1);~QY8i+lgNgD}}PWF}y461UY+) zrZ0i0NdswH!t>1T2mwC%stju-Qmew;Gtc3!JHGfVU$btLu~dcv*m>tY;1`C7J0Mn4 z;(v+N9l- zT$W8n+x1#%JGW9EeSl61;P;nyBrVx7WamYi!uVrA3fjG3{z%{P?&}{Ej1_sTloIA; zM$lRSFW5w<4?B1_Q!%%s;1>a0gUw@kzBPx>(d+$sSBCnyt)7sOoV?`vO~H30zt<-7 zuuM5I-@(tQ1#`BsnZ_-Pn^fMHh%ij-ux6<#~*^8ngskWDDAh~+^+*2R6 z=c9bsU-+f@@KguZFw|~#;0oe^#T_yS)8qQA2V4O^$fPSn)$CKh>YRFgws4^~ZuP(4 zZUbxd_U=Dle!`0EQGnx4|tt4u<4}sRv-Uv)>^lTj6Cl z1}rhHp$-d6Z7RU2rh*sk-|m`PUior@W2zTR9&e5(^C=oD{X*ZEb$a3-C%^rJnUp*b zzx%boJ*pK1`cF0=R7!8H|fqD-Wu6MENE+uX+ z#Lo|99Q<`S^LZuOoX1tIm*8cOY;kiq-bv`ji)bU_xPvL9GKCEmq@t-;Yl*6$-_ry> zl((dfNytQO-T9{CHW!Zx!hjv01H&&NU6ZlS05c8)S6*F(&mz%xNNx|YHp=Gi(f z=`er7o+0?I3fJ6p+%FO{i#>y_Gg+A*B19NmpZekZlEs2WAmqnFqus-W1X3e0x1Z{` zbv%59scDN;1v(i+9 z!H^dh`=uax@jUj7_|4dHKxnBbQhV+iN=gj#Extw_eW;|uX#MJ*03eqlNvh&wnCDH~fL9ZN=t%9eF~FE;Ucsx9Iv5lbrR z2laU4_(IqgHXP{tge2@Q=Q`&A`|R(qD{iLK8;s@d&dh%h0-!mp`Og=p`FZU2RWwrR z^yW3g^-EbUQ-u5W+FSI{V~$1My(M0vjVbDjBK&^MNb<|t(vf%B{94J?^U}` z<=E&FXLaDsx*X?%HpGkS8KzLcc{TJT*3{Z4HxW^cyF@$)3!eYfvJOUqFKsb|+;c;W zH#dc$6 zT>v|6tznkGb8L(d7X zaAQeNM*+Fq4tEyGk06Acz4^{K@`sv)0yL^*+#+J+V#;Wn>-rX-4$oRymQl%tUHXz# z*TZ0heE03ABx=*pKd&1hK~F(J%RcLjS|`O_`L?#;O2^E~B3T8dp$)pz%U{l^m(3ioMgB zm&6j%@*C>}!>1KcHPXIovHOB(@e`VB?ligBi%O5C5@wv={0Z^=E`(J-Q<-dI>OLaB zw9xDoD#&1|O;tkGIow>QH|8QAJYhxp53YD?y5Dp}4yhcXuo9?(PnyxD?kSE$&v_ zH57Mucemp2{rf-j&SWNEGRb7-y6$t%?w;LXg}k06JpQkBNs||04;EUtIo|w2CKnguZH)j+bp5D-mIhx{sX5QU}0m{|N zxKz)k6Ho!RfROE2+DB$+}g#QEKcg%nYzmP>xfpq4Yx!m-QR8no$a zd_BlxHHv7?XMO@K&RiEJXU~TQd6;@l6aJ72D9xNgemu(e=-QE&d|Ow97j|Nr#y4fV zX2<_J^2t`S95sMn6g^BC2X$)X8_jY?VH0<*@q_Okl z8y$1CKefsHeswvX##dBWXxAtEJWy9zri#~J2|)ub50~(#vC7YJ%za-|EX`c^UqyUb zyve&-yx<6@9z!=0Q3<-$x|YsrCW?Zr=28B1yVxShv9eyFOZ!7T_M5aYCKPMj1kHs1 zTIj9s2?)M@D!IFLK6%>THrxGt?oOQ#!i0t9#*Mz~_1Z0-{?I!i_;GR^aq{()o%982S8^faK6fIFx*l24r%ou5p4Dy8Z9A!A6_o-g2t#tu@1r?HTD@2(07<~4(#!=Xp82m0$RTmVH9P%J(yiudSOrXT{Xo~ZP@fPlsA~w z3HNtsIH9qG!*m!2`e+j%`Q%)&V3TsUFPYVq#(Y>e+dV1rDO*>X`q-c>`}*%}{n*Fc z-}L+}M`#Q3EVmMu39rOwEM1w50s@okYo6Bs0DnRj7gWdNL$TgHYT`umP9I~?Gn|>J zuBDOk*z-dE|5^ajwZLUTYh(c~XfzAi@=>uWuW8xQ-3AsK%KIN`odzEi;8 z2!RQ2XXp3BW0ymPezgwmS-9f^if7wv4*MZ*MwX13DD4BaNUez!se86ExCfsaBaihX z^zA{6A`n?_QSGjjH_gn-94j0WTiaY-v2cF@w-YpesevczqVIz{p#BwXS#+UmO zDRpx;*1KqU#;xV%~JbmsB$bnqz&3-m&)2#$nE(} zp7sOgJau*;SVur$Ms1*GcQoN077)jOxp8Uh53c2m;pH1g)vKw`Qfg->eSkNn-uxkZ z8>J!i>=nlo2iXwJScL<@S>yeVkRn{9IUhT*y@6nH4NgEo87Qp9NZigoPDM%;*{Q-Ycx{{W%P4MRM*Z=#Xg#Fv?_agLi(FzYIth!(5 zrv|CJ)fo8>4sN|Wr8i*cbC@7bMuKexypQ~#nzN(#99e?1c`FX5jq@R;9z6elM>;#d z-p33ZDe({FID7C&BgmF7n!i`&(r*rKfe7iXALbd$%poQHq;gcYE29tZq}Inh2qks%(+n1VsUt{}XR zhB`23?hsJ?m=eB%D1}{Nz46BD_C{llAWtMs9J!AEsBB2R5@dW)$Qs2w<1kDVJf$E3 zK96~kA9n+i6dNwyTTgh5vHDA6h$ODeuwY5|@<9Ve=GYLj?q9{bQ!+F%++Vj-9_tU< z>cka4i9uj-MZw*$8_f;CVTaG>V`KXHO=^Bw8pj(#AZ5BJ6q1`BCi+lYA^+He5bSm1 zai*uWGwie1ftnWh&m&Fx-|4O3L@bKO%FiZSM{fB5NDO`;rUf+czJcR@(<(&`^lm8r z6J*v1^z!|J?qui{T0hI@$40J!P$N-roB~Z83t5q!>Ax>h!Z4tJqf0q2PTJ0QY>(N^ zV`7|Z#v`zM!KLDX)L#yqS8+*@ty}XKQ~vD1-Xb!WBQNsTwh@hB3W|f|>m1)MOb*%Qm!*MU zK`q})OhVB% z#QZu>4RsQq5|t+-ZIZg|#03V*=ZiK}DB-lx=#-b-NJ?|g(+&K7mqYM>4+%=swMck2 zjj|^jmCBp|GZUgOFU26I(+j=%sA(jEw)5|lJHrF0IwIxgJi2TeII(x7#C`R8B+@QB z35-cSXvQy)CPu^+}Eqj1Br+8Qzgl7 z4yAZOuHRTuzJtltR_$t= zkU>C>{JDpeSeonA<9qFI8jRkR@}5;!)7|Uu zvY~IpapCJ@s5Xz=(ae~7Y`{G>gbLTyKXO?=}rx+HvMr zA8*3{ie%~k^`wkg6>HLgHbX}ui;87MGO70Kwfe^g#B0m=hyM^eKdL4e z2}f^XAYHX&0;hk{n1FR(`bWY4X;@!({JvL1NH8IREy|aUwM<8$uSjNkr=;m*{cEHL z`wcv7$(E4)Kc$vU%ko=Vo;DNvx2)CYv!MqelrBIgIH#E?fkWDDnr}w;GiEO8-eGV# zx_CTpW&DAbHtj22vF03p3rB>aM;5VKg}sGf+i0l@dv&YZt=08e!hx=fq+}WBoPF?j zQkg+?39(b)aak-=AxV%pOm1Hy8y9<*BYb#jGD>qCh{JAo)LlA6K5@A0{!JF#7%#fxKud>e6;1ipTVzOA)?Hl zum?8kc4Y3JlWhNVVyI`qMJ7IuLe$ zEULkk>^4t$n>9n=E~dXxGCunZ4291BR~QM|H0CRG6VPLJdh%)&Ys@g7akG2IVg0$^ z%H;-q$5WXyFf_O=iClAfJ5*NN90Fh1O;gw7VIHO$Z~UXoZkD5?iLh;pl6h`1(ysNM zFi!6BYWHieI&YM%RuiWqrFVi+^Y24G0zU!FSz}G&L5rS5jeUIro=C7p;>|`uzZ@L? zikD|BV20mI;8}u%(T3_?7huZJ=S6oq;7R@>L z9e~QIWXGdBXG_>TK3e}bLv^`u$HPfFX!NKY{H=0V;QYfV!QiX&s_m2S^SPMZaB@8* zGR^)}Z4+iR%l4c5vnOJ}PsP8$R}Tmvlwwx~v^Idh(H5Fl0M!UqM#6pTGq0?q^F}^q zES}}c$3)z*(!B^@B3DW0i&ed#uVxhv1%buru2`NEOlE3dc=EB@jLA`cetk!WqR8JY zTBj%VRy54`Wa*VEGP~~DRHQgNL-{o}Hr`v%)nG>Mx-mVm661C1--^TH>VF+N?+-Fk zJov5hxq7|7bd(4(VOgzso$2vekB8Tu?AkR(!TOx;9eHzPM9|$iZJ~Wsk{GxQ8C8}e zE$Sy7P3vuX>##vrlYkTum*6N|%<;y9(J*~G*_%&efgY*hQ~7Gev!`=xL<_-laE&KH)3a~gWKjjX=ickQCDVS zGQLWfAolyS(NIHp(hvT{GdT>^IK*pw0oOIGpPExEbsK-6Pk+QF-EB2)5{MLyLKrt2 zoxd`=xmRub!p0aY-K-_EpdqKbK^$f*Us{G1`8UFq^+-azH&jC335^g0GVTxk6>LH> zP7_0}Q>NG)Sq2>jLzB@V?oFPmg!2^H;)72H6uiVT*-!3W+r*VMEgVGE}AYf`>d~ zJ3UtcajNHSTit41kK050XN5c8-v$G<Mbw=N*0BFT2VIb4My>MOg|@C`_1_AQIENve$1?)X@+h3TWj1`~tT4)dse$6r&=9(avjHDc z|MUo_S!T{fe2c4g(l7kvlRa<5^#(G%NS%ifzP;U zll(+(N?9y1o=tqt@@vk(!N*gQ>@=pSBhzk_q-FoAgQtv^$Dj8257l-lxR5}0#|i{W z3`tv%-TB@0ylcjPO%bUK#eqRFagg>E{F}xMSVwYDOv2v%gOJ~w8-Ml7^XB^#q;gr&uvrcEa}Q?GvIRQcnRVdbLCfgxyIEt7~WCn14X*47`*d6 zV5i2h@Z$!8Eq!R=UYrpxBz~cF(HOlL@>ZJR$aP3}Zr&YL@1;ec3Xsvb-rBA3~x>gIHO&GzXZTuM)VS zD5MpmgygcCLL5^wf^u1Rh_mA#Uu)bq1q>z^#%&m5oD3=<{MYI1F)NO1K~G`LS9rpB z{h2<64n{}-?inz^u6EZ-X=%rkR$ux*!y>i)*tuLau^(QGx1Ol0;p+Z-YAK`uH>Tmf zv$&EFPv|o7TkK>HjhpU}bI`y2=Mk(Wi}j&>;Ek9-cb_mg>)h#@(AF#yd*9Hw8z_fy?>&_$De+`C;^PKXtNHn*9*Hv?PptHY*B3d=ynaeVY(55(a;Za$}HLtBL%kMoG7s_~mQO=Kf`ni?eAwcBxD-6%3=QY?w#U51V5JS&~%hoa$oKkShhFKjN??ko?&W}WnHJUX{SOnBX&fX$GAbz z^rSI{%wo2>%d1la-xp#h-n`r=T|dG5E9Qn4mS_6y%mcXw?yFo3ABDSv$}<)Xig;xj z8vV8V6ot5#KjQz8&r-pD=^4BmTahb7sy#0L8+AJrs7oEvtmt%cE(k1@fk`bwCVlf+trpq+Kpw$L&rUZrgSz(m>j(XC|!3ngI0k{eIquQ1o^wy z>(gr2TW-^Ql?Kz(i(#y_HSxPK<7NI-cYbndX4a7QG$kqAf1_5L1=XhI=szh-abIY0 z*#dWqmnI@og4<*OO{pi z-lx6H_{08qMZwK|GMTEk6t9}(Rdcc~Z0am(zb*9ZoXfB6$wH*=EtnSK20;o5kzAP zM9Y~SI|1ike0YC$)8K&y5ZGu)isnL=(o_T#*n~*Y-*5E0W!$5=mqVJ?#HyioNeHN_tULshXn;W)XX0)z*G7To&w1lba0Z%1n|ND zHo3q{^v{7p#w>s~mtJS?(GIQOcZHh6BEQquZ<64){eDQxY29WPXtsbx?ftQf$p7_V z5RZI>6NtGUrWQ;4yX)133UZb6mgzl;F)qFnS>WM6d>wgje;g9h_wSp3D79*JalkhL z@WJ=HbcBBZQ#KXpU31`o&BRJX?LxNwHtV}V%BBL^tdlhPAWy<%8j3WJc+c14{MR2O z3@$9Nlc>)92pSYN;Cpz+{x`bj+9Z2?TO{)Fq|)d;^VL~{mQ`e;Xb-^X@^}rKIGMb4 z4!p&4b2Q5_RGWXDZI%#!`C<~rPh*S3t0<$DM|K`M#`@W%M;XzOBZFQ`UttZa+jH$1 zb6KGwJ8LOv)WqISLpVu}yaZsqm8W-e56f>vm+ZoJaqIHU@zT;wY0gXYy-wION8TZgd z1znH#!)Ut-)pS|rA1Eh z$1~}JyNSZ*3J?gtFuefdyam4KRtTfYG>N{lBkI7Klec6=HH0!2s5S`#| zZ9r#ho8jE-#%fej?80r*XT$NL;ht2@PYOY@Hcy%@6+4+VQh@F>g!1-vp{>`1YRhz& z47N@Z47FkWYH`RnYcN$n>HN^s(Xw}omrXH|p-JaPF_>KFYOyJG+)hpab1I{W$iraf zDSgNPB{ev;-dz4~7{F>?2tp1!P){0CRQ($`h`h6q^fh_UuI3-YX>~U?&W7t?!8AKj zvT6gD-~T>{;vh*#wustT7lsHk%teQgfa1+mGbR98i^Gi*OII?ksGFi>QmqhSb5>Ng z6ywPJOHpaFdC!Y2*Vu4bOQXs#U15|)pgl}9`+Z>hAECoG5KxKU_Rl_n%x>lZY*OP` z{f$8(P3Y0DW5XSh@_AfSsqO5_q{GP4O+AHY2hg#+X8&-YbCrAauuZ4eS#V^!Z5!|4 zgC`MAyj-i!Enp_w*FolAFJ7IhuZj z+WWtuCQebcr_*lTZd*cXJIy`_9`v=2l}yl;yCxcc!GQxB^zoZq4Pg}0tvPRt@f8M(&_QNfMGg+h4U`BY;1^RzOGRCtGjT5>(yPxOT-a~I zM?~S3Xsx5qF1z!0m^fT)cpkxEG@{R*eHLr0=?e?%4kH^OmIwSnq=jxa9ulrt?tpeh zLIBfyIg?+Xy=nLPgSzP*Xw>S+vcw#ACDp!nKWqYCUf+N9|K|I-*&O1HBE)=xgb zxSRhxs9B|+WPOGZR#;_F%D--N7+n{0UjhHb_WarDc0z>Ag4VYpgU>| z;O@sOwCh;N=3f=~6u!z6CB{`>SH~Vf{Ni2XH=?1?+p3Z8zsj>+M@u3G2k(g|1qF`= zCZ{J?db(PCXgQ*bs(WVPoN3K78a_&rVMkng?lP=A*3{>GJ0FKqk1W*5`gQ$Y7+JV_;wm zRAhbOa$rm?&!CQrM_}oaWnwE<3&?l3PB>uG^LFKY`*N$4l8(Je{)P8_#+Bsnp_+Q?CvfPL1pwhNr?olW5i z5oWOBDcojYeDpg0=K{=XK0r@A^j zRnPC3&?^o~I4Q=HEtLTQIog}sUC|dKxe`MGGTdGZeVOTYWl1oUCBv^=Io1a+K^GfwDLK$JD zsc}RSrKqLFiu{hs`sx4DQhqOhK5y#V0XSm)WQ2?j1cEO&I@-F4Oh=mUr7S%;@|_#* z#L0kHPOrhDn(&;o4s|r#4W=)Q}dcs@{ih zRNuXwWZdmB0G9M z5Dq#76BY1+1!3DZCbl(`dHm={M88s|R#nl51x6@fLIQ!5yY*7=e%=?;?-#wcUJd~D zT={^I7cm`4)T+OJcXW2?;@#YeOX}hLTyy`A<(w~cf>V{%UbKgKj!mn}#d&AhP@;HV z1O$BzfNGh{s_o=Gg|LS`Fur>N-63J^Rlj{b6|yVb$lRB;@$y%T$yMjRpiF$8Ory;b zKLvb_{J)mLS?2ji_-Lu>4St?idF5EhZ35n z52X(;lE9xh|@$bC)@wN`S(3J(fF%ie6Z zuw(diLU}grb<8D2T~yVjwS+HDt>+}BC^xg8OO1}9UHC$EXPK?_^Jv0Fwgs0nsRSC9 zhSKujHie7$+j?|n`1#JEyaus|s(SUr(MUDeCD0-bjKX1J6f&YSR%n{7RSPyHirX<5 zYrl8i3Y6EMZUsXpC$iBVedhfZDo0IvgD(1sb;F50;0r$&Ea){6Vydr6^yc+X=)D^C zquAU>N|himsdj?A9AyXqs5vg_m^1l0t3E6@*bL8`r>wr(EZBw)P-bJ8>1s6Q9pOL) z1+Xu^Srin@5MEAWtACJCWIZQ2fZa|vFS8+Z8lz}sgji@ZY_pd-r6W=)O!=dk!jzFR`|(YTjuSQ_sI403G7?P!7Ah!D7OBB6$!OwZ zC|VE*?Qa>`iIrzHE0NFKi49FGufe~=k*O`z^?#+J`XM~dtIAHl%Mu-I8uo%K&|ppY zZ-Ihw5)Kn$qj<%%k`ugjUdAE>XY-v}kPHfje7)|XFboDeOSHRhrck=_5+5Pi~mE#?2TfmnM4#chEs^GIusN zrR~B;l|~+&SO4s-E{!SI*bD;@F3quJ$_-3FAYD;%;~pWl?%8Hd$=KFGZw%5h0zoa< zo+phXql-taAHav-di8{v@IYuJAT(tulBu|5{FZpUee-^BDw_*BdHc?bk?j4K=X}jB zW!YiaRn5rG13~VNsl?NEwk9hBT3b0b4ca&}2Gl$h(O+a^sW+fJ+y=D*dhvnaetzD2 z4+UEHxi_aH%fEKmCqFYL>SRj^I2B>QUrf|)byW1d!l|cO&H)L7x<5Y1j>l5AG)4!U zJ^?59#D)_ymx~#Fi6}}0w4>VIKK(mNvGMV>s_fNsqqgX%&6{*n;}#s9sbTN8e^&s^ z-EBxMAreiT|MD;d;dp9D=eT2p!_T0S^JOiFXRRhda~Myi$n0n0XXmcZL>t3?f{qn$ zm1eHg{DSw56HGFAsy0(v?>yh}HW(+K;taG)`thm_Dk}^s#nJE94u`&5w0&v6+4FF@ z00{Mb-@%5I>A5kU7nfTFyVshy8ENq4a}W)A{b2V=O7;*EJ9b&WS!$SGkgQnTt7 z*q#Rm`88nEcn&xU!cn)kWFk(53$R>Onp}BB(VFX9pSHc-Ob|9r7YI&~aQLziB*>3~ zGnwd%qtl1rQ(f9k%{p_CoAz}IoR0n9xtqr09cUoD4zL%3okfNbm}}SCM|WN1gdx;1Gvmx%0J&W z?Z(?ZJp;`M}Am_njhY~V{D3M?0OFhK> zl2nHsH(Rre`!oX9R`wjI4ZtBTCgyuY_Et^8&A{bhjCfIpaNhV{) zxBT0fmNSkXlw89~)6MsWbj^Z>c#<-AGy4(g6^!_`q<$|smMnF#Dv~(92 z1%h?j)E@;(>G8jXGvlu+tCZ3|B%GGIx^U>WRc1e?$Dtke*X_MnOY%bNadCy=t}lg% zFTYZt=dj$-#O?$z+dR7U!p=nGq$0uDpU=8%Pi`eNbzBHmST+19$F3y=uqTic24QN$ z(Nqk0(&v~H_w;J_hZHs46f4?rpL7UNk&2TK?zn8Qy$?=#bk8oWCe~DIe`Dx_iCCC% z0JXjQ%@aKXHgt%X6#5O6FnJMaVL(gDAjRYALvLwxOK0xxsE`m3LZ_$aJD?~fp;v9m zoC7p#+}6m?0^zRc|EA8A#)*%OH&Q6rx|EL*CqB~bsr62DenW?r=%aq_^iwxNE6U=e zC_my+BJ%V?W&nM11x1KP@rrUbbcS!+vG5}xA~C!Bo01I1WkbfBam82SR)%WJHtO$^ z>s{z8S1>@zM7=jC`IFw7aoIRDUbMQ5;On~f7luE*H)wMO>kN+XZt?fPzX$eur-8@h ztN^}(qzD?M5+XcTV6ecb&W;<}dIAeTim9(mU->tFbY$NH>U~@0a!-)5yLkX@AkbNM zrf2?#Y6aN-Z^#h(cJ=r9NlEG4ui-larvf%6p~S4G*hX|~_R!fzQ5~ynFz%^!_k#4?alTFp1SG$2T=?*#^ zS>2?dKu?GlD#+D(5o|QEro*-#ORoz#j=e3mZka@gOCkf-`NX4+UxI7zaZYflWMG2i zsI4ChMdKx7f_2V5d=#c>u@dYMR19$wskG^b73SrH>Mk^uXt~Y2TiozwYq6EdaAk*s z?Ur%cWG%)f96cHtvJn-s$rU7FJoxGYDcr#tf{>j`QIE_+Y|CGT;BH4KOJG1?-w(C(iFIVzr2D%7uzO!uFgh#!lC=42>jGjKb^nPKkh>Yu zeCX0sa9pnvXx;d`SLtehnS3R(P&sNoGG__5o-I{5HObD<(5OQ-5y-6Cn98UHP=cUe zE*vFH?Piyey{>51Ogja_j-rlkkMidPb@QTW#Or8smsA2dj zf}_VDF!|SlQJ7H@KY@i54^12@mOPbNOFV&YfkM@7Se*bwp^YN2&!@&3k&*-ja>e?? z4bIqUQR#-={x)Jd%z=cTDv6fp@6Lby_H;lEjM)?K=6!XBe#E>Lqgs$}-!P zM-~=_6B(eoTV4eywZqd2ti91n&-o}lN=wuwG3ni- z&DBPl2$CK1(!1-Js3zrLo8xVM308Czth7JZ!VP9%-;B8pQko zha{+7^}qhaWb9}}#c^pRdUfGRlpp-O7Qtbw)fo$Rl+>mJmJZ$iXM3eydY8tFfB=)n zy|w4<<5k9u!o&NCc&x)BhxBl~DlJdGN&aU-Z##LOj)XUH@_p`O^6sw(BsAh*Yd*OM z;Y)cgA<1Z!W-O$|*pfbQv*4Es%>-VBiSwU^ehmMS{)}LQQ!8fNi{S1rhjpo8^w4UgFm%Xc(L!SMG{$>e~ zDSCP?BSk;XcwcCOn8vDt<7wUAW5Wt&BbK|LxxUA{?0>S`v;I{cb~7+M&O@^F~b~+PJd9k;jlT<{MZUW zOg8L%U!OgK+4S;6D}wMJ$EeHtEIgimRRruf`Y{8R9ghQP(1jfO1_tG;?{D#F?R5qL z13GUTa6~_0N7ZWrfQ^_Qux0XePFu>?;jWUPI4?9d!ye|_?;y0`5v?OwsSmY&$M^Y3 z!MwTBR}tY3{7mI?X%c3DqxBt5tU5;c70K&|t8qoh`B@=2`du2P`m+W5sd@vZ~ zP0K@08tS}%gMeLcVSrS^9vM!G%D)dLB|B&Dkv;CUX3V|@=RBw>QJM*2s!=}8Mw+u} zASA-0d{1WXMCHNHzn6 z>;}l>M;=`pqjQ@-N&&D$BgD{mmeqWvFdyMF3;KvOtUYY<*W6Ruhcpw)b^}i%`d&@PG4p>qX~gS5f&j$&W|6-M`2^V zCSx;$e*MxA`K994>H3?1lXvUt_d`M1ocgtiz(9VI{{bmTOLZUn579>EgJ4Oh2>&6E z%y>IP61Rmh8c>a}hwoz_a`B1%n4?5(J{_y^+yd*pMYYZa2OSqTObwbB1Z^!GxRHr8 zHWnQ02Gl>Cvwgq8!hdsyBL5NFj}otB5R7-3#w{Gw{{sfrDIWCAlrLxt_AfjEw^KY} zfAimtLBWjvd#?(7d#na0!=GjsYYhu+tEh}BSTfeT+Iu`N{$%A%O|7lvCrfXEBlF;a zvm#$BUtU`%;p!dikB!>;cmoO=wuEWMlnkFNhsLaiLIL&sC|NvASWFyeg~BLN zTCyr?H0;rxGR1qTKZPNCdzEL8Ru*(WS?ovYFn*ysJg=(9mtiZxUndAg5 z-*B<%lorHJ?-ZQQYaRmvd&O)XhsxS-&_lim*N6^tAh9HWAqVklLPK^8IOWk!Giua2C%)d0mroHXluco+9 ze3bwCRc)BZu)PD*AhJ!Nnmfy(Y1Iu8g`+P)5`|mzR7E-*+y-5SFI=BCM4aM-v#4r1tKRYX!n+6BL*Kz^suDu8sf{M`p zFcrP@KDBkUjMyg43?A0f)5#Pek4uzqVTG^1l=p>`KRZ*S<;3ez7b&ps-lax7TxGz3 zAYxV5@S6AEocPy~yo1m=WwsTVX9mcigZ!^tsdn@O*;5UeZM;_zn&}Iiv;$}K8IH-p zzkQko9CFLkF$d4zGJRdS7PZ_D5b|JEXw4b=y00@;&g8dSnu;M{5RO8QLZ?)ZPIt$v zmicNXtqnPxe*tk5S4XI%Wg8|Z-F`D1!gnp6N;WUd5Hq3+Q#U_<_wHZZ?-3$~&|1N} zi7Ey1TI_&2tC@z-Q9E_uXTJQ8TCMA+Lx2L9(}5ItK0s@KAmt1f9&Jq_$Y}qKHs_tC=!1 z8DArd4IcvB^PYgeQ|tK!$5@7V?)(!WWUU!L8VvP`jY@C*NJ4?h6jpjT+#mvVAAH_e z%g>6e_AtMyi$KX|CT|pJJMv1rVQ@)i>6sJG#*n2jH*Zx&hGa=WI!nSSAkV`MWlr5Q;IQZLGe|!3@39z+RM3p$W&}TSS^Ptwm5;miM1B1?8UfIvOg^tR z-p{`m@FCx|ZAFQ7E(-wNzt$+Kj#HePtC9eh^XqkH$|QsCM9DyM;#~_cJ;$B}DD~qq zDblEAbTy*Gu^yc>YE-I4;j?n;lgT(!EsM|4n) zRg{s$fDQ#T$cRkCUW!_>V@|SF>%jqONOH~P0z#7LS5*GCEwC`@N8m+FyK#nTr4j2Y-~%0IH3tmBkZ z@lncn!JDdJ1Tf17iGj`$@PGwMDb6MsKa9=O`|R|T1*F$j&+BQf;Kak0x^Ua3**HMD zxN8(Ze{*1PMNd++ZAWXZqv_1nrelPiY!LpqHf zXVW&`+^)y++H+P^X?VGGW-g8`>?b?F2r|o5C*n~2cR#=eU`a7#uuUu0Lr^B6@PY@R4>gI|*Dy)16>Cn&~M7fk1A0*q%WX zYm^6JgXd|HiLxHES%QtekAIVHBEqrgQC+Dp6H)U#o2j>`pzdGpbZW{-3e94G1UyPd z3BHb!J=fx~d%H|tbD``7IvDh8vDufoH6zo$wy(3254z{3=x4CDP@b&uuB8v1_Ed8? z3I@_0laVKs{tSSbWRwJk_F0vZ?o#?M>9t#2`NZLp$Jf!|coXK;Djmz4<4f|)cl8P= z5bjlNlWdR{1TUe-_Nbrtr%znempH!gIt0hmwdIx3(*79?GiHa%)*CPjG=(te?@<3~ zy8FF5M~pZba%i=Qm;lp&sVYHu0d5ogyGG1VLE=bBp~0#dn`DrE=IBWuT;(j$cXc56-b-%Y$209VbNM4 zf}Uy>pI6L{lGNnRZ@2e#>-oU>ku!zBi^jycA3L;UdCT!cm@QVIeRBwJ5RVwKP+pFY zT^C(+R9}0-tWtcM1Xc>&;fwa>_CpuT&6}aXpN=W$pul%x%_o26TT`eYR*f&crXt`U z; zRW9Rw@%B|*%&%@!4|!WtS!Gi+fV*i-LSFo~^7KRAvXAZkQEhQfrGc+`L+uJ2h{=0j zzT#(g>H!tWS{CXTB!qsPyvn=gliQa)zPad&j6-*U=7*gCEPc%brfP+3d|r0lrDZF! zkg_B=iQnNE9HsT@pT^~Lh@OPrS7xNX?|R~d7&T``lQnkg5&!&4?54UYYG+?>!K@(# z$;E05$5iAt&P@Wng9}H=du?f3r#Ue>o0KkYR;{nGX~?f zGGg@ScYt+1b{Q9^JL0QLZWX2$%!-x@+-Ni?jT*W_aLCB&qH*@u`9fG^NJHahj2=49}V zplX+8XQrpSXXZ!b*8yo&Ql=x5=cTR5^462Ou4-UK9)iG6YZ_~;SahCq8Fq~Ze#`i> zsPp=`xXI$Axrm)c10^Qq72G)fW~jgf-?eWBZU^C$6~U?Qa8*_6GJ;J(T)Enb$PzoG zv2%ipsbonvZ@htWr`JcQz#BAyjpQpaiveP=bnk%|^f&X5ON}E<$shei%s%Yu zvJ`zeQXfA8XBdQLlZ_215J**$D&o5^G-#RAjs6k~)U6YwEbQTXUalQ46+-$8nhcao z4KI&|Wd-W{zTYz5&egP6hm5}$-uU6n@=MTYWyuoL?mw;H5!MXnvCV3Dk{1wfjc@ln z_IDFyr-6<*WKke7Q=FJZ#A&63Mfzz)fNG1-LglujvO_!B&Xe{)UAf%B5sxqo{X9$+ z@S;@08X>^M6O{oN;TFBMq3_8miW|jWVaiogVbu?}G-CoT@f|#g5$8VUJ@0F5m;C|U1wYCUr39N{n8BR@v z`;Nk-jfIcV9Y)q-Xk3JTbRV9Pz?2iSYIFnFg{%?pb@4(0$F?0Cf45oW{=XN%wLgJt zUpjWm>^L$u9Zor-!9@;Ofy=w$=mNRCdeD!)tPENp4)EK6d}XhM55_E& z)Z4@Worayn7cF2pJ4|+M#1aJmAOL|2;p||^PhG+%9#jq;dF)&I3B-yEl@D&anpS`+ zVa+7q0{*Rj^o?&dk-0?Q{V>bOZXvf!n_PA$hyy>YA1G=TNz>>*K2No1H4FT8E|c9) za@*^aQb&SJAW&_AZSZg3u-MXlfAJ?5dg;jlIJ{cdd-<;qi@nnrBbAq{CYY=SOKamX zN7r8f=0OIif>_0s+VPV0bzXUM<6brTEmJ+EcLpnXsO?=xEGf+m!Cge)Ui8J`n#{&W z(PU`o6tyb{Q}O3WXsB_keG_%Qx?r(3zVPr)1D9l9qUMMgBP#_KLn0Xeqx!(=xuP`JsFGm_S`u2+zZ7AA**d2Ll$3wJpSa1s zgLX!)DZwuf!wa_%-FpKNGFZ&(lh1iY;t0ZCe1Knw^vJd9s1}a=DeVuxlBiMq)hZEI2@l^gZ(5Qm3{MxjlW@bf<|5xsXu{w6cLUnhH(8 zApf_HMwuzAhnt_>&U>pdG_~pT10J-|8m(p^v~DdWK+la;&4ym_W2AQHlDTQ2*#QNdw6!G*gqVd5kFpgP%`FIdXzjTp`H~SITll%qFtF$b53_o4GF{6s$c3nmDsG`XX6d~o>0a@8l zd$LKZ^ckvTdzfnV=(iU-buj)884_4~6_*6BY@Dz6^l0YNe^Lk5-0zE854#nvL~9Bd zSw0zhp&t1su}9$z%X(3`ZI_F0J~PZ^l{RNh`P+j*K#_{xpP!qK&A*w>ckIU;P4?vG z+XLiv}El9y%9V7qdw&D3sP{(I7MSn~n)8qz(~lrHcm!DHGdX5{8g!xT;vk zGVA=YzxR{|u(Txyu=P{`NFpT^!uVwS6g^qrdc;K3Toxy(jie=Uj$WKGXfM^J_qO{} z;E$JCK|l%qnQI}nI2qM$(h&Pq#{kt*M5Y!Jm^^qD!<0;apI55n`%C*%LhH_VqqS@^ z;&<~z)o81h-|=fE2b}5pl+r=wElXDhBmks_w8Md_rn)PTv*=7mh4Ov&7CVew*u}Pp z#CqO|fg2f#80_CbTlczKG#F6nzltN+0HlD!+Q-1)bXX8GK4uJ=^$Zp? zXRap>%u&-_r2y)EsTY8dax=;>r-=lR{(WRuv0GODe5;E-JgT4q>JtU#GsTma3&2?=VlR0B-zc{mFhj4(ilD=OQd4x z^H_4_xZp~Mg>j_9OR1rXV*`%yfI;60N3Q$%YfKi1r;I9{#rn}>T8+9qSae%P3=K0T zSv*eTT4LZ{8O{Xru`G}9{c+l%(NjQ$Uu|4gl8g#;ZtpT^R*+QA<*_cUG*k0Z{v8eU zqdcBaZ_|;@N=MqS?1b<8Vc3eku_xpD#<@!9Ao}&XW5Ppe3T;aF`Ie?sLwIWJ4pne;dJ0rP9c!r)pJqwvoAY?%qA?s9UhiI)0$fj&j z!)yGSm(Oc_wrS;+bLq?WI7rZdU;6Zhn!mDkq(y_IBqEBp(rQ35CP*IqM3dv#uloP^ z3i(u5ZU=b(_QrNSk||`{?;#0irA=KMc@S+O52HVd_usc}aN1t?-R`yI$FeyipOL?67iQ+E{Y5%$)rE^2X@6LB;h2n@PA3mv60J~w3K*`HmBIU`!YT(Il3Oj z*K+*pWNuCx*iM#k z?e5F!%sI){GRl(7FZkkqSK~ZIVUMbNYuaxAb?S2A<-DbFYPo}!@$E_*m1L~l0y8y` zDC&_OR?_qO1`4;UapkgX#pCzhRe_JtDH@G(`vpsv@t)hoLN-aTQi#d-<6?;A+N5mC z#O&b#&f7^yV{}@Z+-yN3P~<6drXbMjtV z_QPCJf8Tt&(DdbJ;(eNq?osefg4>jS9PKWC zRM8Jvs31A<3xC)T*JS$tU=?lHvDBL7rXwNV`9~V`vP?%s$|WMMmJ}e$q=l%7^INUv zbf0=&7OLjL)po9A;NWi9J?f^8ftS}~YB~-FUl)7U2I|8ErLzsh>xd>gtio@5z{0=< z-jAj8<;uBipM>7_IPB?Xe9lP=BzW?lM5?P>qvu^ep>qH&ss;DwvHKp!<6eJH4&+^} z0jtGlJR@dFBKFE8ajM6}Eze^=(k$Tzbu*gS@n$>sC!V@H4Z;<-IQ#bI+X|}HtV1Z9Mb&44_lx)TLhEMU6#01azCK?NNVE4D z{TP@Es3A*LuZS}V0}p-naK8?f+?J`7ZsjIW#nNk?GCuc0H|f^&kWbaX8~(yv1B`t< z%y*2B_n$9&zWrGA>pfiJ)@#D8O12<*5FJMUrnA1WV(+6wTheR`(N7+Z0Hrj z3RiQegS|kY$@%y6f2j!E?Uj2)1af#>(-4dxCoGPHtNx}1j>B+LRX%*nCUk{>0;s(} zpB6*2Nr)yJ^_@T=9W9PxXZ0Mi4gDCuoyB*sR7ligB zB#DV|fu^h^U^zoD+xHEqt4j4r8ZHFDa_H~>I#q+mMoW)O7T$;!?LzdF*0KBO)G*~s zi{pi-!sX@hAJ`57m8cRex|miCdIyx^tc#Dv*`F1q3CvK8My|ompu5nEabWND2=D}j zM==UoeX=xP&$0^R`pSX!AqM@>BiRmdwgihP1C&`BD(XosE(e#2Q8{Ma^XHWbsaV9*&ignYUM=dzkBYK;5rbdY30%rq=i8V^5}kD zcX@idCKbHRL(LWTtKIE@0?C)gs8I>YBKC?g_c&awmMj28@K=0*r}`YWLc(@qf+9xL zh%&awO=2d}v=*v-g%tXlzRmh(=gN&o`6T1Ou>*x9=+jj0&xDUjhdF3S_%z}>lvGX^ zPDuy|pkPyGRWN7}T?QN*duY8j=+tjNv7zH&$9Q4p?B09m!kmoX)G!xo($ihf!EGR0 ze2!bSm%(%Y88eK6_E_H4=LTkl*KVXpr^Zu^l~d=EJC*18 zQlR^mdhS|S{4b;9mp%JWwm$`m?1X#+X%=0)FK}er#41dkH-DuoE~V=*Hr{omb6YnQ z1T_~yhyz-tI~|p~nd(r|V~_XB<+zH@un(nmnTT>Mqyt&Wg0P}286{}W!DtGDc;s+4 z)N+VpP}?)pTag4+=PwO*cb>oFqKl=Hix!(l&R2)n@L2?0ChOf#F+WnfA_%Wqoz`_; zcZ6fnbJ;qMwFM2y*|-N3O?X4vvB9L@W2An4DhoumC61L7KZmDKX)sUN6L`gt$ANL$ zHBcKPJtegd74TaG1ejUfhT_;2d3ubU)?Ta*qtVyvihGFNrn3V&USdj;vd~X!*Mxp{9^_9roeMgB1_&?;sFXl?BE$y5!fzwWVYDKqnjO8XW4g6-q1g zj)Tojltt7{d=Pc@iqo^cn2)6s7vf5P&FY;rM;tG()#IpI$j#i6S7^wz`-larc_)dx z)Q}4YJ#hW*i)J3blAnduv3=&DEFcG$X@cC6MvsNvMB zy>a5HhNxKlbD7C&;z$q z1Z=5pT$(6{u3pF8u^Q9gZFUy&nM#@#ZytBPZyFIbJ=wp{DyO$_qt*if{f{l+m z1nRwVmhUS<@9E20@9Wy3$ou2M!a^`%odLxA_ITkU;Qcw^_DjGmZonmO{@YF2R>8uC zg^P=ejZL)L)4IzvWX{H`k@tUGKQ4?3C$}ozUt~FQ(wd9LJ3hjWJwnhhC2&eAxUO~Flg%<+KnDpUh_+W_fA6{{Mc z(kTzDU`Gq-qDw(!e@H;EFAtHID(&E6|36aqxA`QY-4_O%G1jl`8(?nFrE`Nzn#bVcxQr|s-;^c2&QTH2Ikw#I|rYl#}8$- z)_Q0AYXTcn8!qhR+B34fxB!zNhi$CeS&2z*xjllnXTJu}`j!csE7sp2&EBsInp8~l z=oYeEonoL`SHf9Y35(!@up`)&h<5o(2YOx)92w$3SL? z7u#tTrtm#{jCwLOG|es-@8&M>zoc|Im~*GIDx}hz+SF87jUTyqP|*yKZR$H9kb@?6 z@jK@nt8|$^hQdP08pk}Ld;n9?h<8yiO7K1OkcZS1@9_ComV4X(ZKL`TK@Wy)R2!U9 zL69v#iwqq5!J1;*mb-5wHXVzd?OCHeM<+XGg5FMX)sdAzQRu&@Hgg&Ivfw7?W=sI(?FpB^Vntrn94Bw&QRzKz=GS#@_joyN}hY#0z; z_gAVh71i2k-k5SR8>{2t*!Om`}CHbJdKFFU3&Od1iT#vM0S@9u$acyzI9Ph2kHoHYWvv zW0>NBl=!gggl$v%%~wT=6BEOOqLV&AA(Yju2TTzHKfUEhKhqv133ob3go2!{R}SqN z*74h>Af__7V@&_R*gQNxC8x@pdIG)j!9%x}Wai zBwoh{{cg~jnsK+ulvvrN1TuoiyCYZw0^=_Wu?r>t*&QmSxg@Z~?*t6&s$$Xj-*2?d zIGeuNUbuBX+7N;g6tbTsrgEYQzwp%dcJgzpZkzXBkmdf3DD@o>i(!7ZfCafjAyspH zzn#lve(=sX;tBG0My(L6OP$lQD!aJoP$Jadik{UG$Yh5K(jKN;RPx+Vn4>4+S@?1DiN4j9cps^iMhIqBIkYt zc(2PLT#@^ZX$11dmD8o(x7)3^vn^py8={e|mjj;On-Z3e+UMuq_vfajro-v{fU-32 zeoEdBaiN`%rO1)ouK_h9s|u2MK<|gR`mYDQ6V!9Q*}eH%A%!XI!QBl98nrP4wi5Aw z3h^X@zxwHG&bU(W=$LKZ`f3(`uUU-0OoEk`X^H_2R|Ttz&~GLbO&uR#0193OZ6mQb z>7xs88_16lyG@fcO?g-Mo=$P#Q>73|VTpcNw~_HF04yToq)z|jE4*UrC%WhoNgtfg zC`r}&ZA{9(#+)jN0r_#R)h4Rn`(|)b##57YeVHNeg<&z^ZqfQg${~PIvr_adk;-e z>+HsLMkTk!ct)onaG;>0y4N`V;$6*Un`7KNoL1L1{^47DXP2%6@;NIYrj6-FraT5; ze4|h02u@f&oHD4_L2UyCs!%ZYoVCAS-z_$kvE(Tktj8~ypz~FKPIT7DPa4w>>Yjaz zw{!5K(OziCU7C>cgN12GeggWUDfba2q9Xn6yWo}Rh2ZNonH~K;%HS8VtMmq$3J2k! z*oEQa+0Dt5>^=38SAvTtdB4Z0kNxFaxBHF+8$P$Dt3*WaVFdY4eN za6K9yVf)*4Jo;&mJ%X>5jmsEU;Tk99 zcaJ?SMsem$MfIw4UjrW$_^aY1;x_XvRmCr)?b<11oP|}gpXobPJXJlHSn2ChIdo@= zBNZJAs^gWHQ75wx<_nx`%;&zl0_MFdXYBfMF!fl*L(K;!+|q^1Vu%RPsWf zHQcSk^g{!(^?pGku6@enaRN89nB^d=-0t5AA=iKwXC(#>bSZXd5c4DXZ4V3*3D*5` zL))7grsK4k5S0E$0y?zY0p5l8#4Mv8>P!35r5gTc$^$)J z=Pi`Qw%1hckY_!GEIh7K^<%xfF>!E7ioX09l;~~n?=w%1!&M~~H1Uj910s1G`HBe< zy$^w6oOscWXb{3d_J~+?Eso1g;`kgj+}tXRKcP2B!H9OWf(TdTiNzD%v4&kFc3#yq zPrI5x1oCeIkGH1xUW|!jHFCH-0DJ!LaJl^b3veeE3%0q)Wk^?#xSw3v4M z*_T=6=$!10UCo>hrR|c@VyHB+UN&({-PDOI*Zm~GKLP#Y=z2ipafS&*Ci67U&X=vS z`Yv#)(VgAml|nWo+OngviwDXvsBhVnH~ZC9 zgb$xBf;N7D`9HrXT|VqTnr^Y4>)Z=lJ3BzR629+{QAiEg#ms-0=zW=}`cn4>eEm!` z5_M%yxaCMR!ip@O7s1@SG$IEI=tt;fjdk?dfItq`$E~S8%VCnK$>$4X16v2G+ppE{ zLa`5r?dy#U8ESCu>bQ`N;RG#1*2KZ0?7W35{t-DW4oMOJ-wU9%d6o9$Br`Pp6H#qc zDBO+9IPC^KnA(^G41%koZm`Qr0zt|bEY4&EUBt(bhn;vJL)E(M6)1u2rXNpS3y0ge z)LW)V);9AO^h3)83+jDyi4!Z?9+-&0ZRquD{!bc_q)v z4N%({v)b!!zJs9TXLCyM0FOZqKd1e4A4GYzfRYfQm&BI4FiXxhL`9k@E~^ai&V3*h zzCcRARU_qfbC(6P1=tm7D3#4pYswNe0p#Y|(WEd3x1axm5$2WS1-45ltVQ9{ZQObE zVVDsbjru_Y%3ZjnOjp(Uq_!mBqY3OHzenkMPAL$XuXKHi`b6`N%YrPwF( z2+RuUu1?|u%4sVP;D*F*vnZ@Z80SWixbXGn^>pbkg|;*HVK)gyi<+OvLFT}jU#ayU z;k{U6DXREm)N|%;jR|8bowWzikv4U;z_D77qK2Q6QSi$&qTte?i32UPM?s!Kq>m>^ ziVZZW74ZF$1|u+m;&kd6!_h9W=V?C>&(Ed(^AE$^1ZqmdZ+f;6crd$8YDSZd`uH#f zcQ?`mSYwsTk~#@g#dRnB+x8Hc2O^}%P1xFOnGidyD)A@<3hb+!X@9zp%bI;8)fz$g z&~+D4RAHT>h7o#M@Jk7c4fF%iT<9ZcJUGd%vlbM1AyU~2L{T8_I+~eWs>x5hZH!iF7ndy?U@VoaPHCTbDHvYJuUJ+&QO;l;9>9Y zPXg+ByR8cV9w|RJ7vlf=B=WW=;(uH9?W;DhT+LTFV5dJ++3#3A|7pG~uEodG=kDhA zvbIxJD2)vKc9j2iRFZCReCw^Qu0Abz{cA+{uHoBp@dQFVYWj;J3x_-!(41-BA0+5( z)U}d_C}jPv;Im9srsE6u5L}$LNtIyxuH;J1D9Vo26S9QnStOfTKaDDxm(y;N1pD(7 zjw-_{N_+m7i2+pavaPSkpbtdROAihC%@!q;z*(c*a5OYS1ZaRQy*63QG+Ai~dKWV1zM#RS5AJ z(_Ni+HSkR>By5x2+m?q_P81OH1@T!Ww%WrlF#>|WcMyTUlDDC6so3`)q_V^qgPa&C z;`yLGMb2{+h41g;v$k69F?R|oqM#DNfbFJj{#PAt8(^Cj_PA@K)vm(Br1Cp8LdBPC zqF;=QN`n!VAG3prlpHiI?qi$bO`d57F1u^AT@{SQw0-w(UjVo9yoNRk``0t|??brm zsl{mvibrcbvj0;GonRwB}{*UQm`iYI*EG9VO(>(yGYxa?n6 zEG>S_5!AHSKi%l=DNr$9y^r@n8$4mS1#s}#kxa`s6d;#ROs$LWh3Tnxo&|E87SQ6H zK|2EYD)K?5Y;dyi*%o zTlpJLYq+>gD}TrrphvJuk=3ga9#t0!A3dxeo!ucNYp81cOwi$W=3uYC<8Cmf#|;ld z^|1bP6$w0(n%Kp9ulCH(jx#3@lnd)k7x}Bx#)7YT)-_$1vjH3Kgld1gvKCFz9n;ZN zsPmg9aA~nu-3j@5PB*CX_n)&WS*MtZ&WoFf==-3o+2c%a!%}@ zC^!~Bo`T!I({+?Rm!qL=BNw7w6C*gU=q_52f+gNe@T$KfN`htr0(WP)7_IXA*T=9x zg@n)=tB#W7^6~G4$kaD9IGrpqfgT2FgjE@PhUHG9zrE}>h`psUeDS~L2>>`+mw<^D zo2A;XU3UPBbW-*0^*Fufri901a^z|UHGnsNnuj3vKY~{V<^kZ7z8HAHf&33W{11OC z20WDoJXr+XSvaGMOUPrt-VTt*|2>%GZbo!H<|Z-cz^Xz0PJJzGBswrvK<;-s$)0{Ltw?PW z{VDEl+?dRYtM_=yX7GpXq?Osn5m#fI!E$)L4=tpNc0LI)x`1}6L?hh?`OYxg&Sio& zK|u%NC4j&L!jg*;5f2J=>q;uo$H}=J z3VyKF7?j$$bURbvVe?g&^v}34&#{gkpjWMw7=z(J*Eiz|D6v(r^+eJ9E>yl+wewq-A{!SDidhAe4|YYx{FVbCkf&-1-QMm$$9}-Wq(tB&vO8`(d=O+WPVK3}!gR72SBIxgT-|0(k_< zYHaCDglD;qhu#_NO$(?$%q*0K+y71vL&3w26=yO~gMSubKJJHZxEDF#$#duP*5fra ztZwI^#_!)1-7D$$9=v1-ZjArEFq2j2Se&znyMZ{D*{m8 z|N4NJl+MobF0-LvCuVng*{kz>Q@#Q&w#?y0rR%BpIF`6<4V>|rBHm|~9Ir`M{?lH@ zeP^DP^=n*Nx$BS7$qo&TELptN2BP8e1;;|#%^EiWrg%1zC&uK4s}fl9a-9o{>()Xw z^5QvE_tw?9LxvK0{%_vpH@^Zank2efE&*_21k9AUI2Lm%0;|2xChz8NcIJWcF{aH` zRW9f2RlqQ1lX3h{+upfTGX923FiUA-L)XE5mDxgkE>)kLja!vh4*tbqD4L~*_rb*6 z{NPqd0%Gt!DkD5=-v+h42N23K!dHo|{C-EXB>IlQ*0S|5 z%+qrj>+mv`|1zeE?JYj~UtVwscwQ5E_=y@s_WKszzoX}Q;{qBa{x>=Q<`be733{oh5Y=wCwe;rUY7zO zjg8K4FOUBz!jHcGK0eR?rLXn%^|s#EGZx<+q>GzlCC_X0B$k^x_r2l14iuQ(q|azy zZAyQj#IJG0YxxBbL7&%lUhC{X?2eI9d+0du=$B>i|Js=q#zMi66vvOTF5_4=(GjIe zJq0?>*LERmC6_U*>MTyDDi5m-2vdou%u}DxCVb#XHF?>B_>)}$6xD{n*9)`QJPD{I!z zq|rY{_!YtcUvGTY1xdpe#4z}C+K-h#!BHPzX9|To4>tS3@fl^CQ6Ztzxo-FFJoe`f z1+sL6m}W&;bMh@@=-^%wdm@E&*nWpFJW zml=}8w^;wW8M#;Rm4jdrSXk)6e`%mgcPb(-I|JtFh~cnS6=5GVs4NCb+EUuxFf~$m z5OW!>r@dju>I}&#Phx@(`MpN9&B#8rZI)GN7d+~&fK)?{(kGN@1ZzUO%&q_|-t<_M zd?^Z!;uCJTz@K!gn@!7jY|4-8IxY^_Ka6Kh8BIVxBoW#Levc9%KQ?Kv`&XRZuWTyD zU4P|T*%#-B^xgN{k~_T}HK^_53QU9gR#wm_7P-D61V87wR7#gkrO+rr?#6oY&#I?9 zHrycYa}9{2oRMNEB*E&qQ#f$+QlS~GY`>vtkBdrcN@ov-os-#cJn!K)p$yHO;)nF- zuocx^)h7>ZLx6ol_G{{H##sc?ypG0|)F=eAeIIae7zIo$+&y4IJ1e?ZBJTo&gSZL} zMHA?3RQn|2rD8SeYTvtCQ#Bu+^hy77xoXBLj=$Q2{UIARTL z#PM9uTT)p4668VzHAJLsbO=DcINUL#OICAOU!^pzotm{nhoG;eBgQwhobj0~a{m4K z{<`H~)N+`|ul{i$LoH_ta9??|dKqvJQ-MLv$D0YxWkV)Q@j-dTvay06Ffe0^VJi*k zsQP79BMw7D(CEyzrGk(W)aK|8)#hmX%UM$@FI<_{WJ{41>QS8#4)iptqfH(pnAr?DVc$ zBoOICA3OkKSP+6hARuKuzx`2u`}6g}dnu7prsws{q4!@u5~|?8zM9su^j-Il+sgUE ze!GJR1FXWp-#2)BS6f^AUnd0kU*O+Qdf!ee%JRk!9hgFk1=e}z?j#winfcYJO5TkF zxY~-Qa$Imgl8g=wNSz&G_B_D=L#<7Mx2V7(^@vnu^#O9 zMzw&YCGVmBFd;i+Wz&sQ{pZh>bU9k%5A1oZmzAJ(Ox9lFMa;F3zxFz;6dT86`!hK% z+%&0s&N>2>aK9`BG3v|FBxtBXh9T<4d1OYb1U$0V0atG}esv^vlA;vSAx;GMTp&>? zQpJc&vAtRbZk8A1nU5zNcam-V&9CG^uwP|ar&f(jmTouKjLvKim%UCx0;S+iz$&oc zG5OF@1yoH21v!n03K{w5_;#0xGcEBF6X4MA8J;Y)m_2NQySju38M`><7Cm(t?c+9~ zM5(RCj&d7lunN!c`X+!;l|V=-{+dM|W{bpujG%3JEcu?jgo1(&O?7#Vu|%KvC^XG6 z>yKxQ`!ibl6`q9rOnrc|3(eH6pdp^_asD{j3F+1*6g_=Eodw(W@^Gu$%MT- z_ZA~W4od-YfO8YDmXjQt*nlhH;eO5#G0S~&`pPA1B&kp(ucQnu+JGFJbvvG@qwr6! z5#HG7pG{#~(#g@pqD|VyCGTNpL9xs5zS|VY(5-^c2S_9pU*dY4hxKqLna`7zbh*&Q zC4*v=x^cc`4=z}xb?Xgo3m92ALA2^twMO)GYA2#N1zMORmKCgq&Rv^Ubqp-YVieSM za;nlh)h~H6$N#F19xr?>iBaVi>d0dFM5S6@%Qfz^V9Hb5a&q=N`cFBrbPkN0T&tdH z3=(NjW~#YTbB;SL!R|`(bt?4H@!3JnwDOlVCYpbgBbWEFw}KA`LXjbzMp~#Kp;Uc` z0Q)WNHZqLyqPeqlCC-5PNCNs9b>{-idEM?(iwJqikA)GKN~RS-iRzsc$2Nn_g<7>4 z#~26o!F{AN`sTtx>+@^#|P%x>Ep2+{oWhj|oHfX) zn#}!1N<`;&Z?P*Y04`kCRze#ca99iAg5Mv!eC#+nuE0dv-;BvrfeQ*wU}oX8KCvTE zy-ZBh-$DEey>1jznoRJ|_EK!>@zh1G(-yrJC7xZ%W^(6x3c^_AtO&_0}JckE7g!6jG9~~b* z0it3@z`MWv(YKeOZ~wuiU_D!9mZ3AEK0x;u`4ISg-sRxZ=G&mX-W%{fmQ0f$@b)-D z8t@Xk)+ul*>^@)nIDvHD!EEQ4+~{q~T=Pq}41K$B)+2Z)GbA-iSQk~x!!+-^`CxarlkW8w+tpG=tVr7=S6yb?b98XV67r(Zfw3s! zjJldZ`!dH?)tOy*tV?bY)HQ~&w4}3;wq2Nw&1NC|)|BjvQPvj+d`1$oT)~ytToO3?CmvCt)P?Uk>l;_bf=uwP#~uS%pPu9h!X{glDh$)L$0jcV{yV(`w+5Jz|TzRK&pG+ zHh#`DZ(2&+CCE_3w{m6cLE4Jcob{HjwWdsWZTOF+?GiI`!%;Ds@%$uit?A=ZjG5x} zreZYKS>jPHT1Z;e-0&xIg@+yr<1_s@)1 zR}q2&Il(aPQkDA!S41G_2k|_9eR0N`FU6S}yjv1$h=y-xgl9-#dh_?@jCc-Q)ltB~ zNe=uvr=`y|PwEsw9-%aOZhpnb3sW3NDKzPo?hdc*M|RfXZ+z@coZm#eT-{50I=Me< zN|jH2i2AIOoh_v#83Hy9kC-crHET;$k46npcXHp!QcT)ueDop=J(*P2hMFnh0Wk3ZVfQFjJd7hc9&pjxv? zomgrqsl_7vwckG6-P)*m{7OQ6HHEzr3bfLF#Q(Db^BM$91hVt(C4O7pvhO%6#gyW- z-`xD0^UbwX-ak753qQ2L} zG0_wQwF^eCHT&lWKO)_AuJ!UOGjib;+vABbo4~^*G^F26^Y)XRY^j?n1(^J!C|xv# z(g2t>iq|j(Mct|`r$>HMfxeufMNqw_u87RIFe2M+?H-z9dq%=9^=A-S;=+)5l~sD@ ztb@PpjdcpREqROp_3b6EFWz=ykBIYY61LOJa(AMN5=pKU7!zu8dj5D}D)05{qgv&> z+m0ZaocNZZ|G~O$)loGg_qfm(UXf;kyY-u=qhurrpU;HZm1z2>@^Vp*yZbtt$y--< zFm3%%{^8juCAbm4rtkuLV8lyw-YSU_Z7 z)&;ztY&}kS(3TL+nmavy#Twdrh}~L#tB&_OHCe;Hm64YA{|{p6Z9OgC_rAaKYWjUX zJ1S|1E8bdURG)7-rfH z{E8eb7xH`D+=_%}a#ZPLhfWQ!N0lm@bh6qMnwr*pl;Qy;iP;}D@lkv9SeZc6>i=%c z*Rs%28dv<#pOwyY?mTDW9JuwwQm2xZrZ+F1o$Q)v;5TTp=NOmN88wZqYR>2s#Ko#a z-*PI#KO{UkrLfub9h6X)EgM|Ix|3o|pYOpx!4msqpLDTscVkHjbxj*D`DyEA6P|=U z-_S?~1{xH>LuR;n2OPZgYTZh*Gb;{I5Shx#862+L_LdFWV=bUdGFmWO(!W4=zDNZTZGG+59K$2 zeafAHefj$p<`w=|`r)6WyOkiTgQiSgihUw})gqGWk9hE%tt~m9O7zu$Wc4qT#^_N{ zBonQP&<{RW7fjS#y!{;}yL8uNR%h?e%!=)1cMs?-i`UQC$g0QR+_%Ajm2`Yj7m_z6 zH>veILp)DzZ9+kbOioM}ho%z>x}*V(E6vhWMs;lorG-5O7nVFx!&czm`VWJ%lunN4 zi(@6Tn0MU^mGMyZ&&G6f zpKrPEWhq|VHB(&!s2RktrgLm1)@mIzE?0kTD+F@K@Gl7?DafH0IlW9gvt0~O(k#x@ zOA~Bis{mXU4GJ`bBLBqhb{P{~$&P@P9+@{wi^I|VE3O)%FAzHt&s6l9O1$R4{cqKJ%|l`eYFiu^0a^u1PF0EmQ4Ec{Di^pD*wu#d zU_@V1!_4I;l7bZ}&FTDNzL0Fn_DzAlQk#}4HUt_3f#Ktfj(;(2T+byD@*ImE#ZEL8 zOZxWO5KDZ{;8qs>wL*HKQd1yDjJ_)N^df4@6(&TbHU+2yt?S7h#-Lu_FY!w;MIOVR zb~SUB+TU@ZMeQIi$AiA_D*lEK<4I8-4>~mIU1V^81>Wu7_D>r>@9Oo8ZC33#k~9R+Ot)`;DLS0?OYB1RW#37>@88dNF$3*V;@hY>fmCnO`b2o6p|Lbk>S zscem9$p4C`eXowtsv;o`F-AS#3z=4|KaJNh_`&`ZQSEIhl(>ba#zgp*dzJyDG9&XP zw8Q9nyViqK+wNj;W<}ageFaCXgNDPq{{CrPfN(JQ6LU+OYs`q}JT&d8x91|F4aeQ! z9T_4B_LFs?9A8VJmf#jTjWIw6Fr$crUHr%L6<&Uqm_91936;k~$pBACxA{m_=4Yo& zO^!abEF+yCbkfpmD90J49Gj1#Ob%HR1itg0 zEgYq5KF-_Njv=>+4def)KZyTHkVHI0g8j+R+`n_x^6KrUID1VQyEnJPuqywdAaYR? z=0uR_|DoxdqU&n7c6ZRmY}#0jZQC{)+i7g)jcv1yZ99!^Cp&gy`>cLv{P+7}?J?F| z6OXP3`gI@FeXlpo^DN5ai9yqpICxZ?zw^zd9>C6yC9H`joM+RP!8CKoXb${#EsnY) z&+2o<5Fi*O;v6~b{W^L^rXX0++l+c6=0Z9n9c?=ftHpjAgvyZ4tGJ3Vp!+5N4w%Xc z`@}p0`wbF7lK@5d8?2;c9;0aakjc=&B3D%jEhL_@olhR|UCX+r^$$z_R5(1GXGCHX zHWCuDsrPAJ_hZ#jolfhEE@8N$lF8Y`n&N=e_(9pK!PFb4E z{UWM-BGrhqcx|*R4*7Vt2X9to0NL|*{@LBAs%;gF-Z@lK1`Uew**_?iU;E^*;lTu( zmtNY~gMfK>B1(isQoftRUz;Xr!D`g^V(aO9f^0{-e;r)?XeFJNbz`3E^9__RvS%F2 z_ZgI!mor7bO3tYHu)+Zr4Y}Po}8qrd%mxF~`jzn%lG#&28GqY@MrILvIic;X)D#fzOT{LyBx1znfjwsDGJxi z1TLoKyPNzXd%r>sQ=3jTm4O{|o7~(s{`@W3fG_8FK{JqJoi*B4Hf~sg5f>$Ei--=B zK(y!=4%JE$gBARy`ZW`4+uzfECh;%MHhm)(BZSmizC&)S`KknY6U+r?%^kdm)k*!r0!^6bjh-uK$oi5Wi5Epq5tOAr&8IG$S#FZ31)p}*aj^&rb zrcPjg1Df8M5SMLus7}q+pJH^Nv|0+%0!dNJx?gBb*>UQ7=fHP(U?WcH^IAo#-RE){ zxj}bwx8Hs1NwVh=+3G~pVU$rXqN?#fiN60@v(f35&It*m zRvCEEO4Rw0-{F9K9+9bNjJpMu|BPR9aG6F)2$mh`$WY4LIG>%c+rKti^BdQ=FOIt4 zTHBO!VL}&}RvUn}5IK#?=*!^#imS_?GxzVMxM4zfbj|v{cPr#_a#PSGm} zTzDDQ+oBN2Li#U>-V_J8vZ$C6h%e^{1&C$}dtsxA$Re?b6`(V*<%QZfo>=U$^*M`c zYt(b!3C7h}q0&(?jzWbtA7bI$Heh@X5{VkLf)tTP zg4iZPpMS*c`3Jk}zTPL$P7+dYm=nKS7q^eAntH!57xqUEo1C7$bq-%=(j;~nx!c3r zc-X=EHn;m;yu^;c4%O9|)BWESiX3-H5cuufZ3yD^jcqZzDit@eMRwl0IuhqLMiEt(BLl<2Icvu@B?hK}L5% zVmsskoaB74s5<>ppxWno43;&U@kFD=aBgdGfI_yf&qoT_3{6I}l-F2+w13D|R`}y z49#XDC@h>!4of{~MOv7~M$)FaGrUl-Y-%}LXeSE?GKjj5aRK_}jR0qRiy}h`dIYsN zn#);FZJ_Xv2q;3%w4nbE#IJ=F;60V&Oe%`|6F+o~11y?_t=g=lcln#N<0;WT&#aa? zS(Gec%<`BBzgbxR?&AD$dOlUeQhhJ#ZfkGm4F_t#D18CXM`kDIFW=|GmW0{&)R@a? z;V2P~$D@8hzfy!$8;qc6YGrVbw&=v3r4+w2`jA0E)XixWQiP^>_nn`w2Tm8X|f4K*TMfaO1(T%dZ?_oGjZtJ%+qRqMJN>Q zTn)dWN)Tn$ty1IZ!mX%oh|r~yMFlYq8muvHM1RSYXws@W3~t&F77AiiSEI^aP{H1C zsa`ZtRw4z#LY_49P2G`c4)0Gym$Mc+8?>ZNPyjo)nrdk|hm-lYcXqQ2a3>!h9|8ix zKPr(q|4sV&`Pf9Ft@|WCw=?Ctv4O$X0H(h8(eF^B@LKKvfC}D8H_y@3&~OL%{1@FH z@8&rkpFzH7OTIQ@_Zb4!Qc3pMy;hnc+7yJkLGF z%B7rB4ZQ#s`R}f`OmvIf%t^(hKO>R4e$y7W>WGvl$YaPt_Dy;Ayrq||MLCs$2AfK(VVli}$;$FSu;#y2>wBy$KR$ zYIfvg2c{Jy&=5Ckh7%DPB7+-ztHa59fhq*VqV&muVX69?XiKn*lP)n+%e!rHw8Nc{ z-@bpV^guwi38h^(CTNpl>YysRkmjp9m^c+?HlT;BK<6V#b#z>c*0uwy8nFbQx*Lg8 zn-(NY>EyOihW}>$__N}a?HM=Hc>qHg@~R9hU~444vJDgZYqt6 zSzeK+Y15X|5DVBUH}L=-OP=&w;8UW6Ioy9-WBe~rJil=baaB-#2q5Ez16G+?UeeoR zf|M;_J%TOt_UIK>^b+e~nf`;amt_RCsP|KuCqWT?Cze$#-uKW0Vr(~jR`!G2hzv+d z$!9YTTLo+4$qXYY$%GW(62vuzQFvz;I#DLIDbS6~Vm+`x2j+_k1ljoOD%^gqWD)d_ zeW8Z^*c^za4psDFr25j(zCldrc0Wgtl}&EU$_*8AG>eG8LPs%~WjPJDzcAmG4PfB{ z5X>5>gi6X%b|8XiRs-AM?QmX@}s@Z}I=iV2+A(#>f&!9dvNAyb^_&&m}E>8 znQCgM49UzMtj-p0o-1S1knLfhbY7M@J2LaxqYeAP}PJTbkMRD2?KsJWIdG^$WK&AU`$M zZOOLHD~Bm1d9ho?;-nSD#dJP1J6euGA4k`mOlTR>P$csmxX+`tK!cJ(u^2)2{?Wdn zG=KifJ;mdh2uGIhU>(Lt&q@E0#{%^kP-PC($q<8LDPHew1Ot1pb?rQLqz zRqC!lrjm|}2gd>Dx~s1a5gWe{D^Ju^Jfozof&95RN56bBsL!Y7X{V1;JHrk`dc>?x z{?PSt9Ybv%VD@);?CclOXI7>pjvmWiQw`Z3h43?mRGK0u#8Hh#&44`4k|hI^Bxy0T zrlD4d5~6lR7~#|A;L(KfN{FPfYBsLwJnA*%AubD_+A3i41WN+6<+Qhi%ZS3^XAu8z zB5vm5@FvNU?|U>az?Y+;z+tY^{YZkAOJx&5hH7hA-n(6(j*UavxOx#sF?Z;<8=LWENph3t4 zye+>!`CfDaWqERP;sz)I=nkwvik0dxFfcsXlN5j~XK6x5Zt2dgV;BG509-%CzXp(s zereG1KOg0%YJE86zN{0z%@EpHdJ6cxd*dB-9?RK9KwWFwD>OUtz+9H9!n@95S+L@O zYV!HF@qHJu*-=7xFH2aga}&a2AXvh5PLPjY(^8~T zwVOQA?_dx&JduM@XYpD@*4A{VDPz4)P)T*}vRIn)W2SVVCCLWA(b*1aF6d`8Dm3YN%JjPpBm)s>QCTY`yuqTQ>hEqqhye z(X?WJFK6N*16@hl>Z8I32jWB-23rx-B5NN5;jjfth2N}-*1(qO5=D|o7#Yd07x8iv z5~igxW4P&T=zCtdADg>xp(l-y&h-}^wFKZY7#CzjR2`KeA#v&qVeTz(9ZzQbH8VRZ zODhTW%y2!~%EiRNyck&5b8GXeB*rqY@s0Mjr+8Z<>Ao!ra3lu9ghE4vLhu1tk@3^= z_B&YG_V2Wu62w+i_v`EYsUXDON#wq?{bv z=k^Fu$UapJv2(d^=*sLol7q;Av${SW7M1N{he;CM_~Ib)-JQB)Wr(qh&R|Q?2uhdB zrik5|zW&8>3JR!=cxdq!u#`N4F*}=UizC8Bfu3wxL;e(e?9)(E;MuS}aX9$OXhSc0 zR>b4sS*RgjmeG&ZOlRlQi2pf0UNJf-fRh#1bxRDdg*H-L`77*akS3ayHU0@Pjy>BD zRjnAQv7n^re>g$xyTAQyxJGWI7C`>PDAuRMLXfersPeF@oKOhpMM<@=SizJ#jbDqa zQy~Pql2A>*hY4eeTGQYcT<3@+;NggiOQ&K8E7noEMIV(BgZzbACtDTp4U=Bw|xY-+=Q_Pk=x6z7j@Z zou`|ATd{x}+u3=5B=Uv;s`xEHl8I?vtC~?}986+fy2IWN^pe))b2|WkV8+XmfBYlM zcV76|VTJq?wS64ey&wGZQaNB|K76Ioe;WNqzkBTdA7Acjx*dF1^#aVa{|4TVm(7pA z^;2E@bapH5l&}H+;Gk@I7~BagHZ-PU}B`&zSo*ZcFixDd4{RaCg`FdObE2gYR{dx!K|2 zQ6b5}XrFJj=hpHGt=609X*!Rk)q`8N-%;wArZic*0COH=?yCTxIcw70UvXwhpLv{ia* zq0~iJV)nHLIYFq~W)Buu*j`4f1XI%cNP*61g2Wlbq`<2SYcEc%mw5j!xq}M25S_sG zg5-<<)rQG-!ULo`PUrpFp|3>__@t<(Y{Kp&O`liZ#bb-jhe|@b;Ezc zr?Hw?{=(&9zKNqNJHGrytnfk}O}j5z3QlETFTB^ zem`mIf3c`7U3L=qD1UuhIcSobbR?kTo$vNg19IN~?j09K?*lWRjBaUT@_lT#-}CL` zck`bPRmh+XA8bJblTR!PCwj)6=d79c(_r+}H~&@;Y9s=A67*M}7zcEU@fy`QmG233 zUF(7_nn_%BsE2sV2mEY7Xs98S2N1&ku&p)Or42dKmIzLbInv~Q9Bdc1=Ts<4qiB#) zD}TM+h%IHf)IJ5ELK7E8EtKIe!Od!JIEjd3qcMtyLCr7nbUqwn$hArNU{{9hE_azx z29gZ8&doTRirDKVK}&t(wrSQoQw?#m*jSaXN^^gt^IA&PmdMFfW>ZQK14$C|WzURl z9J`|v%aaYcyz{JsI}Z6So^Fc;-u^M;V|KldLHplAI2m9ed`#KAOYl#hgAKlHxng10cW4w6r;~U9um%ppvrZLI$7XqduIp$!ZxUCsmwo;B{pNqp5nDNWG{6}A(F29z4Lpi3pu6$jOx;INl55}K zci0IcmCF1=?beb_6n1;;^>WK6Z=wr=gp^9bEhA?pS12$0V0>4#{`}4Ix-Td{@zkVk~$!U6TW2$E;A{#EpFNNNX)~z z%Bcf?(P)A?$eyCiYhKKs*^!FO4BMRF1@fFnsW|Tya zODbfjQ!8GEnRBG#2#RiVmzG!e0^}e!L|Yq`6px zI#L^wQJF@ONN$DPi@WuejuXII9d|dC5=Pwkk<#BOT_zgf=z!Jy?1fN00nN((Fig z>5-7KV%{*DE16YO3 zpQDdvb@<>dx$~_v=B?V51R?yDzdb6|(hN`{`QQYrw!qy(s}Fqw>83&u#m}NsMKckI zB^k&=!Q4Ly+)-S$?j|VvJ>LCq?a==i?ma+hp0{6g zjdiR7!|ux-P}Co<|73En2mAk+qFt~140d|g&lksyj=+3tY;5fHaL(s+Fpk-E864~P zx*G(@*>ioLj~NjOz5X)kb~gsJec)fl4G^b0dpHejfOJRUACV*kjl?z;Jb)q9LP_`w zVnBZwjQa9zI*-YECxydQ1KauRWP%qzv8ic=Jt%jzvgX@T-_06zsLwM$91RvM6wVam zkK37~v?Dg!?tTia-d-SIBFL+P z6xCsPPXMNBg!HCaxL2swoq>y>fTB9hQoFV`)kDEWTe06xai*JdN8^V4T>Mw2 zA1wsYRpmo5s{pA~Yn@u;Yd)MfFSf%OLzJT<7sX}{_|MxjKQ;|C+NeI?4qy|`;C6TX zQZ;pb_UGyo5260mwe_{m;B_>vD)48M2-z>dwV_8YgD37?m{x5aD-_D8 zm(w}3&(a9Q4V*uc)mEG!)lyX~^UE0mnRf8BU-Mu(RJIHGjHt3eLwo!Iyd$toB*q#-fto;0{cnG`F+=*^>#pjEbbaU0#s#FC=nst=i@V(k=+S<;+Yxexr%eB9;I&?yVE8P>4kIaq}3S zz%SUJzGTS?n~&IX%aIbPNZJ&vYC=M`e}#@WeyN>pCo%}CJq-Sj(6p}TA~d@RzxUH8 zs!0eecJv6!2w3}CnnqUbNP#}aFwR4m3*45Mu87nm%u@;;B|a+Kg}S@+FN}5~sK1$Y zEaoc+-*Q#XQndd{ODFuYP{x`i`W0+e4E%^OYGeB zu{W|jfNmMUdpECg;rr0u{k%~9{?8fZYIn%G5yzM|aRl%%;=5lq{ztB6PR~a88Vf9m z;a@0nfNJo2Y4*#^&fd?8jfz_LdD!?TK=Iz{v9-b);(dSI&3zg-e+NV(4yLALsbl+& zJg`dL51kj$P>*A&n-E(QcD^@{kB@V}m1pC^*UiB}Y3Z*0yzTVC_u}E75uuI#lM8sx zdLLkF|9`;?Fkk2XQ@ipy?n&zFZvr=`K%%3Q6HnvAZ||7sUKUG%3oZSks8UkF^e$V` z=yjfbBcrBKVPX6Bi89_|gbUD4!!0sogYW%5=qYQ4K9P>@>hwUxojFiKs;a|WODm9Q z&``bMr3EcCByFCn!hj|WI={|~lBUl8$BAVdyx>`rk=%w=tmY@x!pTydNSd5yY0XRF zf`kRb+DjDnIBv-MXARPY;{>!*oJ$4?2-}s#%=M=B~=k zC%9u`ncxE`5le{TTGPuY;h(C4s>ZH9{g?b(?`*s^g6j4ExByf0=u#7m3+bf`x!xa9 z1!zldhB>L832+-&Sky8J(*kjX0_+qtJ3W#PB+>=E*Xf}UrTyza$&Jp-BPRd0s*C}H z;lwU)R9*1O$?|sBdoO;S*Ic6Y?vR;Sxa!iX5Gr*UMu4>@JwiBXLgUT*dnn65#G;;| zQl#r1xwu9@vv`;T0W;yAWSpX8U}13EMKIQH@d?MX9>%XiM1@uJ&l$6}%Nl}dpu;e< zs$uCZ36u_x%l{a#s)w6{Th2a3LnsqqbB$WVY70La*x=Sq*T;WR} z6eN{VJzw9l1!q+`Qb@Rt>4!fWM}`LOhj`~MB2?NL)jxi$<=~>mlO|Xx=-al>@8E+e z5&IthiNygu>7!O|ntZXq%gU55;8@oAY6W0{B9SjcoJQbM9{JGq)hQUYJrS4DDN`gju z=OHx7M^?R~QGD^KUOPv8JBIy`5Rs7IAVlLM&`^91Ml>KmBC^2OL0tn11kFj~BG((v z<~M>dOZ>oP4vGFX&p61cS6Ym4f~J$>x^{fE_(x|ewpRdAZ)BEP4H(W^eqKJTH7M;Q zXu`i0FYU_;+C#I#7oCs>)hN>imxP{bwKSA8yWoku*>>U^c9ZqO#329v3H&kmndgSi z_VeAw2SGP)E*{{7VkFH4 zvSO5^7WJ(~-_>1Ju|RX(GRR-0n%3kxq-YE_?(}ox-DFqox$|NPqW&W(l)xWo1W2wWLl0meCG-dj7(HY4Hz5KSL$|+9yXz5bL8GNFS-6ma{pDsU{ z#%S_OuR$!Z@={NZ3T@>SPOe5&5hX=qh4dAt%AIB`qko8$)kb7XHr`f%?9Rd_<1ybB{erUBG5dyZRKqsHz)mUwO*Y-5+p(F#CI^*l#waMbl%m>?BVI*>ByF@ zo`RVPn%+p2GQ0gbN$XmOD(rxY9+{>S@|1oOo@x%@Eiy$7Iq!Ibl(0v@*QX0}Ipt$o z`{5j`uh=PsXv=l%>P<1F*)?5li5u9iZw3%rJ6!Ax7rFZAn;;s(Un%lxwkJUV%|}wNI0T8)=O6(Di%TN_#`qS7 zRfoXe$M<}hz;P#iBLQ0@fe*YI)PbMa~%n=+JKowUW z;lmz<&0ke{lmdwoQm)ZcQaUx^MgU#Vw`9GWGMiU)BXY8R^S|MyZtTTL^an;Qay%}6 zg+@`X)_s{TA2L>cLdVfIQ>aA2M;QiSM0{Xhe{c6}d#QU92{zk64wO{y{|Ww!J4|zO zp7x=evkX5IzDmW^+}YZfcLwx4AKrJQ{~WEvCj331(W28*xo%!*13)M^#>6+pXAY^2 zYza{+lCJaDC43f9NJlWPGJIF;gM}$yG||IzjahtWnsC2ksRNjVW)`n&bu_STXgrHr9iP!Fr2PI834v7m~Sai#I zI+DULaSV2R!eGd-kTRvD4n7O+XmcQO-7RA!D11Nb2njF-(=E^lW?*J_Nhuv#KBm$6Ihg4HT;(G=;EWK z9yQ+oYdyAl?!Lu*KU}}v1H8_L%S_1A4nGZ4k)nm=g@s-aaz6Ha@-d21+M3IKeMkp> zS3w#+;Hae}CT(flxnI>zpaf}@6zT$stC_7twjKFo9CaV%3LL_+Msb3xFb;oF=EW-x zM1Hww+CPLqbn@a$Z=c^5gp=eY`Z9C~OcM_%`xA2Nzg9YGJEl3WUklPz&wVW1T}oH1 zIFp#A(3!bNv>D-gf%~gc|6~lq9a5Jku|ZTdJ%=`um%Dze8xacV^nIs+kI7gr&8VmV z8I`EkONPfvS-w|L+ln-S7LRkj`Quz~=$^{7j9iMNcc^Q@S?@8|X-Gdqp0sh)UMWRP zI(@-azOxSXVqkeY)9BPb^dtBc(DL~1C;tE$46#41rL770clT9&xw4;0uXvV8(jVT^ z6F=}7;Ubi{$V8BU-7ZKI!IN9trJ~|6BIt^l_{E!1C*ME2gNs1(Tp}HXb~EjQV5%e! z@Yb@|4&5_(`Ic7jhn$_a!~ zEM^5}hLnxN5{PutLQ28Na{>rLo{jORU}|LV89o7ktB?$lUNQ!jUC@_@$BqIxZZto+ z8~R=)dz9r*tU}cS`hDM4*M~!*+9?r?Eu90P5lMH5Vbo_NBBg;tu0tL&5j`=PEq_03 zrqOCpCPw?UXN~&J5Bh@KnvAu?&Elwa($tHwUkGq2lAp$_J!r67JGkCV#pGyyrX;=V zREyj`6Dle-h&EvDh zd=vTe2!;BXFS0pW=eWa`ZFpj=-*CS`qkkB#@gLS0uMcpE@_!PPz5Qush{|y=4-FzF zSxTuSb7)kQS2hFr_i2|;wsO5V>zywK^$*l@TZ=7FokD}!c<#c&OocB2z@?Y3aG}sl z!7s+iHch%VixvIk&(AY}xBNxI40W)MR(TL_45hC|vmW~}j}+u@E2*O-Ojxc#t^wN0 z7T;TmFNyp8qMTHFb@-!};CsANzih>S44Z(ZxTyRpOUePKmP0Ywr=>rI|848_sWSE6 z%$-I$xlGpBN`@EYS=5z9Jn-?p_Dr3v=&bU&7`+F7aAitbbwWKw&jBTgano8lvM)K2 z^clwSxPcmr$INVuFFo)aX6dA*jJ%M!ItD@+pn)BhgLlL?)z5f+ zwu>9Ps%8%W-%nIwT|Ue5UAb&sUHxMs#LT(xX2N{#A3a++%I*7*Jpe40K`s-4rF}aS zM&N0{*u)#<&S{>TUP}&OYU1oF&{D)1(&N}KN&fvwNt?cMy;x^Sp37|HF;j$omTemH zhce-j+F}@N>9VKA3iKdBH^2Ls?N@x;AocQKrktFd_dbDF5zw^D+X#SZ;otD zP-_x^2Xh|@&`MDaf=jT_Muk&7h;K4`pTT>b+Wr6G^y1hzWUaETP zpK8+QpLwqJ@2^l*4@T><&rAFV_8v~4qEU6Sw)0>9m zm^v98xRS>*<#;NpUm{)Sf$`pm>sxVSn{Ai|%(~+^-%Pp0XxEOdiUEsU z9S4gM!Ri3^OSwr8mQyKkLVC~{LQRBBq0C3N0faC|FrV+BmTtN9(FUo6A5Ye>v5L*P z8QlI1R`_Uwd6lqyIs9z1oIKy z=QhB}(E-*8|n0&j+=6km`mHK^z zRO`M9GqvJNR^w|dVc0=VVgJ&3BsNe|zpzs7tAub|SxHX<(S1i(f6F=<&nb8|jNKCN z%3BQfFew7nao{blB33Tr=6JWLP)^@noMF+n%}qdGzoStNe~bq^-(mXH1uEb-OPDMB zn$#aRjObl(iic0jslB7&)8|SFPgC|2b zvvM-H_;gk4mbw|4IkdS(mAT3UBdTR91KPMWvB*}&9%GBB!cmd(eSGT|dYxR2_C7|B zqi86Ei2Ttl-P;>WH8JsjL_6xvJjcTj)kfDH42gtce^)k!TnsE+y}Eab!iDdcxOi+n zDh4YAdFO$PQSe}=<$Qd9aegIew@IZEY2>#$FJ~`p>SFP^(b9; z7O+Wjhlj;RLn8nV;)X$+{eMolg4QENLH_rF(R$Z=2WpVQL=Xn6ZOoPv#jWZLBJy-g zmBD5WnJN}EV3bFq1fd>2`t*PX4QTd>A`WO}VIKYxZ3N3(XOdODoAdp7$7dgWUAE!r zKdzT8*k|$@nEKVrku4}7%d)08#Q#VYP#B>lDPqKVGY>{ru|Pq8K7q)Mr1j1^QH8(y zbmYa#P|YRv+OE6*^{qVt4}@7Q3xaB4(`9uQ@mUTA$5Th;d0;s>I``Qwz%wwXi^22&eW54IsRM>__M3-V~zXkiL7p-T1WQcMCyp59TST-rxQac_fP^j{K{pVsa0|&b#`|aPi>N-&fOm)f$zl_ zRDhc2I~@|IbE2(hrBovF*8<2aY{ql~Fa5~$kMsBK?#*{2A3GKqX}Q0eD=n;+I_?58 zl<;pRPm^GA<}IJfO=Ri?*}@byIveYJrla7fE8De~t#-`W`|C$h!=H7RNACnZ4q_o& z%uz;SB03L_PrNu^I>nQyEcXi@9JCCl!`52XuznrtEDYtv z5XLG}FEu@_PtMPI8jDMFhT@(bo`n?&9q9`2dnjAGs&E#ZM~ss0Sjv(Bp{euv&t3TMj}GXkJ{NA1-nTWYvYd#ymw)o^2C^ZtndI@!WCvh7t3KE{j|{rwE_QI2pF4JU+EK%o+P2;hNgK9))Z6T1})a-=?7bVlp<< z=r4L3KU|gT%D~)@6K|@Paa`FdgH9?oDns9p+F09ZP?^e#GgCF>3H{}J>3`7>r_3YHKSjSA z1i(qQT^UkBCa$U(ql1*~?p0hmunZHI(F-!2^_^O7hnJFEr}kDtVKDJPdJGk($L+-M z(zJgXJf}+cY2WHbj%(jT9zY=4la9+>*1T+_i{6k2qGDCr45gY;vYRJ^IX_qs*5zY; z;-}E+vbZknllrw-j~ariAoVplXpw+7S*Bh<6|o*e2cja2Vc<8MCmdn zrvLm%eq4^YSKsim27i}StRWY)PcJ}_!pwHd{qjsnDgfKez7DgyxLzA4EHOgCtmkk6 zR4~&n?zx`R;oM#J#NtjR(%dXtwlozVhgQeHs@%na#2iVZU00j$nBU{Ck5Va?uQop| z77b=9^7q&~VL+6{>as>W(hv~$EB@uh1zN}&Fd*hzn+L0Jc6Rji0xdV1BtpwSpn6FU z>wM`FsVq~wRgV5j48uLxjr})O-O0hmq~@4IKibcv?NI{*iao!W)W?SMKhgNDIs$I* zbg5aZoOjfJ7bI&5WW4?o-b4AFr& zSq^=QJ83MFJaoW2D`U!Y^~IJ^;L;@MYqn}pw0hlAl&f0afDR7%3>5)w{IBwhjlSBW z)1Y+Lw62t~B-WP%NRaFxdM!ebYdFcs*d*RhV7?<47$%`mIC-~ z%+7KY>U{z|7>7x-Gx@b^u3rX+C?Z#0ug(XCEf&vSI%Ae>yjlZ3ftvDj%iI-=eWtM? zzFR7fuc4qC%7Q?A`92AQOGtFLlU#>)k8hhFZ-A+wjh$Wh1K0~dSEoL9|G#1AHp=E? zNGIDQ!lRSke+>`Xi-YpuSrSoaqn3*H^9@2av!59df*4e#aEWm{4dfkB9$_HMYH;KI z6A0qGzcSk(_p2a69O7LxE;%ux3QoBP&-@B&10;)&`@`XE2tK}jrtbP<+GHRz&fHwoJypN zbuVdppAoxXa z$8j4b5GmotB287yt5T@V8i=a*kRp2>0GT7xwJ)G`bG{Tsg%3Dxql)5ZEY&t{^9jNx zH`L}^1v^6m2R1Gb#e?L!OlO`e;?&nOls+hbF_vz4h!3LU3eQOE^Uf^w$!Q9+6j{>H z?WU<0kUiZ)c6|&@>Rr%Ykx}k54D!T7qB@7IPd&op#KPdDne`KRa(v)qx=Bmgg6&z~ zyD0|sb*s7hXpn=8%73Kb>xD59nage3LSD#3ma^W%xmv?jn@>8CG8;Kr*oHx4o&rJq zPeB1o6b-M%E`Fm9C5^%Iy1I_;)>ZeG7Kw6OI{oPqWKjH+8=(iNrZLEDa{`&yYhgE#y$@iekw_#k-qDo^C zr3p|Rr9wJvevfHoHY&*dyKt<+RAxHDb+%o!cGKrhl_qs~jdxSGr(O2BmHsG?-@Gws zF~*DBcG^1e*8Q{@Ng`^0hHExgQgic-aj^YS^6bxcSSq8Zhw4S=XEI?Gh z7vbeV@P7NQt=9m@HCF*pK#d?$>UTrp4_$wR{}>-5f6`=7_Kl zKPdNYDtRrp;+yp30F80!5|E1u)6VCHT9U!+=i$NL)%M17 zV^rdglM53xVWHgiN>XV?`WIF|POT~=iQ7)0miCpLR!*a=1L52eP0+Mud+XuJ_#8h3 zCR0|?vb4n2u{H|o3@bdyVO-vaJqF!9BhhV=t2(;sbo1l=q5Hh@k(=v(P16Vs(%&%; ze6P{{h0wjC`&b}CY(5$nXGS7=rH(yCWei=E!4f$XnDC$$ubzGpHuEixmF)-G*XJo@ zxxDzI!zoKnn$QOSlAQVTr`OokK6jrY+>8V?U>pw3Au-VB)echBXe>6ohA>N2GSdES~GeZT9lTJ91lSkEi3%O#U@e1mL#= z4r?+-JBPvTLp?AqD8`SF|A5D+01=VrtK`0!5eb1?AGYQc)Fl`=A#7yKGWvyJNuUd* zLzsLI=Nd=SulKDPa7!O^(KwE!spL+w+QcoXR$Lw9T$dmW#?xF9&r6tCSmjWaq1TO> zGn%T#xt6-M6haeWsaCIiIc)pC@6|r;$eZt;8#t5KkD-L%*iDcwU^~6^fq_w*x5`oHtoR)P@vtr9h8r$SXmiAd$%>Wd|!^?R2wQH{f25k#n_px?a?CZ z&mP*i>Fk00^^Osn=AC^OCsswz{M}dJ0j;h)!!ICoYyz+LJ~@HwG+Pp7krcxs9vwAH z8{X=Yy~wFW1hT`v3tbQu1PJ2fAuxNwwJ_uC;njAn{wMyIic=i%|473Wjd0467v6-@ z=(yocnfqRZrnJLXo7=Gqf1&A8nel<6y-T&~7)wEr^z*h}za&(})EOmR34<~{KJq{0 zp!`|2UT5AmTA$Fa8+xlKLlT)>n|X3Sj0!beZGBl2$FyO83kf8l%hPW?yby!-K7HVu^EV88;)F<>f!>8Nrmv59gR#p9|3W?5+lH3 z_hvB1J)yB=x>0QpI@upd{TcLY6UoXLGWV#@ZO!+Y!_K1|XtcP49uR($G)@%~8_}5? zdo|c+QdGv+cZsf~0dZac0?CfWV!n3OTh<2 zT-)h>%+rk+Xu15jLA>Lo!3Ra_?L&2H6)Or=vsg9IaPZ{|^^wi&NGd*0ko?6M5GD+^ zx#QZ%t(cL56e;quaMxE`_eKxKDkILj>X=#}NeVMPy3__HVzK@}@rIjgr(=p01ofrP z!ZM~xV<=EUu{8{a3S1r9*(xi?Jdi4^^^ih79?9ii3fYz0;1-bVa2g==S3^|TG2-jj z<5JaL_3JbD?uzI_s6&z2cIaFr`Db65ClmTNu5WK|1wN>@$Qr5PX+%~uD|OubQTrnP zgOv!Sm9|RdT+(1UPo`Mz9YufC1eIT~m%g#TvH^cSB9N4*kZMbc`r~oOX(llVfwHK) zZY;>Zp^q?pi|bRz)MsE~xRUh0RAT*EY;3@{MbV{!BzjnSQD{ZWcp6Pby3*XxC=*MSp)$Fv(@#Jc`ERnV5~XDIb_Rty>E zjPp?nJm>+S8mafoVxaJyG^46qF-6SL7_ z5dHrh*<4X3WcNw-qSjNc^mCp2*j9Jl`1*L&H@aKr^FRDQn$9siueR&fchIo0ZQEvJ z+qP}9Pi&)UW81cEvq>5!jlEajeSH7(<36%3%sJ+`#%X>pSjd|NP>TO>UPO=GRNM7t(~8oT4w@cZ41qy0It6%xq*P%{%N4H~ZG|SdBB^9h`cR!0ZQb zQKwWIr@gXpA80x%lrhzpPSTjiX8dyMkUl7lkPA5_9St~Ik!{0ok2p!7*f75i7@Pc#cD8Idb07G3*KW? zBE+?d3n;2A=IqGdXPX+_U#g@Nk@aB##gpX=uP%g zmlBQX#MKCHnSP&~6|uF%agWvz1z^7n@5oa90k@Fl9u)@lC$7 zA+TP*1Lssj#TV(^rDW(_LDJ=~R7Rb?n`AG3mikjXGX|^a)mcCz~Sp{^CU|@bi zt9FvF!A?afxN{9MG#Hp&Z_!^B8%lb@&0v1dC8L7#8yf%zE0i-=8i~jv`LyjwbT@w@ z4B?%S|M@mc1V_Gnx!BHLXc2UWMAd}2GKEgB073SEk4g(QD9izsWQS6lAkQJ{N8C@e zmq{G5WRC9l?DXz?f1K~I!%|CDFZEp8xd-hPrCx!x-(VBO2;5o|#is_qaLEc99rU$5ucQ+Yr;04eXJXM#WYtl{;whYoA&ZNoX|_a^sChCgQNm#@QFq7I z$wd{HE$5rQ%Pd8b8c^@~%^`Mrxz!7!Z#oY0&(`SYYR3yi>p<0Y68hdvB*?DWLMty{ zRgpPrlHg*uDJh4;QCnM8T|DJ|<^eMDWKQ1?DQYQW)*CG$%)Lr~|Mm74^~{V;)b#3D&yDSo&*nEPYc9=N zcKJO$M5y2ur0VUQb{Erm<{lobR@dogo&T>A!Ra(PFxWlE+hs|=EBi=S;9T&?AVNg8 zUd{UPK2;evRK^2a1anGnEa1%Ma>Ki-{xo1N=D|gVrvP2f#4=T-oRrb_0Q-Tc!}IU@ zs508?u@Xn|`1+qLUnUgT_+b7vM=%=mQU7d9por$O$^oxXrDBl9&^3lfHc799QNC(b3fuzVhr@ZK87n6e3qgU`gp zlarRL2{GrC46K2-N%bi*@GpeinuVXw z>WLFU2gy6~6kvX}GZjNcLD1sc-LCZSa?lsNzwiiMS}f_RjL+l_MFvj*du)Cm0o5Kc zPOWM#^yD-iHQ3M;phHPZhE(>^qrvtql4^(4exK^p8M960!kQ_u8bnX}*ChW)A|@jw z7G8ICe96->$Yb17sH%Y&=UvjV8wYr7+o|WZfw+eeg#IK#~_2%}B z1eGLUFMOmqlJQ|uWdpEdt{B&W8(@r6WA%O)E z_Xmj^Co!!xn-1>*`|Fr7_VU7ml?M%E-L8{|7iq2}+T^eaFnms>=tj582kl8ouRT~e z+fHGEu_@cXBP@(-&}yrzuFJQq+%OMYrWS>ff}~IpLEp>#&t7latM7dK=6>FvdIda~ zaHRGTeRF~Z!Q_=Ch{6=6sEq%MEs~pt1VvlO=v1K*m9GMKpDiDI11$-%x11~T)DT%w z5=N|=%+STu@}isdrHZ{t`IF;kedEKQ*)i;qucwGeKEYV#^+&hRyQ+3s9XZdv#2Tkk zd4gIkn08sY%{85EC^Kij%I|cAGCb>tKNK`&GB4kN>-?)~hl}ZcVf$W=>$JD}|KuUC zY>Q|e43NiLYQBbgBnmSY7!;WQ9IZ`Ljt-&06@rO!p;zUMSw5QUa`&?0I`p1`b`@$R zjT8?qC{2@&@eH_V+r6L7F=Gg_m~2g<_cVlfzJ?ERTZF&@oNvmha;-1DAYqn6>x#^7 z(I0vW3`}N%E-9i+4hYdU$?K-Wb_N7sL5Cm5NH2LXV{Pb!XAmG0DXL;=d}(vGb&iwF zx%v^9R^Oh-G1EsxC=;b@kU4N$YH}23?J@QlUXq4tQB(oH%9?|^NbCf1A5Aydz<^+^ zoC36)#8J>CGH=29ORG-0xiFrR*I-n7ao_B(QKP1Qvx0&H`vj)-tHSXnZxr}Wt7-ssfvl3wBsj$6X}&c=i=x#Qz5 zquIgi5}wTsCW&g5WU2*Tz>E>y3F;I2Ss3|FX2=JA;J0SGX+V2Yz;Kx6@M<}uezE0g zYCPJq9eMpy<#T5h3Fr_=z?5jr@J2Ik28!{FC9_n^)#`HflrX&#jmU&pvcy6ybg{;K z-S=1W#NB>c0XqFD`+z`rDP+VMr2*=)3)V#H8*!Z`A-+zUhn)*|YUOdXN4ZX*^l;VM z-}6#lYU?6`fs5E>SKd1Otbqtn_)Qrp#h+y+4cet_c&_eLP04m=GItK5-@bY`l8e?D zc`m2XA&{W2-@XLNaPS41S1z~&K3~N*FK4Cf&c+{bCxXlAehbQq4L}Z4=a5u8??`kk zjeQ@uIYAZuN%Cy~Dmiin3QmJ3?u#*Ry*4y;EQe(I;B3U$7uDL+2IM_p=-KLJOJ>-} zbF4S2db^h&F@O@!zA@MHy2HqY_;SA{gFG0vE4N%3dpvUrI{OX|vTR#`CrQqzprwGM zVu1#!lYkNo-m_h5@*2SnzkuXNK*+c&Z#<2fTD=6LJbgEDsF2c{C>LeS- z?noWx?EVQOf0Mc;|(-#b1`Q;Lr0?Ev~ZMQEH>hvB49AO~?eE!zbobWxK3wR|g}pIKowsQVZr^ z8}H$OjYMC^|3v2HFEG?(aypa5{AQza_mgi+WMV8DEfYIC&%Q9E&E9h`XpEL32B?W<$TR8I;tl>TQC7(^o(bS? z#)+pW|F!N|J+97fq^go7dnt^%-!gJfaBBmW8=K6p!sYIAjNZiy0BZ} zFg-r-F2iBV2Sq{+lcX_l(F}dnDb#g6O~-d^J7|PZ;Y_68)&7%uO;Mrq>Z}mdo z*VAUX8ww;x2~*3_;CuZ{we{VwjDQIoLg?Xrm3e6|WbWLLBb#l2x$Sig*HncqrSSz} zVAOq!doMg|8}ZSBiOZ5Ho;DI3+DI@~mfE@?G6JdKg3ytIeNf8Q9;-t>OGI_jSZ8^o<8Sw-X%wPnh_M0>mlHydOI-Lx4M^g#c)@ z4<7~$R@mfHmFhp9i1nM=d|byH8}W$b@?z3`1v#hu)rB@{kO$PLPG|U9@>~IZc;uhZ zR1u7l>A7t`Fj)MU#%$a0 zZH8>8WsRr?4pALA7gfHp@lc-3`GTI(;+Rafb7>Uz)PKy8XMrR!gNgE?&@IMezrr;C zBE+|V+PXs_z1vFy|5{T5jaZ-@uWE~)vRYC5i+*6RIUGSPrJ4xS3UBn^s(8eUofE~Y zvVpgVW-W?+O`B}uwF!!6vc-#$bOntRowaF|m(Z>Q-x^c7I!HK(_60Kijd}g#`&6aM zZ&quu4KP<=xly{GJ{&6eweAPh9WkuQRF^BNRI+3?=D&-~D|nvQvZ~byI!wzT<86m_ zsx+s_v8}smx8PiW|AckzE?oL*(zFl!Axe_rc(;%mQ_Df9{pXyMaIfV%!)GGMU{0Z@ zM{cR1h|O->%|;Zw4+m|!#|9?e>EK;(5NtjL8A*7fG))vFF1Edwp&Ui+6wAS-4a}_O{EZ92iJZMkdIolQ~~e zK|6i>jjZt?)ZNi~GDE;yijRFIUYGD}h}3Vah!+7bo%M=NOV;+}uCKjGNlj8>$~xvx z?sTA#&o)r$@O_K}MY)pU?$Ns_RAtBJr`=Llg~?Q*f=E@9}~ATSB}tTO1lzge#`tTYMPCpRW;Gt+_MXWHC~qBvTYv&?6npuk&? z0|tIm&F{jX%Y?Ledb$hm$%A4Fgl>1%=KC1FH3aE~X z!qF2WVDiyvkTw-L-zbu~VQQu8VZe|R5^%`3-krV;_-GSZvPuLgSS%70q&I484Y@xW zh!Eh+4QJm3xcYHzj}S1e2jF{=MOp(1xai^%SHcgz@7Y9C(}w=x0TyKIYj^3u()MmL zN&MPZo)9_ma<=Uc>#}3Gb4|E97-?2$oUD3T*Zti+M4cd;@QehuE(X2QdbJXJM%EoQ zY3Jf2{;=;DbIQy*7!`w@IrA>bgOn63zc5a`-!V)VMoEH3MNGX?Gp0`1%K@CHh~Hw8 zIIK=#e0{am8w{+{_i?4u*WBLk&#_`+zHPC1uDfR>ah4|CHxaL?jH9Fylc#s9hP+09 zPUcd54M}(%j;S9s+82d;O!{7oLG z;&imcFH*cb>gHTG)!rwZMD*#Dd?tH$PHPLBe35 z(XvBn*N;jpX~%v2Wu!K$qS*-Rh4bv+h#$PFN|N)7LGF%`l;z*uz*td(6YPe&IgdBJ zGEo)!fYahuy%6c`n3%z6o^^Yirh&^9@*s6%Yui|i+9byt_H!BfIdgpTbtm&%O~6Rc zK~3Q_y14x!DNamnLceL(Vql7i`6Rah*6v|sYdpCiO_#K^Kf<@mp3dcA;)m4pmUd@X zvAl>uG~4!k4SUH~pdLcF649W^9xTpa1y0j0!85qA#LykHQBkRG)+dvtu549Wp8JXL zq)rvVkYmaiuIe#a&Cx+vRXFpLOSl-6J<+Ai->h(67Gia`<+se?mUO>) zZTPXX0ZJI;zdIP2@C_9K2=q35ydam9H?bd2-s{|dRwfoqr`aS44&LVe8sM|WTyGZ5 zsa5BZcY4n{65b6{!l5ltP~F%X1-@!!C$sZ!uOuU)Mann) z7XLC?+|qfuMR#UuU6?8AhJe?G)Ri-wH5Kqlax^FmhYe}irOhdKfAk+)@qN8(s9rt8 z)!y7SCx}>Tj9NT&HG4Z$&7?|sBVI4|G-MUDTTh5e0ySwie=Lx^S};6$cn)pJlU#xy zmQ6^cB<3O`-iHnX1xK-C*oGGRB0Ffrjzzo{49oEe{-I(BDNPX#YW>|=V&txt_e<-S zR8uOIh1A6pF-oE|E7ii2n+cE15836o2fCMZ|G&hKkoaVDknr9{`g$3t0O-}QvGD8wuI)5ntE4lpdcjVLt zUiqOpJt?Tr=$>PJ1)b*LXtR}vN(6?+&nABbaiph2zwqAxk=4RJy!9>gl(DR^#8XJvfr7Y(5|BUfr z6y0dUGtXQXR+y#_8U$LVNipXFTDwmKN^uvyec_f^RsPG%!qo+hy;slq@Lfm_cArOR zq_NiT`8&Cp^<-H$}}Rr7$xf-7m0ImYWSn`g<1tI08#BL}p$E2~s0LyPpr2 znlfg3onD`(@*1a*L0f_ z+Wh1U0>V3&FR%Tn>mJu$Eek)Q#z{qqgUhjv|8SVh(_u=Gx7j#UU76ovea{X>MqHoW z?tSI=$4%}d~YZHg^V449PJv4QA(Shui;jGONm22vfs=qfm2XDD~EB) z5J)C^xIa8Q$jmX;$-44CQCL5FN!gvcw{WL-$X;v9HpHoc^1(yuNDN$66}GoKUp%A@iV*1dkHxB&Bb(Xo%+4kqk%-eW+|3SObx z4ZJHLdI#PdKme&MJ{RjviHV6otP2nZbAEaGu?sEq1Ryz9RBfMJw}BHw+qp;UKFvjj zr2rj9gFYs-k?Ax(H(b`7Z;bIpFLv}Io){?U8X)kb`z9Wp|EH9A|6NYBXuSR~mW z13*nCmM0nnUbPJO$by_|1qwo*uSL1FV$$pRv*~B-IAs|c)Pc)cS;7(jJvK|((nsah zptWaX4aZ)g_Z(Qz>%icUAdhw)O}TF77amuJoLv^4#??3U$~Boj`Sr+%Xq_gEi|5Uz z(gGv(K3cRoNa7HXQSP6W`W^nLHyk;jWNAt2k9NjC^6<~r1 zbBqp#2-F$*R<1-0<_Nej1j6QFN<4}3&IKp*EB~b`p!@efFp!#yM3jt4N9gCrz`#R= zOg=9Zg9n)q_ALm$WzR-Eg#SjIvZk8ez?|}$lonf*)v4JEBO<@}_f`1JHHjgclk|a^ zca?Xv1xRTr!-RDWVOioXvOt8e?(UD)V+-SUhO&c+1$By6+y^FVw+tB$iCKsH_~6q| zqCw{*I;|+5aUidwwi^fo?Tv?i7lyOeDoL;3mgF$otR$v&$0T)5PHp^bdPEms?w`{z3?YwpYX%1=&27Pq*Iau|33^m@5GV6b4Yq7upx#+&E z%gMC2{legEY$RxYFS30b^}GC`b6A`K_#7_Fq$VoN^AG?LDP_LULxToCQdd{&{c2aken2pYPD?xp4Fyio?P9pm{qVU5CJ&)qn(VirC@_^Z zsLJ854p?#;<8>z6txgdolTcs)NQ_>uN`+F)qhrREG zS2qD$?X32OJel`TNs#@zk7=|oC--e}Rql=_r8>v=Qo76Uh3<=~0u<;Xkx;?=1%ESIxr=5d@698(a*L-=^>3zUFR1m^daFrQGVQ@FQG%TK zQ_;XkrN~vp*PjrIijUwc>%DAM7cgROUQYM=x`muc6#p6<%Td96G1%`gc4d2bo$G~Q zpacJfA4Z?e0Ua8|-}Gk$JDoODg#rTPAoTQhu%yOR>t%azIz zB$T)5tGDU>{e1wtoA>sQnXB1Z^cfD@c6Hkw)tKze2ea3yqx}e6D<@|%qRX|;6t7jl z`w{i1U)P0@xf$L~D$67D4>~#@uw!5}+C`;C@*+Ba*}1Y^WD;4;4G6i84W0}{;XuNc zZaMQK@o=nobJN9-L9zjhH`G&&4GMH5Do7;_g;y{rQ5YoV{mCf);9$Hl%>%1=0m2xz z;`Vnk4+RYtg8vm>m=Ne@Su`F%sN;@AS(0#nV-bA{kH-Cmo)0ekH4*FnJMAHQ@+xmL zXtxqU7U9B_uw*>KwD7SQ5(O;B@rD#Aqt&Ri`);^ zMDTXI@_kx1VA!&S*6(~9FrHhas3_n(JeUhP)F5I~Nabo#mB506#>}SlPY0nTgD39@D<$$8R?nir4WZU2nH%2{)<007 zT{8t1_FpNBlz+*ZHW%f*{Z6Hk6}`z{LwBYd@j|0DC3w)9LWQ0}|3%fkGzh&m0Ho;=G&IL{uRsNv zUVYH)bZ!599W3bAwW9ySMG#8$p973{x0&X~K2|qc)=2v-57K2iq{!Yx8^05m!82HV8lK&QjDg+<}^upw%cH@8t1b7~y7^@eTPtL2P z%g3+wP!VoZTuQi<=sE_@*~>d!ZVp1W?3j{HaFW2wBle-W?K5bVsN>!2!j{q|!eg_{ zBWeu5?C3j<^5v>X`C(uAD@I2Qrl#$YwUIf``)c(QwKx4WZ|lroE+NTx-aQ@odGfp} z<6>g2(`S{GowV88e*;?U_O@EAnk!?$L~~nNj0j*^&wbNbi8_bzKX`Ve@UuG7-W|BC z7h`6$T_Sc#NA|kV1(&WpWt$6g!|TWZsQ=^PPYlj2@vqG_cH#g zi#c8Hj}Y`;9-W~RNrbaZ|8qWO>HUs6T?ot+{|qANzt?+?Q@Cn#{TAU{XR=B)*rc^C zI3fHNL{;^y>{^`HNHqx$V+^qomlS9l9Xe7vqhTlM$vXU#=qnLBgZ;<2)rI>4bbR6% zjv7fd9!47&2v#u;al|WEjM>^^NedEWRK5&&+ct}I@asBSxSCh8(`({3w5w2X1kY-k zh+5iNw8)bsshRuZ@bhN43#9%4ewU7x0)R>QdKeg(!P^U56is(S8Z8(0RUC9pc0d7K zzEENMoI7_666H*0D!G`0qDem z)T{qd)bAt%@3;bQxg6Wwk3qevXjcu@?=U0@iu1Ms0yH*F)@S42AA1X@Yt>Y1i;bp^ z9ZuISshQmI65BV69Bin*#447QMT3xUoF)Pr_XJ9_?%iS`K=XUg4)a>~m#2%JS?>>Z znocRAS^U4Lhm4U#q);M*CJHewW_VUGDy!O~JNj%C7%Z1eFjGwk5%)Pk^s7V)x+SZ% zc`_0-QpiwEh3G#;+14RIU$ugElW+#Baa9Y38xuCox3mT!QIff5GO?zpfmRkUXJfj% z=pY1o2j&49(3DqA4*pS!rH)5V^x;tMR1@XF*b7q(nC+y&0S+4*uVX6JSCA2_b=XGo za#0kg2nt8UkXXN%-#ojr6v}N7u}c~ZJ{cg$#o@3CK4t(9l%brr2U~xk5ru@Q{&#Fo zu_BNAUN}V|qyc;NVoP{tyNW+Y^oq6;D3C27;KIYpdYl^YL(wvb;h5 zui8Ov^IC|U>75TgR>w=Oid>j!Z)B1anLljv%*0d8B8g*Q`nqM6xemPvH{`z18SvKp zDIY`$4mxelkkVVk$BdAdwjlk&n4k{CCDQuLO z4BqR!8oHlyC^;;8fZIC=u@9Swb(-qf9!W`qr|9bRJ(XD^2Su1FJh&`Hl5q;K<(Ic$ zD?i>9ha=x-HEa~lUO)vC>Cn78ygWRHxjKJL{_TG&-Zhb(iD$;m{gaz>8i;d((E?l4 z*}iGDh(Fv)zULRe#g#zeJEaGtAqz5v@-glr3|#x~JiZHj>QJK#zMm+5_7T1H{Y#qy zI*lFQyE)0Lm#>e(|exuqJ- zz`SPT-nc&kz}d>xVqD26O{Tf(F1=#nw2c(#$9oX0 zZySRgq)$?EDk9o+8da2JKna!6F1v&mPm`$$e$4l~YA-194)=hdkTON{#TM=1CLM;* z)ykJl%f*T=)4w-J_GPubXSM=Ko76NxZB&4<6}kUlI?Vg-=lgDwr!|?@rXZiG>>3aU za_LM9YHhTYDT~qjNqQ-UkZOf3ozsx;iZ7->Q+(+6A7}G8X!_Yzs9SI6d^*=)+-wTs z(1k%qx2#e#M`NMsmDk4s-|r|U<3Br|Y$3uW1XfLyqYIqSerFkz9|7d=y-b? z(}^{yudE0Ii)-vQJB;}o;}Syxj8C&Bv})@ zGI~3LC&ZBK{Y??C#VO4Xs6<^MbQqiboe>v8fj_UJxyBk2}T{3ev25yi6@;F_<3f$ zr60P^uTBxuHdo0L;~Y|FOeHP$ zwQt)LDfWkVcL?nGVHHDN&;~*p?fpq+BE)|l+dkBXu~XG&-(iBS%i2QxB{gGRo%b{8 zvd=DDEz?+eY)kb(!b^u14SO(*{9HNSW_J`SP==gKsYmBy;oK%;DPSPEnV1}*2G;jo zC&!b+K(t4IZq0Dn8pM=7aqsgEM4@g2VdNhIMAvlyr}kfJ`C5ae&~-3U4uHSjnYz5J zD`Xc@>D8m%-!eHEWTJB2$ekC$l9(JbyC~Y9Ui#JE*f#x>-cP{BwW$ zWH6;}_{(kPgc!dCL2hjvg=6Bk4Ghof!uU%sA5=H|TO$T7;h_JfLcNO|Uw!^&a1by* znmiVcd z@E8hswF-@~jNhs$DwZE`pQZE5ra`|p_^%}j`g`?aE8eyHzeq9Y-D`VJ)tIH^OMC^R z-Z!8tf1czq5^_@H)wv=1l`KP^TNGNVT$ zFIzPV@oDU^g!mM!aqcG$IQrDP-n>4Cm;GKg&iaeRHHSFv&#=zf92a4yKm3{Vnbu$^ zd@h>oj{-DVQC5t)8GJCm`2efQtnPcpOURJIje5R{@eQQymRcRt0EW?sn*nB44>n(vl*La#!Imyc5yPVU4L|OVM((O`jLEx0bS(V#skZb}QL&^!Kw`7)D zvWaOs8U3lnUq(HD;K&0B%Br@?V)gW)$>w6yPKFU0TrKEZTPeTZp&I+abaq6S}_sQ)YS0@ont4!8xyS4wI%0yG2po`H%d& z`=w=-qGg*_XE}BGL=0BJHP2_irsnNBI|Ps)6Wp5>a8elhQ=*QPQ;bpW)ILJ^*;q)&t17Toxwh*0cOWwB-+l$Lkke4xc4uA z*!NsH>0^)RWA9&RDgd4hxCJWI?47rxiHOoIOFkGSX(l$2^e#GadnemE{h&X?u?l)b zEpZr+GOf?z;HgyuU#fZ}37oY5gQp}JN^1~z|HD~d@3@KbGxT9nM@jm7w(iD)OTcQ* zCM&xI|4o0_9@^!c1B2dSZ+V~S=$k|Gj*?af$&Ywy4&?cZryYSNl?XZ)iA@Bc_^}A3FTp_xt|(Lq5_(45hyqa4U{=#-C;< zpY9%3B7*T{y5fjwA}cr6e`rCZO_c?;{Uhaa6fOGe3sXjnYW?E>9dcz5hDA(DNF3(j zhOg%;)%|=$2u3Q*EOJ#5i+_mHhbqc#WUwEGv;tT;6)J!4MAr2K-)r|d&)|LSQ%|la zcI*V~Soghv6BsA$ljlFxKl zGSIkkzh5sOsLKn!C}pxZA3e(yTo$VEQc{1l?l_sx5O^65RUPqc7j&Lhe76g*Z{qNE z0V4?mpjM&CrqHjHl(OrbWu4}>(1?#aT3ykqfasl`ZK=pm#Mu=hTt>WjOxA3*Yk6&-YK759?EydXA;<)t3mWqsp4Z~dwyVjG_KXiC+{mi`@ zEoJY2f~{J2rFzWp_xvpVtGg}ORa3NMnb+|<4!Vr!W%j@Bry-{1jf;PYsU?beA5Dg@ zO%TwCUy+bx=c7A(4)AuKM*aze&*_2B7mk4)08?OU=WVLH=15;d)dI8SjhV3`mO^H+YM z;}cB+aIj~6Dnq%dwbdr_K`bjD|g63U*L{VGI@BCttBFxN~EYsSVi=K9L%W<L04H&OVvMf zXVrLx^Pf`3WjB8O8XnSAc2{s;o0SMJ=n4ir=lv%0+UWYr)uiGpu=6Vr9`Q^cYhq?b z1%iHJthjW{|H^3{`XVpgMsUnTh6BRhT#V0xjRI{sqIrdo4{LKdEEhECwDv+YkV# zqPE6d>P|VDcUlf5_M*kaJ5xma_>BLOR+5rjJ@b@X2r$lQD2UuPMNCZ;If6;FF+49V zrv2n#DdXKQZ2e?|cFAEUFitxm278d^XTQ z$KPc)FPFN@LacQMpSu)cLZ-;jTd>1eouh;agO1zbiSwl(86pTo(Mc-8tOEwk)6t~S zJVabpoY4P{2HyNf0Kpld4_~2^EH@)p?BP#_JLfZ$d$uxSyh1RZ#+KWidB*jd)uEXSD>x6dA;4s!`-WrDs>)=WLmuA zgi&vc-_Om-ubyeg6dvq*S;q48qqljTfxd$QcL%F;sbj?{Bk0M%>++5jbaz+e$u;lj z9N_VMI&{B4MGF+AB^PYt=|{#!+$$S-TRv&V<@KaZ*@Va7I~@v7O-mZ+b9US7TMY?g zS-HhnP&dOm9qdky>#h%L#~c#`@v5({uRTEMKLFUdiq8LY_K&vS^WhG9`o{%m=>Z;o z5Iq2fsb%-A|5>Ymh-0s}Cui+#qL^(AnAyI?$?_i8wY9YRfurBHsy5Nc^@Z%c+ic*? zISkpV_fGQa2q5H;m46GX+*klL@tf{fI~*Y4Ipy{?*OG-)yQo#2qp5&bguDd(@j)uN zUfONv0lb?~9jhxEep*lGLOB8G0MhLsYcc67z0#A>TL?zAnhxnfCCFGySX7I;&avj3gjQj~LgwmE0Sd(5o#L1*9-~WD4Sel?{41`;>f)T@zBA$^4 zswB1_F@=toau ze}RGGQ)5K>{jATWLnNYC{_UD;AeG{g6yqjM*a()G0ZXE)%=ZkYHurGoRQ%5B+7&(j|IB>`=RZ--Nh$y67_S0r^$TJqwSbaZ!v>fna zO(reCX>1TM#kKDIYG-KTBx}Ke2T6JnVxs<4!6AdQMrWOY)kWaqNtWAY|2pIj{$KyF zpFAD2cxor(7dcZT9=hGC{n|+Hun5Zi1d*S7r3}Kv!tE52Sx#BbyITnfq^2BhUaKzZ z>X&OpYY&;xpet*_Fi@Eh{f~=kyC2N-o zd|iGiH9Bha8uDraRpk3-=HZWRc9>Z=p5z8UE-ifr%H!H4u0(u*y$V+4 zE*@qaIziVjrgaf&W|h$J_qFR4`gEgYgld~@*&N4I#wRzNiLSk!dCLJx&c_))3D&`b zLUfW$c&Hx7q$0hfzSxi4Z_%;wa?)MuDHDX)n+Az}%`+praCWP75U}9GDf*9i>=%RV zw9Q7^&KDRi2gk4pRt+>;E=Z{)W{_Q`(ZzRV$}uzFOynCQ0j<-)`wU5J6j`9F29uRB z^ia@uRw()Hr@`p3wx@(r<8=!GMgN>G5%Z0UZ+z>gk$ryv2vp5&$?L4&hYODKR|!Pa z6c>{v=@EZ`@-v?k`L^~{v)+XT^A{*Mu@DUcWMkZ9r+~54wSas@B5)eSV9DgBK&=Ju zO-!ae0=Ql;Ts1)z;Y$rwdHgv$HG7Y3U^~$u;Wp`yqO9rN*3()Xk7>p*m_o^q!>>M{9i^9t<^_6qxjNS16`mh()DD*uLhNSF>;YJ z2YcP=rR6Rfy9Nd2L1HApNv(uCSys;P^ONiAeq3_Ye71deFln%j@^Su=9y|7zK4f<= z=AfX_V*@G)FspE_emD{>j-b&|dq4!9m72&P#*9{Av#Y*^wwPBP`OgEs8OO2?UI85i z$Ch%<_;<4pW6Vm|^x=|9nbA5>lieLWN1s*Wg&DtnZz05;+Uak#v@hZT*0dvWhi+F5 zo(!d}$~e~wUy**A7YJFrapML2SB#i z_-#%r{?AMYK+jG$+gyb{ZsIjHG$bTFb;2qBMc6-$0<=VcvvdI1dis_sG;0jHe6UK| zkwBo3bRCavOL&|LvLjjh#>GGcOdp>!+dkN#nrM9(21&+9&Q^!a zFao{XyE%?PXEHrKcv@T*3UXKw ztqIBC-aj?uF+g_~LRe-RO^%sVf1SOS#`Ft_M zlOyd;2Ssdjq5KgB|F0E78XjHF5{*u8-Ra9qBp0g=JB5n`Hpof+2POt?F0(A~;KrOC z7!5`@MJ<=3OZ$h1-#Q#k72oAx!d;(#&+Af2c&qUz#C6+5z z{JyEnU(VGtaA5hmkNeA;On1tdl569mkZ_BDqu|s^Y$;T33|=|Wkx`q*pwLmJ5627x zX@4C@xBZZ3d1;hH)R)vrI0u@HmASe04DKP{RYqVY;Ap-FfrXcimm6M@y;Sra83@5ZO~l9?PElc$)>4kJw#m75*qAt~B917a zZdO_EvX@k>w!^>b;zU-31HGc$0Rq9}rh3Kk-oSrIM1pVg@pbfPfSv8nzbl}FXIAjF z^DCT<5EQ8?#nGJI8I{8(qIeKWVnP^7l=vWyX)iqu1IX9emrZBQrh9syK=xR}Zj5cRM#ZEs;k~BRGo;RR?sC6FB`Brb0#uf}GsCb$_1x z5_EB5rF&Nj5irFrRvbKSN z?`+-eiy1#~aIpU$O;-UF)%UiS5K+3M8>Cyhk?!v9?rsqg5m;EdTe`cuyE~-2L;Ab? zzWMJk%rMl>-97ib=gGFZR$M!vK5#FsnkFv_QjHF21dND`UJ0rtcEK_L6tznAHOf?) z1}gh&${iDm7G+-|J40}&Cp-yecB|{WA16?SL`DMt%e)3E5Y{m*QP(lSjp)m|cgC0t zFAEAiM5QtWq$GTBgJ36R^G3lci3R65$W-My{$Fi*8ao4MyMFczH+ExF2iL%5_;}!%YSnsZ{GmCVd`RFgCn}3b z{CWEGL`+#u3~jZNOq%AbW~DZ+E}C?e*40_5$g!KihCVy=9g&_uqJOB%QUw05{XiJr zRqrNS`Mg|N@U8K3LfB0ew;D<@$Z*e8s6zyK-obOw)Rk2ZwSQ(JPIN79Fd4{5i0XJg1b~1~EqN1`yoAz*L3y={Me{7HoYY6)0p2n;p*$b8KP3DkGS&!Ra z8Ku@!I@Z(kt#Sp)K1fM2;8rk!$Ijs;cDZvzBN=_(IHOmos1=RS_Y3);r(0#C@0=j> zTD4j$6-lu4_eS|;9RoXYwAIz?HlV!-l$oN*MOA)dzNzWnBT3JopV5I@~xK|s&hNxJoF*Z);2gYz<;;g zbA&~ne`_8K@SZ)AOX2Y(a4OOV+ukp6J zbDoOw6-dlNIA~1(3~$#KZkPoeyaDB6Rzj=U4-XX>RdBI3*C22{v^uax)|Bv%Kl+2J!?kVaq^IIlr~5X^CO#|IkklRm)PAC zuw)95@aES)hF4JLxfzeS`Qud?`Y1oUW9F)_G-_mi6oX%t=ly_nf#u=e*&KzV;!~3n zE^S87>ja?J0LXndt-KI<712n1$()agCK9ef3fn0voGh!_VBSg1x77G*Q8ixttL@VtSc^%fRF7x4b$D2P=Cv1F86+< z`M70+tv{9(9g>*Ic+x{gzy^-gk%*ZXWoWAT0GiWRXNPx0=bMa3S=2L6^-w4?lp7B( zVdSj)U1@`#c4M8w+T=PG%>Z}ey`juc3FeQQDzzall2<*Oau;T(?Q;8U$xwn$L1`y| zhQj2Y0T#QyZ8KPgWKl9wjLOGId~*DSiuprU*>S=w`3G(`?Hnb=qwvZJY*jEC`kp*f zeaf10UR~1+2~HfGORAI9=aAT`&1>zvlhPrPbJe86&&C8Rv>#J~a0pCfzjhXc>Y2w+ zsjHtptadw4--PcsLh9UJA{N+OOFdUpIR0M$8UhEnj@8s`Nuby&da>!UP|BI_E~zm& z7G`gCzK=cJ4WZ1Fxo_hy!-nR~Lx4*AqtVd#lK@1aw_}8Q=1vR>oXDSMBX4S}XO^4B z5{u>&%np}n7RWY2l~A%>(%$5ow{IGM{&$HmKAKdL z%HH&Y_M(7~r{wW>G(3`V`GdxlwE@4beSdAOVHU1kA6a-J7*%+JB~P`ASdDc_X*7zS zb~BK7S;n5xlR-B^)N)wMC*foz)QQ?qzn32$Kz3bXCGb0|##e3(C!>xBnp4%hbtZQU zyn5mtCN|!UqzAB|;BIF^D3@^ziSGlWBrwG)aJy4Z<*?szaln>#prV zk?Qr4QW@ z5RRe}aP7&Gp=0~pDIQ-X_tw;AO$MQEb}hzD8P3Tcz>}h8uU;0@MUeOZ?4$B%(m#o5 z(F4wXV|)gSOI-YH&Ic>Qh$8c$+;RRhQOEKtpujL*4UT+PX)tA;L@9Z*-`N5CdUI>J zOx3x6^`D1kQ$vb?`z~#hYMVsss+CrKJG-)4jfBH+1U0Gyqe-?*jq--9e#;J&R)JzX z*s_Bb(VnkKKlGMHhWKF(@EMhf9AJO1Huw*E8BO^!FYdeVFS+E_re}a@<6|#)WG6#& zqXzOzwL?P{;cptcjnf%4t0>%-)&M|MeDz|rK+9!LBe|*Y_BM|)2^6w}G*^huK;?-D z>HH=c90=JI5}k?N{z8pg7BtA8*FJG1BnN*!E0?@`qG=Z7HIqd~zzz;y?yvK3s7*QT z)7DYij=mu4EBJ{B3LSNfBbmohT^Uv~v-)xSHU9b@U5>`5xx~m>PU3v(%vZs|8=zQT zHoa*}&k`;6!a4C**Iuqi{{XPeOV-MjV5_p8En+;vat1@Ns}|t97d&#zSN)!KkmKO0B!~%w@0xZ(P<^jE zqe()?Qwv;|^=VBc0Vd6coqzm8WV`+K!qE@_b3Ptl;cc6JI8xr}yr+&8~o*=yUD4vB~E?L(QX zroG#8>uY-#PvcB8RvWayMWBv%z0J9}ze-zWbU;3y?e`-x!e{&ZBd&8LuzHiTW`IS&lNmQj@Su%xz zJWW+97W=)CLb}4qt^vNKz+m9Ay`V_I0!rj>3}lX{MDJIHXW?gK<(p%3vILuT&vWgK zmy8(bXYjVp=nO645}IKCbgfiA`m)NE4Q{n!jaeoq+s>N=ZbvswfsKSqvRwiI`%uk= z11;4-Md=gKfPN2g4N!F`q9yio3|8_7sEFdzf#eqLLJbX_B3h$h@z2#01{!WgW+US4 z4X)W%xp^=s77ZIL;KWSb364^WZK9Ua(AWywp(OE|HZ*!LP7EH4%~9H3dZY7gqdB!x zNxu5RpY;xw2(uJ)scTHc&M1HhYn0-Ql?QI`Zr6qel}vs+n>-?@!K#qKxZgHmWc{%; zG-7km#o$^E(tT%CmM(asC`{b^&Qb)_F6Nzd@oVtxv#F)hE&qgn`>Si$TAC7;HVIHkNvZ6t`q!xyiZ$i>YXG7s z`1J4#=BM<*F=4>5Lks{x?_<1o)w@`6w6QbvHt(sa-9m{o=$p68@Vi|c9d5MnJ3YSZG#ny+ON28l>zH7RUAG=ax2Kg>Nm*A5&@Q4GD4JqSwmQx+mE7j8}ILfx-yTl zlJE&JEAq<7219u~J&n!`oI?Fe{;>A{39p%r3Np=Gsj#ou&bS5{NyGZaAAeOT+ zeRqAyK`)&lMKm_FgPy5hJCmp84I)urGQkEJMNvOcS-_Yj@o?2T9D+ngsWyThd2ZTW zRgrcdWKIg|HuM!MXpQo6<2-6KCz+q`oPJ2tgn95J zgWc#@QrZgRr3<9nj($vjsu4pcaAfldz@@p9I#&>D*+_K|wfQxZXDiP_BqM1p;RY~D zm5>V-Y(P}eq4(PqIgeO+@KKoe@fgASF5YG5zaFhziujqfSS}Ws9W_GLcE*XJDCN?kSAwBm{j ze5G~KlpzlpZwc4!XvV8W4V0HfEWow<6zYB0ct1_GEAxF(#HlB%R6f?-+ZQSI5X-}G zWo)7F#hBP46MtyP*sl;^s2UweO!9AlL%7UUN+XevXNjhs)pa~;>+>RWD5IV}s|xE8 z^~O~N9TZxsQ#QzvBDf>aG)t>0jZQP?{Ub6FBVjU8tm^iJde2wHg(&3*{rTQIW6(t1 zhj~hhLQSw2rZe$yD#>7Gqim(;Ck|~nruAwWS>eX%3l{N%V}@ffw4nFI_z2zqde{

    LVp4Y|_T!34zKzw+sduJ`d#23SvPo(UfsbUTy1OzD%p@7MW(DwLUu z7U*@RT`3W@n*T0Z!E_)!!-G`6Mq2a5O%eN=9=m}J5Husmq)k2#i~0}xza$8k8Mfcs zP1i<@^<*hyDvQNAd(j!xcyKWWfy^Ck1ncHqr20j<`o#w-@9G5~{|ra)%S{ z=pyL^4|xhYl*u%Czn4%!wAQ={4Jyua7C^nYy6P}(ul+5O%Kb zR&l82EUg5vNgdzZHqCj9;zkRNT%5@@KPEY#HcQ~II45=sRY{`=o38QO3@?5yoL@b} zTZ4gcrXtAS;)yx-Kt4fyd=zOn8*j(QJklv8S@T@=X==BU6`FOK!xj094hKGq1|3~Y zTG9MORj+*c`0wx86>VO<;Pi5P^_h9bY6;`p>?##B!tzjM1MlUk&)0Bm?`+HVk%ePT^FB~Nv0pfbJ9Bfpi@O0MA-&zRNfI)PDJ|)9~n)>ns)Nb?*XOf<*S8UNyS<8j-nv%1^maPq z<=V#JacNKBu2Jx*Td<{^>3r;?=lB)CD=9z)S|tNQK#e!D>Exa{cw+m%$Jxv2ng26D z!~%{H0@%)e0Dd=ko;4WV@t6A8rNJxUQ5ecT2stN`W`63E5`-!qXiU_|hr~ip`Gz}1Y`liDx!bw`7cVd*voWFGn?|=nk-8Fl9L77JA7L72oWM~J@nj*x zfyZ)!JRpOTO=r4_7=cBZ{zTqa@{H@HUTr(I@{5Eh{7f?>iUa)$m;E zXnAG1>qLP{qUyA#7>c?bGi>E|W7n!rG5{tF%Fnl6u!X^bw`MIOg$2C*h{0Z; zmdihD5gC5>kMv^!jPv;D<(@tV0QCa|vYYW;0gR55oK<6{%&pnpkEjRqXw_^CQ4lk< zEGlkwWTdvl=})>F0KWa>c|dY)>a!<+eI6ex&u8{&^{Os)o)Y0hCaOn{cgORGBhSSa zvE=d9?<};}f1KaZ#c_DcB$cu<CqEIn>p9hHbdm^U z4#oNnkGk~#q;5uwQ5_mNE9+Fhi0kdOv0E)=p)!ZX9B0$s7=3Zm8<#m@Ic{FtTD33$ z97WDC)!@#*lT_J`x|rYvnvydI8O8_&HwcODK?jGL1u+XliiXss4N}V^6xQsQL#+yd zb2UQDr*XT1({oM-IN9xI z-*F|U0uc|ZP!peZPic?%> zeR-}4-e_5L{VF)LJ<=KNTUFfM562=Rc;Akl;%0HX9h5y7CYv24rnF-Bcr-hAM3mvF zHe>$S0tpuO-RaVH%fp3Z0U{Ys59GkahcbBqStj;xjpmOB`5EbniT^gS+y6y+w7{4k zf@EZ5{`*cZlmCT>|DFdj5nsb{&xygyjsbwS+}S?QU$y*agncXAxWB)D+aUAh)1-%d zqz{_cfTG-V@1d%ax2|OezayReKY#efQ&LiVE(fXFZ%Q5f0N)_+2)Jur_j}dfNW%g$ zC@vF=X1d@}?f`!arq#w3^egsbpT zVMtJ98*6lm9oRE3Rou1PdS58$Oxq*~KeE74kRzdfY$!+TZpk-(NtC#8j3BY{xk-%ID+!_k2yAF`cG-%u?N-tA&*Oz zwant7lypOu1eKzl0{m=KIzzDl0Ae0eZ*j@JYG{|YX!ocKucr~_=c74|7UXhA#l?_P z&n%u+XJGu4+^jDOoZIB*--CbzQj#D{Iqz+x_Ymi!9)+@}b>j3{xtorx7ttS3ARxbm z$KYLHb^a%?z&{yd!4{$q{eStbxQ2#w;|S@jGQ1#yv* z94`vsrZht`?&aGJRU-O1Bbe?#-Qb70o|*OuVeN-ofYTbc4tS1l=|iK2B5*3xpLmdi zkR<|waS33~`amOQr$|YQ;YzM~n~1@x(5WrV5I5Q_MOmj+F39Hd@Xn$7XSilj+F(+5 z&X4ppo%yg|K`dw*XCY8OYzj^0ug{+z*hh=_iSPjj2dpDu3IQw$TD2vECVWypdX53{ zYGu7-aD~QiPx*t0hV=*l01^}GfZYkYU&-UctB#ak=>GtSmNdnr@TLrajx9m?Mk|3~FE?TRtTts3F6Crs(zU$U!V7F+^@m3g+e5YW4 zSMXh8+98vyD>RWJP2IWu%X+il?freWB|4}FEiRXT_q|mQK){l1rrW*tti~@{qWVlE z4p86G8zDg9efb==WXMpmJ1g)xF{rjCb)1&Jd^>?Zr5cnued)eHX&8)Tj8G3apH2Ks z26YcFR#K8L%-IWSa{5}*7vKF)3owV`Da;@x$xz^j-|4K+U=~Xj{RuGOx{0)EwdHKVjlbc@{}NNH_<+Gx0Sk<>#tWnV+-wqC>cGA2ta;3W1zezW;gkCl3jX z^&{}gA|Y!+gmtQdG8kT0-{3X`Wx3brD;q_Z58dgCYWwpX4A{2JqmSy5Ypbd7Qy9&# zzmvIyBa4T*)rGa4M3eAmi!nadKlt_R#G~8>I##nBJW7(3Nx9X#9g3$Md*mP?r91%Y z1f)_wr0sHbL&-P-yzDNle}Dh>(C_zM`|C5X{1W8T`Mgqmd^Wzl4+#m0kB=Wq6~zx_J12p@f9^k)O=do642@N^%mK^Fe@H#Ha%vt&dt{ z-|^uulu3&Op<&QmchOfJ7Vx3b?4CWj<~SYYJDcLp7Aa*$yZ0koBoC@3hJ*mY2M>j= zj6`E5S@(50Rw8{~DYTD^oP<3mBGBu!MLokJ4qK9%){DQw@l!BBLLU$h5eDpkil&WE zrAbl2@4QS;=#Jnua~UGD0x{>QE~YLaYM_7RLd;db7Zxgjw=rTjZIixcv;&mnV^PN+ zj{cn@`=$QIZ6pU?x3rK zo6V2VJx&kz0@{06r%*{?qg1?MPOTPJ5H+SRTSs~$Vz{GQ@zm<-Ohg~9pT)p_w~coc z!uvMEqpR<*_OfR$!}Ti*?aS)MWh7@qkwK(aCTQLzyru-yC&@c4_?RUp=^TEPxU|@j z{Hp2vjfRPbw`2?-sD6`c)92OmtxY-m^IT~TjWT#)BLX2w1DbPru|cugnuHuwJ~dDg zIPTK#LHQVfGhwbQ+06oAZEe>J>OQu*i*@B?t<1_C$y~8Z?WO;9Hi^&{p_mW|j1@SiG5xBUtv5UctJ2=uNrIt`Mk42)08 zuXOJ+Wj*^;-qsbJA)LApG+1DK^PRoRVGcETjsIGY=xRHc2I#&Y^=np(o;Mfc1`obn zdR}mpANg@AA) zuajU6i-`#>^{6r!6&M)zd+1^js>hkQt`g=lUJv4I*A9ujogxuQsWDZ8qu!hxE^{Uh z=}+A0e@7?2Ac5i&5&(%&Q*%hbzrR0iYL^I4m@6wow{SphS7~QlkuJvzmB10Im6P`Y zFnFYmj*i;i3TUIPYe5Cv9IAm9PF6i+(0SXuTmADDR`vwGf%aynu=Zs63vLU(FV9OP zWky(*0umc{IUlvJsN9L(6=-F7+bisOoa!phWeWHJ3rDV<;W5T4Om|9v<-}V=Dui2` zUwKaP@)udXW4Hk(-HF@$5+DVHl zhl6cXUZ0X>*cca&Mz^&>efik(4`eYurMFSD zZ02bIyRl-Zh<_=wk->Q+XI1Qu50t3yGDX$wFXVi%YgwpOyZDuw%Ovt7{t&VIj}R$TTySrp1V~ zTM{czLGbS4Qlxd(aWhfi_RnCFME^0mQ+V8A-ybph;HbEm-`(DIHLVWNA4r2pw994y za=runq4S`Gg*kQnZUI!GWT%mU54^Ur1dN08ST{{s=2g3wBF~HYOlDPcJ%0tlqwI@( z+~ex;PRC#NrrtR0slIbdaJFRlMeUAx>n?L2H-^c3hvKk!tb+?qIpDYN7k7rt@IqX# zh0s8lVyDDol#p+)8Ley)(Z{rBFTmA!RQ6HxxY2GMnPW5Yu{D8#vyI_|r<_FSG^8XU zZ6gUKpvV=4Co{vMmR1ZRgO5TXmHb6dN^Run8wR&i1c$~Q1 z`NZFKryW>%+=W~8v3)0fe$;d;J}o?4b{l_9-MfE%FHx06T$jRVK>+&V_Zs(3PvegQ zQ-u7=AmuTPe^y~>JyfRZT0b*;3THhB&uB@_WE)r z2n?jWd31eT8SU?QivX}B-^RuU9@$hckyhN2#v0P?s zM9_(jp>Mx%AQ1WNaOS~QqUWx!8rxNAS_)KfUso|A&eXjSE(w=b9GJ8fbfpYyL* zg`vu2I4EvCeLgXPI`a8J%>IqiddOTG5#NgjsfY>8WK;dDD%CuWYvkc0MUpAbBLr`mOUEtex|{ZmW{q-3g1?`Y`j)+j$LuX)*eR?K{wQLGE4`b^U^sY7hg3T=DPkBi_~y; zXI2FqX;BqoPu-MdzrKkolGMWQ=WTWPGGDjRSS@Gz{z+u3DT^XT5Br{Dus!`KWz<&=E_WDtnnuh>yg5X?~&*3X5GT~bg%&j6j@ zv-i##uLE0We9INWsjL#A?9fbejeG@=h8}+9t=TIS5-u)`loFXl1>6xh)z3hgXw?SzP^iPF zy(QYLp>k1}R|9!z?yBXQ{o*4z^+jt?Kmts#TL!9eXPSM#8xlTzR^q#8c)DHHb`J0H z%c+$H1QJB!lV*Es$xp!pS!ukU;@>slq{PVfMI&l1i-?6jZ>qPbvE<)2Q4u+IKzW2+ zD$2)Gt}60zwwOzDL>fLX9d(%+T zeI2hSD!&cpl;6!eyJmASr><%`faPQBIF_&(8OO$$wsgmFNW*AdXyfDOedG@Nqc z!Aq+RgRp9qS?H~{s#8;^zgC`6G=$(m|0eIo)HHPd%aQ2nKa%7!ZxcVkpJB z(D8_v*pKwW(e}t$@CRbuof^JbMG~YPJGfw?Y=+ed<_Kq2Y`vUFbf2RM)ECUq9U>52*cEZa*9|z8p@4 z%x}_RXCGes))^uZNq^uDr@8XJ7%tb{G}eWmwDJm!N?U48S6)B1FR49BX{F8;B`c!! z(H{t?tI)FB3sd*2rfNtOXvO^DT0EzwTDW?xO!IZMlF~lWI?FV}&&laY@%3-vw-n9} zbf98fxh?WoLlqh%#Q>C7|EV39j@lEWl8?Zf6NY($0)a$A@eTZ-e{DDTuo8d*)r;M( z-V5F?n7FvOtUt`vw>_UYyn*k!+S(6qW~iI;074Lv*LJjm|7FahcV+us>)GnvDr?dR zfP57f9o{m#zZ+Zkv6t%*d^+z=U^005Pq+fWAx-xhPGfI@w74K5&y8<7_^VJJxN-aa z(_r^(?+gxfXJRN;3cBKJ{PNk^RK*)?^%famp8$0THEaZm_NERE{E&L|Z=q7qfmcF^ z2i6+h(#psAx-RyhP$||B+s|rVI)5LG9%mwa&KeB^H;~5)mL|=WDI5IOaw$-tltN3K z(qOJMnaHt~mFEBiJr>yxao^uIuMjm&zUm{;gI#B0F2IT+_fm3#kANWpA1Fet}htv zQYG8P0wp8q3t%`8iur7bfXkASUk{)1RLEJ$ z*)!C8f{NcF28S0OX_j+7{qo4YEYq%eidANW^7XrvpU;Y;QAyqvi-d;$SZcLCm(omM z=LvAX0dBT_JF>Jk1686lM|CYgro)fG9`j?jbP@I3ztZ1W+NzXwH1#IM({wpXP1v*+ zNAfdMob zbi1#ExtO)ETN|q9jNJ8!Y5ph`unzU3+%(HOz8qV7QRg6gL6z@0FA(*(SbQ(V?sQXH z_)(D8BQP&ZgWRYEJpmgwb7e7)vjs>-)3gDH2dJY>J}oFtImYC;Mt`o~Z@0{|TFg$f zc?sdO5LeA~WZlH(#-Ucb16S{eyF{>C{YOxyP~FsP3|s!0#ZSdd^zgs436axC9CO-7 zbfv1|NBEK`hf>ydFudB5Jtzh zT@kgncds`)!`Q`tN|6wE`aa7{xw#A1lfuG)Odg91P1RM76*9Qky)Ra@868fozvlyb zuhdIJbBnPjsMi=_c&jE66M2)mvmNXQ7SM{!aCdKS@8qN(;&;3V@vI7kzqw{w|0~T# zApMh{{~xt|_Lh|a9Os^{#{c{J?+@%30N3=MmvP_ifC2S2C>OQ>*#2AAY`5}(G-00I zGN_`h&A(q@!OqDB`eok#WFE+|anNmW{QG9)e=l(UEyZ_MqwO-zbozy;2A04PKR2#x zOm8K{lulFcVmE#jfxB@X!iHl6wK2Vx?177z=<$c@Fct{`D2yCax;p8nC=aBvJ!)-0BAsSaG)2;gwLuQIY|R4p2vyb zR6ty_TV42s$*Oxk#u{35voHkISkt^ehUxL;iOT&{Rxup&osE=l6D43oj-5h7fr}W- z=7`n2`OLy+#chBxkDqHjtVLz-<1`+t0zVPgL<9>f6%GFZ;%aQC;0H;^?7MY{T6-s+ zn;BnDl|@cO&%<`|FPY&zbgY^*`EGPd^r`HG{YtoJAZRD{rA3#q=sV*HvmrXfjz(uH z#9)tJooX(6=DTW-fE$-1*uB}wWwE(oJ58e^UMY;y?Vml>pp@o2P~Vnc#!is)#*n|0 zNBMghY2rF!lF(!NOh9tUJ(~{>-**s&NrXZEM+rkZfPIqtjhj?z9dmwNKsvpN^F(jC z2d&l7-tJ-Kav@9L>TpC;DObc`sHWD1sT?)vr}$O5Rg^oM?QBy@D=j-uudMlA5x+>L z79{-}LwWM@v7oD|GLR=SV>VXBi2#Dn3gfOlTK!1rW5}gZ?gma@I7y#IPA;|lomGJA z)+qBO=%ck(moy7|uJLHaOsRIhBjP#C5sY$KCbDyOgmzJ|+ffyIZ{neOkqRcSJh}8yeWC+Vi|A z$)Kv%ih*}iYADwi28bZYbm74so_#)lE!g6+vU0lvECPJ&a$4(FMzH9|kg1OZz5{}ovjK<6RX9@D%k9A! zDg}SQ)&=m|Zxdtt!)&?#Uj&0UfyvuEdB*3gf&A2lh=kO7JtdRCsMplV^5)40Xa)oN zPl9inaj{y1%48WTLfN4xYUOpYrl(8FJ0?fFe6%jS&N8p=+s}B!(6HxS<@!@EapD>F>V+jSZGLBgmwk1QJU6ibB`3%A>mU|=pQl@?+ZE#uXXdoCg?u@!Sn3yFJ93cj(!1%iQM^eUsWyUe z3Z0?-9_cT>QuwR`r`p_Vaa?=h&SZKq6Q!2Z7;<3uE_mghp~EH$VNQEdKI0(deG|T} z%1oADwk24#MzBIKle{UB8h%53HXxiWCzO_CLjly>!#cCY&m@>)*FV=&PF-6#+qWcX zOS|1C{3K_eeU~;9?TKMPIlD?K(pEiyti>;!!E9T-kZQKDsR_&8_Iertrvw>`+Fgxn>3p_>0I_H@-!9r0@UoGRErh#>QTra;QSo z;}2WqqsFwFS+V&zt=U&6e<>FVPIE>f1$katdOci2vIihRTcQ0*zMC_ag@XKU>r8QO z7f|If7v0Y&e5`=V)hk>nOHk}Q4yRFmSWm|)9oQ;O50RDt#TDB)JrmPwufbFA%*<(C zpDWLET)FQK&{^UOY6J^><4R1w|r{?j*U$bTOIUp;^?)Wxn8zOl{IyR&IUl}}+hPjgL_dIY;25Rh0MW#;%FZW_!zQg! z@3k5m_R}>g+f+JK&p|skxdzVqRuVeDPZ5RD;gWuZ!pIEY12LJ$`(NvFU8&YSCMpPZab5gu zcAoNX7=j(8@uOXQ?!=u?SG5T~f`%3D$>aa&PC0zo<6T~uk04NHY$_q^=hET;Y^Y7+ zJ3v^b>&%1$DK$hA`Zt1}3 zkCy(Da0{FcepnVH{qmZa<{Z8>WR3ix(S#s)b$MShnUReeJhHC+A#Z@BjuxYoPm{~t z7}W$(#I~e%j8Cu}$c}3FCNPRktzUG#HE*9xbkjcFkYudS`IwW5j5!09!A*)11=6d+ zEGexyL^Cj=hD5h`M5x8N;TEf_55=h*?ddd;Qavsh0k~YWRP|p(M6>F98+p2K_{PCs z^diXPNB%L$z<}0&AIGM9cD?ssSvW3ZU}xoy>9e)`l2HRk9ri_;h8_mizs1q&YNC?W z%od-O2QJO~3(}TOCioMQxt;r&;SL-P3S;;6hl7 z6m-77j8aZNQyP2f`fM6pSfigrj})=SayJL#&#lOQpT(&F>PXt#!`I;-jY8}DhRrf0 zFQCco?OZT%2UokHr>Xhx&4!SE*J4o~s34hZlda$o_hy7v$#|FnGTYwN(L0)#xZE~y}#TUo}Qjw|JTRa#S9Ayp0EJc>YKd9!|3V#lka&FFd}YmKQ|}L(%~M= ztJlU%oz|po1wp}opmD4XCxDs?)j}z@YK&5oMu&);BA_n2?H;{!QSO<^3}MEyg5Jyq z?psacx_t+YV+yDu@9d%w;56{N%t~&Ly76D6J6g0Wl;`L`j*HyQr=#Wf2wt^JKn)@7 zb09Y$n`E%y4EiB;BrWzqyrBRXoa(x6sF7Knzg-rf**Da5eU1KHKCX7C%4ZV7%Bu8k zPr$=>SG~lf`yq?>(F=uZBao9G=Aj2@-2tu@6d40H?H7iM2 zaxoa)PegX}-EQ9(N~t-NS@Y&?D-j37JSVK(w(tNgq%b18X)Y*mIjdEi!lvPiEg38b zz)BF*>l5knSmXDCZz6zz+PI%pfr_t+jPQwjA+xn}9gg;$B%a5EtTR;in z^xbIJFJD^Yr!j{j_#NCYMqG5ydyhd0QOy)TX z@ieWmZQ1F$%_w(X|7JisnGJb}_Whq0;6Qpka+_g@OK6ITsZPO28!sZ|Bwhkuy6=D| zi^3?l(=EuhQ@Sr>LNF>xpw%?5=4<~Df(v^-ej<&ZZA-&ya5=RyZK(|FB$66@W#!tM zrh`NK)ArZ6oc{L`{pH);M&aUAVL2FLc-7R|VYD(+{3jUP8`z<~lm3t8vNtHE9CJ&* zxGDRnHEK`@87!_GRtBfaUk=Ot0pZs3F|aTIa*rutS&zB7rRAxc_yrXNXr(bbg>-VOJ*%` z6PxN`K$={7GM18ki>Vh|Lz>!& zxn-7si!=?~EtZ}9M!4p}tp$!gG;qXVfD(MlF=xN=>PP~Dw%@0+TEy#*S<}vK5<05| zxL5n9?A;imk$J@W?o7}mpy)4o8Y47su@8Sw5P)3|`Cpzy-%#|-SDe40KY<+|4jSG` z7{E`phsdP0*tI~g!j}2BzdnEXjsvRGNid-L zVeGxxwsLC{*nx~;UA%8Te$`7Y9NeL%@; zq8UFIy4;HF;bXg*CF{cPnmoBwVq%6#g6h>WjYaKF>~}TL^PJ@6r%r+lTJ>)5tV^M@ z83YIzq@v&U<)4{NR_i28I0QAw(X(QaB6iV48iTljo!YX7nK`vN8E*isEaKF<=}Vzp!UDwoszp`J}2W9K|o&h~tp5fkVJc*6x

    7zD$qGUWAg0ZvXhy;p}9~&$xm|i|Q{)QCT|1K`O)G_;T$a78_KR+XAB?BcqEnt)9N=z}~Wfzin~-PmSVp_6lfKUfy)c2h;iMm+|#)eGG%Z zQauG21sTW}e*WhlfTjfqRU`&&6a%8lwmEN)u;r0cAE2LWZ+Ev1h@0}e_-)YQd9m5n z51cFCbegZL>(8sM4;|B&2}oE+ST03q_Q#L5Jzqf!2Wjp%e<;xpeAJ2!#Na`wAYI2H za$LG)HaIA#!$lAp7IO#&_~WP!rytkAiJ3=DgabROK|ykd9PkCV)XKi$oF z1pNwczLz?#LX=6b8Vu18a4Vu7p8G<>BB}&-**vBVA~Y?fX@V&G3T2wnAqr;1Og30? zI3EEGfc)C{Us;etzZUUX;vY02g6d%GU5>0jRGKB@=yOis!~i#$*Gxv%356E5 zqdE!hI`Qj%4NX0H(d@MD&{dJ9)5H!EBQp&$A^|{NK)Nd67S(b1(&jDM8v;Ueyen&3 zM5Bn%>VJRz%U+jwqMxM;u2RMMg{WDL@ElOwbr}(YZyOBpChchGR?W!!U{2}(#PTG0 z*>)Rngc3R`z-OTW&i|XjZqCZ&Hy^*CJpeVNr)#huS`>9FU??Yi@yj=N9u zWKznEjvz_#F1+|NI&yo!wC#H^_62w6qdSX+=c2)arXBW>I+(+!CISiueo6gFzC=x= zbin#W`L#CgqS%9=<~4!MDc4}uR4uNXIbEQ2Cd~VmG?iEiDyVePO>oFDoRf(t()!pbiL32gko$$vGK|bN*(v-VP1hKg*B|!pxVX4% z+jcG6wrzWNwq0x0vh7-4UbgMF?C1QS&-3)MdU3it=lrhg%Vg=!lM*)HdSM`uK(5$J zZRPG%CRL7!~lc!@9>tvJ#&=Mt$hX74eb>@9X?EI^T zB=%l`*x#(sW;N*jDCj@z^ZEAHeKw3~yn#ZdC#cwAKkv%limcHIWq{>5sAaU-R2m$3fOLTky z*vQL_9T9TNG)^4>EvLI)c#oTHXkBd;Ry$7?6T;BK)~l*=J&A`?_@CNK*o7vFI`pSE z7cDyQDr(ir8jMH^XWA85g4@)pd_aYNALmI1+vsW`W-0DN)@t z!l#Zii=S7WKwKO^LXk^5#$YbF%nbimE4_Jx23v#5IPq7_H`H6^CGf;FZ2$ zj?q|cIIZ`#X34gsWH&a=7Vv`MdLb%QFn%jUFo_K5>OwO}1A-A<6zDwfk|X=*^`wIB zR?IZ!KBiSr9DK^7MeQa^mD1bs<#tp?GZUAmEjGRo=_YorY$}|zxH3(SNeTu%*bICf z-oGnCK=B?BP2{kSMZw!^eQ+fmloQU{0&ZFP+WWM|@M^N)UkQg(wMzMh2(ORT3B*2= z0aKX~*nZ4DO|4>wPP!0FMSH_{C@N9mZ}txnS0QieX!fUQPS6$K;?fQI1csgcNr;{&nTq^5J^^ zm%o!`Qjfnii$gXaXg}hv`b)1GVs+KetYqc>)LgwRyTgmF#!ZP7M!hkLQ!VGdvg7%} z;q2NH-aDCHadHq`Usf(~HBdkNSmA45M($RE) zg|b{~czj?bBdDdVeUsPK-}#C$nN88GpbQA2j3)vUR0CaaNzPUm*%mVobf7u!5sx1;y)Kp;qhe=NJ-Le2H2 zI+`y2#K$XuNVFIG?EfHtg8>GTRGe{#t1UKBGc*${R0@383PNtrE=D$r90XaP^ExI7 zGBclbzVB);5wWAez6PtZVnYB=0xR>Sxex#6oRJL;2nhSy2lFLreLC%<+ncv?RAKa+ zpZpyb7%*s-6TerA@njVhUVQ#Ncz$Pe_dK3*@Eq5c#(KE&PMHf7R8kaxsg) zSIEa+q@$t=Np14*qIf(`;CF?9Sl9U3=bp+XCqx4ZUn9-y4~z4g^I%T# z&UDCa!Ab_a@w9S#wS9P3%Y9paXbWstWuH~32p#*nHZ}mKeyWzE_XJuCW>Bn3obM9r8q5D`$NnQpT zSQFFyOHrgGlTq27LdgQ7KDnHjLPBm+b|u;#nJKAtlEbp>=aKKAFV+)mylNVh8fi=E z_(SjN4fnP>tLN=^VRFqB>1pgjevXq5gt~~oQXgGopJVl+LC%;FPak-|g2JPQG1)z|G`tOqy zw~s9k309q@K(22|>ZO_# zTzb24b=hKE4rCi>ruM>2LdcZxZ#zF|FJ>y1N{0>jsgMV6oy^($*Lx`bRtHLkh;{17 z+^a5;xi=uNGC1@+dR1@_pCvo7QZ& zR9w-^W+i47r7G`k&-8kxR1|Wu96yj6hW7VYQk}hY3+W0S>tWtW@C$7HMNC$r3Y;fQPVFBflKY3M+w;QF0cHe4tP&-j|`LewvXE41ZuYP3a2*eH0 zfPwRgR@(~9=R&<*!&s~^daIKGWlS+bCV$_}>kJ<$I}yw)KX_-o=YM47#Qb)37Pqe{ zGwuVLiCfDO#OFan@h76u=KR@tmogidlaZT&or?=tXzp0y>BXFxFRA*ZgN^5Td@~dS zelcS}xMg%B#!NjWb9J$Ee4{P)2nqxZ0~b%aw@5Ye=@s12p`9<(%@NpURq1rEle6Huy894VLV~_zIX%IRnZr6kp#tpBMifQjF$srp?E7w&R0psWkfZ zPo|IQj9@8AcXK3D{>e{7+ln7>AZkbUJ|xqeY*sd=>AXr!3P1PrWwCqx9EoN=4Ti2} z$(yHChmypBuH`5(g7A7vK;lIuw&B)K5~-Anw^G&O+kFkF6i#AmPHeX&^qL(jcWRgx z_A6s%jCo7R_(8$?<4(`2@0#Knhb4dI z3S#m6=qITZ*9QRE0UoyZ^V2`l@4EY)sCvztn$>O}17>>>&#c2)xe{iFx8QEh>+krI zDuCEASzgof)XGTrlz8H@!x$C(t-!wa%*oLmQh4!xd~FS}`1L#{27s|@sFKu&0Vn(4 zkmE;ysd`wC5B4HBntnf@{*Ubdj>*m%ehv=z-NC4Yz}uq#Gys>6kDuGt;7}1SC%}G8 zwW$tIy8ogjk-j!$tRvziRjs!!jemmT&Gz-)$j?Xwrl%%yWPsr|+50mE>kVPr;@5F% z`@bOWpG}NbWJJ#s3Rp1E=y1?L)=|KJ zYuDMZ0xo^jCwxc-5T8r8T#iLR7n)|wY9hE9tm`O|L&w!Z?gj^hwfSJO)S4<OsQ~AE4-YHfkZdg<$n^m=T)hP=$dk?wIreEf`eK zDCbM@KElo++MgsT<#o@@m zp^}7Iv!d`q#=^n*C_@P12(Liz2Gy_O#Xq>T6A8&@*v!?_RIz`(2 zj>M6G=k2`!wq=8$M&GOGYzVAg+Q|Y737x|Jb&NCI)cEQeX_I7e)Fy zdWWR%X?C?APwA^%0R)Y;_rC)9efH8XRwyHs;{u!l^BL_kB@Yg2dQSQ8E53ee(_@sO zs64*}B-Ad%3~ePip?_P|eC4+Y5CBw8t~I7aYiamFP?%M5*-|jq5)b|!gldXuRp<4F zzx}DSd%2R;ULZs?4%B5^l^wN_?$TgyN*9?@s&9lH=~A;P%*L@~VZIS_pLW}Caww!p z^OP_|9|QFg7rku76|S||Q+c&Se42{c0|CtTt@d~~3q!uB%3{u3R_?l=#c2N4d<||9 z+(8qA8hARH1FA%*097JVGGDfD3Yb&)f~kX@RRl>{rS$o(KH7()wG?Rb_GZ^U5s%Xj z^+r!1ZdPN-T##KebO%P}Zw30*t3){rE==gc?e6!ho)RC%p8u?IL4eAdwxa3`;nU8Y z*zocjN{;#_6gsE|SmM6lb8E#F0WXUi-O9wW;zzeDYUJBTE0WkW9C z-POgb9U>HVZo_2h6#F4tKRw7bBM+S7k!G6Px zTQ`A#lvD`t#{-t6wS=mg|GwVWdf(RArv+~Q;~(QcUj=t6GCPJ%%tf}VbyJruOONU> zX_HrcKBulk{UI7)DuVx@&3s7Omn^DkKHdMS*#_i3{08T)w&GS<56`1GkE+@Xl~O%10a(K6B(7%*5F&)v&mv?Qg-)>KP0W!5|*x1W%Y?u!g8HyY>c> z)>Ue-Ry`m9cO%8xaLX$zK!YMBi1}4&I3$p+HBRa97@up+%ya=gp%zu|wnHL13>4S_ zSMYo{0|oKn_7l4mh*jivR7Jx8Hc6+^+Fc0hZ z8xi-lXm}>zN{74TC$fxodi|`WU4iyL6(meRuS0EVh`ZbqLmRbVM586EmiAIgb&Jg3 z_W1gdXQxisN(g*HDnw(?hWmU4XQ3+Mg46)ano_hk6n8fTNU*<-z_wIxM1}%4`i859 zLWh6BX}c(u-F-(70}x4j1ZMj$_j*WNGqOZcSEW9RFEvAI`zH{edAgR_WT@4q?tf_wS--dHQbKWSPogDHse6Hc2<@0Z#C%!{O z*I7E^jns{aRo9~Wg-&Xyi{FC!%wtRqXljaR zo&hOpSM??k3DdZ89)^ewCIJNl4_|M<2oM=_JEyeuWJ2V;j~tR0eobXt+>RK!iK}VBLAj9Gm^3#cVgIT$i5q!brOj zr^mMGYOR$a4`T;g4|$lQI+onP2ed)}7AImhDl{_OVwRu8(Gtq6rCcEgsk!tOKuT>A z+^LC%7@H)8am`3B{0oHMl;%Xa!#Ar-muhn9so!D$t1MW#F&R=i`w&_Sh=N+Om@5)w z;=?qZ!u@nAWhgsEC$9FpGM)O=&g9W{f$4BKH{66t1-tLG&uBR`FkCR&AJ6PmMMu4iWc3 z62VpO4=pz5u$LAu0FO$$So>`iY!bmVSD8+x+GlvS5~q52h~S^iUF}l*G81gWGwsUQ z|C{%fZ=0xbcT(dGxO`Y>Y4O8c$}`QoGT+}lLA5%E(@BvLaMwLTpFxQ{%2erzpVmby z-gl$9JNFHx$0fctuo_cY3+j7W=OFkl2a*(F8od|*8OY)+lBodN(}S$(G66VJojhv} z05MjTt1-~uAz&(7o+%|^@#E*_&d}turPrnZf4fdnlo&Fn0=#=6MDSWv#`GQN*Tip4 zO|)MQv~#s_o8f?ym^J`tP;h)VHz+of6s2mAls{N7q|S9~I|ZQBy@(eDJ(O4P%U9j{ z+$1Zo9$m*!w-VhtcyGy=TZk={xT(L?JwY$ zb)6d~s9(jK<5H?98?Rm(r%D;mb0(;MhM{O|4jxYCOTdiDsFz|sd-nKo)N85hQ7Vus zD4@ZFV$SX}?g0jlFrd03+mWC#;O(?XublyK%gdy|ZO&1!@#F%8(Ouf%{M&%npX?og zVe(c01lK_TjgXs{2NN6t6guU<3^o6CpZY&NDc#t&#sg-g zD5%%F=au9U+TI$oF*`C5?<(xSEXFmA7Ae(Ep~|ZIvOs^u1i(h$VM|Srzi8%Krl}6) zRy@bN`4*QUJ3dz$tO7draAXhx+g9={dNL~6gVm;xwfz1~=;;EhcA*+y8|GYRiU>12b7rVSlQEion;eohh*&PH8^0|6vkj6VUNvmj zs?$}CIIR;};%6^Y0)bX{vWa+ZcWfvMom+6)kZ{YKw6~>=#euz1grhU>+kkli&=?+Om`6gt3E0V`oHU z!kYG+lkm7!KW5jWT;0U$)`Nt&98X7TC>X|-TRW24ya)r;bx$LK0uF9N65_dAIx6Up zwGg7>{Q2yhhqbh_V;ca8CRM^M_u1zz-Iy9CE^JFXoW1t~{nkAhHZJ*Q^(lslMPGv; zhxRB|yb8?Z;YVmvl6c&H=}o0eLlh=&_Eny_XW@)IE&Jr1&=G-TV7TFukzK0hykf%v zMjD-iMcHL_g&vpZ?d5`=o%;Tu_i_6F^ei;@DCUfMa?rpUcM|(|SBc5bQCrW6dhL!M z4KlX|1+=oR&@AS@MnvVkWru@dpNUsIaq{F>boJjn*Ev!>$pWlgyr4RUGybh7#dd!S zB4B6sVgjV3Ky13WsQTD{{5hc12Ba=6y46!tQ{RE8qp5`3V7+fZi9role}$AEWaxjn z16ND*eyzk0D3-kldzkm;v0jCe?5ombZW@JFX{MT&o!>ENvE||VypeWwqqY^{$l!Lg zLy0afI#cr1WMO5(*4L0U5rF#`pR}IAto@KVVx7BK{a3eV7pEl=F>Av4zljmJ1UxA- zA|^g|n__F3li1wWVtHm;uD!{ZStoopYN=Ryp9uLnd`xnRDIWqu4OgH|jTgJMpEJiC zO=J*?Nn3YHMbwN)9N-{E#pk12ka!oOTA)P)wI4E}NKDa~d5(}qiROnrMj?YUBZS=S z-d!iiPS~g%;BU~I?ibYKH)JU z(dU)Hi*OXui(g4jCVpbm%=!_WNLeg~WkNwpYCge8JN~V8&sXuH@n@5iA5Ic~&j+o@ z{Of^kU2anel*mx7m~+8TlmwgzwDl)tZkWn1Zl}@HTSR4%$!3?2J}BM_nZ}iy#S&JQ zzi{LRk%0eDT;`jk#X=5L@b^{UJoMeqrqZ;~WXAD5BhD&-tPn!vnTS6D$`IwQjxKo3 zRdFLl)kO9Lm^{7z#NlyAa(BuBvPZ>Syl!tthjZnvsSQQRCm{a>VD!cY?dI=+{~CZm zqhOh0aTQij9?e$@i>oU`CNo-afx}=*o!Q=&Co=<$I<&jpd!EN)V)%&#o|F%c|Mt~? z)k>u(?pipOVUt9Lv@ZqvDDyYcFXRY1wVmtYs{{fJEG%=Yp@8nuo zAR2{NP$}7^JlCZYLQL7f&V#?lk|r5R1+x`@YUU+8g8nH_w|ng`j>S`9z)kw8klUdz z^TY0<{S~nIX8v%{WiGSe@(q}UkmH1@@4(Sd!C+y zpgf{GobM3MPrmWH`onalK2d(*!~W&3#gRRA#g*+XTO_BA@Q>kI5dz9R;8dv6$^H!ofL06ox~ly9EwZkgM=Fr_(5j)fDH|fe6ia+0BdS` zrH+}AAk1L?jK`4z;6+h;2va*sBtgp(^LBz}vm~4w8fi+K@`TI`=6g0*KH(&-C5kWgY*4ij96l?`TRQZltcjy`6Gpf|4y7n>>DJaj)qRw)=PEsCicq&W#;ib zi%dM2FBk|v(|66wghx?B(`qVFK%|=TVQFHX#C#Q@_-(c41Uot!|M9ydtU`#K@;1ec znNT(n4Mp?3lUN{^sx%cu5(6uep}IA4QfE=k*K}+0aUAN^r_ia-rZ<|ecEwC0^6xa} zB+V#3xYk;Y(e94Kdy|4H@J=6(f?B@;tlM69#k=zfou&1{iObN;)kd}R!f7gV+~=_z z#y_BfMNkVec+%-U+G4GV6B-qI^vBUg7pEG-npO6bM{4t-N!vxqMrtV?*VMcpooWIy zop0lhMY2mN0h~rrPeMPaHKl}n0iN|&%i2wbLpiE~%;I%IX#5Ay;zXRHr(!(Npb8yj zu1`W*v!v(M@i3t=IVckTMvbp@!=P>{(MphS{h=EN#Gq#<{{`_%vrBM#-rmORi~}L1 znp!IEq|m|+4$y2RW%b&+U|F$K)UjAP1 z3j+s8H8f$@UVpxx2(+o0a+=cpDUN4QGZqlr%dZSv+ zF`n+c#c&`Z{4c3=Jq*{&Wfs+k^IGRt=x8SLm{mW?6ve?1Dpi2@QF^2V`g%n=Ix{LW z1`}1*9NifkVi@ixg+%jVNl1}(Z4QBoGKVP{En#tDG{vDwM6+7f{9U`&3sqwHq`KtD zj3M{svh2HYhEouuWyZgHdE5lr8TBfwB7_bFbwqEZDEjhZZQH4WA+Rp;qj#!1gmGdn z2qHF0hCnHv&CfG0laJNDSUSlS^P;J0p@QqCBjNC6CWb#`-(1+6%Ynh-O8XvuKh1TK zEg<_m==z(|mov)h&3kU8y^v_GfOm4wxt@`5)#@t z?(Q@_;#MTJ@%5R8-0Hi|o5_>iTm2^k%Mi35UydB9*WWE4onRY6jp5Lka5Jh3IT@3u z=?^AW+=ul88-tZh@6B(n`<6Om=sgDf>(N9w^d0sY^|l^;GgQ}eY0L2fT-2ExQ_y~# zKReBd4St2!|6@G*y~8Hp{?+j6vCfTDxN31?>%HyHawVNg;My!S$;KwtH1rR3kUnfE ztl-sJZHpN$8*XVXsYqo$hn`oi*i*CugxK|6^GRBc+9i!Vx+Lw?mx&t~6ImIvj>n6P zi>W?i-k(V$K91J9y3OBH;GP`Y0=)uHe2Y}w zn23L+oqwAC9)GpcWQ=;IPQ(I~+ThJ-RJB*-k1Z>__!P&Y!orL7q-d?b^sB;xGW7#I zO~84%LYxK@*b2jgPv;$~D?M*EXB#(ga$ociSnyUI5tt*OEEf2reutzW)vB~j_ZBF?fYx*!z6;y5*!Xpc|)QB7ww??v zI^Y)$zS`p4%pLwSdx(jAfqlFD%=q(q`A6BJ8UTxJ=DsVSX0c{iO&qxJt-F6@k42jL zt?Ftf4O1qx^$uDdF^61b}|iAK;p`XApR#e9gi7 z*HozT6#>^}S^?H=@h(}D*^Zc}=a^^J;U!0*$V0Ik3WO?N`Ru;7#S!_|2O|KQ$l-pQ z4-k0&N8)dpoD1e;nhSm^N5ZaZru2J5?v%y|6bSWKd$G_oN_Kk9%l~e1G?nf}3}R{` zF9)=vLcV!gyP;PKmdL-weJ$QSEpZ>+;(i&&YHF4qVpmd26@?viq|P=q>ym$5J}vXH z9!;c$IFFMoW{tLko4RzT8ju<~ug_lQ4V~Rtw)Io#rm}p62b!8yS1jcTyuur+qig8Z zNkucANk_*SVe>N8twnK0Tx4J88Vt8yPmj0Ww-huqve}E}|AmP@@AvHtcjxiQeq1MT z*Q|d(&Wq2tC;I%-lgj27MAy7NwyMtL6!?y^ly5IgoaKGKoASfy?01c^z>EL+al*z- zLqLw92CN84hYhQ@D0D{h#h63*W+s1{O1ZA@?gqc1A zP$_if3uH1i0S#?dz~5|nXk_;}2m-z#pMd-qWph#_D(F!zDju~#rU&0k{pUd%8wM?j z@}C4(-HL3;S`;2>HCWKx&B640o4-3xu2DsODt?J>^-=V}L(ZiQG#rh4=Q@28v7$MsFeoI>HC+?zb0#2xolWW6V&7)7R|Un z_X1rxn4Ju3435&q3Y)S1{jK@CpN~ zUV{!qx47Q)@%wF71%Z!MEek7+PC|A9Dn=G^tf@XT%@YND#D4hi?7RPF#}4~L(o5^x zcDaNb!Xk8CuuoJZ7I3Q_-NSq@ zcDvH5J9Nu1t}xT1^fk!$&=D2vJHI?s zpIEPm#FQmL;D4E?UWWx0x;|%taD>%{V*-{|q}`x<-MCu^W-~@7v&`I$Towv{3T(5`I*}6f;#;BF8t6`Z$zW zEFMd5@zloOdBqDP0&Bx{apxBQ%eupLh2>oEotM=iyV9-^(+(0^; z+y`vM5C?WT>1LPE#&Bm_k!>|KiLI>rc=F*v19M|WjnVq%MxgKO_51s9H=#svM>!e% zw|ti24(h!GA-e;7cYW)Wg$-O?Z8b+a?KBc{ECT51HCHuoSJn&WrrYKw%R<6O4`=$@ zd)vppa6DPk`FVoFKyFU$3U3H|{oC!bXOn)PtJKcjf@MGj$$XjHy5K26HjVa+c0oI9 zM%eh1vwTVE%(tBTOnFx0n8V6v4#)}0xyWy5i&3X7}xw3;AMG7R`x3n&mx z*;NPUwPETQSO0IqFk~vY?nfOIUm{RyWqjc*v8%47QbV0SRB&9a*9{ENq7~|lNj2~- z=w?yA{gk1{LE5}O6rMOYD)^%s%`&P%8)cbiS4fnjGnO;b~&*7dm7d{J=M@Ed&ipriWWM7l;e);8)o#0buI$5Zw+59Ig zYqCj?V~gd`^HmBbiPmk$Bi$a8w(@Cfg=0&OPqhct8|J^L?C~BSAIx9zJ zhF*m4#gOgw1E=n|!@lArJ>fXOdZr_Hdf%-#i*G>W}shQ?FbJGy4=H1q%q#i5&EMseuXV4aapSds#t+=H~CToc0!bAvtM@H^5Zz{bAzTSMTCW9&Cmbz*FMMC&xwueUJOTk@s%L=`n8eX zY-@BNwgtcT(l_Vu0ReKC>>?hajMrhQu~s{*R7%^x#_^k(aJ{g+X>0VpV%E#O(VyX4 zzqk+(h5=29XE)fA2i0xyU$j+vS^A8PwmbTO|K9rB>}|%|*kD8ZKP(4$2YvK$`>|Kc z7CbhfNQ_;cJgzYV30Lng=Jef0>ULIJ*3iFy++(uxtN7)9?r=F0D_zsWr7Cr(XT9^8 z4d`L7{`*$Dd@PcR?as@L@q(v4yJ6o?*2_%_AQXiX3SPfJhJEdV( zH2gDm9mp+U7YdZ6f_!fcPlcoq3x*WB943swnr`K?_$Vb?Akm~l=RP@_zChOFc<6vh zOwCkZ@EN|hDDukU}scqD>i(lEE z(ASZEMNM{S5vGjDK0KE31zYCkE z#2YSzue0n_KauxKoYteIjB*}L6}p`r2@MmA>)4$~Obc+aMS2wATW7kH6J^d%8T@k* zi1xe(Q}e$U<*L?~LA6_F5VZIGDT)HAM6BE(Bf2C*2AA||KjM}=uMpRo#O~3&8GTH* zmQtH(6o;2jF=}FJWI3ee3kv<)ICgGz(p{Y$qZc!n!&K0M6jn6#3`BolDVhRirIj$- z9%siJ>;hRvYD)jNp_?!Q8hTm7cI{M2xQuzr#dx9Vd?s*z{$&eqc28liosrePElk^s)(fmr_r;}HiE@Gfbu_yiG zE0zVHtlxB(Q%ko(1XlJiaA*0>`Gle!P9zUBx4jIOM)qxi0=ui zDM*Cdtyj-|F{o=a9=KsczJDBjydD1y84w$tb*F11=q$LBIP*GMx}4~K`SGF$OiY%C zW2MxW%{dCReNFSWf*(vm_rR$1$eIcFxP^zu3K~_Xh>F}fSl`CY`lVTytf5K1bF`C} z-N`}*twNgRui&XY+Z8>}2D z`Arrc9a>0hLnA4CTO!EMlQ_-?+Ntw|M%&Ne`#Q{+E;||;X!YMEKbiZSP_TNUu4WDw zqvlrb_mnOncv*FJa)q@&-SWrT7pZDtB`3pVsYO0ND(={0>iEmiWB&i~?QcqLc zuNx^0Oh{nsv*ZE4wvb7Knil!+;NVLyCa@4B`pq4Rt!>TMl^dtY5xE%!Yr6;;x?FZS zX#vLCe|VH|$oS9Z+HXr=4H>s4f=V#x$F;vz5macp$@=sez7-?ubTLEEqu)7FocaFYJ`yy~a@d$*RJC2aR$O!xSYz(F_Z57MWH9x7 z{xfypdvBmukLrtKMvHR8`%X|*Ab_=c7DU69FAz>D-}p3Yd+_Yxe7nE_vE7;l5$H_O z<2t3HgN$SI;U776LV9Y;WJ@-?T{wuK!GSHf@jA`Kv{l*!y+D(v8HKb8QALP0dzb z?Yvt_adjYvo}K@80ZT>Vp*vbh5UmXf2Gy(9;fp^1J5Z1oH@oycz%BgzpOtuPk6F>% ztAU1-`^4hD;m9djza&bUr4V89D;7w^lI13zM^+^mZu$6MnKRk0ynD9?d@)9&P1ELE zf*}cp2e#^2BbZTATRI+u+JAJTh$;rRGhrraPWCiwzK!zJhT(W{F={1-f8$XZOi)~k zW5P67RJPHe8DkqKw|P$lfHGve>^49U<-Z?QoTy?^k@UKAN*n6K8*N1-5~8*U^)k7c zpWuGS`dsjA!n7UlC$Q+hRFM>~zfSLY|Gw)gR7D1N$nUKY9~^0owE~FUDo4QIMOM6$oT6aB5lzvF3;FZ|&mjk>X4XR%RLHYdEdqwsjr7rFjBXc4~kOO<7~`3efXuG?_e zeZd4wz~Lo~(t11A(WuMTf{CYDhROeuti+qA@E>4Z`djtHn zl$Gi}2N$a9r~7d<@{U0QS{43FcH!1sh*WvGfpu%Oi#NcGaQIMDfeGp-iRvGGAe#!S zQKLQRb97pMK=FJ51+yfJL4s66eIrY8!YW&z(Zn8+Cv`I5+ppNQBvzlw5kh}>jE{1c z8OpR0=N-CoX5-wIo0gj<9QTQ~IiZd#zy^zmha!GQPQ+fw&iMQ?s)DE~$Q3P7W@H-% z0!1%?b$Me~xoC5T{V?Yl^cR1|i(Vvta$L2;Lu}EtKE7Fr=LI1>1A$~42qF7j_^*3$ zZ@>@`v>nW+@%uvQP)jqXd+zUDvyHrRk1^Kx6`HlMNq?vj`IgkLj}xV!|BVoQBg%t& zM1jeu${_GLNtBaJ+NBvv)*XqQzk328HMc80QVNiBmg!Fj5jr(yLiHv~m2xtX@>o*( zrCxUAfF6tL%jX1I&1pmrrnwaBUW*O;;~U~<4a31gA84BG?}@wej}{6iV%N|Ta3-P3 zbQoW{wQZ$Av=Ur3SZ*jko=wK5ihg!t3m~>3g0LoSmZ6P-cZ@xh1huA0^}=2IfO8DV zzl-e;==D7?t+Vl2pIfULZo0sC?8uiy&>8MYKBAY-Yrl>Jyscx9cd$CIUt% z5&v@MYCZG2E4iP$#njD^^A5TqIBE1#yJJK81mNSRKe$wC(2osn(+LU&`DY^|^>8Rf zN4&a=k?^1>I4PNo(RqsYlD|dyau|U&BqD0VrgPenZTZomB(|zAgx!o=z+U*e{^Ge7 zBvM~!f&n2bK@h`o_$}kJ-u-FB^H+>OdxGL)eOsyz%7JzsJ{+V^5LWssHtnbCXHWE$ znxf_Y>W@wX`%NZIZPK)wZcUkL<67aRkM{HT-1x)&D@v%~A^vuX!|5J^v83~yPh?iO ziSgk=a!=Ix%t5y{XALIa1jV2&i+(HPSfsC$`WrjN`oiQ$$rOrtxh}38zV~f=?Pwrz zljn06>RSvEYXOA#&k;k>)%bLhzrv8-yjwRk5~LqUstqjS#wb%rFkd&gzNOCY6$Q7W z{|xt#qBU3^k7@e^T5T7~P6TEr?7tv}ld5su0EWv9nUO4`Dz+>~lmt_vQ09=80ioS~ zg6ouO!UyJ8mtDvLX(I>dP`y`kEgllFRJr~@Fb`&U1ztL#={CBonu-O!R zXw1g&JACZ;IHjdGcSPhfXxqUw`%XSd%eJ4q!;r7b#XDr1fmyRO|D$~3Rn5unvh)@# zH^&2MOH)f?VL;3G#Ja#M5Iz_K4cKT}9WfV96Ovv$fVs3`as8e+cld?V0hSaAfH_dN zfxJh&rCVI^btdwcDhvAWp;G7~ln#QSo?X!@hxqM9gN4{Opu8%#=fK2+vmw^Q<$7oy_i6u&L4SXyaQPh+X2}f#=URuS;ob%fK8T#1w(hSBfWdE^HI8jx{-BH26>th@Y z!X4xix;-MkxwZ$JN&UYTpxrBIe2bxSvdWL^#b+>NV;df%Ei3fWub6pla&rDa?BAF% z$WYni%2awZhSS&IEZJ_Ub@t?X2VNjxvbjU=+F0T53{KJFZg-EUc{dmxqo*Dza>>pW zBK~-9d^(h`U!157aKBS_KMWck8u~e`%E(Pf<#)jZ;=4*pFR>3Q?F{r1vUok~b#Pi= zn?cf8!kqFsGX5j%`68&~%*v@JfM`#RgPU%mRpMhK=1f9Z$Wx~l-;1RmIubf7Q_wtBDSZ8sMnL$qlv;kU zMfI16Hk@O=3iayBJ#lM5$TDlf=g}zM)i1UjhRc~X1_7eKB1uGGn%QJK)fZA5U#K9! z)+*I2P1j_GpEFbcy=(Dr`PUmbVO7RmEfOhC{l=d7WORiNK2wv}c#K0zi4bjQ^zilN zKp22FOC85oYb-ulVe@?h{|85Gg*;$f|JUO2Oinlw+Db-oMJeUDdNm|PJ>$sDOGh7< z%_YZb0nQ(O5pv6t*UIhmDQ+-)6evyQk_-}x_7o9Qq^;DZFZ+^%WeTK!4EUV=cOUe@ zzsg!p*wL}lsAkGfOQPC6+kef^=gKh5sC_rdYOL|IfBgMsD(rvx2Q0=xDnVzO??c(V z_{S0o4JrAO=0ukx;oGCXy6PEdmqSRqZt<`hpZHXIy{VO0VB?N>p$Yfqpd=WYS2~_J z{@oS*Vmfm?={n39(tJ_26r-|c8aqvw+VNAr+}thZXF6SWCHj@NqMZ8;_e4PrKucfI zJaJB4n!3?6LfUL2gf?T-q_~;S93^!r~S8C5v>_%jN+fDEXIJ%gM6jTYeNEw z3x}YhAL>lY!6$?E$Bhm_Y6HXKzmy)g&#!KK-Ws}HoVblRtaKMdr}+i(9Mpgd1@!vKmj6Hayh8Pg8bW;&C?4V5!C0=y-zQQ<9BWwcgM8`PQ3xT zPFPGx9SISnq(9Y}u~=7Dx7rtVd3r6*8)ry_blexuRtZ1^QhxmJ11-H-L$zS>@>r-t zSyUqYjo$&uHjfOZd80U>Vf*a{L*T}?W@RtjOD-kT&@7}eM&Tk}^GQ2HP!(a}B#8OJ zET2QiM|d$D7Cvzl3<3BedpVDhBkq1&;wQOj zsN%gasQg7Xm3rT9fL56VcLI#f*qr-(zXvrmrziY@NB4{)AlwH#9mE2~F>x$e@f zv1P|Wi^JiXBo|47YtV`VQ492FJaT-IVd!sZEl0zELKx&R-HC0tSN2=t zXz89zUgU{^H&4zR{v?DC@vFLjtGB&KX!o7`A?9ea6}IJUwM$H$RAM5e8+aKzj{+R< z=9^%X&HKg~u;cnWh09=r4r&q1HR}sZ$gxZY-=a!4LQ$j%N^`a@9sIlbd(}N$hj$FO zh$9BRS*=K#bsWci6?r@vP$ZyKNqzsD@2IcIBQv3xAk~8n6>MX(AbIIuq3*h>tIAVO#BcbThMUDl?^dHV7r!l^v!|<@7 z%2O?+c*q`r!QoWLoa#<^afWh^AOTr#(N-d-U*vO0H2}mmP;c=Nwp1;2sS>%r#`*Ez z9WG!Hw|BL>IF$K|% zK(@^o8N|0*Py#Y>r;)=8KGo=fwTx^Ou14Z&0zXJqRz=+oWIPA{&%HPB)9*e-N$$gI zK>K(oZ{h?Q#9_)2r>T+iv= z32eM9vcA`>n&;9-?ni9lTFGMQTBBR+OLhD#4)I(_Ne@8 zi%;z+r%O_FW=M}>zh803#{HwCg7dE-c-PMwQ#0t}Q`r5PPrXK@J`LCw{ZK{%iNQ(q zO|Ib&^Wj zhS#?`NeR6N;6xglZ%zq8?gq3=xl`X+@t{d82!N1o2A@F3`c>VEA(hiVsuEd?d9ON` z_9`$bd~Sz#_Eo@JXycwJwP_f}PYi55kZI$G0$->$j1C!!R({qf_AhUn6kC4i+3Pg# z6WWdKs(XBTT=vG>zHqaeorTTe^2MX8GTls_TbBx#Kiy5bXH+i zwOtop^ahaz>F(}s=>}<#?(VLaP#UCDl#mAL?nXkoySs!f{V%`k`VZiQlMSrrS#yp# z=D1Z<)6rFg&Px{vE_mGQ4s!Wd3omL+!D68aOnH>Em<2&T4Zi!#w!Tf1CMX=qBdt<~ z3;61NMX~YEUU`v8OPY>DM;eh=VJVfH`8gGn03<5kEWyqewlsDvapO(kq=e2P*n6(G zW4fsVIyEmnbzW%D2lUSMz{^{sN_F}a7OkS#m@9Ul`WkcqQqYiKG&V>_xlH_gJMxz) zT2q!mv%!}2UcH$JnQeb6$-TUyQuPjzTdo$!JK2?lurP^I1FaKd^uKv zQ&yY6Em$l75fEDMBRkYfjf9AQZE`0oT9cBIbc?;>Ct%M+VF0LQ!X*e}hQCC#>wnih z3Ks&tg$B(-BZ0j+H&zDEUY3ZGwPr4bwjB>SjH#$1GZDP+Loyw^Kd~FLWy)=t|0E}? zPfJ5q6eI=&({1S%RV;9RUMZZPr%FIM&;$1wSr*Y@(!128N`CC{~+$;JcjS3uA zc@I=-#VeMw25@X8KHTThhTV8CU|~o+hEZ)C17bsqg(#8bjrPo7Qaai%yPK=OOvseG(TS9p9RFN8Ov~I7nsQO>hjH~s^j2oR z%ml?E-b1@sRB#bFLzJv#JO(W7ix=W0>SgBR_^9XvfmUDs=XywdjDq}gJsj{#c#Ie& zNdNT+VB7sFeS?olp-bPcNv(Ky2L4P^Ztn15?LK*DD%IIPi4*wy_D|Yp3C=^`tg0Mz z&S7x~k5x4IR|fqCV3C<|`5hFVjRi&B|8c2?y?!7-fZ@9^h98Ix;Nabe!8$2QJnb>b z$OkL-63N3!C;{Ude5=O!w^iQXmH%SHf zP4}jB($qf}4$%+|ZnHwlGnrhe@Tf@KLKG!#_7){%O639`B}D%o?CgEj?dPHMcX%wb ze=@n|)Ya^qrZ?`$Fe+AApVlm8TXo?t9}Zz?ZeVeGh>SeDMUXXy=2K}*l9w?+Pv*rR zG!>sW*Wi3j!fo}AS2=4Yl9fiPH=&vAh8}M#n}~+iu$w#${)>@<3jiQA_bAQlR@qg>Oa@ zwBArbOI0co{jHT9eT$MlD6rUT(d}yudGauoe;Ci)K9#gwyqQU1Kw;26y^qMsZQI`K zx};9li7gZm2yE2yZTIEpF=*}Njr;B02sMl}-EdaIWxOSp+4baYjf&(jdCHn0Z)?a! z&u;(nngVkoE!&B2Nd$uz0%lZcFZ@IXu%!9}0dRurwWAV`$1u+i7h0;I35Y|MxQ*4b z|06?x2qOORyxu&Td(@Ip#)ZmW{|xp;`ta;gGqpN(ynJyP_V<&HS(AtlyineXDZ^cR zM7M8(XDS>8$V=qkg&<`OtCp{?Q{Bd0LdML`$JN5?{O}=f&hV}Ae;`8Q)-Fe7>69`q zMgI3NFIm*e8#~xpVSSWCl!F1@9>K&;I_TFay@$W_MdH1VA6BKEE9)mM!4Li`JqB3}u~d$< z)mWGyxX85b$9RcuIsi5WQs}JHL@kr7in)2QGk-V9eZEE>p3>osPi8W06bO;qCt4}l z06FgAn4-{D&INBt48VfrWZhWTz>UxdAlPM@S0AxcPvBw|$wzu~0HzG)MNxcq8ADn6IEtoSyELH;&)VRO); zl}z+)%V$hdn!xP+OeIWmH7o{A<&5YuAQ_L9xbbtrR?Mm2MvNcbj$NSVF43<%9IJ9B zcua$l?A=uT$mj<9iCpr#*Xsr4=gav5XBB#FP%09SXd_ns2OUeZqz&GyTeGkEq)N8!@pO+UK=2h{t{QMoCBAfp&Pdn}U zeSQ*)+{?_4Xbd*$Xbzwb7GQv_GXzM#nKXL(k!1gv z?b|RNjsRRP9e#NnaK8|hh?ZbR%^2Y}Ax#g+xvM@94Xm5eAAV}=(wngY0P*-GdJEEY zREk1M7K0zw69)%dNnQSwg0Pxu_OR#Z(@yf096cG4m?5F`GSrqF0695Z5p2G=8R?*K zA_Sn8gurYknf{UFYL-v`g+s+ywA&r>`O>W@-}JrQce9!N774e2EaI%;M!ECR_>CM5 zhsSJ$hUM`2h|jg|`%k@p=F;;}HXrPdZwOGPfRHFAJV$^$M3MSX3Ly{@pP$>Q6`(zA6^){YK$qpCG`V*=oC?{P<@6q2eA7ZWx&? zI_&a3`AP?GT&JP5ZX5@p9B+g~`iz6cNcm@?{rnjCYaT+QAxE*B$)JQ!J>yQ(HxCn16i~fJ+hy2l0p5YeXnmkz?ACzBkzHtl(0f88jGP#QH`y{ z0HHqz-CqTPE$VeK)JDdK`uNI_x21)E9F<>H3h6JOMd%r0rOk(R(f$8|J@^^ZSQHq5 zS;G6|37eA<%*%nU#|u8=rX%w3r#ms|EBK|UtY?_P;YdOe8ESEIrH;`r-|G~}c@bAo z{o1G7GsuBWLjd%T zgU_Hw)r5jC!RKTkB=PC!@5#aXbB+c>Sp!$kB=s-aZfNKb%ZW1fsU86VOuV!Y)|q>z z*UrRJ0r={Q6mLI$CMxRKu~|@llynPERDPr7*jmBE^up7D~TfI0Kqvl&ou&~S^v zY2JmUhQ;Abcwc53mRBuJ1rNZ=N8?bmM0xn~^cI~GY(hw_bBOo&(ksUU$K zA=sa`FCAIa#n!)6$-EvuPL2>{KD`O+ujK*o+f1>z)_yB}z%~5SW-b+SWWKD{)S<#> z^&f_4A23X>A8YDN94?V0-BZel5W=rA3IC)Tl2ThIwrKAy+ZR$~$fqfJbse{VGc?4! zHBk1R9X5ntNeC&7S_Qn)N_DyOL0g5pey3Gskw*~ig(Fx3hu;iZk@0`(_$&_l;-Pp<+^lp~#8T8^Z7IK6jzqu~5Ifzha zs)l4VLggJ1Y&pVFr5*cTz>w;HBUDwcBR8|}HvIhY)s-M?Uf}gf-A~Xe%<@2` zFC%!Z4F!O>Xk~9DdG~s)Wr$oHk+?Z$_8i7mFULNpvQD4I{KsiaOONvq;T8>u*VyfDd`7}`wCf4dG2jQ(cv}7Z(~1Ii)~lT8 zi^^t1y!05Sx#OsKSIWl5Qi0zuPR_z;t3HR!NPU`h4Nn>U$o)}~8FB#i^ihvf*E+KW z>{l)rAo_YH5K4gk&m|3ATx)I$W2c4ZpcNlIx>pD+bMg2sc8sbOfx@6Wx^OYE5+4M* z@TLa;v$a>{g%$y^Q)?UPXy^|SwLDzG(pfvc3U(sZDLvuOmwFPVHvPx4BbEgEu~+gfPzsZWa;joVe0no6S6rPx8IBmC0{TFFg3p z&zP&Yhs%ozB-up_K&R@KQSfcSQrBab)1AuDf|JUCx&l3GN`+tDWp_sc+Z(?d7 z1}u>9*sH%8x?)1_L0gP@hWavCvAlgop^3t5_z6e8Ru4s_I&aso)hma}2FGVOGsR07 zMVm@_D8Zdlh(|@{#b3NlnpxYF*UIB?WnFH!moX+>0gz6I)am%$9K%MazO=MKJ5m~Us!pH`unL_e=m zYCwkJk4c-wM8Iiz?fRTbd~fQw&l&9^c}Uiej#{>;-=3gxjJ z>R96ad-@+aFfY4c_s6qg-1A~Dq$%rdjd~alVnaePT0i`C2A8i6^=;Y^1=14 zJ{P9_4S~@8)axA2HS%`{}=Q%DNSwAUJP~Nx=A~zC3Oi z{NYRdG^^atl2io}z%-nsi2ehCs~Eg7Mb@TLu@|G6EQ4*o%@QB%z6eP$RS`~ii=6Bc zgM{Y5r}#>GWNgwv>vsu8PkbgK$oW;1j}ACdE-7Ah&EK3>zspHLTr>TSY$jSoRgg4B znfy7d#wfJiGs*skzfAmUTtemD;HM_c;43d<+WA)i5L-7Zrq&zz|6D zt;(yHt*>F~(4jn^T$$uo==rh4?HUEtDnucB72UPE(X2NU$13ApOA}GRvolaTHy}2g za&bUp=iu>^1{pY$&`gFemRf5d$<2b#X`yZ*UgX&ZmKT9vv{)DcYHwCEmE{x z2ok`zIuoQUg%hI|QV8Z_bVIO1VaQD{0v&b2H(TCW-7q!&U{d$FKr*6Vim|54UCquA zA>gzaHYY&5ynyA-&vP^4miv*;4P(M)ku^wXeL4Wwb7`*U%Eni4rsXU@@Cm$6E$Q2} zMjqr3boZBX9)9@esN`iIL&J1lZXRxn*t5BCBWPpWp2?$@+%NJ(Ubjz;EQ1F1QJb5# zjiQ^KnS2pS4QoUEpTQAaUd3^pEg}VOX1WG(s}h#nm~PBpSIIwA%l#P~EAiedt{*8F zVS4}L!aSIBV>U}H!F0THHR$sbv$ame8bAT$64#oi;=SI~uR@yGfAEg%r*ihd0}t{; zcD&LLM2laVy}36E!dj>E%Ysip=j? zVzaW@-?4gjuEjQiS zI@%`^vk`}`TJuxw@%yj5Al_CtLCUA3C~xu+7KCFS{-mX}8)_pxsWx(UboOg&3f+lG z_NeY?Pa^pf#`KO4BUD2mnJ|k~q0EGl%xRvYs2kGN&_-Nj5m3f1s>T0&YC&ALc6QEn zP>hiNsWe`b*g`gLA$5eyYZebot=YuUs!so@`{($J)eL`#n_g6}&;7C&4lTh@hL~$} z*4RqVg!aL8M8j3-beI`mT9JSNQ@mc?I@?CB%Xz(F6In)Dr1!`APA9{Dn99P-JY18_twLwR8Ho zne&#JyvT0!041~ij&h^p{vfmBFMhwK6ObmG#2)*_siY+|)ist{@Nk|rqP?RX46=hf z`B?gT+jk6D#=8Hf9^Qd~p0p_0!oCSyQsr-a!pO>GQ=Lpj5)u2iKby?+DFRCIejV)- z%u^d&+#y}g4UG4re6ih_hLrL)zrt3{&Uq=H0iSKZFd$9=6`r@J5qcbYDhwC3U%O*9 z51-f%dNQSn{QSM_&wDZvJ!VVZ`7F0QWx3MRoFFGg+*A3Q5_d{>qaKC+zURBHy1OG+ z_fEU9LCO@YY0^{iznOi#35k#2y2G~Xk;DNlb6(7v0-S-hJ2%>-$j_`NEhR+k-sEkK zNjDaYKETAXT+gv6Ri`urc; zs7Z}O4}!dK``A)i`LHsuYVzf=CD`Ws4xjej>{?3VKAr_Pkvf(v@_!Mi#>_SGYrqPGl7b4C6Fm2uJ8a&yA zr=m49?Zz-%ih;A9>FYh8$G1V-e{^#z;}WAfPPGO(WQN?*jSPtL7{3N?yx-8Hq6JV| zf=m4M#;9Oc|C){=l`@L_7GIBFT`iGGb1BAMK}cnUn3jxXg@5a|jEnny661xn%k#Q) zV6A9*0Dd2SA8x*ZwkiPuegyj9r!~g=hhdx}UamEI-}f#b{@t?sp)%1PU|K2o^)nUx zC4dq0Ew3KDcc`BN(ABSE<}RQ8JIcsjrKZyXKtL1B3*D)-DK3l~prnq} zpXG3A#C7gme)t5SfxcJAEXN_97%MbxjRyw|H=Th8swcPb-BQCd@*^y@!ErrWEY?i; zlFvkIg|-@secH^DjJhfe$P9#2ctGry9<4d>O-f#u_=>z>_l|9MI%c1XZ!>5qBUVbh zW|T%%iZ}|uhhH`4L=(_}@RUl6kNj?zUUfC!8j^k45b+IF4hEBrB~GJ7TZ;P(XUoof z`0z~W%HH&_&=6gTOWQG<%Z|W&BRH9@yGP%6+$_ZDmc6x&3PF~^(EjpO-JOva=++=c z&d;kSF5;J4#ze>HMXcdc2-2ks*7;_3R(K;U!M*$P;;<0gkn#OKVyw>pa<3T4um-qQB8}Ud_Am z!Po-gkrA`LF3_yK&~8tV<(NZmLz}&$Em&vBvFs@S0;nUxyUTBe; zpI9+Ohz@BOR;lGOXTd`+-aK@`G5u45{flHj=O65*l7uYoojM6#>#Rnvy?O$y0jdL^&M){Ol7oq`#6 zDu0bg9V6q5`qe%A2J_;wtg1hcUsab^h@4i{s3dG)@eAf@Lf0N$=hU$KZ$&DY>aA?=1DWUnSpkxVSfB8;PdU zB$#8s!7oRzUIQgfQ%M-6os=Zt)hUedv^oNit>b8xx za|GG`3&o!M@974i zjpefLq8I(QFemjpAHy;T_NvwhIo|dNx{_#OBmqER_lyTR1BGG?_Jn)(Q^QT&x zK<46jmmaH%fd^dPLxh<(sZPJnyaGNJgW)(^Id8%_tU3J`PS&CM;|=o-zp{r^v_DLd znfg$!u%Vd$g!?|}?d-1+;`Cv}^x7xQ{(RO!?@X^c$eI8Uy$;U(0UAPqbccbC)uaqs=`A7~HpYJ+|e6nE8#z@{7lR zL_yKpQq{H2z{jF=Bfsa{1!(Uh83I@i`KMKy_%4B)m;<4HvN}p`rC4j~D2CKE5F~l) z;O}8(2r%(Jf8pbmLn{!P?0e2a{L@=s&#sO1vXzP~-4qBCPi5l9O_tQ78(dP!qhX4o zSKTwY64Vsh&WvoO49d@wq)Ac_L)5xEZcX&a32uHLuu7UtD>3JXppPCGO8t&GK^#9^ zyzY71oIPRWMnFe79r>N|Ef8)IIBy#IHpz?HEEEc)CUUR5R*(eZ(N-b1xryUMmA$FaO6K0KvU{>-B#K-^W!ELW1L@m&zT+E;^93w4R@9?+ha*m8ntfN=z_5=}1oH0?ARGWJFzN72yVqt1uz^B&io$$h zs~&T#N8Nn^aI{E$isgrwop^MDKfH;k_v{6=5>14|Lnkq%+AS4_~eH%m(|mNDj%& z3Jy`ddXm7xBoTL~hy6I^IG3%(8Fb%k4Zq_mlM&%t zTsn@8-vhpN&cKBPOsyxM-e#tkn%FIV8uiwB8k9+7D7{yIOW~qG$RJlSyxmMeBV}6a zSKjGzeWv_PF_90cx@+ngPg+5ph$}L6`TX>gJq$EMPQ_Zx1*d13;ypmVc^=mj5s6g3 zjwOQwW0pjbcyq;7cbD1mcblY#dpz&4B`-T8gWvmnb$WUl4AwRB*@}1%J@sm9F+Ber z><8sU-Q37_8Cg*$fg8E7M`-^rmtr#Qz*T0u==1G^x@hKInU;4crekHR4mJS|<-`;w zt55QoT!^ler6Xsx7CUX*)?kXSa5-MfCdxc9jqy~mr<)IwKGQOIScqQ6Iow4*PFvdi z7g~$Ey8Op^f37w$>CL*TU{s`nenW|tIVM)Pzx>P(foNRhP_t+Nn(RavKF8`Vys!3Zzub5;BzFeL;mu9`a$S&$<8o z-A?UScv~zYG{s%rS=%8YxcR_qBwkRK_%7!gPIOq{s)r8T*+t37NI)bLib=jQPQzIA zhj}1PzAePbT-^yvtI!Cbg??Xi0j;CMBJhianW4P;8bhQ3{PVrwp>RTC+SwOw@z3^5 z37~%BxgZ2~=f1qhu14pyB_*OhvwyxA(&l#K6^nmMAwAq7F`ZkZsuidAXmfFsM(`(W z!AS24aSJSl{D~%WvcF~#=?Qby1UQz@m)0~J5Y{>H#9+dPP;Z~7S+l{*@HpL6GL98i zkK$H1OrV0g?|h}^#lI!^pf-VwuWUMW@tiaiNEKoK#p3UTe8Zh-f+@w#>53of z`*k9hkt(Qh2S>AshV`nhoREBkMMq)XsS%!r&C5v~5 zL6)Q&3@Wz4EeErsBTHcYNMJ^eYRQmrEFJvm43*b*=Gq#ZVqNAk<|3z}y&fxY-Oz#2 z2Y3kubrK$18HF#A_<+7T3l;^Up=>q`ly>ais@{AicJd>w8F;|pVN|G#<VZ-~-is13HC;2;di?~SL~-rT6;g@Oc8Zd0D`sa7EV zb78~YhT8?<6ooigf2|s_C;XTqm#BK=)9xs$Oeo4nlmBi?iyM$^65=-G0JEf&x=e~9X4*6pP%AxH;lN8`pW570X`8| z?h_t_a_s$Hc;QALR`0M|@Myq3dQkN5>5Y~1!RxLmD3!vy_9D**$^J(9{5M2r?4RXgaS;* zV*Bq%A5;*EPH8$+3^(jm2sn2!PvPxrB9*pN8lpPl@Tb}ZB{5pgK90~wBu_l9_fRQe zN&@0Zt9;bBLs$O@C_x~&ed6F|@0w&}45ZL@-S5(g5q$cdPmhg_{V%(^^KtFsAH@Cf zSf}gZOG1FfMZ>>i^c%*_nyhi$ zKUPlFw&h3I0%HPx)Ho3crR@h|=`wIjz87V_*+PjrVI0$CM0mbfS0FK@8H?{&?ZWWpRRD%!(fBs21G z(Zjc?B#smFWYJERClp6~n4AE4RZ%!xtv|G};?0PnzLuO3$B(=E6aau3Et5V%HvYrx z_Ok@bEn#FaU+-~?F_1yPlluKlRIFG2ZIb?){S>qXOo+a*%Y5?#^SS5UvO**7+`|aT z_qC8Vp?|H;zqlM-?hhJ6D9eXbNwf_no_$?4$1IqIHoEB=GL+3{ACCsdBgU56AAB55 z6K<(U5BvRG@X;x9KFEM)E>s^B*Ar++`c1YkF>)0V$)Ul|pHO|BU7GOvq1%ZgA2KC` zT5k2zhp?=%MW`%81x2cBW`u(LDl}aOX%hkuA$b}=*#9=IoA3YGu(?|XjIb%lCngTCt+jk}(Abun8um+?~+ z_NSt^emzF=uVXE?$~xf5|5!y@noWLote|YcoHh5;G}(b%WY9eJXEaZqKd4@&kBGdQ z^9~+1ytd3aHJ8c2SP*jnKIaiFH*8~ijW5qdZx)Q~`B*J*%FMJN7_Pv|!eI?mxy-sf z{GlU!;A$(Oo!$cYMsytF>F-+iUOz&wy|z_g8xI*Ajxv^^07_B-N(>F4c4oAj6A1yP zTVW;TMn6B`y!^bp2VmyWPPC*TC$mZ9fxJH9SeJV0sv$Z?zLxg(ZvYh#2^IYKuJaP%Szp}7I3JIV^+xG)w`}QTc)>Wj!H{**OsY6u^(Oays{4I>L&Lm*ZKVEeCnO_ph z6=IW65yoVU3|l*~IgMLSoL=nUCRN`r5N+)T5v1ClXi}}hiz7B<^3yX&aTLj!a#|&c zNT%&eOiMlljki2w6!LSca-7lSN(~~emSa)D+t!lfOjF7s6`Xp@v6^a z=qT%{K%b6Eb$ay@$@?`emuRbT^3f0yOWy57X_mY!*a+^0L+CY>&4wu5^q^_}1aQ2i zA7{&GM>KCUtLAiXsxWg89~I`mKu)ISV;gjNtPl8J*UWa*;=yl&0x#c@;}%|QTSc2(@&*TClg zR>R;|Ki*cMB~7g3#STaEirSK_*heWyt;Ty}k@|t#GrqVRBWW`KUc3NCG`a64=98|{ zcE%vKqkNpXcC}}zq|A^zQe$;Bw_b184cP)$fv!b{baLj5V6TneRAWq;(@cF7voe`1 z<>KqL!^G27p5R;=`o3x`Ee9RW0g84}Rv$h`W}%snBqxHsUQvB;R`trA6Wc{&wi6Dm zkbGAG;;3O4=ayOp-mU-mfnn|2i%-#7xb_iAFI%q-{GxiROXu)Gs6gv??ZI02A(^)y z9C;Amv92};n3|jAr?3znQA)ckRmzsXGh}e|3KH1dd9LambVFwxYcPOg_1!S+S~mFT z#NueAqFqgWcCt7+%RP{hNvcdfuRt?-eoRl+IyS2Ds|9;9eAPOsR8Hq-T7N9p*Vgln zN|!Gt;bdu{L$+N2F)IhZ#c+`1Ikpr!%XbQKP(QWk4}9Q7|0^83wzdZ9ZNZPZ8}}pt zf8fI(5OWEAJpl_oC&n{)UOkHSM~!{5w($RUg|x>hnAB zeYNp7ZUYFJ3_N$2PkMR*VeJ2a(jHBD52bkz|ERXc&vV9sl5}3&|AY(dw?vHdRG5R5 zs|LD2h{_nIIpwxQT;*-@U28C0AqG^+Z$d2poKa$(*sz(yXPj~=U$nI;9$ES)!74mJ z_4BT9ih4LZET*Hd<$PnfluEEhT#~u>?W>H)>g-R7BF&$$SXYlRpKWK}rN;s)Qc@Tq z3eW7ybM6$RjbVwxisdw(0pndL0DW}lqC~y0_fB1&Vah2Wb32jzouM$Xp1!o|C zq6khb7@g{mS#1AdC^4mkAkS2J|P`T=Pdf7iBWzA{-V>?>tgB*jjZw9{bQM9e8F7qM2(_U4?DFro6+9)|#UW}x+itH>QSRj2Qq`_al%}(ip zFK*_i3hpwv#tz#~@osXMbVwjY|5L8@-(-7oWIRgtgeKWjFwzw zC#IHJT|acvN)X8#+O0~>4cFGpu6Y-8Omd~7tfP{f%kSw$dFDy?2!B@fajDt2CX)_qSL|2__5R1-Oj3iDz`&Rww%LewylUOKecQ1q@;48V(sFQ zy0^tu^bj#i#hdUgX_6A`Yz?84h?pg+mw9_z;+c?SwxP9-%)RYzm*#gmCr<&l6eoa#YW)Sa}K)6wgq1Qp-_O!X+^fPjWdw6{uk`rPJLC? zO>ObJyR1tIxoRMMVSBZ_rRQyW=G`cBlZ0f9^tfOa%k+n7@X>#oLh%~65!&sPs7MlR zd{wVBFUVJ}_SHeAEEx14Tx`nMXR~#>ZyJni>5!~aQOe$JbqyOSN$0+?TPpP8!h>;t z>qqC-iM^2PY2tB^TtGh>XGR4z67`$>p3<$9LW@~cO(QyF%)`ZeQxI1Y?Abhr9b zy3?>fde|cNzHo@4XSxH8H5L&?(xppx>!{729%S-m;>pHMMu{uky*-ezN0>W0X=#613*)QXNsF>`N@wcRC zOI>XH!<6hz@AU(Z;^MAK&3K(nW5e;=*4lmD?;AtTb{jT#Z!7_b?{C$t8i=P^eD)2} z%Nw`XsD2Lnh6hav?U#vOaTjC=y9|)XQa&!z)wm|~jBV4=@=NAw@0SSGdv~w((3}Gq zb^L@}_4_LWy@KBcwY)~gu#WUK<*ok)G}}_{>XuhQ%Fl4wY4xCy@UZ9aeL;EGqJN%Sw-IV`GGkhPxn_ z;6zis60f05rJ_Rrm}b1Kz=pmYk2W^qeM4xQYX=eE@s><~Ac8&Nyd#bCj02x7Zvp6n z7FW|FBfIgE0h{2LA6hQM4Zx9i?@C{88Dpa{lD!6aR<`O-2{egT(CgFkWVu??<;MBBe znclh2_cgJ_e1&u)-Tu(C{VdMQl9{bJMKY@_cPhncRa3K4jb~NGZKrMR!S1J5%OuU4 z=B84$oq@A6OeiQ)*gb41yHh}$p7uO1^yhMxvh${49Ke}-8=v31ody54^xe~%QKLM8 zK^rfNb?($uqB!NH?z#BPA(vvCJdrftJ2e{KG?&R33^2H%lgN}jOFo(3X6}7go(nBZ zh?<2Z?yzr8|5viV0hgWVxyv8X>=eZ09-^((wpo-^_#wKcT5j|zE{z_|3pk)98aDYI6uLF)VCAjUlXfj zCN`qA1Vi>$)}6d?V`&LfGUb=0BwGB4X1NxyxVR|ynxc`WK;skQ)*_6$`B|9YcW7Xv zj5dSD^p8@UxD0UqQa~R^LSBhmjxOK0mK*v8Mm*FbnH4dA=e?I#3MjVS>I&i2L^oiX z!vZ`zXTYkI6k?6Yd^-7lg*D!3-LmP03%&WE1KskiZ!n!4aZw>Q90rQsZ$-i{5LC0G zusuA_cVf)r!mb z4pB;?P%u(}DGeo0!t+G26WBBoTIVTEmT7^X3e{-gXa?y{(v_`ZXi%TvUR|H?<)1?j z3y;;6&FM3P1E?&b$o_2Te2DX(3O4i3GSOkx&p0j4dBC>(*wZ5`+ zn64uF7gFQ8@DS7FWdzUq!Z?y5(=(tYR2o8x3Ok5EgAX((%8x;4!pXfcV8l7HkwA~h z5gki1|9`)LZwrxQm<;tc8e~mASNn6zdv8wEGXgFP=*V)YkwUEMJy+V2KFFe#`%yL?^s z<_1EcT<|^b64I1TRXtAwIyiw4cRg%4f5UKf6BC~5SPO1C_vK6xj_H%|m9;o^CjT;h zH{zT9Z+KFTE2iWk;>*g^r>v@smqw3UeEnTt?&~U#dagYxXWSwZ z0dZUnl1VZlo*zW2k|)3NCz@M8nb=Rq(}7@CGQ^zVLEd>(@Q8kZ<3^5B==~?K-4}Sw z#D#LEQ5WDrgPcXZv$w#8pZ`w$&DadwAe3h(Ha^}gHhY}*;7J_SxO!oRWYcMJ!-1D9 zpijH}mY4KA+qxOY-#M&o&_O!SO^*#n6xIS`<;MhiQb4MP=)+EJ)OF6xyk}m7v5fpa z%rbp}LJ3bgM5Z;e_;uKULsg>yLfU23YJHQ{{15 z7|b)7A?=&HJ9g`3DLL|ZX)K4ox};xsd}puK<^6w~&mpLCG3B&=3;ZUG0B?W1iUwNj zDF5HZX_WSHA{H7m7I-Bh@;jlUSq?~u%EVcYo(D1KoDy3l-`REn`Q~`WXhCeIdd-?dyf3QQFZ+_3{ESH6Wt{ap1 zw%P@}XA9Hz(wt)6NZ*d*^I9iR@t+24qflAMNZmZDl5Z z=?73?0}+>^XlIXa*QLS+0}2h+-&Y!H+b=#@Z|9dD(QxEdL?6t@Wh%y-v^un(eC`7T z*Ya6e-d6&6H4LEC{n&8A&+tw&m5~>%xRHppjhkS%j>>y4ypIFRMJxZA^6WAG`B4j} zN|%$q)gm>uQXu9PCJ2)8SAnS1@9Gfv*)UwQdfWgskOV}QZFegcDI}}q;tbe113dzf ztXLy+6<(FM$Z!lEL>yM94n&oJ5#gCg;r=66RGEi31`pEL29E zb#b?a+fB5$xCBCWZfJOzlY;|*Ia~#+KW+}jK{YisAW*Azl`<`R#w73)9_|HIDH#tS zlKd+ozDWPLE)?+rfUJ7UE%IlBj&?Vn6%pP_4b5F&2_=p|JM4M1K79xT(NUzRje9iK zVbWdN2xPq0{8!mJ!HPAS8#!&cd}l*@4`^bl1c{7ErM3W;SQt~B)gW$;-rD?oyzMg(-A zSmHH>Nu$m(=FaBh!d%NTi`j{EH)IF~%K{XvG!bxXMTwz}-(7Z?IhDGV=o*LxEl+Bq zj(<>eIs6O+Qv8K~%Wz2}VKLmUVuU3K4k`y!szR0G>sv6OPoJ9F9au|*c{WW@ISVx9 zXa-4RK?ti{F5lTGhJB+@XTj`J?DAv^WC1J0X)8*~<*7Fm+bllPS>Aa`-;S+fjnT*q zLn9nv+Hg_FkP?N+VTr_Z8`?2`)vATKxY&87V&uv=rcz@$E5m33jA3VMw4j|GgmlO! zKn{57Zk99)45*VWJWf*|uqNBMXgog*UAo0kqlFPkHNkAC2X$uTU>yncQ$aqE5 zgpQM2={wU5GT=a4|Ju>Dt2-9^7UU5{N`XmK2~!T_<6)RN3OtySHK0ctUBqO*P5EiJ zJGk)Z)u?27>aN?tN)8N_L=+f#=%|78Co%z6+cY+4($i(LjLSoM+&Ib5Q$!ptS{Ada zqpRxo-F_PUo#4or2_y(su`Len`-~iQ0RL?po%K+IOD9zJ;#%~rnDiV*5Sp}l^+oe( z;F(&}=HEOc+@si6zwRTwt{T^q#>U!F;V$zMX*e2_=DqjFZXKJY_qWvS$uq(;rP41l zAo9_HzJvUd9nt2bSH+y~9B_)-i{JV&fc!D)LC`izDn=|h!Wm;y?|PD(8vKGt{`4uL$>#> z7P{>Aka$#}fWCKK8aC}^i8q*h!6)0TnARe<&erhPC!`H??zg*My6)EH3$Z(;(`E6Vu15U1LKe=5f%G=nWpg(O$%@ z`79yo|6P;6OJywI)vrB@hHAVBG zPCwkyd|b&@jURQ;dO1w_iCGXxi%m(n+{6fyFIR)6LPpP6r_v2K@ z#HXm$*exYLU)Y>=%Y+E3d2%)k0RBQTe2Mu& zQ<a7%nCeRC^H3XD`@N)UA4q{UzsW_QT2={ii(q$4=(#zYCfZyRn8lb_@gZ8)cIn(+_HA}+nWOg^c?5_1P z`4c%R-&n5Xuc!yL&j203vP*)B0mELvGkx(py9L3P^jpgPD6p~Sy166F9$tGKwkOTK zfM4ay8YjL5(w53YDEi;7SF4uOEk6&-54YKrYskY0Hu0!9F+C-r>m zi#-aNVZ03W+dGd@kSxVqlqIEujG<8w#80wS^WgSh@peI4v@O%_WjpIHv~n8F~M*MSyi_uq>Qz{SJEZ<&hckM!p5Q#5n=oEeGow|bE8 zpdPS@x5&oE`w)+ZgKjKM7PRUtz+n*HJsSYj!Kx;er{MI^8n+i|6ut5B7Cz&<)a~M9 zW>o1S=sfAv?>bKZi|b&fzr-a>7(^@wW=n8lV9;&zxPB=j{>;l^F1mxIL-XrmivBP{ zwG`Keb1%J;iio`D+LTqk^i4+|RIMBYTu8 zPP0g*`o5@6f{+lorDs?1!E352Qt{08HK0X#RXe#HYxPH=;y$5dG~w=J?xMu!tT zu9O1Aa1PrDGaP}KFs0B+5Oo9#En}!qvF4&gbEO0|LR7YJqb#vo8O<^7sF5{g)9P%^ z_*EA{XS9n>QZ$neN_e!peD{3>8aUB&^JkHoeYod%4h`76xLWUFSi&f1*3v=g+&iRFgI$I;hFIN+O74In1)nGD@uh0%Y_*V6VIim;Qq<-W6esg|5N1 zitE|wbC>7lcdG_OW(Qpcu`(JNiZ!%?&=UYLD-|mof%`ho;}hl9!dfQ98hVH!bMBnS zEa7=&YZK^B-C5Xp%24Sk?a`Q-7d)@Ziq$LEf&~b*HieyTVoO5rJ|sW4158x1@q$)5 zOH4`wEy((b6JQ(2aii=f3RJr{P}W#il;##kJGX)Z76#8@n*y~;zxcMr9XC|SM`heT zk+{*4kV|vraoNOlyBJX+?OJcHVtD+voWlTK=PdKM$aC(vc_dZzslCkq!D=QdM3(U+ zaBN)3)g9mM?A?0MSp$VE|L@=PPRZD>8k(1{S-oa49#bO|VVP`&ii)L&***T_jb;_h zQS6;(6p^3$nXoFD0_mmo`{OUXV%#ot-8&A2)s$4?r4%hEJf@7P*A<2GtETy%XN;YFqmjBEc zg~Lp`QzGzw@_O0*7tlE^HQR1zYH77Q>V7*ehyf92eN;W&{DOQ!tM(6Q{FWB;@aB@RO6at`;_owQUVMD5 z`66>#c6b683++K&5U(`mQMuZ{(CsZio3d`gM~N#mpMO#>I-^U5x0tc$Eno|gsaS3S zvqtiWY#4*jit(+|o(j#yDtPTvqx(<7hT9D2NHz$M{?iR3E`i7{3HjsQp4mY zQCLRP7kLLYm2za#3)MEndh10KL&{wUf|yQD zGLnGU*wD91;`ZK>rcX~+B^Zy6K9WN|%I4C$%MWz9RFJDY9uV~xMzi)Bk3%xVjly-( z4obtFpI1z0CU}`9IAqg-e|y@jWH;L`VHq}h;@a)Pwrn%hqy>3jKaX|4O-~C~E_Ec< zJL7}AZIKFkKMw8xau_;SzX@5-I15;^;-)lSpEeFnRX0UpxM<4!44U^Z@cjx;V{BB+ z#;tSO6bkAw{9NKRMpc9$1m{HgTNqEtM66d~0>HiFeJdVG5AvGHYJHg2b>0daePT3V zjIn-3y@hC2mLhkH+5WW*{F#|I_!8y24Q3+U6%6shgZzTV%dKHagd|c#6jSZH>fsN< zC0F@VMp5}|n#th#g{yx%L67(4Tp&k3z($J-;|Iy@I#a}Q@8)(t(R5a#91ioY*W}pP z*m(ETzdiSl>8j7}^nHK%C+*F?J%WXWRls-$B#F;}-Xp6YHW)P{Bcr;_lK%g+0QP;l zA6mv3Ju&X=sM}>T6?n4n0n&1)eC6c9AlX!G+81Na)#_vPFM`A3;`E)y%vhinWBknm z)fW2f$ylg+h$R)iSS3;&oaJmnbGNXux@r2L}mGZfF}0`Fys@7K8RB9tt$*Jgm2Y z$U(d6t~n_H^hNd)W5t0O3Xg|vFs+~!lFXsMX=vhbni=AHS^o)tkcpR~NfTPP`Qi1B z<20(oMr6;4H529I!r;PJiQ$~?$@G*tN*}-kDK@McB}^_vB2M0id}*Lti9_y^oVG3* zv8q1TR(H6`SyL2`o%r_2fhRdnmi4gp0b)y57>uluLdxzYd>3rUUY@MBF&M9!Q`e0S z!7J2YG3oY&W&oW$X{g?~t-Bj~{l2BZu>U)Aa}>x?(_}$M=G(IZ=l^bf3rs3gVqa@**L1YFe=19z&~Qo$*BX>54CFJ(O)Ml#Q112C zs)_Ua-Dqs#2BFw}!Y%5q<_Gx)<3}I-Xuo{dKm4Q0mq!2w_Mog?sjZBFmLa*2=-edz z-)ld@w=HBVlaV&ipNYv50b*5k*?JZb2R(aA^W)wgq-eV@K1*>;jBo5?KEP{@XHfmFN&5x|SZsp(;3%@kR9sZ$?E7Bshw$M^LQ7 z4Ug9=b4>eC!iHDxgUuv^(MUZ+3`T_*=~a;ufgQBa+wrDqX*zyAEq5o*k>S>kH6+{; zJf(yQgLBhBKC?12Du_mqt@8O@|5o^ADC3V7rm*kF=#AOmXY!0@D|C+=Iw5p1>ysVu z#Ng>WBL}vvOxMFB0rT!skih$#!29bzmB%Y!?kWH@_5HAb!3z*!TKe40{AhaDSqb(_75RWekTK%SyMC0Y`RA6h^@=kZX{!i!%bonG_JPw=%`;n(l;#Yr;suCf|NXb*+ z40@PjxJ-o+qD0WO;3Oo!HA6rNep^RVl%S#MW%ogVqOmmMm^^H}S!N9tNLV)M>^iG9 zU4Vooyd}npf-<5@CMH93Er1%IAar`?gAH6Z8p80`b|NZF?2uG~w*U7>pS`(^^lVmd zt52jq#2ubdr!1tXT=9vS7hV}+N8CKDQ`MxY{94QWR^hDqN3zObDyc5fY)82&*=Fo0o*U&CK2P5urF*tSFPeLpzGUl#0_DzJKXJ~p^#I}E_vjw zl0zOw`7LGq)0d$B7k;-_14J@j6MAC7O8fC}SlNtn+6+k@>DkF7P1gjlaeECEPFo_G3nkkR+LKIa_?^zjt)_i2s4{U{39L0hQ8 zH*yV}VLUQJ(7!8<5iJkCDkYd4f%|vNKGjOEa``6H#1gOWfPp45Osm_pn9X%w%l>qf zRsmC)>NY?Xp(L6XC4y#}xJwLHZp41Dfg^z_rRcP!IkE98HIm-NS$p1-YuaNnqj4d`)r^y zUbWeLsMrGLjDbkBPXMk-NvgOa8h?N?%ysWwXk8^XgbATV8kHgpGC2;3T#&Axj%JAT zd=M5(7PGN7F2ly!W5KG-M7M%zp7B_R(T%AR1WKy;zq&v#KMX!tn@@T>3tw@I- zu6tB4T=-p|ocg`3z3&iHCo5(Di#k?RW>jIRPbvHRA^?VG(59+6SCZN5k0pU_yY|le z%34B(X6qg^zUuy^|B}HgZ@6@_QB!&LOrt=8sa9#Au5ogq=`vWJ5Ukzxvi@h;#0N>8 zOw}=T3xxw!SW%ET1XypN1iEA)g>ooCaT*HS>NK)jGPNxmykaT1Lv8Z0XGBiC1cd)dJ_hhmj2gS@T^!1J<)p1OE6GgJGOu@BX zvu%z(hK_B{mVQs?MXNkSa$7G8bs*)c!h|5iyZ^Pe0uH*G1S%^w!(#Za9nsb4At#|Ki}a(uyB>WiHWl z!k5m*n0$AgQ0=yoOVmuGIKDbC;~@;)lDj~P)@IEVwuXBk8{YLrl);358F5jig38eW zl&c?oZQir`M2Ab>^G_M7T#|W);@f~38>uROa9J8n1q(qK{Ah z;Y{UNpBzGoNrfnHo`{8r<@`~9&RTY1+L|SL%T=1IFE!w$(0%C*axqxv^*N+UMiYvt zT4um+C?Lo%W~K%a7loM&kZ@SgCJIrlI<0KKVa*jp;m(OwZXz__Y6c?~8}e1|-)i2! zmJ=nzaSrU>wK_16av7>z>FAGTKepZuv=YEEiq#{i24iH~XSS?098ygn+U105v(&{M z^JkM|q2;ok-I8@NVl?6jv9*>H(bgL$DXP-5SC0Rns()~Mb+fBlpo+9N%*|5F{HCrr z7P!&7f9D}L()r8lZ{*~(Ut>Jua#N+5qx|0`X#Ta8QwV>9(juvs59|yct&Nq)VV#vv zd@+M`0D2TsL1D8V?ggqj-CPPUCH1kfX>qnn%@G3}?G~c)y5XpJ86#Wmja4UOMZqui zNy?6+Xrzz>+1*`4ws-?<7M?h6U#FDVu)}*y-fbJ~;u|ED5L6>IeHL`sN_}v8$e^84 zhAB&=VcP>sTO%-L8yX$iof_0~P@_=4Knfyo%~VhY52Vgdgd42WTi*9eSELy`k{k?9 z&1R`PwWgni%-+7~FC#MQR-WRvF!_0&{$W}`@#Ts{dwEMJn(FvC0_Aq+^!6dOKQwM!%h@wDTYe6hJ|KL5u~IFR!D-A219HSn2F>U?O* zwULRxrQiOuC_eiAef)a@m=s47s7{6wr?>X zvn6LueBwz-3(Z4$L>3R?rTuThaePsmflGX*CU@zlAP~i@xk|zHA>`A3beU&C8K*Fz zeHa`y9&=O20p_LdgveflYTth@)zMNWH zO&a84Z9W~b2H{4AhBKfl4}CTLu}&RVqE=zb#?cW9$CPqDb47{nuwV|jew|9s&<}%M zTUbr>H1IZ0hUp_PX($HEV!x1(7sV1&Kn9?K`rwpGA^oQ}MA(IaN*eoLb$DVJAdEuG zx3?*e{q}{>S7Fj@t;R6=ul%w;_d**AHjCZ%58jCrBBMayqqc)8I(|H-_joIK9uGd#ht9{~|W93Z} zB|_Va3)=`o(~CSgIRRGq(bj`T<}kHC(Y2{0UY^>z7mN*^%YcX?RkD~;`4lP8f1CU( ze3nAY?f@yTVt;T4o+O7eNZi@KuP!o8UPqO-LwkU0$xIQ zDSNdB0+zBGh=bS#yXvCvEtvKwB!6ns6e7k}ZYk{`6IRt&h){OrCe6kFWg?L$EtL&V z)NYafNo6L8G@tX+UL0C58+4^HVdTfDvlYwnmh`$n+j2n7jnbU>eNzU(A244*=D@oT{er=T|c4ahB>n@7@u0&PX}a;mq?q_(Ql ztH??EPq3v1lyx^y3mk0a}}=gzoa+`isQ>FKS%Tfg=l;OU2>acBPcsiIk><%aFXvp}r#lRLpSW~FtHsAlQr zqCuh3q?wZ^25fhPNVDJZK8oJbx|C&3{xphJ}=?x*E6GdX8>zzi+r6C2YdjZShMWisMHCD zHbPuV4RnG^8lCONwII=xv%Km{t$xH5pgVnU1i`6h0!fEOM(7|?G*MCja8fC7NDg0; zzubeFH%-=;i6b%Cz8PNLB$8n^3|5}6v1KX-&YR2%lz5>4GCVTt2Lp4o-+ac?l& zwqNrR*ju928!yWWSa7%boxFDdY$3$uq{f+2$ktQd^_?Alw`Lq0q6#nC!Ra9*lT6T` zMT(^0t!+Y4^-eMc8Kl3Uqg-2MsN)aUI!uvKTRl~@#r>n+Xh16@X%?dAG2iG57(N@D zaot?~!2{}QdSX;XMd>u*S!jz@FbTAgeCB0Py%%CIL3;Sz;COfrdthR4Rl&=tUzt(2 zG)6XaE;UdlesQj;==}P(-(qBb7=(YZfPkY$2Jl&Nw*RFpl1Z-FuOf{@YBBqU8=b1? z2-0U!6@&pngg*{=@C;EKN9tLhTe}t|0;89H-TX-;yJ9z6S&ryosJ0e#t5Ygu^S}xzrz5o1L1S1tCy2{Ba zvPS(lt@&dGbLnUQT#%!!uCuzeat`VN?#%|MM>jMn$ma;-F$6Km?2#ZyzaEvFmr&cX zy;fkNaURKj<|8(BaiR!p@G*#xbl}jlk zMb}U7215c^mWLWTcgt8ZSEIU>M&$inO^VgZH!^ZQN^u;&bn$Z?{5aMW>{ufDxU~wd5e89hMSh5fx zbnd&3D{4c63u3GM#$Lc|FqL%+hK?)tX~n+~`05L;;}=RK?xTni-DWNMz2s<_1_cGe zd~d^srdDJq5nz)nL%)FNF)*$&>@?7sD3x#AB_E;c2gnM)4Ilj(83lYOf7h11x-Mum zd%K4;th+GI-iFRtMMpg5{v$pz>XPKmvD&}Q_$1FlEer6EkULT|E{3Lwii4?Kjju1{ z3$^4jt7C^1MzbacBW*Tj-Yj}$*++x^@Q@&y;4C2V%|)2Uvnx=|;lCG?T9(+pCYEHV=KetEPiUYAsK1Usn{KWte)L#_ z(N!6d6KfVu{~%Jxj&UBT5BiK-1Tk*wt(Rv>!2A$FwTj7Q$I-^Gc`K9Vu?;-7=VQR# zVQ;@&Vh<-AR`An4jnC#-Jit1%9Ta(>UMRx%EH9AU)}2shxJFUW4QAcRfcol>ab_>nZwk;b%q)q}R;{ z)5o#<@U%#FSsq4gK{yT>b|f5eYBd>%o<-Bp;dPfjtQ&H*0}>=~ugwNl#R{^Qzm>x~bVR!^K@LV4O>(iL*2yMD7QC=r(@hMaL>Ut%$h-B7Ef!-S4yXXkqp8F~_>VTT3a z;OCC?3FBJj@}C)|5?S^}Vt8dp5;%`cDH+%qvXdm^h;=xK!^(bO<%)8aTt4uedD|3t z33N1?x4N#j&9~U^-C(MC?f97s*j~b%oq_w)nJMBt1+`KGE7e2xf&WGsr%pHG5F|KE z8J8~D57ngmTaBUUrZnKY^$&~>Bgbfz6dh$D0d#53u*BV4U9sNKNng)6*&+ZXtqJ42ms;`-jhDD zOSF`-=)}SZF(_>_zQ8n}%fMp}#yH#TS9$bR$>BxvK@+BwJ(-u0+Uj@THEFV{h88lO zZR0Y~xmu2uZX&Y%8l-hV=IZuC@(bz_(tqF7$1`_Ih>N+3mwm;3b? zWFUXW4V8*^(TLD-LL1CPXxte8OE&Z#xK=CQ4;8vxt4teAWOil0kCrt9PKpw9xxsXC znG92AVc1@Aa>xwR%>l0dM~tl0qj|^2!03{q5^T3-jBga3U8fA1YVgSJi50ekR_oHQiz=5n>xWd9SR=X+r?==KOls3H+JS z6GfNvCmak&HX}xA2_U@0^t@bAie|7$-Bo=Ho`Z>)!Gq2S=1l7&UZ?{8R(OL;DVgG` zAZzlo%7}ZtJKbw6W3jhDmHa*<{d~9bE#pqw$>A-2Zmc0EFx@q+wkR&z5mJ)NsAH~t zzp_4x*VKAmwRb-U%78tu7D}4i?6M3>yqHuMohU_|_e4l`l19_EOPZ3pv7@jqFgzKm;=3SYqrq_3@6J-hYbuJ`Uv$Ux#VkSfCSw9E?FbQ!iC($u>3n zpS+-de7>iEZPwBPU4q|cSRh*h9a=umy+%A6SD5)&TOZ6^*t_`?H~P$+xEuIvUa^)V z=NT1(khNrZYBN7;TIPi|K|!3Rs^t+=(g>}oztaD8)Ev;WXI0xz{Cu+I-R@B?T#EDoFUY{9g4fXaMIxy7W+{)!X*=jf54uYz;rlcL`Hixokyf zsZpuTz|vs=t~dJRW@1pYF-6J}yp3nzVe`fx2(C~9+b@3R&7 z{Bjc*!>H5ge6p-(08|3 zIkk%sM|oo8>T;}0S{Qsj$7FJJxCkGwUQ0RHP>%b3Isr0$x_e-l0&51~SVHg7NwlG< z(azJFs^nJG5LQzzxq<5A%4fL-Kg&~|WD-y&Uc8SFbw21OO?<;4{uw4hC2A!2uAQQj z-&DpWUni$sCJ4hytkLuvZeSsTr7Vv@*8Pn>aS993`Ad0ty}}K#P~q8;pV{o*`0bu?B4JkZwc|+Wis*1km)RwM{xRUuAvO&ZY~G} z4ZRFdB?`CvPVF=Q#lD&BE1(MBj|%(L5f>RVtIeymC(+QpU;S{xF`7oc+|)j6(xIW~ z{mrkWs{Gw2&rz8K1>O1aaJ4A7WN!QYcjMuvo)Zzqe0t@6ynTf9V)O$MiXCJRa4r9} zsYz85u@~*#e9_hq0s%MGZ_6d(^YV=F`Pg%pkUe`llkfUu7(&$A3}Pct1X{F<)T$Kr z47*wS7qwnz;t!nD-<5F&fX9@|88>KKhD)S-1Fx&C~Zlu+JKUK{>e&0~{%ifzI3zUhBm@n5w%&V4-4KFGqqQ4q7PAarsIw zgBkWU?y}}$*tRT}1qPO6?ZPD_>-c8j+LDix1K=132yQC|?||O7BsnWM(4(zQVI8+@ zU~KSz_)hX4SAnJFmxL(+F=F%4n$R>W==g*I=BhMQi>&~p*v;_C!ED3l_Lh~y898V4AGMdQ020`p3;@ZlAwoPRXEH*9m)WFIF?;wpu3C9a^wR38GV67Ld1j)= zeYR5KcxR@bZP)`M-uEc7qd6$pIeL8Qp0CkZ$oS3-LQSb4a!cOe`2vq=rKj05{f88C zzfM3}z3ClmBxAg~bD)HeRSF)Vd2HUE z+!*XC8XP^&z!%ZfhI#2a^P;c=68%qq9Mx+z0jxijmPF>SU1y& za*O*rPsTj=9dRSO_V)S}zU7PN&mj&2o&?yar~&M<3hXae;D^3w@!B^^F4vR^< zXZbQuvgBG+QuFdKf0Y2iCyvSECyOTS!4RF3AKzxCR5{_dnPdCu-gZuOp18`>Tbi+} zHgTVLox>grQ0me5EREW{PfigZycoN?h@&?D_MY#-@+2A#W!tfyC;C3Gx|ce3{OI2k z0a>7)&5OhnXSK4e`@f3rg6m(KuqA3_`ZA-zaR(|IB4eFCw^+ z0tsRqace#oi4E5@XJhHFg8d<$`w3F;7v^db$!g<_rEPC*f5Pv}6um?3M{~IJ=y=>5 zEx9W(K38+7t=QIJ*)J8A0$}ic*0~#E1aMWWMM?{k`<~2 z`sWNy87a=r{^3`IzsQqpSqMeOmQ^h5YNhg6!0X|DAuxg9DKp%6xLh719+mUUf8(DJ zX5}!crppdg+-7o{2-CC78BbUMZMo7oOrvWV#(3IMNTP$2E2lc(K_zq=e+hEf2S`#Seah2d&@5}{~76}EGAJ%~-gMibxo>{oKpy>aX4pInn|z zmE*229hlr{O4R0!qMCM-KDqjn*WObwifPj#38okor*|ikhCy&b68|xU;i4xR2E_{5 zFldnXiL7{+ZLd7m=?YX$9A|9YJ6Ks8RA`hR$=}0yd!UMA9}WXg_BQ(AM{;Lp>B1`j`3`XYCwUGCLPIOmI8D=#;1w06IAjs^oTg|i_aS1(U$`6H>#p5V8#5MD z$l<>4fC0#cJ^jbDsMN7&yU3yq3=f0T>JEocA+Yp4%P(y{RwP(!Q&QuV03DB6?eaSCoQ(-ZA`Bbjr^Mzm~Oq%9% zKqYXc!=qV_#&O_~VS*GTCMn`=?LrkLMRV+(auD@$ijqAf5?ID{?&Paft1?BI{x#_B zQ{)1Sb@zf;xH78zl2u%WT?`sx0}uNpvngigTY@@IlKZJ|ML%2jzmO+H5nE?+WE7xA zBQD0QLOzv>$gFg*AA9w8xz()ITN9wx(eXVyD~x=vG_c|2uP z5XY6)>_cxq+Vp;)+CmUX?J+=pl0Nfw-~zb#s(xEze7UDp|5mzJ4)%#Y{`chr$HM>C zz>f%1l;I^kM1)1DRUH5IYc=T?E+4}Fao3h3#2-|q*V^(fIqe_`5yo@P)tRP#&n)xl z!jlS3>Qa}8q)vT$_>v=5qU`*%(2=6~*Y@7@h{od;R4y?o4Weq?xoTQ&tVsKQul3Jv zDC45Ei)EhmmNMCFH)%{qaQQ%&I1o7!ni!t}46K6wl!hNHxafsA%P$OJi%7du|5jVE z9DgucQ(_b}w|-W@i_4?#mIlBR;$MXJt=*`xSPF@J0tL+yiC(COP)g?9QQ!dxBMA;# z@NWp9$|kErVVHD3UW4tuk{p7D;?kG5-_ZAUE=hN|aqbfZSJZONrCuw4+^9xMHNhw8 zo6J2pniq#i2oVX@yO0p%AmaTG-IhaEH3?se+uEDiyxagxAelG>jcNh_tMOX(jNnIHxj?4O+75|)*)UR#q4-TxnL}Fo4xbJKUCH>Y+v772oNp}Upm{a`;L3n^#9!QzfTwS#DF)o3jiJMAR3gv8-J$nW5J0M z72wSr5`+Y2emA`w;B(hZaG!);_u_gx-`Qr3%|(MEnK1bpIkFchw2lQT`3!Ff1pK4j z^c(?Ac?QeI17T=eNdH#H5~+gjJC>IxRi!kco29tZWTzc!q+v877F>!nhm~GVV|9*Q z1+9>O;t!D}LHEyRE(Py^+pSeP7PxR*j1`vJHarfr+RWSy-g!}>1f!PWPNvTw1y2Ln zVhiCOzZ}3C?h_tdZ+F*MSdbOyk;GpkxiEam`ykFHiZ;1dh5&U@QiCVw<~NJ`651C_ z=Gsy2GbKBZ@z>s=JbMPAhQfuj!}I2Ec7)-eYz>rbQ3#g>olGW1?|Q2H=m50VRNolV zBBJJ)g+&%ihoP<)mN6}W#$Gj?X^^9X!R2e7TM={k5$+QXH*0OI9Gr0?ujwRf^-)gH z(I~L2ZsD@}IkL5EM!VN`BGIWDz%9qM1U@dtTk|(oz4$L=;IcCrbW(}P_D?L6!m`ER zoOhb#8t})L3tbn?2^pA2&wtd)U}X3eTW_R8BQ5@}OMW&~NGzWsI2J z%Bwu`a%y`voVAk-J?(9^Y#+WvKEHoJ5q=I%^YDdohMfWXrZhV9N2#S~{{3Klq{2>2$DU?~|!dXnDPBb!#RIe>^oa zYL)JlIz>sW;9&Q-y)D!+3;nudfnGlmhgEt=TG9n4EAkU=dU8EYke>vo^2vOKUf;MP z1oA<^39N+%G>QvvG#Yp7gam9u zdAZCQKF+u#5NWcxnh8PU6}rRVrfwT9>+elJNn12FI}a6qmvu)&1ZOOF#IsVe0r zI#ju-$XEfwEeMEeu+r;pbgpks1?)Wfa7>iMLK1OZ+i9)N&zzLwFHhx!s!}apPBuo3 zE{}(J#G-Im+7bZP%?21fQmVW9ASx3-c47`81;B0_T!(E{#)w!&jO&ZehUxRajJKJO z3YRy1YhXZ_7l|Pi9jf=sxda#N71E43{Dholhk@>pZuK{sh3!UP)laNA3>5-lnpeniBV|bXHg%f=Yc>+(+jXcu_$2M&CXU1ZY4IQ z)18y_WDa&M4c~?}3*^TpuY`rjOTD%Gwq{Pkrg3!F?*)jluv&7}7f4H(SmH)W&edmc z!`+)i>*m&#|Bt4tj%uq9mcfG+DHJR2Qk>#ipb)IMLvbzc?(XiiIK?%%7AWrS#ogWB z{oZ-+ocx>Q=H~u(cV=g2p~Cl*A61hgOYa`-TMK64Hl=}HgmJQi9;0t?`6F8j$tj@i zRjT|xPn(OeuNbT{a21rWoLia1aNsH|RQOk)+ceZ3YRU<;VCbo3YG?}2o3|XH7P=(d zyL!?Z7bZYuA>`_0n0)g%iBb8!>^FDE{);WV6vSVCT26`(q%W;x@Lz1g|1UN%PDj22 z&`(MhKN&fee54x)Y?@bAS9+9gy8@2@1KhKLD2rGOV3zl1N`lW|ksn}-?MHq@qO};j z5^ARGTLWgxW0=Zq$D%4VkHzSSIauPY?*+C!AWGxve{@!>QJbWlUq!;-%wW55PFhgU z^861r)vy_i#+#{!%K&%fr&n2$=`M@IM0FQ3X*cSZ4EuZRFPqz}|1Tuh&!5$_fqyB6 zJMthZob8_&TFV-s=>+{OF~0p*HhQxkl1H?Mo)k^wNa8rRisW9R$(aqWiX}nuJoS7-Zc#YF%5oB#S@C^ZtrkTIQ>-S;2n(m45VipO zQyI>9#11yEH@(O-t}69IKy=K)JTfww|M#pv4Mj zT;qO2-cEd1j_R}1QDJGs#O6hMKT>vFD(26>O7nAzWv-hd`Xme+A^$=FX`8Y}9w~91?v7TDJ$NB~- z--|OBuIsy!!jgf~osc*y+!3r2cY}MHw|w-YZQ42ynbofQ2kV0axFU@|t`Yq?iSk&X z{tA1)0w-d2a0bjy{agNDLXgYrRLH(V!{yX;)-XdzcQP2Ky{Tb)B_4#DPP)GyBF!ba z;By1>6d}ZBq_6GJ@e`0+^Ma`SC_&6=y&e+nDXMzkmShmm-^sjGWf$1Dcx1dW^hHQd zi$(aXjQOf^^W^epo5zwBmUG9P_Ji|qy$xwKNd9D#ANgqatp%uAXOM(?@7P*(aA-B z`oE%ha1ai|+`CL~Ant1mHTjwu-5Q=u$i{rnVq7RHU2Sa_1?O0&yfdrTN7ZcLG#G>F z`rWz^ehZ$ksmFu(;yWW3;s3-v88nA>4LDdHl(_RqN~ zF*#LX-;NoWN#NQ^L)}ouoRU)o6Sz$dGJ61yCICTpxGO7c8BH*aZ;)6p1=&Q$ZGqc` z>(X5Jfs7vXn1^~=G&mi@qWw#WW6H-_i>qAw4*~se^;=eR!a~cepN{8(##5ETCN?~l z-KLe(SmhIGb`PNg7PM7CFo(xheO5k)?br`&#eg)Y`ehS@)DYw{4)yg&_f?UDF+gU{ z3^c=b>~ycQQrPgC4NeZNewYyY2UXV^Q_ju`&|1-A!Oizx&n)F(8fk-|^r%q#DpF$E zMRmftovL*Z?|)hjWb!_M$nsgyb3WUWTDKigffGcE7e{Pxw3O~G68({B+~(nSx2si} zz)R4@fpr3377AGflV_R&91`|+%N-^la~2RQDT$HO zN*#;mQLMSOd4*ahc(XoNNrk8=1(afnQ2+-eQ%+Zymc=&BvLh{`XQB4SBfq*~jRu}p zv|+DUOQYCOp26hKzVWK(%fEup!@t0e&R;Q4 zi!$0A!2u>&S#7Cj6%ypVTa$QFKX;>@P0ymILsHERN`{m>JedJMA8uZn7FpMZ&-S_>OYC=7^_ zJ*w3rW3+76XtFh~$LLGJuc~i{zS7u(g7iD3^9p_fUZZ6cq8`>wq}D+zsbX1=#MHf;GBA6eZ{(~I3i07*ZH{VZt(2bqfBb z^t<5B_3&8%w_Al0&W`3TPrSEp^$uH*K zcL#DN5CkXFN(*ubCQ-?`)wSLp-&QJS*fWnRyx0&x4*}i}kK#0*ri}p%K@3z8Zibp? zo{Cjlh(1)*bSO2`EoWcBDO13@MNNZEamrS z-pm%EgeoGSrX8m9dwboy=-%2qiF+E@R#k@B%yryK;{G)xuzz@~17ND6u|>;WtK7ZR zSyC-Mk`(y2pTnwPUCTJP)o!ei>s}UDT~Toh%5M-1c7l=~zy^l3-??J_#Ae5l#Gb(I zM4h8ZPOqWVJ)RfD$k*WI7WxVv7B>h87Pzm?YH`kJN%jFmFyWH#>SQx`ouKmBuy}1d zXO7<`OrDJ-C)VY4cFvou{yCc7d+++eld>kxp=z~`p~mv+cCtl0`b~tP*DA45@5oy& z4J_G{rjRu;vG!c;W+$*K#+AJzlB7t8ONhV1b$(p^%J&`{`<09pi|b{T`01fZNFn}D zGZF~jC@7BJ#O-f7_|xaG)(A{7u+fKhMPl5pc}Wc5g`P1uoV=Cm%1?N@zyj*JZ~*z8 zKL|(J$0uGu2|B&0daK*dY@$jz?6Z00A|?7xAJL=2WO34mWrJYu#7@sViNF(4K8&<) zDc}AM^?iZr&00R4?#}dOpM%H@Ody?Xh3lAI!I)>2_!(p7>(B1~kUw`lxo=N}-8 zAHUnwWDOFc%FGfCZ_)DOc!<{7RLQICKDzC{%ct8==?7sxX1S+9#Mum3>uHLv`j6Z) zAq7gKLhemJmi4yGH(JT#v3i-m_FVkHj3c2vu-6%lLGLB=nzr$FY`?hQd%RcKgzjfw zjNXLoA^sw*5axHv?z*F}+J4kqIO7GbX44w!m2IacYNKtL&_i$LOzVk%bxU|Ba`)$% z*UL|rM$N6nxWr*Dqld25DbB0yq8~Hp7|%&wr@e_=OyEF?@Y^Jqi+M(zKMT89)NN$NbvA0DpNcd0*e;-@oh;?t2bf zcrMQHLW7c{%8h@9VWre)L30oO%#?(KkXE4iFz+{&9$QPxtQm%flQU}C&aC(U2;2yH ztT?BCGI-GOhe9XLT^djJoIO?h3GrlUcUjG~n+7Dd9g9n3KX(2Sas-Lw=jzq(<|_1z zhBM{z1ESKSTyZK2^3B`?gN2;{D=J*paoi92Sr>HI`n-9-Ht?rVKIuLfFHG?OM^#Ts z!KLe4fnD1^rm8rASc6B6jb`!)K~ z8KhrKgiD6nc;nnOZ2-@u@%1|pzLa!!iS{@+FY&QQyK-ZItm~}oN}aCo_3;eq3SI7V zSaJ@eGsG?|thv5d5z3yN$W+*K#DGzwYGB8+XTF_3{+IOIoa!7OB*k9yM1C1YHLdds zrKnDy#NW!aLhnXUj8luSJ}r@w--@zzY{jw&B0;F|!FT$u9agv%=#oJhbT0kW()+U3 zA4#eCYxY0~YGTo%Ls!^OQ=7eeKA+o22dwysUB*M$MCC3E#qa=DFbF5(TB2vkj(t-_ z0c)l}p{sM~4eO5O@n$*PaK58}QBZv9yQbyqM${o53GBV<7biQ7vrey-IcdJ1imBx= zUD-$t+KhGTGg1k0adrn(Fwc1XIZu~6`-%~}s6!fFsIU{IrHWU7EBGf%4$fjqIng>^doPABNAStTQyEZizt+fGi&g?(8&%^}Sahe^oRo6uT;s7l z3w+qh8x1^k;pY*zWxtYY1#$DT+KgEMmiV+%puiAG@U(%Qf@2)r%unk z@^`$48HS`CJhy|15CBdUXnN3xURh?O`PIrr>Q-$A$ zPKJ{T^jh~V6|$k`{la8Dh%<9!9&MAp62Chc(SfIFd{D(-zKH^BNb`w5V6$%_ITNtc0^rB zV`*{{dQ=jpSu_alS5K%>e@ZD(ltTmG+4;7wX5bS# z0eCa)!e_o89v4C%rO5OZFC@Nv!jO9FNfA@rb2)pl?@Hm1Y}tF|2eC<=7iX5tX*glD zz=^CAam1jc}qJae#(oa0s4~PVCPZ9o>GN# zQ$uIm9`mxj8M7glaK1g_OoU8LMdbyO2E9>t``-l6z-9@*HzfDVQ>s`lLzL6k1;v6) z3IaevD0~(VPWNmme6Vhk40(5QtG@DRz4F4x@FQ}QAKy>92EUO>DOG30N2cyO*h;)K zy6#tF;pvcDN;2bYUuYPZliws`dg0t0-7+AGu_9{%U^{x5kn3&*oq6Hn8ZaJRbJQEl zfGQkLp<>z?yRUo@<7~@rd7)xa=dy$aiE>ing2cJa88oasLvdv2>5n8`XnC@xYym%4 z7N_G+8+zR43!C3SsWln#CcTr)5f;uZ@*)0d1{}KfrpLKp|Wzm0vCm}m>mH=+6B^eh=cbl zf(}Or%`HiWmZ?1uOos#0hZ%nc2ZS_T%cOXCgSgCCk({d*_MGyvv39w^eUeCsX z1qBT=eE^oGN+B~M+H^$uERx`8Sqli_MuPSFtnOo^G@7#?UjHtuRnMKp#t`ay8acT( ztFR7T@Q@@+Suj;(4kd;z*NT-TK44VO$w)~xnI?cXNb4KRi~YVqh6d)TVOY`l+N;^DR&plBrQdw9?nhRuNwgK;jNQ=438zgVhuf|7 z#2u)x_eD4LTckM&tP2B~sHIg(oHFrFj4wZy*A=9B`3dd1=@Zx;{3%K|Pv$CSqjd0< z0e1nKo<`sA5^&7;5N}-du~t!|am_ouc~94@hMe`G!OrF(vmNaBXrQInU*jh!P*PS> zN*#_AM+cLBjh3Y8HoZR`t@az%;qzlHpl=*0&IvgRs}Dh+8{2=n@6Q3B!R9O}Sc8^{ z4n5fe$4S?ztD}4J*EIV6^#)+?w7&Tq%_hcJ%!}c$&!KpVq%!?Ma-;bVm_L6H19W}; zmFOuG-1L#Zo*G~VxsuFuyt=3^{%qHkh z6uAu2-qL86YH*}vuIW9<9XJGGO5$T~Ck>^2cHEwA{w|hPB}npioQq>;L4xk`S$j1G zH&`}7y7K$n?$FsX1QUL;+XlMc(CbIfFp4+o8V=f8JWlDZfViKq42DQq*r}j}U|Da$HY2z`rKe{3YXB+=Q8} zSVsCTz8amn_!~OhF2MlRzKM~X604+ff76W~%Rylv7Qy^(e?zm`6aU-I^BJ^gK;~ei z^a;NxVT{0^w1KF1$nD>3M%;OGBK)~N_DB4#WyxvG9@rp|k29Y!pY&*<8tD75&l1LR zRn%zOfd6PZV_pA{bdBZx)M<`hOf>>FI@w#>j%coRYR^3%P#TTp#m#E1fxe zw=&w&uBBK!%bf^Dly*%2v8dqa;7)!s%T*Ntx9mKpy+(r9DeZnhC1}M=aD83LOuku1 zjcvfs^DT`0eZ|hnz>W?`1mE;5b4YUAoC;h{@BF)5#W`aLcVwqEF@5DAO0Qgc(^0*9 zPi6AUCaef^^26{OAxp~i6Tj~35_uG+fGXo!lc4B$1AM2z(2{ZQy30cK7U}NxkbU&3 zk;|}f3BmCDrH`=26KG`TP0pW5Y2okEqCtIl=3{+ZxzIaTJ_QmRI1zDJZae(Q-Lnrx zmceJ8?V0iGrFWiYWiQ9`y8Uj?0-$OK+ugqDz^aZ?++kZ8c$Jxh5UABxIC#1$6;@2p zH?$rc?d-Ns~Aormt%G5U*b&B{69d0L^N_n5&K8N%&!H6LyV>q8mW!bNOLn%xu ze{LLiEsrB}n6&G#_znElbqx{)*!!TM@mwmuw}dcP+8UV?&7ch|RQi-EEr~WV^@j5F z_{iSs_X8mO%_xpDI^F8)l<6R^)B zR}42uSjlO92SO-(y!bL4_;dA!=;?IW{>SNk;kTN~-yXu&zys`@p$GBxyd<~Z=_LBd z)-9W%I&RJ8oH3X0^!LTv_G)5r$zAZ2Kb6gQ`GCm<27qBjv z+S!5ns#rl4>D5irplb8vn9oY}hnmlikAM)NAidGINysBDZ}A8t0ch0t6Qk3ojIXw& zb1tJ223C8ImKjobe7+Cu4dK6a%r2r&3EHqRM(A-}1Zn_h!qjk3b1#c z|21Az8D$cSOoT!`abdw_ZrImk=EJnBGJ)LmIG$N}SvR_EYq@;xVf|&(kz`{5J)#_( zgzM?}A0G>U(!t+JgNO6e)=~Z=8I0st+$Y6qJYmCaFc=h@^HDnq>{u9EI6D_^C6+q5 z(O>=<@pWS%rKtD+I~uzh@Okfn@@ieoh4*{KV0#Qu5X2uJ=}+^Y?ODGU^PvljYpWtQ5TG*f8*qem#Q~pSN8wSO>;P zW=v9s%S9KM8D?=tcaquQH`qeSE+r!KpwBNrto+tL?p66sv6OG*5OFjPX{v$$A3OyJ zgq;0m@fD0k#nw%MrB}-IkKQHQITSs1r9#^1!Ywj4k+HYB)uhT$ykqF)$hnf1d=n?% zzxAee(dL~1_aA%{hyFh*KEKt(@13kM9Y{fRDd-6Xmt{3%ndod30gi||sUr_7(WL#a z*SCM{71Mbx8+A>gZ7*#~;lgjQLB!E5uLh$UIa7GC{C~mSH3s)LfNHsG^$;OC4oOy= zpqYwCVfeu*VHBX_e!d%-l|lSv1Rh*;ODnw4iA7hwmxwSrmw zp|Q`)V)yh{{yJ3LUauR*VoN24ige+aIz&y#p2boVYdaeb>k?RHia z2?mx}aa!zn>AIn#HO3%=i)AL7?>9YcMSc4x@y5s4%>J^|pEsg*n7~@5vWvZm4k)fV_m2#yI58U(9#bq8^3dXvD$- zSJ!OXXU~?hP^D>tm0CXQw~U=hiS>{s0`a;Bf7+77@iyxwg3o)ZWF@-1ay^a9Hnz0E zN*hg5T#(~?+g3Sx@0fop@2^qfs<`lygA<;SgzC1ehu0;w`uhbLj6z!AmP@VTW()H9M>)cW2(KFu6 zZe8u4p3PlO=PSexK%8{!0!fFigNSWAo_AFei5~tNKOFuEX54_C-TFvJ`$TD|mp$VQyj=S9xIaiLE(+cYiVF#8oRFsxTv?ka4?=1k(vZTP35%7qr_?}P9WL5Rnn6mGh&155{m zmmKGSb3GxJd6eC2_PXt*#`Tx=*n)jODLPugx{_@3tcIdq?rfGgDy>_9MQzUlpfaN*KBrJFh3)gMp!9GTyrpdsP3WO42VjTMTQ(y z{a<(#kcF{f@IJyNR7dHpV!sPex**>u+Hf%!lj>l zp5490{>}7DoDoabgsV7JSi$-=eL|4x(jmXsoE?-Bj|bzH6GJO?;PR_!MfN#^$5Abm zIMt!*TPO<+pXfIuyY_5Y%pXT!0B7%7hXV#DYQoT$;#ij)p(TRMzdNX=0&m9)ue(~k zHG(4Nd!3)MpHF7YQT|;Pslb8=%4nlkzA6giyz=W|s^+Z^z5+CA#OfCq5DY~6!M-Bp zRoo?3$Z`H_?C0_Ui;Qu)!h6~nR3Y%P=V?pOPL@u}h7%|jE1g5Vzy5%&VwXJnKSuapDL0BN`{}&_9>4c#aT+tWG0|(Fqsr4yerjkTW+*JPo83J`;MhuUmeVdvx7d z8@X3`Jq=v1xnxs1oXVE&?u&hM>u-?NzjKCsiCqk|v!pLH+rLML15s?k`FV+w&V8M_ zb^-FSW;%t`(mILF3*U&k>SzHdE}@qA4Gc3zzjLtoZ(84lzK=VFw!gnFq;!Gu&aO&5 z`!7iuu_V@d1+J@V6__dcm6wSkCIy~6;~OVAgYnCQgqL}V^~}Zt z5Dp(a;dL0ZSwx=@^JSSKg`l7uLu3$s z7U?eXhHSOW0b`LA45p6wcAHsU-Yc0k(h7&PWIm!K)keqrXdYHfL&?tB%e$Ma+k7?7 zG_Dk2GP**WVXVdB6j;d|U4kCK4b%c?L&ReL-StCt?y zIACr#zb=dc6zFYAYxSge0cv`@FMY?4U%8CvtDiJ>~ph>3d3KMrkSHGF!4Qn5bijMOxoXE?*eV9z= z%*S3eior!6;l9C34|^0XGiActzM>qd!xRT@2fa7jHVmFD&5&x@U|TkvtyQl_R(wSB z`^p;p%`6>Bu1x-;Z|DSv&COC(QAr z?F)%7<5D!EvImhz`TAOGYt8e)aZltJoQ5$9A1;GuM!ZU=2_N*rkjHkf2h;y)OWr9c zWwJ2-4#MqN^zL{p*~8XpO&n7wDWvzlOp&I8^)r|$BN!$)fS}1$nESyT&A|H^&;r{< z?+&B8z%m*U(T~Q`T+@~~7oy{1xFb)(BS+*$M5NS;DeE+)V+4}T3wbS-8 zWP7L)@yXp>4#~)RIp*V`gd}(eC8TIrf#l>{xa=rSiIX?MVNj4T4!~~i_=8j%v?Q`? z^Zdtk;iafUq^ENOM?AY$TiQJodw&I~fX1+oAd7u<;2Fq`p7v zli>UmXT~AL%J@QeT5BXoHRe9vN-#VLy>PB|zvq}f+bx)5x~zTd!_)1=vYSt;{mmNF zmK_E#mE?EJuLfE}a3D!4>K&b3V+#hBR0QlS4t_$p-;ukiReUxHOdySJvX@7Rt$SdkETzBH>iPhjJR9j*twoBKX+>5qh{@Y-15!8FP?Q{>hMB* z_YpLK(2j=eE7G)K)tf7+=sT||BfVJ5jzH!iYJ`6a56*2x-7Osa@(!u;$3x4noFAtW z;N-G&AX)*OWg?6KXk=f8#1VQt>*o%b($z5e0UZFm`l9Q;Jf#=E^%I4JGkzHsa|)5Y zejkET9`I88&l`gnjw-}o#H31o3gNe!ibm51Bp%wG?|=yaJmT9N*Im4UF-R>VN-}OZ zn-F0W@Ns4|p8l}7^)Z}w%f;`2QV<6uzyj~5qV<&ecBa;0{`uYGfNMX#!srKE=Gacp zw$+6*VfQ9Mp=9BhwOBHg-ha0|5l51{X|k1+jcU3=6#O|P^0Dctv15SB}LzV;M}%|egWA&g_1Z@V11aq zxY_J&p2@D8@>7o%t0y|}tf|ml)sujQgN11`WhxWzjBjxrJ%p=i`8B}g=lD6PW-7tH zBSWNzG@jDd6X(WAG;ym2m3Yd6zH_ew-Y>>UMQl4dD`1KU2;$kj!THQVjM9Pfa$L<- zMLFx^_$jgbi)r=U3OjrK{CQTd$Tbq@L}s)>hj~uKrt=qoQ$L&2-b&mPH-D)F@CA)J z&!>3D=I>E@{HR%{U8M879zN3syQr^AzYR9&8VA&?)LZv8;H}r zhJ8e$2y++<0tNYfqk{Ll|D<`b~S)kE!RQH5*x z96URE_0@t?H=OuD=zJS^V0>b!{1lpGRq_D#q0u)kz>)c|!wyD-Ki~6?m-W{;OYpiN z(d&3es{urlzzVi$;8<~@DqY4%>yrdaH-T!m)~F74*U{}E>kOCWcTvLutw2+z&jPN` zX=J|@mHUV4eUyufddrRc^D=6zr;fASwW&kIEQ#MH4Dv&uf$)f!vO!n_@9JPrlamLx z27|xBUlKu>2Qq#E_R*5a;AaZmL(JIQ+B$|32|U^e64f^O;cv#Y_XjHIjDZr1GAMZCKZ?=Rv+ia?;i~qT#M3CEU}xmcbBqwyt6VDrw6lF# zZ-0~|IAqhV>$@o6Gs&r&lk;hmIVDzif1Nnd6yYCpos;FE1w)XXL{VYG<<3WVpqa~e zoCyr2su2YVd^bxZ$RVOoQzo-*MuL%6ADV0T2oq+FRUelP8wPPBScav72xV&LkCaOn z7;}=sM4atukB^V3U*kC|N4;r=>^S-phL1maa)qtbXBBH~QaGgJLOG9P0glY!~q2*kZ2&w?{zk!a_ ztT5tT0`U8Rf|{MLE_057FQ;qyxq&TH5c&hj)g#i!t;m*?1f{LN;fN9@I%9aTNVl_a0A6r#;AKpG)P34}TYJ7K_V|_5V(%%ILJv03eC@ybGLIgF>HBz8are9Ty|`&q zq4Y}#F}fJZH(B%y-oi}Eru&04qS0Q_@;w$ts;H*3kjnQTPwqNihV#nX)++c z#p2+}D6n)Ry3CkuA?(EHg6rsG87i(By+9@?bdBSDD<)@5h5y%E;^~6sgLBJUU9WP# z!Azq0%lB1Z#;U9olQ+edxE^DNQy%7XzsRS@l=Dak7h~#-j;X`aVkz{lk-s^>o!u{% z;?#3<#EUn15*`mY-viL9mCV82=+-;4k!#z|dL7oF^WwCeFYe6_YAbgSTkZP3OTXoJ zjoSIff{*T_F8*m0*)N>Ao&>IrEqiZ_2e&y_Uo395?{0nv=&_aPnytTcclis(qDuR& zzV5)sp7a5AOR0|9r}L?R`l~#~y)VD71meRpm)3s7gq*gY?WLZ|cbpxxWxHV- zIab6&tcq`$u(sNBl(UEMh6hE|#ClW#*n^xp()1b6judow%Wzo}R2cTP=9i7u(0Dpy zu7`hTprou^Ye>IvQr==BdAjMJA^=j{}3!5or^<9;QaU9uc780b9Uv>_md!wERn09_F;H0bZ(y; z26h~nDp&?M4ca19fa`bC>g_AMU=1@){s1}9d7Vwl8efGot0QeRvPDhacXzi2>>;kR z?maj8M4?85D4&v)vLbgCJC|!?iaESk9);hY!qe4+$^3j#bBKK1*=fZrh))mCI~?)!ATs_NEPL1?bXSt!|?Ax zVfPQ{Exw#WWtFc%VZB?_izs9y`lnbktz@IW~ND|2WPid6m0 zMh{Ge`o7$E8=()e&;o2S9aHxaQ4q>!L)1#f0OYxAmnVZ^GiI@$hLp7GKyRwK#mP)D zoXu_i7gj`R3emr?EIQ5H%5;T5BsYqJB+HgMc(AqqtYP!0wGc)GMHs^bgtMmn z)s*#qu^%Jrd3XGBBER?7zCsH8i)d)U&Be0uni*mpy82QC-J3XVG~qsCc9lLOn{WzN z8X>rAtDbKpdG)?JebM^tYvCbS(I4j+&zNQ=+>4*D#0zL(ZjZ$tyy4v7&6V_-%BI_Y zDyq@ChkJT&3z2nWB9n8cZ6*W1UFfrf!p*bdNYixS@isz% z8daaucC~ps!&gkKNBULz^96D)5kWJ4tOf^G{JcCZvMqVeD4d_5nP9Psis5%ricO6C zQ@Z0(LdNO-iaT%lfc>Z%&cgNTd;==62&%xMEw>IL&SUc~H>&qs5-i7qZ_gGUtweKG z^z@|PUGbga&liM3LDDk8@^(R>y#k7@3$z~9MM7$-=R|){a#DEQ)7Lc@iEKU#^?v_` zm%!o6-TRX;u=mS}b%(iS%Q0V-!w>v?2$!d$$-k{Vi{;nNj;ATJ&hSbLz)=>js%K}| zptoT&-_NrcQ8nXrEbpPgL6pG-=QiVYjqaEYOHmd*A$!i&q~IT!wIh~Q$ge1!tchKg zdBSPV=%@9SmGy(H6A&$aw48D4$>j6s;RQG_UCC@0GVQn%iP%T{*^Bqld0KB2(l>Ge zN(F1bb`Yb(pYtzvdUb6}{0)S2b?j`tJ03`}{dzM%i7ZXXWn5mll38lYdG^Md%WL$- z4GqtF+M{-Iea&7kiejxIaC*-rGgXFHc@h_3#KCr1KVNHauGYCGsvQ9Ox>mzp=qEv)ILmHA1Hk>LqiCq_9V~ufq=l(mhm1=Fx$5 zRzI4RMo)jZ;(N~a{47!W(E+q7M0pl(sHt?w|2y0b&(kU%RsQZ*r$smTAo-IAhQpDz z=F9Gzlm(>M`%c}?niBz3cRQuB@t+6oS22&8gz#st&+~ zS=p%^_ym%YeiJZyLq=8~Z4%-KFO$^Wt&VbzGK%B+d6{DLoYwnLQsP2}c9zBE##4&S zWEyweZNiY{3spV(%^%?wYV<$4F9Vv(zKkemkqwT4y~^QZdheRw*;P$6BH{v=AncU& z_W3TewX4l>manl+86@+j)a3ypLas4wKVlbk&X?0k$MgtXv+%y2x~%FUh~Trr#fZ#A z?bNb6v)n=bJV9he(K`N~5;aLZ_!u7YfV>Xkrwg9sBP?IZ1ePd!SyPl*MidQqGEQ|^ zRRNI+^>Se_3M8r|oi5@hM)I-wM*8JNvV+*P9sl(@@6PV1vnMcAjID+ZU1QT-HTg?z z-6G+;j~^}o_Ng$E56WFZyZUo7gg9|GATF2$b;+jD&zemHODycKhN(_TL=vPdhsb80 zsE|MoT#5a{@JIRMvTL><2T3p!%AzK;SwZH?{QOAarYklE;T>pW>}6>sdMFy`12@#l z+WHE%JGo8~dWd3LWRzzP?YU4OBflk4b*qZ??7@l}v)$Z~9ph~O?v;dX3QCI7p<_%; z<>Fkpyn~h(J3pn%D@mAqgbR0b+ps}cxk+!$dN_@Y+=SbO0rf#3Lm!eaV*Znx{!?!t zMpNW)REw-}nFmPhY969TDrz+avLk6wW@rNhY*1&=C5WamJsRL{ zfuaF$@Y_Gmc&v;pPqxXFj#tq^MM?bBhXi)E>x=scqf)?f1FS(v-|x>)%!Oxgu3P`7 z-&`om#4Hi7iaSVw?y>DnROBX%uDf!_teg-(Nr)0~OA%5s`7KY{&1=Ge0uGWoz#yIT zqR#o7SRK;=e-kxk?`H(Dgo9(lbjOa@s6jRllxJ( zwPRAJgWo-VwufulBHHKiEE;HV)jiCtM6+oYDgOBicXz zD5#7KdE-5{5DU8!Ii+rq*BBf5o$K+QvsDA2Ir#W0D_V)isjt;({zqfT%M~}YgU^uI zl)Ncwwp<5`ZYvxmuKAh`OgN&??k0Tvf>Z!(wKffzrN*QFt z!W^x$d))+@w1Z--RPboUuvxe)H5urIX!iTJszTL=hi2#ru%gr43$>u?bq@5&Ev{Zq zbcYq_q&6Cz6e2jK_`l*jKi*qUl&23oViN!ulD&t_G+a^K#KP0Lc)K z_VV17z4z^c4=&7S3$^aY#+Q#Uze|+G!fqzNglal_;=%*cqD}SLMLtd4A+OX#Axq4S z{;4LeYqAey6ULhH0^AF0md+XZ4qRX8g_h2c42;nQ``wBKA7Axtbc{WB*}j5*eZN_G zekYMcM!%7R`EOOG;ghfMMvlBvZ)4+Ay|DYVmnuv@Bw}~@m0Z-x%kbBF1IC>vqrO7! z$@=O2*UUNPD5=mhq~s6*(c9NVd?T^lkCZ`Jh7^QROjh_w#c1(ocNwEE-K;y&m}2Bt zfNC>db=DHVJ9loH`pP83WKk`;jQa8jK27bDYs)q=D3hGL+0$Clzlx;CeHKSeqlI5i zc4=Mp--`)&*I(TiKmKtdS9iOSE5-)sz3kZ>!L=`7xiK917Hle@PU8SVdEEKeUnivO z-RusVNlx!!lTwFmjHB~9hRcUnGxWI#*)|$HeAO5z!w~SqmxbX$|ADW6Vuxjg*H9FB z7b0Y2(g10WREl&L7(=6LD{gb^#c`*+VU3*t&k^Kc+q&*H_q%fR1*&;lE2o5Uw;}(fz)+I=jCf4BCcL+|POYqvY z>yDAz@GwvY0iwr)sH)bWouni@vZYsp<#k`7=TJyg1pAh~75;6Ui1yt3*jA*mIi=lJ zgsams(bGF511F$xS*>Wap^G^|g<;7hbzrtxO$Uw&^twFRv@3+%8yACuV zq<(|}yUlB0#Lw?M@Z7F={zSu|iz?jss()K{b3tXrL~VMxE>Gw^mMEagJmF=bo#`WX zl`;`8SpVmUEW@6X9!7D_sT(7<+tR&=zhE*)cZfKWuR)SK48Kg*(%s_x8Rg4QG`Nd& zMr2Mw<%IrYy_s*-YI9{KTyKw?w=s1NntC8sVris7}TDRsz+nO-0+MMCWGK z?xojPGC-s}06yYWRr#Houqq>UFDCt;G)ovoZKiCw3{TdR;tK?>i|)`{6XvkL}KBP&477{P*#pk{Xa8+gBubUGJuV->Nha4SO@G^IpBt^>_2GIycBI*|yC{3JZF z+@p@Ye!}DDO37%0$#eHgIQO4Edc@y~N>yzjc11UrpZM)t4}+)%SP`oJWUy>>tF)WB zzjLuwJGd@mZbm?4*qiaKs}~r= zpO>8H5Dkzphai2*n#jP_1#FVPb!IB$hvjm{>HE4=d%0SAR61?gobnPmKOJ1;KZ-J9 zDcl4nzOIP+W`H8r~YKIi>)>+Sm6IY!9KCqO5gEA;}m zL=2FvzXG%gpxFqH3k8X=#Nkp&0g|C&8V+G!fa;;dJv6+TSREQPiN=Rl%ubUH`q&NG zRe(;dQ%!mT**=2D33@np2&n8Brer2{{^ZLY*#p4(vrrq&gNH8*vyML|?I~jWPkPW! zlB2+$GUqaemf8%U;+|Y^_xezC^}ss-3wHOz;(a(b3Vv`T4PZs|6P-D@4}HJnHE;X4 zLI8h~r4ut>J}o@|a7rQIv!Gd(hJ8rakCP ze6HoDZoKV3*}ie`i_e5Zx~{4jime(1$-r}Adu{mK+?i2bc61FtkqSHb*sgQlBAN&9 z)0v+tA^+`FmJXXm1{wW7gRbWaEY*_|aS9gA8RyxJ>6)H2AA!i2I^rG=J=7B7&Ncs|MUZ`Q3@x~6 z@*G!Z3=`K_Ce444-{6vQf|shMuBz@_P#Mz}FJ&>+;dAsXd z`WM%3*Ds(Z^C4Zu1K>y3MOL9q%8CPe;<^83*V3o(kP|L1(@sq?*2aF-eF79>s^zGD ziVG+1#5G(l)raF_(S__)V;U)?HgpG3ulI`H<9AByjWisNLq}xkhV+zsPX=W>#3C(2 zX@)mnIPR7U8B*lWtx4bwfR!M7;oC;yvKirj%BtTR(5)8yLW(wv*A!DR3xeIU?(|;Z z1G78YB<*=8-x1R>%)%Td&C(M9#~7yT?I%cxCV5WA=%ATM6~b1C-)W&t%Los&$J#a~ z=Y#U50AlVd(u?EUBZEwyUQG4rS?yNaLOrQjp@SN8KlHn-5|5eGf#4lA=sHl%x;r!O zJe1gq-Q1*Nkkn_NH$3Jho$$~B&OyGP@5TXN=1aIbT>^QBMc6MsGZQ84~-sDvp z7BxgV^5h3;3%Ik)XRcx``yEuvvfF&snCAe()r?ZYv6$h1c)F^9s@871=oS!=?iNYu z2I&-#PU-G$X-O&RP`W`j%_gLzrF$bH-Q94P=RfB@@Vr@H%ouZgW5D1|h&-)g>GRrn z_u3MX04}ZZls#M^o!hWU+s$=j9l<*m7eEbs#Gpn5y6R+a6Wj2djTv{=*LS&7wTFnl z(0cjJ`K)oZQEC4LN;a~Q&>6;W{}PNM%B*$Cq_dlp>91tMDyQ6abL@TnS_FFUAQ#KD z&u5k30qUza6jE%q6gnVd=Y?Z#V2rUyOG=-(|K?jM&9AiLJLr~*h@a*I_Dwj#!zjL9 z82waSJyux1`ACq86D7ru=?8c9_0yD=MbNnDuY>pwtuey#QmP>KXx@U;e#Q=&l~KI%P{0Bs?>G1S_`^Lip7ZQ%9yr=RQfv!&Vk~;44j0tGBOk zQMNEy5rP3~#HVZGIr#u;-bIrxE=WF(GN^PvccD+w#K3)_LyQQQR7djh6M|3^>Jj)P zP93Hf4E|oUAQAx9FZ2;1ns7DtTi}Q&B~VXqH9rILE~?jdYL&Gd@6Uxx%P)tge}HDc z5dqg-I5hALhR>$9AVs_ON3@^lVr;9pX2m=}Evqr#_+XU|trN&!ae4A*x1K(jK|6>$ zsi=IXUdv`ywdPsb>|Qn?t#OF@~JZW&e586OfT{9p65y{(STW4ABHWu>=3OKR;-9I($|BC35C_l;Rh zOmn|U#4tUx@ELx_=kJ4P%!iP)Pp{s$%}I0Nu!ZkzkadCEusYT%Pk0$t(Zpzp z&X|n9a#_06Xt}AFJf;0R)eW7I1TI)+#El%w6iN{pSN)zI4MdavSEWi&FQ#-b1E%UjSV=<+P6#QWy zg*^bE+V+2wiS3)7JMZ0otHK5+zUs7wbRROCJ zmxv}gf*5HAO%kTmLcvvq=pQ3QNkzXYw{ZDzSC!B(+6c^K8Y-g%!ADXO7Al`%|9mHk8lm z5)3C=9S&FD2R3HqsTI4?5(G?o6r`dEeV}yf7rPyeVJw+#c{tu2r}S}zc-vvUj|KR* zFy=~dWF&C-p55+L`q=;RYdW~_`(R_!ce&(&3(ii+a@ezN(BuoOp+vmytNC&ks2iWCTsc1LxWrz^gx}K4?&hGoH za9e3;ufjIGx)YyOt z$Ip(!1ab`Q^3C%~H;+DO9L`W_AEVhHz+llaqK#+kwAtfOH(rOUU$H-3(GT}ZBDkn9 z_mobu?^g1%jkwAi$B}%K)&zm@V!~xFJ7gNSfcL<_=n(e1>p4YMp7tE0@XnN{T1|0- zK|qURmYnbDWpU?rg5QLku1Q#3{zijAHh?oT% zU(rj0rq71jaKQ{cq1B9E+IY=tLK;FupZ|Oe3!qLNH7b{w-=cFL>i4GCSFxxp!A`9q zN`5`|ef`mNkZ1}rp%Z4{47$aq$Ut~D40d}_$gEW=u1Dg0=COqIew!#gqxhL4G{VFM zB}y4N6R3hm6=3cW75jGU+_`kZw;MN@!CvG%751>(N%08&6;Ez1hnK&%0dT?xXMO8e z++`Utw%9Z&VN1-PHFjc)O6fl8mTWYV9Hx?Lq}3>!`XeWp7!eV+6FW2|hn~kh#!BAa zP1BhksH_jg>9r)eO!lYlX)q29Lup=40>RPV+eSlp;`xJ;0z0Jg$j3?Nqw2g2r+P)H z`vezi&y=Kn^+qjbP6r)(lIY}X77GI=ilCZKoVfBbtW0tQ0QJSO;V3?BsVni7jJKCKf*Rb*+L z2^sf;aNXI2$sPhGS2l`Wh}b}=3Voh7jm8c4q+kf-?#nizR6M>Pt$(3Ye&h0c8P zDcIbPQ5F*74zkErLk41+W^p9be{~zzESHWNl4WE*&?Ja6GNAAh%?F;kAq${JN~7F- zt#=NvweaCHCi^x<=J9^*7IEzSyE`h}?AOxCPuiKW?6{R( zaeQYvJP4eW3>H8|{AxK~GQHd~-SB0jrskdAD7$$_*4)b~?*ue-5c!s2iOs055mZJ) z5IBI7kf+r6M8f4Y6*MhRBFH&8j|+T^5}J^p`5vnWZVjfFXK1VHN;Ic{g|YwIYY8I5 zfKFb)+?x1}Mb+;&?JT``*83U5i#v*!Jp6T<6SNG8r*kduzmn50tSgDCg*ydqD`cK_lT z;~+v8xLUUb4_Bg<1jBDSioc4M)2vW=b}jeB^->X-*^XpF7jB!v82v6x)^nSD^f%H& zbK~ym=0R4{NwMw7AN3aY0G{Ha_p!dvU-KUt`SiiVG-gb3`m0Ph$%f}P?AOsljiMW2 zdCq6Tfsc-*3zde|mO1BBzARG0*3y2s*gzK*sI@};=T*f;Zm*v}bk+g!qc+u;F6_8*(}(zM*0EAfQL zCw`PlomUgR@kxI3og1&`wA2xqV>J>kTJpEl=PYw7P(R`Po)Zf?r+jkN=9?bO__n@H zRKQV~WjCraT$B=U#m8Q(>fVA99IK`Cvtw^6u*-lgJt8h8lk(4{)pYyZS5mLb%cH5u zW*e(1REhbLwqJaW509SH6a4JJjq3+^2JfGOk2qV)S2W5R4PU1AIljGeIR5OGRvvpY z6X^&3%0tfKDbyiWt@@WzUIm$cpqKCca$e>L7S#1zY$!FWKWElZRv1L6cPd$nv1HKeVP99NBqRhMFr2dhX zz)1>DTRT{Q>|m+RRtU;+T)MH_W=YOXeLys|yb}g-m*U?oJoiwq6LlPo(|0p|n4Ck0 z9`_!-o{sj?zV*_AwjnZ;@ZzGTS|jsueu|2u-846<;8&Pc&!sEMiZ=X?=ixL+H46%S zjf2UqW!eug?SoFm=?m6zk3BK@=eWO0s97n^>8NsPfU-SF&bqyp#ZLzxx zTVAK2ySuH(Tvm8)ci2#rT2EF1OOy6MiEHGW&5zMY&ee3fQ#MW$p^32VUP82`Sgy=k zGrS1_Jm5G*B_#B@SHCwtL+7;^_KH!hx1BQIJ0)i_H5uKrd@&yVj(b=#z5twQi&sS& zg!kS;cJP_{*5ZkTmO0_?|`r#l8`g(_;}om{10%CH>L4M_(owd7Rz$(*H%YAg|q6QLLbU_6IuX z+21ndpKV}3PZx@Uoh`~KjABc&zNDym!*)fu%a~O_>jy5@ML9J^t~5fe~^Qfox_Ccx`ja zk_2|BZzX@@_@Pgc4L_5d-n*4WxYp`H2rf`w57@nJ-vWt4!u`zMZvqFN^&kS68V?si zHU9TcD@_`kH^XL;!xzx_pdc4K;FW$}E(=0eVDp5c-qPbbr`=^tF6t+RiWY|;q*we= zyuA8i@f>xzPOQfl`(oK9=|8W7>Qh5kM*3+?W z&p3xfuMd~Ci|vKkL*zzVxGhI7lV%G8;NTjglGW>twSD91plGmg;PD^x*}uNDjG&kE zj~^$uEC6cHaf#T&&HyDS$#-FCWmRL?cDdB~uoTuF4@dNOQ|RQ`?S*s8Ku%?@RYo*DGr z+5}wRLIGfZnvgmGpF#dRhfHhrVmut+DCS=cz^)2n)nAnuO#R?Y#N^FHbmqasDQY65 z#o>OR9n)=auClbWbYS4q$s14&53n6n`&_DEG1i#| z|Lkk^95jkd&6ZdxI-5TT=QMD?F}!y-R2%%`o`};<=r|26;&i*TM&bu>3i0D6TAR$D zZ(+iFcdwm)Z~y?1DAlY`bh zWB-jxepTm45_n>NI%R)P^lW9un)~sT{mIqCg8<;l7+GoaI)Xv(7Oe6f7V;i+UtV0O zE~fmmoPx@XqT=u+smp_gptyZV@Qs19zry6D9R+&`Zku(5ws{Z&Z%099BtkHh!nKdi~#S4Z}{$P23n0LmOFHq_x- z;Ca!XlFTJ|(%th|QUNo>+9^)@RxEXrq+`5Hj~=GmX{&6q50E8|8H7lo6ica-n4|Q*tB#IHe@+=Tv+O`I>rVUMC1S| z=!`F@zO~i&=5&Md>3X2g)Wy&5uI6#K<^>_))8o<8W5VNhg3(r)!as*kMCj#nhEfG? z?pLC7wa?Qg1Ba?6ZbLPE8gVJ=126y4 zw>1I$4+eQQx`O>osHQ-nnc{$PA+nMZ!KH_XRlNw;XG-FLQ#$&bIyOUc_7wGZbO|ec z5^+7ruRg*v9Tl-o`W!D%%wDw$WX=qKphPl)fK}h7e-T%vp)L#w=pjj}c?J|0!3Q5n z6MumV=6XdCBn}4;qzr^%+ALn}j&Ts!<*b!624OEIQCKQ-^wds?{Q_g;x3ImO-pcB6CL00zV91w#0x6ulxMfl1( z6>BdPjHAVHB~!lb>KqnO8j#fxa7Mgabe~j(-;{wUODCzj%G!}BXcRl*3ROAsG_vMs zSK>T8EBz{_H+>>)$y}gL~Tzm{_mfo|R`dI8N%E9pXvF(%RtT zVw0R`jpo*nObtU2fOJgND=Ku|_6EFHth2@9a~KklBezfmZ1-I*-v>+4Gp17(LnD`BHm;(xL_oyhADd;&YpmU$q-)6>S$ZvHYG_8DFZyva?>Wd9EAB;^))Q zathYX#tgta+*-UmW_ej4AK$GtXUDnV{I zOgVYTacrCDe9Xz%Tg{y~U+?7gO150lFVB2E&{(3lxS`Iu8b3n!+Jd0pbzOF#J?k?v z0BY|}Q?qP+pu{#Rpqio5qWKyInpSV)QK;c&^%D2qurpU}4vgpmrGAQnb?)}m;<#6D zHs|&g3Ea49w7FN1g6WFiNkrP<^8BmquUvQR>9pT1fCaAK5WZ|iamjG-?3&+ z=q58Yl>lgVS?{kq;B#EoF)$$8PyJtDQV8CrXU)6J$S2{Qw0+#uivmNd_|Nz&RnOzy zdQX}0t%k%(y>dTAB4(m5VH$|03?3GXxvI?Ld{Z%KxA|UEMJt*|xgW4X-aX?s5B$FF z*&f9F(5-!0CIzl5~j63cXNKGxg0S*@o(okxFi0LXu2DN{o{Rz?yv zejYB<*|{Fo)y++CR22kyf8HVN^^H1CX1i4zDg@0dXMRpPEyJMVwl{D19i`^?f$>?z z;Y#1(xQD%RdVOS_Al{&3^9wH3p8oLj6N1DVMP4V>@l*scl2;bkCLu9J?|kSGP~jv) zJ@&WM$;XRcTY3n0cHR|o<~o+n)GhCaCw{>gekg>li#f`)Njk@(0$fq4nu?Kp#z4)& z8Kd@(iuId;VZRQ->N(Pabpg$QQ}`xI$0|N{4Fb}Tc&Q% zj9!Q^C_TEQnB=|*+W=r^!T|q*1I&dCI1YIFqwl!Vdhs`|4e)k6J>KO7TrN}y$o{je zFnpAW*>b<8LssJ6!3u&fc_G-*)L6L}pUGj-NRyEpX3hI`|664E^B)hDvP&=3;cy6W zfe}G%s~ncbq{h_qQUNRgzPHR`#+cs3kp)I8S4EU8tL=-X&T`wUb=;iAEi72rvoHrw zYhDstS0>q!j{cy7`o%WdVlTAaiy9G?=>EoMfq5N@Z42N?qshpLG(;O!HaAgTI*Pf9 z?J+tG;em?tOoXp~K72JIFBC%@8I~Lrp2(o2_I_%sPvKgPISg!dOn*tuAFcD85rp{q zOVD3$<;DJd6FgSpWZi2oBNWQ0fWYI|QJSE#kY;pEDn?Fn|2Aj&OX(jdb_w3l;c}(d zqLHA(^KdD(Ne4gf_mqK0%V12h3gAkj!#ZI@IhIcXf^8^j*uTBP0CFcERQ~48LZ{61 zNYL$I#qcF5-sjW4si#;yVN|}Oi$DwJ9o?-VJJE`iBxuq@sda4QIy5RA$Tt-!NtGS7 z!3wfzII}Qq@$`Rt_1RVL#=K5MlE3QD9&EBy;4B5mMcbXAz*FjJl~%8D56Q{l0=m2k zCQjO2OdY^B4>(Cu>~0O*O(sdWJoFSZ64mi-zj`b2a_Zs-8bRT_Ei(0VbQ7F-kIZ*a z3J19^=RMyj1oCv!$yW91Xg7i+T$N$m%5`?+CUJK@tr+=vA-Iho;MmMV$b}7Hnr=Z( z2e;sBB+8N=$D9nD$qH660F#s1MG#Qf)p0a`<#huERmIrlYX;iLx=Pf`R7&s=yXy`@ z8?L^%{qiuRBqbGU?ekc9czF1teELto^R?QK%&LHy%CJzx!9d+r1Fn9)hsaTDuc40X zTf803N>x2VhAIpL4!Gl_H=U8uKB&M;5{h%%XgD;f{XzD3u`c6SNGMaY+{zz)nh!;+ z`|cvK&Ik(Q(={~RZXs6a@Q52|lG}Zb#mQXiHm@;%s|=5Bc9IRC*LAKKHjDBICW>vW zu+y6y*6coAJUyPSJ1)IWO^R-aLK2~W*RM}IC9gNSK(~U*$CRL1sl1eCcUkl$Z%TN( ziR6LK(k$7hXBtC#02FE$xyWjWGRtu4^=>qPJw871tlIeGGhm-oHX%L``c=is9)}EOem{465sJdTNJvinz(qy?FCmcy&*G8oV>G%*r zF0o%mos`1uZP2DAg8M<1ILwf`hX@Z!1Wp1JTC%fRQogJ2aT_qk*JCr4TEc>+tR^s( z+QpC9rE-9HpPmY9g5K+aZ)hEpMHTCgV$E)LA|G|D)79}Yfeu1Y*x8?5$*M{lzw7Dr zvF7P)eMu+=kvp{T9FdwtH_%v~(Y#=enH4eq_w@)1wL^ak*WN2K=p|eeq5tKcZ__$h zg2A1E54RHv7YhpuTfTn0SxCWJ z6(06}Z7ZOr%a`LxMy7w3L&%gvNLj?9{L*Cca?QWNEA~TGrpRja73($4U49y*Z4eG` z+A1Kg^@{KCVXsPP$;(tzO-Wz#;NYOD=*^!gRk4T1tIi<`;+Dlc1 zrREO%R-UC`6Zz^3@zHs*C+(tIB8jtV$&Nmy7|al{f(eo|^pO~jU!i{+c{K9v^o1uU z15y+D5nlm0d6u->NZb;-TGPGk$0%Bg>B<|~!-D~sx(aK_%sth)MOUkfSsxUOs@lBs z%3$w!T_fC}JGYeJ%B$@?j#=z$-3r0Pyh?%zmM9qLh50amEhh3an$zodm^2xHz@($$ zK`U0q`}u=4O#tWk2djp!f|Y{5#uzX3J9U^-rf3TmdU)X$+E@0jWAdt5(AhL6-)zl* zCxF~H?J4ehwyEPH;psY|^YNmlfNAoAu}=VMbTpPDlv(`n3q|bOS5@_&Xv`N`RS0xh z9S)-H!iUMOWNX#^_;k2@1YnU81gN9d5evVv)I1*W<1<9H~M+YYYiM?G~S}YN-yyu@FL!^L1gL^b&! zUs|?MF0T{o&)3hO@yVAz`si&9DMUZl(OS0P>Vy02OMH!#)2fTj^OhmI7AkObq&46d z*P;00#S1or=AVvDL8r-i9Q^=Q^w-YEy-t;+KYW4feD?aE59R(Yz`4{QQN_a9fp^f` z+<QY&+($u-Mz(Zh#0~)<`+tMz|BaZHAhNM_RSb?GjYNS}=21NM9lgB;i z?=6k1&mmM)h{WY8wckIy&Idv;HYXf^2!C}0w*5q@5~o-gNv|771Arf!m0wtIUkmu1 z%<5J6w7X4FQ%k*G^qGG;_uT4q^m-f*g^fa;LlK0gDpKfnSdZCix)8c3pH3*BcJdx~ zf*!YmVC_C`uCAvi>jN%ie|t69(F1HQ!1nK_(?KQ3==Em@;7nGG$4Zfs`H9xT1|AAG z>K`lJEQVUIJ@VFB!f-M@s{cT~6_|rrb2G%E;aj}2qI|=;2nBNaSKvLGs_Bcyg3z!5 zPHY@WiUTU;qAr)<^N|TMZ?)+PA{_XiwFI>kA!~*^oZm?%zz#Y8%^qQgC-qs@L_ABY z+^^tEBo4%=Q$z%KaWb8*dw$%ADCTIZ9Bi4mjAY6rI(smM&i^^4P>PO*qx!i06N;Ab z`7X~F;%85C@2De|=6htQjG0JhQ_6Q@Jox%umDbax)6*rG9TrBj_$WnuQ^vQ%Znq0o zZ*o?NV?)yZ2?2s2f+>lLAikn++XFK(8_k`o%l23D@OI8<*LE?7IL?^r%A`?(C9t{fgEH07>&sZIT#LZ(z5&16=$|vZQ%ThOJjAb( zJ@_?T&UHQ>WqNO!K$`lH{_C>4a2p+3IT6$*GS;Q|OAZ<|>@PTaTOlU;+5^nMKrpT( z`lP$PFI(KY)F7QyXu7N*1MbyBp)q&)-|&PM9Mx8A+J@$4v-L-0pPm&?xFpqhKMb51 zDnGqn(O3Uej;Dbd)jW=Pz*uEt^`%tX`1UgZuO!eQo6+#4Ig!E%x8O(VAp$&w8LUnx zE1oU?3YI1G0t(Ld#B3O8Xyob+lwO)42Kv`73BBm?bDW<)ic|SBzz{(<&-XQ_wTatu zEccc8j|vOE9Y}Hj8c=%&FD}QJ;J`vEesI z1+~G67>55VJV+L||1Ny6%1Er9cc@z~Zg7+|gt9s<7VVXDGUKMy+^UPP>YiiY&NoR= zXf^xIG|gJBQLEIb9wGH~6fciGo>X+dwF=9Uf=nQV(qXtdVo}@F@Zp&zG6B zYuyc%nf5$FJ*Nztd3{{oFGC_KVJIVga%y#fu7r|011|_){q7z%E~b-rLi%@TLMKv3 zP4Zj`t?ss1`*xSvGxS#LI2}zeY6I+rB})qvlywMyWHs5o z6nE~%FLdr+DYV1QGFf?du`h`YNB6;+y`l~-^ZV~8hU_tD+PG0+eSsM=FUg6c5KOfq zJX>qFZlNS6a5CD5f2-Y#`9UH9v|iA>auiyeBY1-vr9%}w&aZ8m!@@qh7PMqs=BH>J z4_5R=)7e1X?#k#MZT;AAahlaMybQldNBM3tWjWOF5Z~pGYj>h4dg6h~Sjq?giJ-BP zLnw@0dwGe3_f$_)0v*K@$I-V?+uz9%#{AijpH=bRnS% zw?9yVN|HoCIuQ))z6!k(z-jK^=#T^e%_e@`{h5AGI-ue>Gkw{sgjD$R_?>= zx%)f6?%PbSaV;*Ss%RX?0l$Dn0!hSaX!;EReg8T@WRZYss6Pyc23L)C@r$s$j*`9B z^-nB5)|F=|QB3Je=%mD>d17LqsiLOauJ0jOR9|2nQKNXeFD%gPv`iD^=+K+$(xs}! ztTc0OYe(V^miM{XjZv|4EvH5I78!<2v&$Z-7N*#P4RtRHyBi-eex>r_mRCnnW-vpY zOij9bA={9AykhZKRsgj&GyRu+YW-8|hEzEkm@Ny?OKgze@9E@mMmDtQ+0mXiTvQI2JSeaDQfIpPAM{(~&z z!I5R>tZa`=XG9YC`SFHpoZXZH4d*3EF3txWt-2vZk>nk4kb4^K*MxiEo`n1*Is~5~ z9RQOog9}c6rbyn50`RLoSFw$R>l0v45-7tGpd zDEfstqCjhE`P7f7^%}5&pzLbMK)r4!|atD5271)cU^u$;av49VdbifWvj<{D%}iMN?7f zr&ha_iDI9g!eE6CVTe}}LYk*cY}q%?lUr5I9%Oj3iMQKtOf49!Uzz3*SBSe9|A#)_(QR9A@Z?dgQ8{S=V`+_xi{@)8#OF4qMWEWZn410GKD zjGsR^#J>G;AKU`sDfya;xAVFNd0@ms`7dI@0Xn^K!N278ec$~M2D~p#^id_GB{>8f z9<=*j0(8Q>tA#3_f}HBM@qal{Q?`M%oJE_a6zDivFk0DBnUPftK1on}s(x(dY-f*M z`1?wUBjW;g1~!0P2Vx})M;tPAC8=P|eYcibWX@rNMH(5pym%rCpQw>%R&~b$&X;X? z^0dwZ7D-+mvFNZ^r>ePK9yf>TcO#MBq8Ys97a3mX)~vV0nWCEgB?BiegM?J3>E_#; z?K@GCNVii(_aEaxqExQEP!UPX4@(rzhSE;ArmAxGb_7bSHZEg+*uKm{K>|%!HJ-(u}2m zKzQ-Y`pRH;vDCwo6}j2uZo=~Q;)zWj0wKJsp3SnLS7mr^fh9;-@T|>Li^TM}vaYcl z7gE^tNywdgDNwaPY4k&wx>=<%B{N`3kV+xxoaD##qDBZ=3G#1L^5AndIX zX$FLij4dxd^EG(7`9dOb&j>2cl4Lr^==o0+zPg;XI(;y57F{!i!h>b~{AMwue zv$(lzPqrh&M)vxvLPUM_LLRgw;*)$n{4xgf$;W^5iSJdPaQocdMktJtD5{7bvFsfk zoQL+BqnHf{BP%i%19b$#yA#FHkd(v&dIz|!59DD>$aS~!ccI^(0&mr5D7+y9h?cDZJ_SoJiq_9P(WEIjg|t$MG&V|ZFG@rVj1Dw?jVM4n~YUwBor_K<0QHrmVZ-9 zq1URy(MLFrxjck?g?a=D)M#P$$po8G97fntpFO8A9P_slTLkNL zv(5cAFV5gZ_2~+bF`}Mb0y47`NGEua)n^$wOk(r%6T0#bgrAREGZt-vbK88@`(eA@ zCDDVu-g2VkNL@HoXFZluofKw7|m@; z9m#gPsC?d@7ZPpGsN>M*hl>G-OW4Y=YK__``e;@i3CR}_95^5)^p9lpY$3gzwWnW+ z^`vacTc9K0GL~)?w5QhVi3oX@*Q!)I^>XbFLN7kAu&HyOfCJ>GWLEhpg6t|SIDeMK z3O_|!%L8+j&N6;q)9{fi-Bp^ho`d)#XyzT|fp=%6>f0zz9NED?7m0Jnaf(Ujj>-R~ z-lJy6W$^#?aX`c>E0oPQB#x)h6zWdJx{k)@FQ(I{(p&~$t z_Q8}Jp~D!T`E=C6{k;mz?6ZvVRhO?#8h=BQpgE=0)XBdzf-uNO^a_L-dO9$GD4pvR zo88bY_;H@{gB@f9RCn%sb4*is@gMgEpeP%axKGuo0qrVSN_Hgu7Xb#aOa%zA*o7(F zYh%2rf+_VUL~LtgdQO;6M!oq=zerE&Hu$>>!Krih^M%S*c{?o&@)2!32y#kLo{Rc` z95AK@7dyw=OP1iPq|5b38bV1%Err3{8yCYxByri2Zna#k zOR+yA?|z#>}45q*w| z>(7z{ET@dT<|R&SkWAd`GejqVw*=sDcx}UieE^d{ACY^D?Rfy_9j5Ulr7*?hCl{^A zWbkgF|Hu7`e@y^R1S6LzTlxMx=1YJKT7>6pdpZ8fBRx@(f}9?vz+2Ta2d!GI ztIwts9m@pmQ7YezuRed%yZKX{lB8KXtGZ~FZWSokM}i_6HGBVw>JIjiJq8U#z(H!%L}~5}fdxc; zH1~+%&5L_H3Z%*!su>@o7EG|CVEq4BXQ0ArCUq+>B#K+ZAiO)^fXH8xCOe`xn(HLn z7Mi(5Tl4X%CoVGp6m<~1Sqs%W>{&P+a8|iFI}a3l19!psX{xmtOQtehnE!0Ocv@Ik zz7QqBvrLY=a!G*%aOq}F!1?t})QGn~!z8O);q@X`Dd}4fjdi+VDVVjFVNHoUDItT0 zD_@#?K#b6 zUy;ljOMqc}WRT>4^hub@%UN*n#5Ui0MOBi@%A*|2VG=kA&QdkT`qbQHdLkm?(DulH zX()Z@JVPBEmFX8%KOQU58tn)+3~Zwp99Pz=7g3Qb&A1#*Y250z9fxe360##@b4y_c zT{~*@g8rj10T7&by~l;2U1{;^oD8;?8y-iw5f{O&an_7gpwbz}M9D$BD9C3ZT8ri+ z;H1QvjjAK8LJ%L#9k)wO66Liq=CAs7|5k=|Ob`Qcjo?a!-G;)El6x!5ldW^!155go zE1O3SM#pd1AtQ)ZqrM+n*9ik}N?}5dW}6>4i>vvsZi9)!_x^meDk0{vYBmAD0bAzD zGk9U9kKn>+*7I75WOy3!lfiKiMzVQC+1YC4Y?m{Ua4KNXsN0kQkP~`EL-D5}IwDR2B{0^xn`jARE=JFz zzXKCBV}58S)k>@=#7Mc~2G^~ewCOnouF|U{wjHxKcew3zvV*Tc9`cOBf%j3Z<0_r! zOm?93=sg&;B9i_MzfLF&+eXc>Xs>`>IIuI*t{*nVv)uzmd zp5Ca~uvO#w1Hsjp*%i0}+pxT29l&Yn&aJE>vi?M7l$c--UA-wpwrzr>IOiLuSIO!Ev*}2+GKM7f&H}4nH^}I#>Ab zt~Ld$u53Iqa$^5e0K)eoBH`4Jr4nx`IODhpli0;im>2ZQ_H@h_T z_4oaS_Y8c7{#-KO{WcNlJY@CwEyD;CoFGA z@C@x47`ix_g>fn1QjY{5Anid5p@g##Q`cT?VVXl#vSuJ^dS8*^z~OrMg-g7}Y2@;iuCauzp1@t~ zRec|ls<+Z{895wykc~+H|079bxtmgz_>BY=e8sSY~O9Nf;X<8yp`Cp_dY9yVHirV&DJT^?L#}q z2WJz2Bd1mPeU8{|;hSLVfjh7sHUZz249IA)q{g1qu;{^_Q8?Wu?1Iq1S5reE#yk7C zl=#3vuJdU(6W13qr@HttO0#fLVN>(`Pcq%k!Cw&OFBAu}hL`FMh{fj;{`3Z!Hyj5S z1An8B78-nqS}R&fNdXU%1A|f1ug-zMpEIunI2{6mqoshk!Lo;ABXUHL5MnaJPrpB% zsC)I9q3R6iLGY%|74|x|=~P{+@@6l1fsKKv6dcx9W$ndoz`i|GsVD5a4U)kRuECUM zxVRDWQb(1gC0f9OT!8pxQY2IrY+|lHKjWL-zsbo5iOEOAe)~CJwA!0?#PrS%2`|)S z2QiUxI3!R;QE|U(b5Z8_9E$&FC-9mmFeDN_0!kOo7+fr~!wIW#PN3Fy&>086Yz$@X z=nZ!dVOdns;j_HE!?gHnZd8LdW2>Zu+S<)K}EJZ;=~q`ug5(w?=XO|hlvC6 znX4d~AG|Jwaz-GpP6l!?K|yFh>#M?|9V>smFb#tl4;U3l%@l<=rs(H?=ar4_AO6V~lo@q=eO~tn3bkcg}*wN?46_!nRUE zqI+%<1cgO2l14ScbFnhuEoS`h7R$T|=C*(P*|{5=@e?_Z&Pm{h#7$Wnoh|3vX?F^^ z;7d%i9`ND7r<*-kXwTyr(1mnFhr)IcOQb>YU=#P-h#ZR;d?EgW=FKU-DaG`@&$^uF z-*RuG=4~RGqm4|P=n>o=UYO=-ky03_*dnFH8nJxDNDh~c@mTw$%Wg9ZhImw3;UC#~ zE-yd~z#`y&dkOoiLz<_DeLRuI_F0WipRXDv5~3p1xK}t^(Xc_jUu*Imo!^?T5DcRf z1r^iYqG2+M^Fnh5YnA#TvQ`mC;SiHYD1N?5ct|Av7DbfuPPY~E|z zFIn8$P-y}??fO-}YM!UN82t+DtIv*3@5*%<9dN>>s15Z+w!QA@ELU&hFfy_mNT>Pk zK_m3{zu%1JuAYxBOcTfs=FWgqZ}*6QLBPo@wt^RcL|!A8tZO}r|DvjtdE&HUzY}p4 zDgZ6?aHTQq4f%vb!dq#jgUGf`3+D!xf5_Tks`;i>oW>FkMRdYn zkLK?v&(v!A`_BRNarz1Z6ylxFHa%%`+8J{Gi#`3sS5bY2^)tdpGgj@Wosf(o^sTt$g&-Q>N!P?ua}e8qlUC^UpiN99FDUIw6I|p zwh>YxC*+%#HQ@+GI?j@bL=^6KbaB=~=GCezs!LBF0Ng?*oiDNQArf;Ua9v19!QgW% zfvsId%SDaE^JJCpw0Rdys@zjl-lz~RCbuceW3Co$X`SU2F_bE+$%eyoq z=I~-H1v#H$HU|-VMw7#K1UT^VbPDFvlD+rokvV^;YT|^~8_ruL9wr{4LRs}&vhM4H zw4}-!>NW*+b9ei56`n)sH`N_GV&!dDleU4q>EBTqg+bE&n?nZS-0?u~#rbePa3-_% zF(egKww6wU>6}LD{|$77d@H2_A`a}rmxnZ6%=AG-E7v0qQcM55LkSps6T7Vu`i4nI znVi`EMV*P*Vs;~YoZh(Lox^gbBD1dSpf7|)8~~7$=2+Hevw17~ADQ4xhl3z^mE>&E z;N#K1HK`?tM`rYHw)1`~sFYb2i)uvoCFn_RSWZVlS-UI@s54cNjexTVvOb zvw4u4lu%(^Ia)0YX_4nMeN3J)p~nB3Kr$sA@UBmA9rJHNOUkENs6D#VQ;3F1SMeFS z?^2MnUT^2v6@C^4PL>phPI&PzKbHaSJCet=J?(P5H29(vjZP+Ru~~r68($LXKn5k@ zHV?h~#WzZ*4h=HFV5?Ur@zFDdhk(V^1YV{R;s)n$;jlp`>dm!+NAR*8f>dkyp&uCQAAMrz`;zyiZs}t*AiA&=s5NHK?`4-Dp6FutxZ*0(FX~2 z;}l&^RXj)j>NW9O*x=>sQ)r#K%&dC0(d{t=w^@>MrPrk{^5({r+-(c0Q@}Rfs@{T#jG(9o%zePPvpy zb03jBOQ5!G0@0$~4*LE{*Li^EaP+q^n|EtMb>88Dl%X*uW2Zz6KaZR5P_A@-#Y4k* z+_PUi%2V9RchecYy628?rK!JQ9D5n_{iuC3n=f~o6zguLMH?On({oR^yY_y*_-VXH5 zbG4fzX^O}Zy5rwfUcraqykP*6y6EK+{*dn~-_Do3e_nKHr2wSBJZo;-i5!;zDQ@2u}IU%{lTlgW)hMDB$-3XJ|2YV_7Df` zt}@py7A+Gx`C6$HuTnldtZmC;_P+N)=l=X&Y~`%}%ZJh86@kR%#6d(HvQ$#%3>f9Z zvGe&GR}(UrN7E5q7+l>Sbo(qC@9h2XZtaJjUz^(OsVbQDMtq>0*=I!=T3N*hbFUE; zwn6Or9(j4WB_n>4AAGvy{51l=f@s2OWXC61iC+vuE8$tzq-y;h;GN*FgwlfRONZCvd><<+rW8*3s?%25A9jdTdojliW5B%}odq`MmdK~m}N^peuuCEZ=$@%P^Q{$UIl)Y)h6wdb01 zuC;c$MzLkm_7?f;jv|ZM7__-?;L)5CE=x<#&qktgzna2Qv+imDsEBtp-a<+0`(z>j zFo6fhb-=SlR=)lb$3?NB8~WYJK}2|l{2*FAVfp1`cCAIfdKtB+riv^8+F1e0>wSF* zriQ2Jq0}TNtHVKJrDAD#(ff0R>jNuuu~`EQipinWyt?>)D1%X?w78!Ehxe1?Pu1}y zwwLX;e_zt&-OAYgOvqjynY==;nd>I z=&3~=R#%jANU*EOUt55O@X?l??BgmleRW(M^R;MN;4EIZNhMiWtb8dfEeif)j2%t; ztd{-e_Jic&pmz4rm1#RW8`h*xzKGY=W$^)tESxuMXH4`nJ7p{kfT*_E!g=tHeufW5 zK|4?H`tFZ#lgL`C_jNQveErqVBRZPBkBIgU&*gjbQBI=^-lb|r07}Ym9`RtAbvj%I zpF-pGMqAk5nqMc&k=^+IjSoS*%tJ}XLsH8J;kTXbTM4{Pgg+u~zGff#R*zz*U6TI+ zjKDBBUcHPTHj_R)?x~JkJIt!3{ncAkNeUI9cNErh4<4_Dq)Jh9#&}p9@uYhSP_36@ zfAzWZhnM_CpQW}N^+Yk^FC?v%Ej0{KRUban+m!>Q+LiE%sOrI=~_QD0*cZ0Pp1 z7pUG-&Su?fuyzIsRwX<=svWZU|Jh)JGINcRGA)eggUv{_vMaZ@7Rgv1MPyPG(Iu5# zqeEl7yYDnhbUBL+@=f^OKoiV*bfi$JFiFgm9EaPtBr4zI=`-IHj3dg=az{rQj%B^WX4gJ-2tzN0vTXrO_)JO)_IMkHNc_A8Lh8kj$hl93KjA z{cg`6VUPh~{+A#XKD<;#j<{owN}Z;c5RH#Os$0b1+6G# zRXX+tOcM=oU5rYvu zk4hl{OulK)ac9f(-t?3mjka6+)olu`7t^c+zRL13YVUtsy3-fTUr0`hD7g*v!la3i zaE?u2g`aNYH}G&j25g>r-YLs4^g`~-iSwI*J$Pc?q7FSx8U*gXzNEGLW1Q$in;0`uw!?kaB$qODzR1$^*G`q2qqos4*wzC-D zU(e#xZ!Y)Y52&PQlu>+)emdyYZ6jmV9-Ip8bFTh1RGqy4f_7d|&&k>+?)*o>`AxYE zFGCRuIU6~WJ6VpC_2<@^fim6kc}M=0*ZwmnLkCI)UMIJuUS;+*S8Ep%wb>!4H2X0I zvl)$XPrcOkwD&R51iu`oILblzL7;;KNG{BYlB?2p2KNe06|=J;!52Vt>@cMuO- zOHo@0!w8GE(=xajxNrhe7@XMYpFW`Vz>z74Vh?=5>)L;paKW{rM9)6dN4@*~G4G_6 zYfbxX`HdDSB#~S!;kC1-6^*!odDD94>XJZ@caC5rE_-_9Lb!e;mrbpro5N2nn+9#f zG*3X~ws@$F=Sq`^rA zNypw@J{hBto+kcLdDV+qbz)o&OzJ1#W!S$%9+VZsiQBBZyRmq1RZtji! zLZg}z%<}iX9I3@3I{5|rZbQmQl#@jqa_JL!%0qEqeh)^j9W?ub92&Adcx9CXRq0=R)9y8>*VmO-MAGVtnh1p*s~XKd=0e!gpG6bB@g}$H6Gy$vyPnu= z{wAVtf?V^G27SD#P8)7zYuY)|qGE}4;ns7wdges~d%_>&0j!Z(o?tkP)W{o3b=c;D z_Di=NWrwX`OT4Ca_LsE!fMvoYEj2uFrtC>=HTPZRe*kO_rG{K|E~*in1Y&*@Hj9YV z0-fJ}jl{h1SkqbOY4`K8Xf{dYFWri6Pv5l4hV!HQ4pp3TiU{jlI)l@(_7yc`c&$j>r{+9jpW7ENW78az7wN z8a-+KP{^Ps0Vyh_daCMz8Qm9+lOe^-aG6Bvt+O0iMTW*@bI8kr7Q7PeLFZ{CoUcK= z@vx0IH>3My3qJfsgXKyEB%ECqtnkr9-R-~Bb`o`XwUZp zZG+l+DTDaJ@#AyP&6l=10$N~)W_jFBL`NU{%HG&pjhsv0<^6-`pG#KG?5yFMyB-`@ z-mtGWwVc$L>8VOlMCz{&)uM=qo73CE>+9OVnM{7sVWpnASdwrNl}3Grw+Gzxya(~Q z2<~9=bI?U<`EXF!L?mqY3Zw5TGfd_^w}G`#Iic(PaHnjuq_U6%IGz)kyhK>BLr_p7IQ}&|9Jt<44|-z zP78$eBDq&fY8?VJ3!iww9`nwrC3d{-s+`P%dbA;EJ+HYAzu!3@))a{NHqS3uD>rc~ zVcQ!t-1|-)Vg@q~YG{e_u;QUF%iNr||GKR_llIy2!~%r%z>}m|RkN~)S%nL@1Z=|Y z@DymN<0y$*^wozivPWIhpq5#&7)U}R)?#pext~6_*@Sl&4 zh}Q~_^B2dfVh`9CzjuGW5MFA+h_Z%sL(Dn5iQ1T5TYoi3BLne=Zm9~u*LAkdh&bs5 zd38@f95pfGHp00_{1V};{VJYk7;|sK@@JbEvY*1kKJK9dI#~I(+qV3E*V>XR_V0T& z4_sGnsNlnd5|te})%F{{}B-WioaYSu*hj9)LnTE_Rem*$7)HzTJJaeYFM$ zLT&rmjQ&wKF+psaF~?*`s%wB(EUG~qLkb!Uf$PQDYI76MwxQ6{$Rw-zKHu7~!o{1-D#J3er6WwZHBVAoHUrm+6eJJtyn(Nnc7h}PGn(|{e%Ns03ONLfn1CPql>ZN_2~njb z2Uwxu@F#h$b%=-&(qg%V(9%VJQPu}k)gimHPxGV$Lz86=_8%EPJ#O2~m8!b%Yhgb= z9!0a%ED$fdzR9*9GkYQw%0>OXlXg#o1zTpk@1eTkIzkZV*Ey_Lq|18?v8fuqSbu+D z^x665eD(6SUn1>vJNTpW*z@N@lsI|PM@h=Ufn3Qj&b{~2BY}9+r@oDHS`DAe3b<{T zor;}%jhc<>h6^*W8?XT^59_l9+FJQH7CUb2ytlz{z`{eH9=n5XZBF3n18r2C{<4cb zI8ab{NTMWdsCagRc>pSj!+oxUe{h!n&utJOff%c;4D;l&y+tsJD`+w5N$Fq6Z*kAF zsEJ0&MxU^_PJoZpOeyN7H!4=kL6krQxa_Fg*X_h{Oj78C5fR?-bE~MgUfTKkx)I1S zQ3)j1>2q(&>=_O(U*5b+A$Ll|lQK->DBnHNx}?j?vP?9pG~`M*C?FsuXVDm%VtK@y z*7gFiq$?4b?C2e$q;r*-tmjbR)~W9dCwQ zFrgx6M*`jY%=b6`-x8Q`)w_oJniWA=Uq}2pvOF!n zlpS>Z7Zw_K_bt%L*clO9eb-Qbp zb}7QLA20X8A|=M;x}S?y6pKqkt8UB-*$QG18#s!i68(HLWNd%#f66yqbRK`s;Qb#3|ETbVIB~d6CL!#`}VpSzGTHE9iH?|g86k34pbzVh^w_Dh33Rzgxw<$5A$~`@qBct)?QDg+*kmckt-QF-!dUu^`{L$D{)1O^tt1OEpsYO zJOzGTV#T*K@`?<4dYyPq+O>6sUg6(0<@t=%*_qkrAou+sCvE1DbtShTdZwRjVA1Nb zB(E5y8o|*DRpom=*7O+=!#KpOS{hwHJB%z4S*|r6Cp2tzMdPsBHlf_)adBx9@GybgrpGLAX0AO898k9LK^K^SU?51`X ze!O8s&Hhub=%Lk+aOa=3Y)KA&#{%PhezHArq#mn(nH3$*dgWUOp=AC}Sxn62O&sd= zQi_ro7KqXnj-&z{IJV%`wt@b6tH3DDr<>#pW1syuH3O5x2i<6rH@WLuWr?z0Ee|Kd zTVDkqE?f2*J5KSRwqLMm4l=pN-el+X_(eB9LL{JZ`wv927RZ|h%t)5K$E3u-heo$s zsqw6{8vtm0tW*}s>870D>k)#N%1WZf6@KxQ^2>^2wtoN9r;f@?jJZYfg_f3Ai$z)W z_C<*FF&td^@5+-WER5#XvRIkI&TM^$HF))rw5$cs^6b=_+YR&z(+}ztU;O4#7Wxn3 zO8BvR7?)kU!L3N)Y>wUMUiHj>!Jk8NOcZ&!OlpB*8O7-J5%JC|8Mg8GC%A8Yp2(4G zs`PUiEaU_@_-V7U1lBm>#gOP3OJG#TmcF;j*`6*~{ee^C+ z@r;WFgAOb1pkUGCAcvq(!t=L^n;AGeRo*V|SE5>1t1)YK^EJ=rs(=ad$*@8>3IMnW zUTwNg>QVw%ihZ*c^ZG-7R(K#sVs*JX zXE9ygkM9?)+G?S}c@#&_p2Df~O!*iz>qA5MIvEz<2@=B8R+~oZeN1S)Pu;!e^LmPB zUwOvhZOts%R}vkM8Z|GKTW~lP`b85krq{=hl)QG*tlF_eh$h6C8LTknSo)#Q?R+>X zMXx{FpCF>m`6fz)BAOaFcDhVW{gY)0{}pDt6g6@Oto(kFabcNg_Qk&30Ad4VYEv-8 z!{Sdy)|0o#w0Dz>r#H6Zv#d#L&uoQR>lgMfK^lTv$hhm8(091ddPHT`S?uNGkxo$6 z;U=~1i<)Qr6^oqPuJMy{*LNo}U9G=4HmS3gchwQ#*wz5?VpG6rt&WNi`-UX-&x3i< zhs4M#IBllaL5djhCNIF{+WvRBaO$qA!`olG=#yg^o5DT4_^7MOFMBwyc z!At_VdP!Dw0=-~cpoZ|CBf}^IPZGYpL4sWp_4CT^$Thql5l}-l5Tec zm2^H)loZX zfjUpM=v5Ug_qjwU(U){|b-7&4PFOUPJNgpySv zsAc_1WWZ0-yKf8-uBCz`(cwC7UJm|IYuM_1l9@33Rc<1vk?aX(=NhLqD%eFv;2+WGU zeID|ETb8Db*tYbfBYf2PVXH{lj;ftT^!Ub)(gydc&hn2^jUsHGso4&<~gGRl!ZvVj{ z;Uf8TIdx;B5DUz@fB!@JKHz>xq@#xZ60Z84X%axijZ39HYpIJSwj&-i(SQU`5~8NS zEYGegwK7Hx{{qdJISLmEz!!RNIhxZD6D_%_AH#caLwe;jU?kA8E%uhVAtCmJQ9<3F zgrP0^0vjGEoLFwXs#iP%a84a#Ge^zD2+V*F@;;}&goP%aILEQ@^0Bd&n=s(anD~>? zqhlaQAx!N>6Ir&|<)0=0;QbQw!*cSu;5=7;981TkPqSn0WT)1--RNDXSF9&ZVqjkN zW&8x=-qpCF`&*FYEg}KyPGcW~FwfL_Y^%e-SocGC>HToR%V|WgxX_*C;C>Olwr-+H3{mvrN#N8S-5-jNq3JibN4+$Yx^u9i8&5ymQuVwjh1D8`T0tyMa{ zJ-9|gc}T%qYNXhe0n}ba@M4Lhj6w#-_HXd^?{*$-$}{?*cn)q0bil8w(+n>*Tq+UE z(O}B{7&dt=+lI28j4|U1=rC*}^dlQrmB0eyWFIut1i6+lRc4jj)9U_C)+(cL? z4NJaj{6$POvTiiB8OM?;r75n+7omXty}h>gwzmTgLb}XY*uCI7s>zVhS<@pDgPSlt z^C#OU-j`vHzhtY134_XnS=zpbopT-CdB1ztWK$c(&m@kjJ!rvfmW?etyILY92@0cJ zJO9W#qQ3EQdPUbB94W#VUO$@&6)?v{va!F#VUh`I4OcPWe!`d*XrBuzV&s#9g|IQMbD0Cg$FC}Bs4x_Ue9bl2wvS*e}YlJ0V%lM zAXJ7`vdIo_x7yLjALdOLmuoH*m~%5?M)=iWtJX5=47P(TK4wP;oE z>#`5UE__dPR&5UTfe#^;@3?W_Qk$L4aO7tn_H-_X^S@66IeGIcIIyFUN#)sxbM=BT z=_?EwrR0sJ+-+*}jgco$^OmM;j#uj@-@rj_$tCvNYI&lX01!>oe6^fqmT&>Gl|5Ej z_FN&rrcMzVD?d1t0+cab)BbS{9GuDGI9iLwTQk!j%rj&uLsMWA`8QXw%=aDVaR-wt zaN4tPw_N)SD?{CwuD&QY2l0}Hf1vS(m=BSwbp17DfIBFk$@XwxgZ#oID|!K5)y z{N;fmx83k7?P1%OZt$Idn%ay!Pd}tXI;*yOj@5xLxmD+z;Mhke$@%nCt5usv{V*No z_4TW77B!X`1J7*v;$aFOjz<5;hP#JGtkKFzu~KrEr~X>GTz#r7RK!iM+>V<5L9uG1 zCigU!JL1zk`z&c>|5giHBaRtl&5;PBWym$>_y*C%rkE^Ch3O!onI>Ggu4(#PEoQ*T zMzl3!;1R77F0}8xL@63+qj8H;53IMx(rc4nqgrg+R-N(E5pMfKoZdWt@=6Fp1Q=g= zeGZ~R0Mtl*f7^mLgPY_(QvGGHYMlkV=p1S`&w-#5E0bQKo!HWTy&~~`$D{RJ_;gdp zL*h!S>>00Z8UWL%efbfev;fkY_0(!I6jAva_;Y(@n8sg`kJBw20{!jyvo7y%5qOL+MGO7EAKuRCG$KeLPD7NFG3Zmjj;^nW~tt{cskuXx7Zeo zEDUQKIx_b+xg(0vvZj~-pQzad994NJ3IInzD)Y?9n;vc@)i>Itix%ul*JY>TXQh{! zHd_z^4`|Q6scyvo$;`yp)vB?Om#>4U7HZ=9LF8$1-aLvjVy5U2fufhzO}t}P9hsI9 zpga~b`b*G0{HqW?P=OgT&486 z<~SPD^Z`M={qJ5X55{(DAcxep@u`7Oj3xw?j^3~zy|lAj@W7xr^`K6uCiI|@_krwZ zHjY8rw(q*cZ~&k=xRu(raJQaK9^o@MYWg{eh7?{Bm%@u@L=*X|6VFHp{&9!ibqucA zT&v4@K&leRsA;061Z?oy*bu2%^s|g1unO+Dwde?nxnxM2`s~ z(;%}H_VRLlDARqiJ?XuB*LgctLnAK@VfMr%*-T^7)3{KBHbsQ;0{A->UFnD5RYIh} z7-Dy;ug(c(*{uIYvqv19uZj&E{9OzrCPf=>r`!nV)GrsRop_m)^9E^&br&r)^B&R zvdQtHNsse+x$;Pxs7jBQngRIAf!Wk@TYGICca@P)m3;fhry* zu%|twHEZRaU<+;y{O|uutCjEa#Qh2~!2n<%bD$#AI^WG!zUyUE^U!haJ@YIn{jziC zI}T;=7F;`V0L-32q8i%#$?Zx-motiDVSZtmRH2AIdIMuPe{ZNr>*PEfdpz^OB_0|mI_6Y#})D~aw=&t_AK=MBivWum~^>;@?<*!T2LUs{TgzI0;`q9K=m6S zFiHqP0N{UBsqyRBgY@mQm0;bUWD6=%?$s_|;58t-FCBKeqTfJg?B>JOLMK-wV1+8o zxPfaDe7lxjATeLta_n`)SY$ot^&dqj);o84)YRk<7>lg_Cwn>z%bC83srAwS9z)h;4{UBTLBV znihQ<3FdqJC`{I?!8lCFU#?mEyaJtUY9TrQDJP*aB;IoK?9jCn5=N2Zr+;Tt%89gV^YUmIjlA%R)ZPRusv=oNP7z!Tqc- zm{bP5I=+LwEem~UL#whM_x`Q}Pg;)+jqilkB1PYo?<{DN=&&DY4W}^v25Y71bGss(5 z4xERPASLO~Sx$;BmKZt`OcD|^yWu<2ZHPwxZctb+ZDY)m8Doq~dx2hX&pjtl4LIK2 zj8>ut-y2=MHuroV|897(PmG-?$-~N6XRg~GeBI4U+xcXL(zo36tt3!LUdX0Sh5c}b zE(xfF@a6n-FvfkB4b%W2I~w!?#91IQ|B^w{%52`sQ#5z-yfo31C3L@yDl&@og z7B)be=omW5B7+Z@lEV8bt6UNbP{odRjYe0X*5wiw1%77zF$NxBS&ZLGF(1KxSE(fBT?TWcF6u@-H{ab??9EnEWbr2uG&)kJ#ph)XGr}0Bp z>?dS^1Q$`xPY#sV*M2WR(_c~@-~7&RD4xa2H|DWXZVJGeMa_;FGa4-<)$jk&%XeTw(RpxRi!)3;?o5yp>~MeP{R?4Qi% zGxs#eD6n=A|IaVjN;;F~$gW7&*iqT1fOW}PU_fssDkoL{=hNtkz4yK?B0ysKu;{)x z5`<1k1P4&IlQR(v=`Cg~g=IafGHRD~sF=bDX39yasA`+mB|`8MP>4o3{%GsTuzTyR z3fbkp)C5b!8pXCg;Ww$7b6;-ezEzQ$QFH|*6<*spk4^R~iDpu?WorAbwAAhy)EH%v zbWiELT6{ORwaEez+3c%A6();RIRYpqne4Oe{5Wzp%69nr(3d&apd-YbV_0CMHZQT} z7`JP%Lol!$p7i*w*kby}pD!r{+zONm0P*1+jjP=EKDS{s_cGR6cVpEwJ z)|_$q)Tnq=8;`?(IG)zS%%57D zis`q@fD>#m71)9dK_xjgzd}+EyDSWcm2{m2wK90-y}|)=7*Vzdp=Q5lRx&<=) zFjw`%ja2|Z8^%Pr<^1JZ$@2BLDnEEQ%f$Y(ZROLYb?r5wI_;;kC$AOHsY$Z3ya!kI zjoto7cbqh$yS=C8+sEM_*8k~tppuGZW6@;C1M>Ebf(H|xfjJa%R@!m&nF7IYFLR+_xat&4`<$x< z20Z~)-g!_oo%+@78kNK)NzTGonp)`ysq>CG{E0Xazx5$rmJt%XBQgG}$*uA83m`;V zr$$fzBy0o)xz=utbSA>XkBK@Z9}=ekfg+k_z!IosP&0X^Ui-Z|yr>*yB#Y#tKuvrL z-2emO(AFPP{L?o}FVax_j;~ESxVWx53Wbi!I!%ScTnqS^wIGHt08K3ktx<^RQnbF{ohnmIf4Mc z(fPr6+u8vzHP!d372`G*sTf~6y0Pw5Bpi9gQd<}5#{2Z1K3+8<9}iQX9YzxvxVHUX zfucZ2rO!>v-wO+-IYcB8F;Gn=Oag6LtQRsLO5cF8NCakCqNsLT>?<~%?5>}PCEy{B z>U`-s2XK1*-tXo^igek+Fq1ce@7rnH-qa3Mf#%TVwJnVytv*9NY>L_Le2y#B7x^t3 zJy@`|wil5PnWKyIC6N|8?&ps$Boouzt}b`)H-o_Nh$xo%{68;%auemhHr0X_V^InV z$VXlFK6E$=G7f%W@Ht}ah;?0=t~N`^inA^4D{5;i#hwS*E(R1?j8>BXa#UV->;F?H zU4JZkPv#Wrb19FH6U0e?P+q%1fZJKiv?u$!PnU_JD+QoIh|3A0u>)p*{Q7iy4qDIZcJJj7P=z-WJew~s&}jRvGl%^Ei-$HR%gXzfG4 zkCyxVO377b)`Z#2zwos)VV;NQC)x38{(o`Pc=eTS97**=F+1l;+7 z+0QsT^R@ZB#IUKZK_eF?U=jn8@(QFqsOF^F3ZHJi-{>z7CNewJvVRp9AzMDkpC5_e zAcX%0_R8fUEEHyYd=B~({gj>9ynKZA3z*+XL0`@bs+be>`%znrFJyMKfg%ihRd4Q< zbU|E;m6_dnFbq!Sn;j3xlg4V|;~voMaSv}+j=F1CA#5$!qH@B69_GES!;KE`xK|EI zA5D2>s`_yu`<>n5Gv)(8e4TvLbvKgt`NR_)(dyewBw)~sU+>a;!028IT_40ma{pce z))ep(-`e|uUCzai@=NVRl5$Lh;hcC9+;zXJx0XGhH|(W8o%*tU%s$*guN4bRR4eG& zRsZsZMg7NBZ{PmyK#Pl)h_?avJReBfepwTxC=J3k#bvK&Xu93ju}*ji?+@w+9fjmb z$5a#)-{#K_FRZV|Bq~#3-BdSWlZXKR?D*m4gL@a%l6`XpsR&w+)!;3BC1@VY%lA0i z3ayf(ljI^&Q0c9r2`hL)v z)Rk70&JDT>j*tiX$QG&m8hKxak6XztG6MGAzAx<`sf>@ z7d)k@NiBY((lj5^-6=%v?Rdfm#C}p--aAdEC-A+1K^)8ZTQ7zT@-A+*yxTZR9#7Su zl5^j(wSse40V2@9tb;*LEl%jXdmy@zR`BmV2d36eR>QPfto}NInpK;l{;y9fP=jYh zaZtx{WW(XRK@%asd9(y-B=5I*$48Cea_}?vmy|eWLF1aa*{%zPPr6ArloEa zyS)Sd21&X6i!fdKDk((C6VU(9_Qc>h9C4-c*}9^qL|v`;&W$f^JYRBD8dbb#lyh!r z-}uSY(>3QZ^`O0v`o$TXv_4P+0L$Co$|t>#)Y zLfk<^6W4bGwNic1xtdr6_Rxd&D8nM@IfreGVA>&NIv1u|fY4k%iwXALR z-F-T>x{rT-s#*1MBHx&?75`^1b$N(0?Cz9pX$!^q#*;-E2>`=KV<;9=moUCU5lGC} zSoAB_S%_XDwVJ_E!27)x5h&^H$X_zKz2{9UXhHh_zzm1fKZ0C=3Q&dDld~CoBWW__ z!zYFNYo_SH0$wS(_0FzVJI_*1CGZ9Vc!`)}wp%ZVr$ZwCKnXIbxK0TWnaEkO6pv`hOxsH;N*F75A$q;$RUF zm9}evR)6wqe5t*yL5uTq&e_O=_E)wItK*LA1F1z?6{F0T*!Mh}gOvG|{7tGQDukk! z`7K_OjsWF$0-sVE)`!GTAQe_U@{hI)z8!WOj@cQ^Yzv5>XP}8Qn4!k5p0RmR_4OlZ z>FY1+%`YtNvIGy&=S#jXc=J992IbIOROC}OC5{BWR>c+=W|gF(2gT+^-4~s1mdL$F z3($T;W>We(-?)<||zd*UCUQy`8rYl3J z0)+xiEGbqxWBl1F%B;j+`&ild{3Xe%FbkZx*rLN+whMp_B>?E4JUT-mc9i(q;%kD(h<2*~PorG090D{jFS)ROXp7i2H#-4Vvh2FIP5$x$hsyWV7BXO09z+1K-t@1xEh|w>2{7g>sQpzX7l9qW7&j|0cS96* z#E`CbBDn3@*W{COI8|y*#T_*C0<7P@Em1_n`C4-00BF$q+m|bGy+(IVWug^21cf%I zS*wf(=btHgSm?m9?(E}SUuU^4? z#T1-8P-Vs^-L{G~ea%dI;>dU(<@IT}$s+4weuC$K`X8So_>!LEfuIC6*RnSZ>x47c zOf*3ugFndtwV}o*1kGMK8Sb-&KUFQ+&-n>yzewb{*5oze_7`&bc%+RnLNbWl*l9|MY7K3wf-PSntvwo+(kd>fqkdyo&2+Ne6?% zv-(4Bq%m`xBVVEJcn|h`zOffu(9qt^k=>fIs93yOcvMq&x!|^u5W}S8cs0iV*LK)K zA(~$qMeELzK9l(MLv6CsoJDc3LvhAFD!1DR=_yMI^kdQBeq*KzVP@u*>U+(ea9q`@ zF_wpPx#ptgm;+H|#%uk2aCYm}rcYn{bE9<_`aC2yhO{fFFRYEuMGOv(o>=ZvT`0(t zpiju0*AEuhrM(6eVB!&2@rzMzpoZKW|9G!Zq#Dtn#6`_M(AMR4+XsEOr*OEZdYxA~ zT`h!Ku6QP$7bZR}WHsmT|6p)BCD2(RQ#p_lsiagF%7L7 zlmlWVQBANMQ)q=GW-hm$K@%glHc+@zOM_Lw!kohthx?!bv(l9lEKv$ zYY&Z5gu0~c(^De?@dD~^EXNv~$w0#tYJsGM-`90^-h(&eSx=GQ)hYSAESpZ|ppT@$ zJ5V&Ah;aUr*#^xs416stODteDC-jeP4V0Uw-_5+6Q8K3`5X-z^0}cG9@Ae4wI|}6C z-o3c1MPH55H*EVoVNiigD=$zQ-|d54ppzoI^qwmQ)Rx1%PoV3I1b(TMMoz7#VvOh^6zk&Zv@^x-6oI$Sw^I`G1=h8pLorM%0Go@3i^DyiiQOPiqc(6;K=z*oz zM`zF8h6J-s7+T-#JKp+e;6>WNXf$7x;$MJ&89(HQ{RIy*-9yV>r|L<}%k7j*Hfb^X zae-NokF7y@zd6<1cIn#9=eu8C(qh;`rp^BpH`nAw4u;4rWmh zhgKzMYg~RU@e*=U4WV-3t>3iCANXP{RK?(fo74TUx*bqDj-JG%DmhbF`e~^FV$RWg zUE-d#xN$pU2UFg z@(cPLy)F45sbc533s=(jV>rzb`*CDv%XucYYB9P~1t{q-Swq(U4*%Wtn znm;ql$gU)R=I+sJ;;o5G1=wBMn0R+M4#-QCywMBK(o%vF43w8nrX5bM8}1nxEvUFX zlqQ$#+v?Y&C2m8eQ+>i7y0n6fF)N2<>LK>Sq=U$+MIi`WI?wExRG;&x!^3N`h>N{x(OAR6cPvK{;g{_E#z zN*2a!4>CfttkyL;GQc~orc(am-tN`h+wGhLqo>uusXn*xprX%9je>yRRt@}gX3?4b zr(qig1faY@eWF+mG<_gDXH7dVeGP(73<)`lM`#B5P9s}}^a@lsKb*Cb(|S-Aem#w> zTbEoj-GvfAC74s`+KjsqFiIQ)J3o7P;!l(>6FrIa;lN?WK3n}0YKrTWn>r}?Yw{JZ z;3&;%_DsMEScYwnG{9?i+FkXW7obcWwKl|}3N)fXb_e$mYEH7W-$Z1QwvG{bk&cEV_zsi%;-agJ740-Vh4w84}1nm z#BT$0$xVds^PHAj83R9EpJ*0cEEBx&Ne_GXykN+HYA326BH`wvMYYrSr=86;e#RpQ zhV;GF0Esz4cWU_RubK*;pIo2`^UkRdR~z5fC?8Yzr4MjO=s-y4vt!g82VBf!aHHTz zI>=3?%!FxilRvL{2!)*l5N=6H9YCFjTX;-(W#tp`Y&f~&QxP4*%ms<)AaQa@=55IBQAiCfv7-B#S0+Mxh>Ifau5MdPjs4P?36+4SBhS+ zAQXmk_=qzc0P7=#IBHHE_P^VkOwupoYH2{z$M;${<{75F`qu^pbyEJ!{7O+ibG8@F z_1_|KRqtR+Cy$o_cE-ic?JNva@kigAa!CG6Jm=oV;-HvcSeLTB8HhOMa!$ibDq$u1 z49{7Zuf9%~ZCcGEGT0Q|g%TK}L614}rw=tpsz41M%BGW5zGXz;9^BAIwD9T0Qpul4 z`^G%ncy%mHJG#qpk>5GlA75;3GIOP#)sQ{5#pY_61)}J-ebszsLoQ0Eu{0v2Y+01s zW>w#Q7NK{3Rq0ACDOo6g5XSXbT?-HHotOXa9sWM(@Z_39LXD@;>?@rbzCvCT-o35! z)wpYUTc6REllCWg@x;iA(O1pzvm>usTpYmQv7RAzf_JxL&!R)lZ4piEyEj*0&rml8;MW&04)Z+D>~Z%T0m z>=-;I(Csy=!7V1~W!>~un^9Fk=X3J>2@!y{^L2+cGIiY8%V8On#%@lOL!*^wq3F-E zU}B~mbjtn*`$k@~?4P9ZSR5JGMmgXxCUa)9z=r0+m$x@GcpYI+(kT@0U3DgkF%D}2 z{80mOJdsFNaR0`uCC12IWjE{LmKWia+6^);@v{sqg91k_D1pKxKB9wHA3;Z!2EF)% z;MJVqRq@c9;iOPhxb}Bjp_b1qkZx97pVnO)<pd%A~kPk8{~XtUr;A_%hX)I7LMLoefdT&b_d zGxOK5Mam2&iZfjlnTyoBHuKeYET%avA*nc&B^_mNDy5l{)quBu-zb0D@YqQmYN8m{ zQC?D&2a)W%aNVllWo2q1-GPIo0H=@Buv8QfnaTYH4yNHTQ( z8}*2AD2eXU9wxK2TD9&Yi@BDRT_LFez@Yc`r?T$0(w6X%A^Mxcem-hwYxaQ*Bn7f9 zQl^k)0aLw>_HP2-IUn`p9}${)v(;zzYbZF@%eR81A~{{*^fjKk40xh~d|3zeO8E)G zMePnGRhdu>7b^z+ysA*Sf_(q2HYsB^Z{{0)ttysRfusyK#blbsTo@~e{>+sVteze7Y%Q2ZZU zEXC&2Yl$#!x%DgGZ%qyDjMiTeqqxIEds|hxdigpD#rCWi z2CKgx%n%gb%mOqbWD3S8kLVzL_0lTLBEO4zP$?pt`j|Zff0uOpyW?8aM*H|@ZCLYK zHXJ8Y1ZG&s!@p+QB~{B%=Tcsw=rU;U{2@Tvvfj+qBI7l)Wzb)A;U0Vl7=Z?==nSDb zXMv5F>7AK9%`(#v84-rI_!wU0V*zg&lZ{$nj@p~UdBtA2# zqHkar1>i_>{9Sx-|NQa#g5%WTW&AlpdImk|nGLR_bLtke?JLCtcjuHNxA8L9%AQae zG<5|FNFt@bcY7$`pcnRo@p~EUk2a|jxe4afXs4f58?vuPyg>E*`DD1~weaK08rfJ;Qs zl_o0q>*{+M{_XDD&i7?s#h+C@BwJ@a-9i$p{WsINJl1q0cLTwjTrCve_$v_DPhvta zE+qL!)5K5q@8x@ob#`VXX3IcbAkKEEbsi-1EI?N~Objd#wwCB@N@t(QF{1O!r-Vq;``>S_BMIH zsMK+_PMO&d`o6Xg2q+*TT@s>nw{%D-9YdFNmvpOuw1{+f zch}I;-3~F7ba%sh{QvZN-j94?_St*Iz3x?78_ZjJ-oB*}*xg|u`d9a3N?wGIaL)+r zX_<>}gSrz134NSTP-Y!XCnNCTDhbK`JXbZT^2huQQt6N{2onWtz2|q<-wWJMhpZrV z4OWW$gE!dO7uIwLpk}}NYs_0PAn}i}KT2}$T#>G0%9tFFK79P{{OqIMgr>&}cvAJS zoW@Dmp~cN@wYLyfg}+V~3XK*u4gwK!|0nWnS1=xN*K+64QxI3kKTUSsD+2d40LkV? z>#_s->*6FlN&e51@bKq%ka|OWRp@$OHQv9ky$>*lSjxmLY$>a}(t7@y!L=@v6;JGb z{Q)Yw)rWo*c8CtYxhq!TpnkP1Lxo`(d+IS14;8#b257(AD^E2lTRNSvTwt^^hc?KW zS@39HxLsYs#!g$l!lI?;FN6nFJrphUIjG;T`O7BlkAvvZbRYlaX|w-dk+i{fCVb+B>P&5-fXJ_{gMK1NG z&o#QH1%!7nPrQ@xB)8N*qdDr+6^O8A;>l}KP3PM>(5P$DetpIQh-i{GY2AW@fEHvf z_KU4A?DmGkn;aci$yg##dfkx+P6ns@;pOBtWV^{ttoL6IGV)bHY}qTCRT$md8@?eq2 zU;|F8Ht40_|MSv`ved39Y2uU`=(Z$-xoz3~ltgCiTRD570hketEa)*2iQ^@K7Y9#; zD%>+l6(aMr2W{3ppr?P(A)e9grI-U{rqpr@o8$D_oenrRIusjCBpMs-!(g%{O;Yse zhRyi;Pv8@z`x&mJ)Kk;pS%SPFbZx(p9sDLY+r%-mxPH`xczW+ESfYBl-isv#2p2Wz zdOe&LjfX{fS|SbLGRDSiuBTQVSXsJv#AEutinj>Tzmgs4)L~lodHL#sdZzv|RBzcf zbDOHpk;4;%!;pSE4pRy5(0$MPe2!x}L2&m)Z5h|K^_9OK`d=_sxBmH|XwFYxV=$?9 zgdAy7$3%N<+n;OkIF0~ng$AL4&4$lB8dH~6>Ug2{D}08oJW=R^;0qz&%S{^s*#t}_|CJPg{IgsiwSs72F@zY z3>tp=Y*rFlNn$6fh5qL4v;T8%&7^+C{DbFQhG7XDfv-quv^tYLap7P?J@o1gbY_IF zOfdBZjjBssMsy|&|;{PRL#*BZ3d5eAC-Qj~w~r$@f*N9d~AgrJtulVnj-4{?C)sphzkG8uabK-4Ws6 zz@{%%G$0+1v2()38Pv|f_*B=j7p3nM#GTA8EhsytmTE5Q=T9hyxI^CJ{XI4MwS9Pspa^j(4Va{qo%7 z@n4(l!GEpUgvY3U7Q9NAjIA}=4;-2tY=}($iFCQ;xcmJIqpZsUTro^f$D3DiCZ8xG zzQ*a3tgj?3LyaL%9?!=LZ5z2JE8A4iZi*;njsa^U(f7IJPvxN;7DJI{d6gF@f*F-x z^mySo@MV;y=$zE{aed^ZXHhhQOf;$Z+Uh^%-OXIRBeVvZa=KQ z0f(q=wZ!7a>wOt2Rqg7uX|>jLkL|3!dq^YG2?kS_G}X z)23NKa|9JXo);q!Ztmb3Hdy_|1gv{ylk0OFK+?m>BYye&aD+zQR)sso3g~IsmoZSGeixk_{$*= z0e#6to(`O2qyRQiX&@%Bkrb^~_0qtgy#s8F9L{ow-# z!$;@x(*nNt)8e+shs&DEnVsAJ=FS(i<(m1zkJRfAoBU=I?3=3L4}3V>h~{9$ z0WaYx2Qk>R&Yr(z5i^nUa zy^3+*hdn*XP;8KwQz(L*cB5O?GI(TdF$$s`@Ivj4CAFwkgm++xc{q1JW7kZ)!N{lX zi#7g7S#f5!r9QrcQn0z{C@_j_#86Z1?@2dY{VDGb7Z)7sSN}{37UB z!?(mi9V|FLfro!l`vc)UkQu@G>x^e=$l!}%YUIeSAzBM7 z%#RWWtZ6)O-|Oe^DlgBx(0g+fezLF3tWv(b75#=9QYyj?dObE(wr;%Mq0NlW5Gm|j zNCOKWa*6U}A#w>l1kHc@!yB!a>YBL7#8WEZ)G+}crGnQ~r(qqhjjFXS3Y{?l-252% zB;f3FEcg`gS4siIDPJs%Sn1Ve&m;|xt4&tcdmEG7vK}~B+7xbfbx3jhHuCHG$>#1X zqx~w!DGS#gnt>t!LE?w@ZdGwL1oJy#$FjN7bm7|~5Ej_n6Y~0Ex7egZEU`u3zmKUW zLwh@ve@0u+Z#%rR`@XqR5+k&!+1jqF)q>5n;L;CgQRb5#t=H)LS^>TDlT<_r)RStE z&eWc?1eT7J=~owwn@we3M8nM3Vc|SI;SGu?;*phl!p8~e6mfLOln|HSAq8Q$?~>f} zZkdwB^L4(A<~w+KC#irIi55{hKkSFu_N@vQR|?h6ul`$f$XT$>w6t+ONtycTkssSf zgMBdWr_Z4-URU2D1pv-Mp2029|4N2`<+`|THMf>10;!P@A@1wNeOAe8wesC#>_4Vx z=btIk;_EYIs8^jPe!O)j^1kRXtZn2b<1lTel@tIO-uzKrT8HeC*-Y10>YA^=#I{@5q=dq;El$l6@v$Dh0}lA3X}Z zgGEF*Bx7%pw|l?1GlNP#6IPJv!->+mspSt+h6EHiSfwa+7?z41$_ejc2&&OOz2LWa zXaMgyF+tW4OJn4Le3J?^{D?nSX~LQuH4M@$Md2eR{rZg@fVIzY zV(kz*@cj230n+88o}^5xNe%jYdk(E-@qskvyq!t&ct=(5l@s^_PVkaBB1- zp(>eG2AeV+vyB9D!fQ<-Qk8-OZqlKaSH51#g^BVf=H_tbznxs6o5I)Hd z{ZLCPU+2lflXsH-)h>Qr$i@by1UuFUmnY6ws+;5c#A!2B{IK!Sd|5Po;o8wZ?8g;o z7UL;_^dJwodjSCSS{|hzaOtzYTu$r1~jPOXD@&@O$I# z@jXF;EIPE9?JXTqaC(|^;=ZzG8A0`|ICol55Vj#(Sz$z6>H@3pGY0f@0y2*E8hHjU7Rzpp2jjO)_B4>P%$(dE=97yE7e9Pi2!-}Wks0E%eJL|7Ev6`v8ooW=3~9r#l<#lg>!u0qZ0&Ri%y+2K_CuRpb2gs^&zW>iP7vI;x-_di()7KK`TpPycf0Rs~5D8}n9} zfjk(Nq;S--=KLvd|zz((pK6_)?=vwnzzbo$Kn^ zt5(wDiN~Sva6b}z_am(>skyPlzGQKKwCKLwA8KjkiH`$N!^*2=5@;bCer zk_*|~2#NjmX*I8wS-{~JZ^~NQm&;NAaoW-J7H3K{UIoW`)1<~J?i<_D&i4>zF#0t6 z2h5rHxYmM;+m0*M{hu8=|`kiR>Ld7W{Es)#KeW}sKj+x=LxkY30M^!|k4+8$*(czxaqacDi z*7g%EISC-iQ=J|T2LJcVmrfAdwgQw8WBOO=`14li@bFiTyC4&l^pCr3-0sGGrIXc7 z+khZ4p-I10lL>ZX%b3;O-mCqO6&6I>x9KUlbE?Z%4b-HGQBqASZ?JN#OR^R|Y_+c$ zM?ScFb>Mxcxl{I4E0%4;PiY6tdF?} z1QT|(MKPTMy%5IecM|igW^$%+;YW(kZY)5u+QR98pNpzQZM>!3`bxbsnA<2Vtzv`$ z+;>>@YYN00|DJ)5G5NI^ro86Pu_ zDGoff5)hC4DjjmbJesmqO9|*snOLC>qhx zEhB#hK7GGu7hwQL1|qMbFMNGEBK3P2Fl}=-1)Vl3;NNBoW!ump=E##bscu578E?A#U~ko7#W&j?fjnt| zJW(k{^QTTR#buC0lRFdlCsX)o@hTqf@K2>qLs(c0e zZIj6)L>S*ksmO9N-y8$je65`b?#g&g|6Y7jW)|PodVOkWt7lnI_`r;PDu4e-c_E%X zRsO3lky3o={DPKu^}Sm;Tkq!RQ#2#k?=Mz(skg`jPgu5U)XG7@V*`@`@PEml)F6N1 z-o|7?{hW(D9ldwrn)%Qu>u=gab&kGvNj(F6T(7YFuSVDPM9bLw>6Vq(JdaFYf2|ts zLbWpJPvpsWF1k3O(Vk9AbS)kHwV{7Jw^Mtk;M;Nx^DX+$@BXa0ORGK`qWwolPZQ&XGXmzn?MVJY zT^jaCGENKrZ&;)NdqN8=>Dq;E$LM4qPi*t;!#af(`3tboQiCTC^dcF@XNUJ%_MRP< z+oyeeyjjKXtf;HB@7Z4!TZTDiHZRdLT+|9bTpBd&6B@bmz+Q?p_LUClW*No?S6ml; zR-a(G)gl6vBf*Wy;Z53V8Qfw{A7^8TE__c4#!LZddCzzD$uI?ieq2=k%F zk&N#QP<_SxB=l9--6-mM}*DQgGerop4fs0)A9`lm{^hj_p|;3e-Kq?rW(Hw_h2BfWciB`17rh# zZ72wUZEJXp5kxcuecFShXUTpWED16Nw-ir42opTQ*$o*B`q-2L=7J*+K@Z9DWUWgn zwa}LKD<4;yI_GEbu{r)dcDZ}IsV#k$&n(^c2;(+2JJ}zHBQ4icd`T&`cIaev?U1#a zH6swAY$-fPvVKFQ=2ZU};AV-1q!uyuUZaUqN6A+<6PZW_oGV@I*xLtF%D3taR^m9){)TVfHOXBZM>k)FqhvJuNzRRN#3az93_(zU*$k$g zhW-vO+Gy5z3${4mB`!OD&{M`Y@z?Sp9$bTgNI{TH^2f=)PNvYg@<3H*|2DP#%766Y zuPMzatA{$Zd#2%}_Gg2)^9+o73WeB=SX%A@-W*7&ve@Q@GfQ)xD#(?pP5vpp&=lU` zO36Vi14J0VfTbipvuf#*W?YuC@k2k9ShzXSiWmF(!)cV#00+1Bb-h-SLmkd;OY+Hw zz+mBA3V%4;zgtuqrRV7v-hVyEWyBtZ`f7f;E0HauS+D3s@iJ+-)2Egu8UVt#O-k4- zMs`kr)@&aXW~x;r#Pya(S^tSAK6|01Ct1_5JGo_~tD|UMzz?ee@8zWHhhB)8Q%`94 zC&MB8p zIsMq>N6FOE^xFp+L`W7mQcvP368;3q2Kqr-y~bU)zu_-=Zogud=*a}7rI<$Eu3m57hI}kz*7FxXD z(HZm%C&|u_QxiJCm@TkX5_?CC9$9p?gKU$bTO7YQgN^e4oz9G*_Xg9CMLn>NzPr9h z28{ySrz1;r_O9|lKS5fU_Te{I+=YI)^0tzjD~*p+xh4RB4`zC54+8H=1@o>4cE)u* zy8E`}0H0ZuPoNQXilrZ=wXDf?gngJcJ!Mr-$cu?^x|u0pvmFwAc91y8#$b3Gs8zu> zJtv{@^X?5(eC`P)00#rhp`)b&e=OW!pX)>@9#nO z@fTnqK|Cd>$G7<~1Fquv;NGwG=3Y{sGqfR94NSqOTpnFc6@gneDkiO;{(^B*5?n|F_?e`PzQE$Jou1 z+_$$UC-=6{d)9grmAtrpy6=F00!Q@d?bimSIZ~^T7gDd~&ZIG&FJzMPh=Rs<)M6)h&Ihh8-Kf=PJiJ+`T=4D^td!|QYZw$` z69@(D*dGHc0@d}N;9}-4?4P=HlNwCC8SxD$-vWkg>b@i?h~Ur7{VNnBVvm>jl+BKy znBJB?yssF(CpMXa)aU6Z8+R6Djn1*2uux}Uu$a9JK)Ea zZieSpRb!RPvnPEw!(aA;ruF|aEWJDRWKHmPgWseRoS%0J3}C1fO$rQ5kE}ey0)H3v z-)F9fJJ$SA)TA_&CVDx-Sl-i62E16OQv|+;{50IRf9`z#^?kC#a0peC@&&Ennu&YH zvA8&HZ}7w<)BgE{Jnh%y1pZG7hl+ zS`#y?S-sOLc;3we175JQW%M#$KJCR@tS}-KiIVB}bpS=g@~Zy4-N92}X<%d;SlYgE zjJ476_RWR3RLa^9JFQCiwn}u6n>Op1{80yPh3%J*fr2nOQIojlp6@Ra2z%O}OvIXO*^VW~ms*z` zTzIw*>DPMbK1c~S7{}YucFIuQLeu*EvDXhf251iDEAMEbNqxqg)pi}0&#GGbibLS6 z`MRTpM(fp*73pBmK>1J2VtWQ0hjU8Y_J)_DTq-j-NTRXnqtd&>3L1IeqJ~PucY(-d zC+*%^Vx~s9E7f-TShl!yci-l$_13y%nif}v8_=i~;@1bc?l+Z;x0RqhKnH{tPl{cMks);xxHV|>Qe>sK&&39_qJyG#?v%yG!-<5jIsc?Y6nzdvYUxFjzsZ^h|=^ z!=xLw<%b}jo&&w&`G4*jiuR$Gq=B*7ZHE)A@d3cOmRf zI6oO=a3Ur_zNp~(#cLET)~~n~a@!u6Y9V& zd6&^1dqVY>xtlF!AWSVLY50fyP;L`s+*1E0<++$;xA9Q??X0@3z;>>MUSWOU1V5lC zZMwd55zFJk?P>7+*Dz6SeU$V(>HWv}y}H{uZdWeLcXWn$)nA$wwbR$$r^|Jk6vlC}8h<~j*oz+{MIx~-k2fCM~)w=RL_H&utd94;c%e94jdK7G# zxL$POiYPpdaqma24*&(fA3dyhE}1G7#hg|6F~puq@+^2P`GN*p`si_>-B*yG4w2-H zi{YH;1!qL;8H437zo6OC0OAyZL5ED@zubkF3cHFLV?l|YXI@+nXL z)g*pwu{WC1r}hWyiA3RKq}F^g&sYfewwPgbu{IQ7P>kg6%kyh@x6NL=(K&YGsxx-P zTFLg!S6glZ63l&T(BSQ*h?XdAns^33VOl4ZKLA7k`fE4J6^aAQDsKe_av^>rmS>f= z1Fhf`N$M&bte8_aNe#wKiUX$l8S23+0)YW7`;FlxoFu&M?%$#`SBMZluhHW;y7Dh- zf+YoZ7T~J++_c-kqTDJLVeO`JC(BlX7c`KTxZ*No*W5h`$(BY8uqJnk9W1Ds3*`Y> z-e5cOY+bMIM8KJ|?m=w6mBbly&g&GnUkaRSN%>rhl^W68F~^ zPn-GVr1C_N!}x(xBkj?gJwtAL;B^I?{ppmG=KKZPnzq0FzR$4XBZv0PYZa`^1-AnS z`;m!$G1JWNx4Wwg%)E;{a_x6#+u))g|Ec6k1vC9WORcgYG^sIS zVD-y42agq)3ftg$&W~p-FXRtip^4;mr?k^3qlWUPstMgE>g1$ss%lTRZRcg6_nxsf!JlIuD;& z+a7JIW}!iGvrg9mVlY-u{wR^9S6dfXY&F>%yq&wU3~v@=0hb$r8Oj!i!cN+^WMGL3 z(>hq5BD@nO*}~Dm;9)e*XU4j7xr6z%(i^akcYWO~>@K3VZI)ut;=AIRgPkBtv^K)< zMz~b55@;hAUw>b+9_Uv;O^Yuxe58^`6~hL+AaCHI2MN^mjk}?I2~;D0Fe~x?WPaKG zbC^8^$d35ae+TR@cQ=!0LJ$EZFoGDFB^ch<1fiJ4|9nIs2dR5yeUzvL`a`INI>)Pkm+GIVRe%#D>%oXXSo z7%{nJX5%5sq?X}6@kj{3$jt*wAi=Qb0i9xkED$8`>=wK*(;&ONrSPaH{EIDh#Jw>X zRo1R@2_HP71z6(+O=ZKi9g$j0kGwwSe%$kGSko6g51EdPJZLT@zpU6JT-%;G{p?Gc zWv3vhjW9ZJ?y;pu12Ys?FnNLQ%L02+`B{;&_wmNU#WUr`AvEAQ+Tt3rBq#7(S@HUJ zfl3Tw+a^JjY>u4SmPz6RNKO2gTx))b{WIl0Z@@3ju~7B&Xl(r#$Q$=IqCx1RPT-!u z>QI}jr15$fG+M~>QljyA0s9oSyutLeqvU6S4hGos*eZkR{z~cYl!R-mIc!NcxbKw8 z0y=nLs70d&`w_LU)}?Kv-hmO0$ABa+IEH)3xc^Dc2!1#@qgrS0!meojrfzWs9_(7BZRm~K)8;cetFL#2<{vSW@@wPTojTQx^hGd=5 zTg%0Yy=S67tJQU`&vYT)qv#@Nbk6C_uOS6K+(XV%B`UeoV5%HhV89<9*pZ^Bh{iO4 z8h|Mh4QXD;b}v!1jW1m;y{hBo$QgX0$C)~`9C`Sb?YB5X%TJxUxZDn}a6?A=gs?7ISF_+%y$H zv0Jdxe%@Xp8yjD#QnRgm-IqB&E=)u(r6RR(RKV>8{G_@P5wBk)7n?Sll87U>=(--L zh$}{qQ4dGe`7HHBaK!aZTb))(+Wl!Bj~#sX%wx*Z*~R7D)n~(%S--{Ww~51xhY4W< zQ9hJ^wE%Y$Bfj@1?H|g^%Man62Y34i_sm8bIl&+)G^+=#Af8XHA=s))G9_A8HOl-` zjv9nO);!RUw=v^;VyJHGa@(B3{}Ol|IVvm3JEog66O4!qe6QT=F^KII(`A`_3a}>Z zu#Rw}lPpUs70p81XbIRcjzxv{I2UqqJrh#K@$pbs;7e7a(|fN;I=zI|gC)as)*2#_ z3`beb0{T6-_MwhlMmhX`3hKA|nuAjXL>=}W*3!?xqH}Eh|V@j*>rQlRpNc}{%M}oaKnqxe7t#SW96kauw4K^yS8X5 zj(`nTrN#fgc-?%)Rx_Xp(A;sx7> zDgC>t?QMDhH?&K;&UT^Ec_);m<+4inhGXOeKDz*ND@`;p4)jJ*iM!dgs?=3<%c4Sx z(vciY{t}yWHl~IvSr6c*pBw%t4zi)A{k``t$!06?W3}hX-A2!BQ;WKGzNwB5H>(pj zhXPESQ;BRjO5RhgVAv$tlQgV66`$cPxTKpSLXN`oShI=LPU7PefXk@ERByp+y{AXX^%I2pF+wVk;9ABx z2y<{`{^1jUbF=jfcmw6UrYWrKFrk9y+w)I-2D7) zQtMR`OY7}1`Ta8a{bj_%<(?3-7+4W5xmT=Lj?(-25iJ65V4RI?_~->D!uTok8o>{) z2YHye8&u?7K@(9IeAt%eH-y1zUBklKdYa4%+yTRw_3WhT{EF^o-khou8crHMn&nnaW)IAi6o+V*%Ca)w%_W2?d8SL_)F-gzDMo+C5E?Coad z_wR@R;fp(hk##s@tJ|UetL4X6V8wS{ZeEOj3zM+eX3AO0(?d|+9#V6+)&}ApekdE7Axqk@;lQBC7le7w;tA|n4}x&G82?v9tmR>X`grgo=&v&Eg2NZ+?D z^*L_hN8t$G$j&v#9o&#;jlQO#r(hT%cdx6esZOtP1}#>`!y8vl&Qd`;w1w~uG`@&& z&`;xX;=Ciw+b14$xS_nivvbdhr%*pbUIPjqO$^S*VHb8JDTy5C$N+^%OZ0>4cp;x4 zpPd4ILhpC%^O{HOOzYofSHUtXnd`(1(nWbpG6CRI+U;)|soKhiO(|i%H|T)y4QvEh z%8C%;(_vaP=LGFwarE^SX!X|j3BeW+cRnr*Q)>3U2)S6qPZ~&KYs@UogSYhlEf?KG z4LKc{LdCb_VDinv%AvdEQg5q=0R3PGU*$GI(*a}(`#dHziFuOjmb(8W$Q)=ZvBd=S z3Q1IOOdZFq`Q}xm5kDy+0+LNFykl0~{@-C43Y19s5Nxpf{!!bE>4M5jus>(E=?HAO z3G;v8BUj}D6ST@SFe1SNg9Rt;&&8VuI&30~(EgnMz8!O-{ zeT#W2tS^!6sGDrVWK$u;Rv9Rdm-$4^UK>rgmla8o^CRpd@~8|Sm@F!eNZGoh{SGpf zAm?WOb0KJ`nfK-gD51-bdIq=TD-(L{8T6RUokL;%-(N>OcIU@#cR#q}UcVuzrrFfaKHF)w+MhP~aRP{Iy!W~YuQx(T^-Ke#_UkO9fS7g3w=ZI~!gC`z(<)HFD3hJS$OvOix(AaX1?V6h+sX#0Q+#W(0_)lQn^Nz8`Z`zJ2!nAf*2 zQw_J9{~ZA|C|-WT7U~77Sg)4cCNwMKtCrxSX(=0l&&Bdq_=%PjPP+*7ZwFd$(Sh4@ z(4lO;dk!w(hR#8E8iD6uX-=gZJTLb3AI|j2g~s<>SU`t<0B^3UH}k)LIN#@#tZaf_ zTsoc?^3^z>!6#&f;1eA1@FC~jUm;$ik=VN*uvy=Pyu!gY^rHl)Wh0@!4q_4)L41kz z676*e-WLjKy`L1tGS;!bj64YyMpm{GQoZM`ocElkZ!&k~o8l6V>YIv+c5d8N?}YQV z1*ithhRcQ@1bowTXfyZa;pPQn78@P6XSUO1eHsf3k?r@J!`-oui;-#aNe6^op>7nm z)n`(!+l4PFeKzH%h6$Q=o}vXXM`(rW1j?PUxrn+?R_Rqe` z8|e8VDe3JTSW9ubKA&*qxfPP>r0u6S&#O+h^X+MELWV4b*;4a@#=87Q|7`h&6cpIjpTc*1A*4DywS}@#ohps>8|jWLtHvj9M8?8F`L11&^wPznME|E97Se zVEbd6?nPF^8eTb+G-ik2DqB=J%H@HBBgEv$m(o183+%jBNmNu+BH#Va2qg13Nm>+W zr33%?*dU!#xyf|qc~JZa69~s1+lA*ZY|?+?B9MNwDodNmc=O41c9XHbiep#?W}h8w zi)XwiD6be39~LL+JT-~eiLT3HUwQs++Xu#4 zuz@ShJ~kLSIE0Q}ztf&$$B-#)KA$DO+mu3=YB@rG! z^7(3bQ;JN&r}Lw1F=s)QMPjPe%fIDtrmEPO^n7w6J!KCZ9fpcw)stuqJg!uHHaS{FLer@onVRY?r1hduA6Sla`%AdeF~P|D2xTSbf|` zD1Qp)>`Vy+s4vDKU9ziR{u-cAIO3Xz6B!&FjOlyXIWaNe=jRt8aNK)%csO2{H(`O5 zkdUCsDa6muK)JU!ko=8HPKG)PU5YaD$)7?xod8AVs#^EE?wgL5O*yfxkf%-(D7T}I zk9rh`a(L$SUm|JWu|{f5Tmyzq)H;2m~rBS5Fj>x`}i{E_7Eg!UH9jQcouK( zFIpe4n-)F}F#S1Ds{48ZSl^<_G9o*$aq<|Gj8pDpnEya0&JY0*2~`$d}@W&pWWL{6EqbZ)|mo_bi4=`KJXy|RGGPbbp$TI8nt;k+!xEkBH z!E+dSI2OkZYg3OqW;3r2MW4&6jXYj)l|otZugY zfRiAFn!TMWD5R&nIp3RW_PiL&l4`wOWAR;jL_W${qE_U+&XMMzd$HeiP-}Bdg8+Q0 znIf1I+K^9U{6>#uVj#`v?l@5ss=e3jJ!XSJSG+XPRLl2*M&^+s zUOdIyg|_rA5SgE+UCrSO>C}`%{Je;5rc+)B@Qb@DvyqVA9-;FJ6W7hXy}Rp~Rz2Ul z&zN3IZ^^GmeIG7-4;EW}!MFbzjPq^v^z7_UaJhdCj*J4dRCN?Ex&kGB8*eENr&Leo z`zxdO>urLoK%aHH(1e*ZZkKX_o}=%;x8hJoysD{0RHf>cHUDbOW22S;9lrlNd;mUV zTkIHvV^T&qwaaWJ;-16u0TN0RURxDIAo1GBh2^HaxrD}*s&odjfS!Cs&e*|f&e0g6 z$6WOxpw->omD(yId+;0A4L4xVmB`YjATM9)wCY^|hr?OCw`4#}`~dZRxL@sw0DEue zY@7B-58R}@>D&PD@~2HO#36IjDiSO_!h|yucNL`JTElnNSHD67HdZ_uTk@NN%tP`+ zh@~$Lmtpc&ZHnQ=f*-f0opuA$%@B(OKQEM(CQI;8$Gm(8(eLFUeoxgO- zE~z+0hB!e>QB|VmOq_}~Zoa{BEox!RN7ua}Pnqy5uWRNmfh^a!!FlNw!J|(zhL2L> z$`ln8Mq0sWN&o6TL3TY-icGV~15_(!CJSRp<+^&&lI=K&*O^_@W~iqoR~f>(p6~HW z7Cf$o9SKoDlZ@=DhMV9(4LZvrQQi$%n_!!R;HM=<7RzBAY&)`$yC0O&;-NW1rQB6T zLImk6G0@TQ%?cA=wV*ABnq2(m1{tr$(!}PmlIF1o8>1Kg_hTJZ+J@|UFT%|o-g5Z0 zm7!1xpVs!2EyO_e7QRPd1Lh_}1WO2DnmIB<3uAEaq|k>hnj*7H&mxsTuQ;_7d5vg; zN+vWr%q7yk(WPZO=61B`D(0nULYIfS?ob(2u&$C?1tCf(T+LfB3 z%z{R8j|_ixp)37A)^})QfX1ooQ0!t26FX;UmpEvzvU+ppN)jl?e{u+34%1IeU95!G zx@5;Z%Rir;GbFF7B$2(VU7NZeZmJOXE#zGitY%u}?rxM{`Ij%}Ls(9CWASH?kEPdZ zCowqkif3=_?6$)b2`N`X>pIN*eU>aj?zPAl)Wu=gb8vz=wc}%3#R*)&T$=T~iAQac zZ$E)9!~A8VW$?SZua2|^@RSr6=4v9AybIQ+eiWm)L&{luk#NwW&hF~$0KP3BGuPvc zv@#jSS;}79Yb$i0{+5ZEP;GUp;DZw^S%TCbzax8qLs2fqu>+n$$Bejx+6F%Sg+ zK*VY*+!P%i78Hi3pYIl+r8te(iSdFa-$kR@qH01}e}54lsin}|Dh@936Vn@OY!VMs z$ya9)Q&1)RX&(H8#h9kqM<^$KY0x_mp2jZ-j%D2c8m?i$2DqR6_wSYPoYhypa;y>H zDapq?Qy^gZN|~aTmb+A$cor&m1ZhUN*M3j{l9$+nt^vC+( zo8+&Q zO}_l}u-RT@s<}&v74Runxf>-SoZOxDS&rsr#;bL;Q}?-GV0{Q#FD z*WncW$fFf=Sp_Xi2vz}d%#Sqiyt>oC!WNMJ4Q#dmM#mYs_SC1_mD87mf~q--v1psFn4=c~6h0oqWc{&xiD5Lz2kvm_X- z4bg-0EeMgI{QQJ-Oq5Cs@|!ki_@_GsyLcz?>Q!}BiO{X!>amJ@E}%{Ne;51fIb>{H zGLVoIgSU}nQa)DFaX33@GL5=-_7(VDvz???i%$Tc6bXS0)P|B_49mb11@b;&qkK~x z1y{*yKi2sC6ef3M7N@(>y>F~h+ny-wn_n;{k3kB`M%8(oxCPM=jN=q)%4 zXLhNW-t>)U>~D^Ku%0O-CkFIz{zx6bop>mF)rB5&B*8G3QkFbVyjZtAbdI)P{El#H zr7)9ufp}(|H-WL9qsUVcs7L$r{D3uMp0t#HVXBZWUm{y$mWPgtGf%!8FG0wDF}X)m z6c1JSAU)YI`U@=0EqF^VXq`}ocZ3y(SmJJ>1a7(b!B+2ex%3~*5Y6fS`*##3Wvohq zj*U*$EVVX55N*prcB5EgK}|l~F~ghjI=Zsdot9{VHxj}J$lr1aQD1onH(WGY1_hCO z4A^4)jEY&k!z;Y(I$Bx&!ox3|88mKihB4d36@dN`P!Bml{_~OF={7pRuMZn*=H#F` zb?Qqgxy<>&LohSJ;QfW5F;7M+Hzm}7u!TLhT6@8-V&SVL)57AkN-9YzNm3HMc(P?W zi8NzD-G$Vu#ar=yA5rlY$?d{crS<{Rp#xzhfqVu@h=O^@Iitv zd0Vdd9|3DaQ9ehb#GYCmum#tvVA0(K#2`X(Aeb8u8|L?#s$)i4pyuh{hNu&=koGrK zy(-XV%$Yy#;C&SQ4dk*@wNOT{pYBhuiV()~_^YT`fd+_p~OFFM5%h^?XJ_H>_AJU!<>j7zWME-%~3inUvNOIvC6zJin658c7qX_x1Wv zJ}_*ZP?+l2ISa<)KdFc#C!}r#uSJR{`A2=u(0kVwwm|QuU~IlcEirk0fava;dt!NT z_~<`D{3KVjG)%@Iz@v5>Kxru+L7%aWq{`wXqu0WdNc!tLdJ;{T>@-D;F{OW0|ZcPp3zjK`?yLV`by2&c;xj`zi&h}Q;B0D@_A&-X6^NFFX2;M zrKYMM{M$&c-kTh}Lq3qP~RYqJzqa0V| zu4hU*J!LnV1#Fa(a^>qo6NQdJDJ7-L@tT4PZr5~FZEEqumW9vqEv!T5>dcE&b!w-J zWsXbuDd@Y@-1Gnd|7F`FP}${KROLN0NO)#J+3GloPu)~T0S}u?4Euzjrygc=!=e0LdGVpr(W)76KAD6p+UJNhtTHSkf05w z2McxD+%AdiZ9F;01d9i}*5n$gOs$o(7lt$NwsM2;L-Unr@?)FD zWEbtX*lb*$(b#?~bb+yi^txGaT18YR2@(~V^^&!S)K2n_4AXvij-X9_rx{~L&<3~rY@GM6DW-=i5?|s#zCpyw(W6Mu52fYiNVxYtt+Gq9L@GPY3Uzu!_{4z?;LYi8b zLe3ICjA^Ov{pju9> z(6ke6WCl@Uhk)2>E7W!`)K2+>TR$}wBv%xn68}kK@YZXitHigi6wqXd9wv58`Fd5UX z0?{7qve%N-R>sM*dw0LO78jaKz}INleFjlCZqwUucUu^>y<1z5(tlHwFHPvrBH(Jd zi1Buzc}twV@!)HF?fK<+9aL>KrxRz213agp$H%5-1#yRterubL<8Sr?htGd<$!0vZ z5BN`Jhh+DtX!1?}Uv*a=4rTlAhgKv}_GLPw5FxV0nAD)xlHG`GEy9p(LY6_jA;M3+ zvJ^tdHe?x$wMANteV091#?IKsoco#H-|w9Fy3Tp8bN)DgocX6NGxI#(`@X-+=l*;@ z_cKpKlncOaMut?CnA&!tR%Ae`{QZ*vPrF(A5p=J!@aC7#;=hb*3#TL zDQuVJ)$7}aD7@X{n7ybFLViFI{JUz0GV)rVw_7~{`vrG4-nNF7*8N5G8L$OVqr{Iy zK{m(5oF^@%lVHzlL+J~_GQs*1e_3MiE=5>2+DGdkd!yNjM)sGv0|#u{wLbEWu-Tk9 z8+=0eqbhJ;l{seR=LutJx1=itj~(;mP;1|8J^R&uP(CS8ho#*TMiv!GmPkcgf%%ey zJlVdSa%QFHOK#UF2y~AF_<)IkFko?iWx6PWG#%!$u1%aAa<-AHZR6zBGBY>EYTg!3 zkYS^>VYuD09*-yIJqECWV%|EydMS9IN`<1|wHqlpoBNd$wU)UpZ@Mh4m@VblDC-}3 ze#GJ!OeXZ#)tw?`5TToh3`v)PIsF$Y4t&2O@-o2Q#d+!h5#JjcN#N6*4lfCOP^9B~ z)AUr|(*%^QiV>S6)p19YuUSQQCUV(iQvVJvYJFDxF#4krJE!Mmodog{m8n3Hk?b9B zVjmYEjVAPrmzR`$GmfL|fTo^qH zfey!;c^1L0I>)vr8bAD2I@I$lIpcmh26rcF_-K~nEyM^$P1;OT>5U!yS}@oj{%$u$J4f!z&1Cz@hZD{ zWEI(HUY**uLU009R2q!t^Hz|@L{IW41jBog7)LEOIawsGBh{f=7pcMlQ zXP=v^ta}|Hb8*Vz67F`KsQo4Y_`D$t`t!c4oNvpVUi5c6`pDfEX~15B!0^TMESKo6 zw_P**#SYW9-c_c?OuxOj`?_BvZJ2VxSl$BDD9cj=x-f)x^!6JDd7yW9^sJjMX3Z;>}bj;CLTE`e0C57EK)YIVXALJBC;m0nXrsruV-)x^&F6g(q(UT+)$sxO; z(WvwkVd8P8SE4~G1E&-Ay+PHEAM|ZxuJaSd6CAO}`!|PEr`xQA1pb5_ubf{>!=>(f zPf3aI+*ISyKx$0s$0lgg+N^Uc>cqDFoXb$eoAWLdhzux*cnR)1!=e|xpUaHq)h&B_ zLiFL=6gg?neh#J(Jw{o6rMj7}Y>W)Z!`%Xu+t+-7-kfHi>gUZ>rryK);Z?V*Hnu_3 z8K`|alQF0J-GiW>9mx}cvK1f?h~9|E)jl{s#9taPf0X^7Ll$CPaFs|e6z9#_ApOzq zNtA!?ot?nGbi4i^&tra%v+ZQ%Hr~Fe=AYSLqjsKeuuwu*U+*KeETgU9XoKXR2B~P8 zqjC4PZZ8cK#8jqAlB)9TVw~PSdg0ab`nZ`ZlE3pQ#V99x+Rd@|g3#fM`3xNRO7%^o z7($azrrMlSnjrp6d#CZM-+QMh7f*xk+J-ZJ;2HxW^^VxU#qAz8SpE|zafbXfazAOe zs`u?~;dWMpBgaRdsQvh9Fqsr+pP$hPD7ma~p%6#LKK!D0G4+;N6bO^{Z;ez8k}UGO zZA(h?fT-Gd?|`;fw$Iznf${LvbgSP)pDA6q&nny?_KQMLJ>ct8;zOJ!-w(yQSX{?a zVvZKHGtcB>KZ_6!W*u)dZYpYwF3Yvj@u z`qi4|=74MgTdgyhwe49<4Fe2ZR2G?M=b!8U6F1{zha23z;hLP0^TbClDjGDY8b2o@ zlS`Tr=~5%J4e7o z5H?!EsK$jEieDI*xzhv9idMN6_eNW2{EpTIdIDcD>0k7>2QeZIVYC zPjHIAk*@A$PXPrfFODkB3iJ52g)2nd#@(8ad!Ss6GvzyYKv^8I=5;89J&M7~NDdSb zA{;Ta4jlCoU)btI-KMO0>vsB}qmPz_-z5=Po5xvEkPq4FCuWF6}~ zp6p~hZBg_76;h~u4)8b81Ws5ng0VtuVB-^%t1Lz(Ub}<%BfTInm6hkGh7$;hp2)&8R+$uL*!6=D4fBedKQGBbO~B>=Y*g{p zW6**EFM|-sX5a+J?OBnKFG%@Uy*xj;-(2gD#MI_Qn=ltek_43@FB`IGQlkVjELJP`0tu#73Q~-@-?juBd@fR z3j=ImA$p8RE)!DrK%;HOoOQL#w9I62Jr!VRw}06jlb(#=il~_DF?wLcY$MnEpWeEv zua_5TwXCbjcXr5XWd*_2+exwIg^im0niL(=GM`fAW5Hil;bCL%4elDfxF-f0suSEU5}?F??^GdnfD%>$Csmte=g@ zV?PA-6_b5)05QlY(hgKmKB90PAZ zQP?>(YcOdt|7hx}p}`NWAK>5lYKJT6r!#$u%15(0KKi}-!kGQy3pH&> z^$lF3EU2wI)WmE)Jcxu6__p^#m&Xcwn2QqWQ;*46v*2}ljKplA&dIl*8eQICK0vN{99*7@D_ccTY+?g$>1T~2Evc5 zy0-Y1ln(AvHF=e^VJ)=j+QR1$f+gTmrY8j~9rBY>WPUp8w!f)5SKE7U{nYUp%dEK? zTq+%L@jS!*?72bd1CjH(T};oa=S<|&u0g;jcrTb;cEK8)H*MriRg3@n5vp!Pr5!L= z28KL6_2*!iXhuabH(HfK+>q!gu{I!c0nYhaZ?ctj;cR4tvoyWAz+o0K-c@t2kfnjb zXm&J68lk!4JRTJ~@I^*^ZJfH$!ES&KY_;>jjviXwfjRNKyv!I<1}UXn$3^pge_?qs zL_;LkwwRZfm|Y+)hNWMsBhB>$)|G(&o|5{)WWb2n5c4)ipEDUhhWKSYc-&T)eOr=@ zPn>r1QG8A8>1t0YLuhMYzE1Jb^GsyA9mUv^v)AwbruXg^y z%$N7WltaGr^HFHBb^^<&BExI#@2xfYRHjQICbEoKxNSO-BgapJ>M3k7V()qv`T(8e&iUj1^*YpNv$AulKA`Lj7mJ7J%F zCS`V3fRFE3TxX6UXgVvAgkXY0qoekB?&L%WsreKbNfb<_r}>RPu3jKvk+Bg5v9MsR zIy!ApEe5P-2zdrH)9KqqbV-D}-v>ebBnF?wup||~Jp;*95Gy~G>$kQkMeaCNm=dW8 z9=uyMmHJFu->IHLsGbGSJj#D`W)1TrHDJLR$I_5ZeU`TST4WSRCAJ{JY_!aw2JI=* zU1YV`B~V^&^06#X~;H6{p%jVeD4`U|>1- z2x{NJLVn>*=r0Uk2mMWEMgs%%kwb>3nPFua%gf7)L5l%E(9t~UH9tQOq%gqzkyK;= z&%8yUMLliaoj!L51vDRn74G$W+mw-YVuf>Z&p(ox6ojVs!x9?04_GnTOfwZ!KyCu5 z5Ccbe;|K)8b(txZm<$Q`;GMydtrp*wMI}W=YOZ0>?2j+c5Kncpe*XN4zBN)81mF6s z!}S=Q8F{Ep;^lGJb!H5&6X!tM?w2$L(m|N?t-E&@GU2p0Q}=zpdp3!qw!TyVqkxTR zZiB5T`fmE=@b!hE!J#3WkyS{P8!Lh&`7RE(;@3+#)R!8d$scV91&V|zuPWub<>+V{ z53C0cESDOaWiEVpXOyWRAM)IoiMjsLseSOxi(=0>K?imLNK672s>F|cpaT{3n?;`= zpW_}L;`lVN9E)Ge6c!dnboBOaEXM|4?<^Bf^}FHaRT4MC)Igee2^;0ABr&#TmYAkk zIBy)}lkFcID~5aqcP%)#z8K;W2<4H$)%RPjLqkIW>vJq0mhJ$(Ezo$_?;HKg_fx0t z;c#mk8?pk*M=qmhV+oHx_w^-4d`aOJCjHT1A+o4HJ!megItr))EmC9q!E>qBjbSAM~RI78^qM0UbVF3{k%kZ&{?5ka-;K^BnBZ$q<#5Wm-|wop0o5Ukd2+E(Bm)^2CO)DU?ZQ89wwdB~yB*WF#d zG@qm|mhg=`s!qdmIx($%eQ#96VU-F5nKlFn)t-+)8cmw> ztGd4TQCvd~i3|cRS-(-cSXi`J(lt6dTH30yv%A_l;@Kq3*2E#CauNYfFW68YFuC6P z>w@7oKfqJfd>4McaL3bkM(R82ix5C`RT1&|e5-nCai+dT8p?0!m2)!if(xNsZp0 zbH%a4tR5}yKw-aIpQ%S(U&qrZc187d9%JvrHP+HWDzZGQq@vPNOV7F4!)# z=c6i9LkWlwy)lS#122ORhAQIk;qAZDtylEQSrKytWv7pKb!YxJNezSE`ibj z4t+V}z^4TA6Rf8jTy{Oiw`QWGdVZjs0?q)y-D{~mSuggW11>;U#1Dtttw#q11wrSF zf~UZ#qLT2+dEy{`yECnB={*}zC)dukfF#{G6D12!ZTb zXDS&VBdoS=T~D~fj>l{i~&V+ zUC@pNseFO70B%{CHv(qI)k__yTN`eG(T@NFC`C|>-dfhpS^;C~+z1*Zf=aubwYtRq z!4Hxd`UY?KB1|OX>y{qLo*hWHJgY%l>rA8XPWjFcP=7o#Bupj%hk3#73%E4PPe8EQ z*4CD5niC_W$`zKLA%R#SyW>|umP4#8ec%|ubs9+3ZtU$WLM1E!l!3)y`VN625M~VD z2tvhODKMnLVD_sFKm3NpVvon&cxx#cKPzgt^%a9YB@nH#J)N0=UxZF6-6`!ilccV7 z8p;YSUIV{tMlcuy-}Q!Akm4gvp1=YGf<~iJ#eD9xyv&XL9!#g%*w`fCcR-%-Uja2w z+;G@u&~5c0`0X`I`>{+a7zg;_8PH+k58loRwz5kN0>zLT2d8f~QF%p0McJhQOHy_& zHS`c{G?+{#3nTs4q<~>4S|_So2fw(1FWMV#PC8HJ1&PH?-xD}cIn@6tqzo;qwkzM6clbM;hcf-|njzl3?=Wv0&h^;0VL>U1TISLRs zlisHU1O!lIKYjWnQ|-+c2F&o)Iu)-w1o9)s=HCGAqYecy=0^g4CSg|gsPF|`e@ZOy zY+^;N0eYcoN(6e_l3Ts;5Uhc_zc#=(IJiDSeZB7{K!nw6EvwiTn_wChYs(M73_Ap7 z2wl)wv8XHMR{+vyVO%rM{V7kYlRAN{I|()5H{!2wwj9o{9NpN zd)fF8)10e8Akm}luiOf1h0bX~nNq+SWR*UBD23H1K_|6dk{#*Ov3pJ~F0){f?P#+Y z-g*1MbzTq|sLh8crz`h?`;|iOx0GB

    z=?8Rw!q-lU#Z?1zKAIJT%zu^I%&kDNTp?1TVmPCS)ALPz_AjH}eBMh!*-$1oQiHg+ z?yr|4fRW>BjGoP+@B(_J@#T5A5=XQZ1)` z)5C-btG(~F6?4gwMeU4rxR_cZolF{6lxk33(fxizUBAho^ZK8dpjb89`Z8HcY_~Ds zd-3ae4r|M&UG?L{f{g{=dS;RIQOc?+vmoAkC^8t>s=L*X=lH*? zn8uJeOU(av(uu}c;u@mj^e`hRJ6U!oRVQhDajRFCb#%3u`(Uurx5u;fO0!s&nGoa< zzSaNP+2YO?fa+`rgda=}Oo{@Oau|4{VJ8&7lS?Ct+_J(aC@O6UO>56;oqf&(F0zdO z&g<1&AE$o@D#mxkB*ppfnT2G_5v*>%rZV>$(un4Lfv5MwQulv=uJ!SkluhIMbSB8X zd1K?N{EugGs^Jk^{f?Dqi!Cuo%6T9$6^!rmncJ1dwN!6g^Z(pdzkiKFk+6jUp)Dz= z?u^)~E2w&PY(-@f@Jk|-x$UrmMjC#0{oDK#9bROp{F%DX&*RSr=k%QvGu5s&BxG0X zY;c!SQ+&!^al8`%8C5TRGxb^UInXdcdfcb5q9QIvaP7j0d= zE!?}~Y!F&6*3J|8u5t0<^ZT7XH0;8-jVcbe!JpEbz>EiIL$HOd+DyFb%=F!-oT6VX zy2KAEJS#D;5gL_#xf4 zd9Nd?BVn(UN6Z-llGl3jo|6Rc&9M~MrL{}@x_puvUczc>*c18_ONp9YDas;-OpG+d zY))89kdM!e94NWp%BX2**ujf_snDH?;uk?7(Uk@b2;074$YM`lB8-sF_3Bu5J}rm^!jwM|zYf+ZpTEh8!U0nXSgebV2hASC zw|CY7IHbF2+qKYY$nOeUF@jJ4V-85~x_e8Pr^MM!;p=kb;Fw?Cs5iJ7HSvc>{)@(Rj6aTdl{!}HwSQRWyDB*GcRcn*0JV{U|iSi|4kS^ zvom4&CtbMR&!us}$K^#ojx7yP<19T|V7g*v?DO1MYLE2-7jEPwj#7yyO&Ie5;pJ6I=GfD?3O#!fFm zscY8S=>&`sGyOrSuO;W&hbA5lGJ@`;0DTQ0Y+%Qs zvnLN3ceQ;zg$ycYWSTL-wdxfEk!nfUFlY_#@0~&h&3nx6w)Tz;luPb*%#OR)4j)i~ zW#ruF#jNkXg6GM^hlZI+YAzP5%j%|;roqc~RnQ+7TFk3fsAL}Z9*C*T-DD8RF{6;YVS zx;#JmdwEWR$}T;|Y3nbJ7nW4_H|k#>dH8LNnlJ~D(}blGi++MP@l-*gzzD@B45qQx zfw7bMb8f8ya*N~lQEaAA7sc+(Pfu17x|KT-km}eqwPlgdxzX;8(1p&>UaB|YHRvS0 z9Amn{s6X-X0!So%C{@wVpxP?P(kYPvay-Gl87bKmkvY|8i%@>h>3>iOfTH6eZ}15Frkp(h3#jcwsY>`IQiFnnQ0 zNlac>!atryUUlh6L5PQmploxx_=rBydTcPgot%vP{8@5exX{~cfJm;>TXLaa&Gia# z8~Y=#4tf36k+`?vh;{iE2yH4T)z2>BI*lmXtvu>?yggs#=(hw!CKvPixu^^ENd?`R zfj2qNKqa$V(b#BNB!8nFA1(tB!4&x`ldhk7)Q)`XPt!ZvPWDe;`+WK!NSC5CB}5V; zdU`%_GE~=W-f?{jVMG)9$996d44>d-BQyW)EWQ8hEYDbP0EUb$lk}^ioV98x#vsZe z*|jb!3EV-r?$_Bs%&C1;ax~BljGdRXyz;j!{4(qe!XF?Ri{HaI_-4o4bG&1*pd;Ix84&>U`Pj!tMT5r_pj+;Sm7# zIE#l_HO@xG%y-ootzf+QKP^CUy-_^Tx9K>rVt_uo@v>KK*4?oXtMO29=C(r`)-wlG zhP|3!B*V^shTLK)7P{Pc1m_*eBelon2QXB&&dtN8(yA!(cw^=%ukr{QF#S$??gYwv zbH>nu*!pFb*G*RofFcx#Bg%R9o!v^I=XvtZw~l9oG8ko@edqY*Xn|BB(LLK<$f5P*hnoX9$GbE1FxO@)>JpQ zZ#nCt9|rr`PgwK6bZ-zi!_2Q)$IVB@-|(9Fbu`X}*-o@mz`x%l_WRP8&2U8dnU|dl zo!N@SO-@~_%9kV8Hmk;q16)bzpW@13G4MAi9zQ)bY?8e{u+xly05a1Tffv4a<^lRE z2YI^b@V@S%FN=^L%|8Wt_;|g-7v1r#8zS9A=*joYLl?YC-a1m#Baf?%N=0zf-OX-Y zdK61bxmJC#E8_1AaEX`vXfpJ8K3zH%Sqk{`_3`d};7;bHMpXWUS@C&P5Hy#@LpV9sc| zv$rcm&7Ak)(xgsPd9cE_CK~V`Z%nj(5_239k9X)%dfGa&gFguF)r#Qj>3MJh%jw^} z<`A#8>8M~UpQ|=Wu)1{<=O)nh4QiubqFA*?R44un20^mh0C} zLHv~$|6aVs5f@>&-%{L~p%bMOlms(M`*@ulFw4bv{R8t527Y+RP}Oj>$C-=?Pl-LjO*b8WnubxM85UK!@ z>B)bR>D9&2$hFHhsfX**1A9}sMl;&{a#i?x0`4CA%2_{fTwu2kkRXnAKSWUUkRv%w z#mi$z)U_LxceJNc6q{s*rG#DQs8c$xYsNi#5`FwK*m!BYxswZX^tFBE92TmUlT^YT zwBbEYkHK+}7g&@64z`OSM4H8pzsD4$$}Z-IbjqB$lkhZncC|dZE}x8L!r4#ZTHqVc-IhH`#&uNco=Mh{D@>+3y(jPa1G&%0 z|N4);#eamSCl*Nfj%@r^cMI}1nR-t7k|5eItcfhR6BIkG?(Z+L>80CX4(=J}&m2G$ zp|7T_VOn?JUardZgN_S!&FSXw-s=0t4%d=rn^349087#6bNQM)jls7I`hs8CD-DZ!73qi2k+Hm? zI5;y}Ayw(DAX=H};~ZqE;6`~8g)sP}$%-HNFV-(9x1n^>>|hRlp?$h7G6`gZL)~$X zEmj{r=7ce_)N7yZ<>ZZjhZzyc&7Hk1TOe1M`$3*f_H3NwcF3w$DlT3X15EjBPdMEr zr(SX-tzJoG5A6}3a8D%2AB|N7^mSPLV?Cp6Ixx9%;1u-0_G#Ym(o^O&#WX)vfpH($STi?%i%f%QRmIPKNl7 z3#r;(6OD|02bO|>6}I9+&%9n1&eWcqt7=$ot=gc69p~#CFg0AsMPGe)WB)4{oLJJt zyLHI}c^2pufjR!CA{SEc3nJo1RVQJ@l==Js`hC zqG0y7Fba5Vcv@ed(GfyyKiw)Wu*hf{ys0aBG;Jsu$Otvsl(Zp4G*%69nh86Zuk(B*jt2Th#K=@MP85vtpO(p- zWD5#iSA!9VIpEdsDsV-Ou_cjU#uthq^LjWt=0kqFFKYxUSJ^%(m-xBk`QA;p3!pc= zC3RKkhs7=HRJbY()HSPS4qG%ZZg!uUKpa`0+Q@k%@@MVFENrMMz^)Sc&QaYx71(16 zlF9VDHMyB&*Z>`i&RUpoJXDhdRf2T0d)y8FN44_5$twVz1o?Ne&{D-3L*GB@f7;Iu zNhDOjYbn>~3HN!ak$!*~RT71yhCBS`IHa+??RUGR=AE&5>fFX%*X-ML>DcF06{J!P ziT9zIUf$<#lM`N0K&MI)qFimw?^*}qmcwGbS`NSOn^j8zDkzyo*dNVTBV6Io(R+)+ zu5aNNBQh^RoF-GXeSAJQIS-V3hB%!lhdLY6#^LN2jb_}V9VMAw0&|CfA#514q3_>v z49<6bpj!`Q#)G1YQRU|nkm=-T{S4=i97j@mYkO^4Z=s2IVzlg~r^L*GO<1~elnsEQ z`%b>sNKJC?ZBpX}SEtriY3JU8+@a>M9EFkQzn;pIvjc70*PYA7yO>~6CVYUfxG=#j zpu)v#j9lpACMx|gLy$*DHS~OE`Qf%5t&a(0avF7bSR}nVZJs=$c(~i(wi*my&$H&` zvlf1c58?eu%-z92%c04c;iGdelg7rV(lsl>XjuPZd^2kN>Grn4@K6Jh0bq@RCV|Qo zANb}D;I|GOUUn-3$|=8?2Ko3w;FNQI*sUI=0&zYnqd3OvTN&00d@(s$G)B19@A&iU z&b#x7I_B}eV|zdvG;oA-D{29=?NAK^9Td27>uqf6yi{ARL^ImOGOo2jXrZ~JnoI@Hlb(JFipd9TYzpHn$c+ngM1Vk8HGG3O5NRz=N zl>pR0e!@!KelK;TdnX ztjO;?WJ=PaOZQIyXxO;_%|100xXLpgzMC51T%gbn!^X!!^u`v15FjEXn)WncG#3+- z=8#A8dZhm7PHYESt*gAJO@Qq2EPFDok#(DT6(f|Azt3Fqyhixd-bX$)o?nGX)M9DF6Cp} z-~3hJ8reUUahgm-O()xBrx&h)8`%9%PHzqsCVgq{_q)PpQYuB&ZFYN`8Fub=2tabS zihmt4&I@;N@+m&%QN`i0(^ozlEAW}yPiefQU4gs2QsXJQ4ES1(N3s=06}6RJe_ zhsl`VaIcOUUaD13Vl=lm#b1uJpUu(T1n4tNakl)DrficLqVm0;5`yE`kxbPZJP=sD z(bp>iirnF%e(}^K#ILNT6KQ^bQgx1bC^NWOVj(`Z!@dMYw;&P(^ zxMQc5=j5YZvl-`cJPj91nXuu=Ca1W=_Q0J0e214;gv@?1LsPA}TBC=!CeU0_E}rwH zYHYj;9=#PFNB^}1l+5!cRgE(MC){A;fHJ87kS5YhyTn&(76OFjGvK?XZ<5GPPW(|^ zQ&YEUx3q4qc6|agXYRx5g;hYdDq~ggBy2sdocZ8El$4_@|434%+jd}XF2irQ%W#0b zZv4sf(=-rmm)t@EaI^+mtQE_a_poJ=m-ic|M`zEJf1?s<90E1;pWzD8|G(;t93VYB zpV4mI%~!H|f9+Dz;EcC_co!oJfj4pfh{k1QP>-!d2mzp@i1m%e)b4@Ng6u%O%9KIz zA1(3R>k(PF%%tME675!sE8=`6qbd?)F0nqW-H5( z2_cTe1?B)p9m2Ax)Teqh>3hh`F{%%uzfFKrZu_@Dw%?hl^3-Ku)uw%cc;qSb1x+RHDeKM+U%EgZT zALO$h>}MdK7^qNdpqNp}oei{XG)P9g#~h-~<#dirfviC^%cI2Oull+4kw9XV2dz;>k49pf$&$G;TfY_Edal8;%U?HQ(*BSKhflMyGKeZUNK|ie3FjAjY zQbso76g;N~xMvwk-2S^3vTjl#vd8k)t{7Tyje@4n#wILe;=mq5-&)fRC7 zEvVVFhES$K23^NZXe`H|azH$ZLvxc1d^rn~`mOw+E`AOI1dK0Cqhx(oM8=p2We58N z1tTsOCPbNFIVz&ytAus`XGPM2+|65yRlg!YL5nR;f9W?=L0<*Xd^H)VKMH4Wm|tu@ z-doKZR&$^3W^=p{COl!-Q7$E@8*U@S&^Uvbk1rQnzF6>udmKG;mZzWT`|Jf$deLTF zs&+mcX16>}bKv-II(I@xLDHyv^_r|KMYdktLWG6OrMR8>P_z# zkW!VMiu?WAr=r#|%1GEFyH&$F%J;c9++e^4P*rS{=#)=FUZTZj;|!t@RVkIGd48fT z!Uqe*J!60MO|op?A3X;M7!~y|uq8h6m%S`F18b@%+5DBNITESyRm^lqgu1TY6qNofE69pn;u=&d~%n8fI|VQuB^c96ctk zH~HKT;j+j_BD8E5;_GyzI1WfPZI|>H7py{jGwAe`(Lp$nH)U(*>5SW@E(}2~PR|j5 zJ0TCco&NKXbJcDP+%^m-OJ8=mv)s~{K^JUl^+zr^XnM%>4xIrM$W>`&%%1KasG z{lB!_BtI=@_ZLGjBue;`+0@}nf48?C9BP*n#2A>W$b>X2-;|kjAPB>gR;bR`b03xl zSN)5pM$>b@9icfQT;#yfJ!V#IZ@->Q_}ZTxuGMLl#ttao8a_R409~LD6>&W{dD?W^qoB z_`K~d`=|<Hccaj##>e5Da(&}ykJ;Zk+cdrt==*GnxWi9qHB&7YB9#wQq0Ud&1NNy1u_G!0m4 z3n1PE`=CylMjm?>1QajXHnv`NnT*Pa>VW=$)+YB}qvz?(gzWrc`BNo6Ikc|-CQBCZ z-v|gySG>{vO8?cCN_2Ow`4qr;cIXS=l5|XP56|n#l%aX!Igx`nZRa455Z#s|dfj(y zR+_}9N_k2@^r~;k^3HO2!Y<#wBtXFrr^xrkDPPuRNIq>?vPT9b?>Ai;&3b96AV~8a z+T$`*-qI8bENMQkvfC0Cj=IeDxYE~QD&~sCqa>yk3fWRGUBKAwD@0`!CZVUQwmfuQ zdnF1xLUlT)~+sxY#DRsNQLrw28!G;WG2|p*Us=MijWxgSb>673p#l zxP|F6D_Ykvb=mdWE7S59jOM^|`vsu?MYUuuOv)TSHT>}i5tFwEgr6R!o15cf>X3*_ zdC=Si`OEcaF-}GarUcqOKpNk6=o_p4N+Sc1eq?!EeL7s=l#1)7#lD`RM?q<_n%%y| z4~s2lj9|4YLf6=(6<(s{ezWJ}H`T-VYe~2lg$$DG z|7KkL*AM${X-T1QIg<{Z8Wn-@xlK7TH_wOvw2c_){g*mnLoJ<>Vz$1-D}Go{+tNCk zR0+?Pn!3m1xvhKQhs?m{avEh%Z_X4sWDsX&U}t_Y15m1WXfTHBjfbmQsl}Ad6uJoxM<3fqo8|@^Eb8fZF>ag+b!wqwHZ{58|tUu-JZ26`aMkzrjKgu zEJ_$cZp`+~{0dczn7n0J#p!UrrDAfT7n85?XL=+r@IjMn&Sgsr+zbQ*uBKXzuPl1B?D9`)p6r=>v@xu)Wf~!uA?xh02l2DUy9Qm(-AXy_+Mm*jGmO|*T=Q^i%yS07$Mbkyw_OPNm z;Kx`?IqAQXUsUpKY6|Cg|7(+}@2Dt9z3y2=30qz+yt1p@-GHkVKkmySfg_{zW%4HLn^Y9|aUU#XTuGO4VHzwK)9 z@K9mEEz%l3{i3h3mecs*5SrgwrxJ$;ya?a33SVRVY}9d&Ak+kN?BDU&@o3EKC6)O- z+>{$zlN_;SkYdq-7bX%?4(u9Q4#L*okUs&=T)XQ%;rqVbzQwN~-o*ppbIW>67O%eoCzA%SqmkLN6h2{v0%9vL zY(}M@57AEKi1f(0mO&Kmwmpy^E>CEk8eG797PWSni$6Rgh2rO4n48Wd>tWM0sRQJ4 z4RIwqFA0<3hbJ&Zb*u3}^QR#zQkgXzvezeFoo*M#;|X|471Kk6^jP@zc<7Y#^tmQ| z57(NrcDCFZ87IdjJ%@jJvG5~f(?4vb=WjXvy~?rk%CUyn>qbL6adQM@jSEk33J_HpW#zla?|Lz;SZwUlgmV)5|Kl`p1aB{NJ?o4=}gP z2mdL5a!7Ick2hbhnj6FVOJDnig^zpUHu0)jFJ8G)EuJ`&Nx=3V_H&Y6gIc?05Ql5~bl>nR9Y9NZDGP?$lRt0d>a#>H;7Z-G<%%wE)M1vX}@8PuRmYueSouU?2|2 zKRDdF%v@jdX$0jMLt~ZX_0xO3_oyme%LvDdTj^M&^x(w=3NBk-$fF9~GA*aAncH_Z zkv!7`eyNfktLl#Wqv(b3?yFX{E8ybvTTP)b3MkY7nTTYD=R$V`O@^l#w7 zK^aVn#_i@R<1$7GhnD(&!*#N(%9}3db2sd86grdt6T3U}QG6`gC%SuOH*q-;^an z;vI(HBLnw|*1sclGlXe>5q^qTE=NSnbe$cJt;5PHut~~P%8iU8<9Xq?yW3qvXmvOD z-X)FAK$oI125zuVbmEKMZ)Mx<^fz2Zt#(R*n{J4TeL0UAXz>OieSjAq`YSER+JzrI zNE}R^XrixatBKvpD?fc5ufr!gul+VY=UJgT*F5=+iKlu8od<^ zas%=JgpM|TSnvmnprdz@-+R|BWRV`aA>KTb$h8||m~~3M5j3R=Q-v!f&lWd`SoY!G z!Jp=DcWd-P;)E=XIATCc5u7{Fus;0mbvJ!;KaBsWpiH~Iz5%A+q~Qe!P=bX)(4piu z%4N!oh(X>BM*G@u9y_+yebfJh28jIr->fArZ@&dKkZP%huxZ_rK8`^` za!ZT{3CrIR$?w1Kw=xX)8UYXW2nDrSqw~YYt3p|Rr}i$5JUBt!m~^OdmATh+C$|hf z_&s`chH{SDyfEcjNhrlKZu3~2Uof5^6=N_`{TZGda@^*E1$y~T?_!e2G{xoRJ$=`!Qm2*q>t2YWpcpLwAnqKo_qiH%1&37`4 zpAH=d2}*rF*nG#Z&i|nSGJ4YHc^y2SmGO8_J`;m|_l=yK9E-gxBW#cXM`Z?ax|yb1 z>}^4sX@mtPUI$agQsgNSOzJQZLEPd`d)ip(wr@Y1wrdwp!C8{WYHRcBcGn;m3Clu0 z4)%Trx1?gyugf+)%2m5x zVV0c7g$aKgU#RC}M$n2Kw<%`LA}||7uIt&MbXfS_z7RBhd%<&g{Tfmf5KdPHx;@_C zdf_*>j1K{(%FLOP3}m#?Q?n3N9*O2HMRFQ^Cx@$gmyWxv%y}hLwM$ zz;zl-@XOwG$@*L(CcB@OUEWKMQRzqT7Vlg%F&xj@wrCw?84J{$_4Spl?rd8-U`KUb)v{>=*gZd+hvP}%>-?v~^QAS269HA%x3~M)^Pjb4k?;Cx%wLAD?Vi)0d zHbAH!Zz|V{0Hw@a0@?sDoKYG;%YTUh4xkdA-I}2PRDIn4RsC1|RZ08lepL;aP5<1c zd8Rg9dL;C1`cFSmd1K-dDE_V3=NkJ9m|OGdcI4DlNO^(Gxr;R5YdZe7ARMu0bs9=G zBD;XTjDGGhVw^%Lk6`+iRd9cRp0Lfas)=%~i}!$ap@C^WJ$1Zo#H!JqSP*{J;9^od z*9-0w#A-@*j(gLktn~iEG zq71CX+}j8)%DOAJ*js8Ry77h5Esmxlb~Bwlj$3)&KC>HJi98bIkLq@@s#CEcVCbrA zTKs{?%*5h3svnam%~9!+aQhIJ19dLnfe;jAIEtZLWPA`Muuap6fA9AuH&FFf%#5V@ z{k8|*N*lILgNW9KTvi=gf+KN=Og#H|1lv1z>cHX)y>0sZV&^lr8m;=p)}6-ZASFm6 zK@}KCaI#6Re%=%ds_cN>0Mor>i5i2CE;EOmt4CRL3k>~x@0Dp+#TcY?W>Ezw{$_|1 ztDlxu!9%IX1;!0RRb-~`UuN68zg=8dZfyzWNV9)szhrQIB7gCX{OLp_%l9(mi(KXA zHU_O@_q|oG%92%#-%0vKLuJc9!>nS`|BSODm=7E03}0WJt=zM{a5BCtKWiz(4L6O<<-ke2W!uto9zgsI-LCq}|GspFqzYgB?RmhG-)sj1s){4XHxGE9+)B=tqyo*eYPncNc4>pxPs$ zqSx;<8TED-u&-SP=PNB00)PRGe?s|!w&9+Ugd=tC97E)u8NHE5!LtgS3P8-=R@ZvK zwa-3v3{WR6qO;9x?tO&-WFluQ3owZfrRpySG`(^3TlTY6=Gl0g5EhJuj^ik@VIW!- zG-9tk3#f1pPM;O7$2uGH@i!G;%{jRQ0-3CSPm=vsM>`u!rK3u#d~9|mLQ*ieijkv3JJij2YizydLig-!RO}=@>r2m6WO92c-pZ!N@!3E@g2UZO z5f8fGQ$@_1GAfGzrID054?rM_rkr9{0&^Uhr>C~Z^MqM$>c}e>+5O>Ml^Gd}covjH zn@<{Z@7)E#Ps&t;E77n2sXpi2L^YM@Du#T~jp+`=Tty2*{Rl3!+Lh1kn}&Q5Ue;rI zSa@>Jc0O5I@~z*0xA{>D9r}jqV$6wNhDBT+EcnsBGV`*Qdr~d{qe%My#4m%GSM9O&YgK^vq2I}I%`=Q-ZIV)>Lk`|*OtF1 zj59(;V!)`{KO$gZ?@DaGTUmOXw643}{b|#qCOSj|nNId>%4LAV?GPAS06)tM0rJ(u zA>9;3T&GJk^Kd&fQQNdMa~rWxPUD*#8ODFI(4f-t*_t?fN;BeKzfyR)N zzAi{g#Nw2XD@OHK@S-73sUJ!K2Z$rjMJu2)YGh1wVh1?*{*(q=aYnd{=)gUkfGnjR z?=C$pCRrrKhG@l@;D;=tpq^Hx;l@QjvgZGff#WN#vm1Nc1lkHp{LLg|rG->j@LBQ_)QiPiIE zOA-rX6o5^BkK}BNIok4{VS)AkOykk7X%1>EpE~_ic#_)nA2hm5*M$4^_Td6siSTQRD*g@VTMj9MkTvUF9a)^#LgnZb9!R@{Hq&qOqWppJFMMZhKxsaD``mjB)Xw4tJWAU|EqllgablSk>S+USj>?A6Y0_b`3lI8Y* zW7@^pf);rUGH68)@ZH9G51M>=b$jB1C!x&$_9pxBvFNDpFE@vz%*asPBK^||DlX?+ z)Ne#h&jeoL%d2BJyLIgKIjUsy1W9s50cF%l9~cSpfUno{6UboO+x~HN{dltL`LOub z{_G*i+(z+j*1m{+h^SuCW)ANK{p$Rvhs4kNTt)hy2iy2FeluS810r@sqIS)DXR+jP zS;8oSR|IT+1WBoDL{u?;$7j>iHWwj=WO_neP%`khU2oxJp0~cPS|u$vIr4mw2M{Ki7GysX{lx3rOv<*WcA|uu_n2M*!960th+q z*jR``DQh7IQN%=D-oK0W$9+WsG8*-@?_2U7Z8}$@NpOiBB1YmaTK}`CD_h#}iq4hw zUHsEmn%`Pxje)3(t(n zBx)P9QnLe%Aq8BG8R6j2O(u!hc#}=`uk#U#pAJcShnlf8_D7u+#S`Y!Zw%{mA6W9p zKnyCU*5*rE?M~e$u^D8~7dZS@M|kAsRk@QWNcwl1sDH@lzaUX;^+Lsu*usQF;q_6x z3MT4{Q|kq(+#U91XuqSO3YQ24fs{ViU9YE$+Dd7v;mNJj7_+%^#e^V9YkN1<+#xSr~CW65!xXSQ+^zFK;qR zYOhuNvG>HJDfu-+G=bHZ-mlj69oPp4UEaK_ zg+yt1c$A%bxA-{mvcHSUFKyCeP1;xKD;h;0tz0|&U;zBJCl9$n`KL{uiul5*fy4kb za!@;vR?b?c_D(lJ&vX4F4C<9Fj0S>Del2?#d_a4sP=jqnH0b-Ke9f(OC$7)#YyKXL zCiQfX9dV>t-tlze{d3FNp12J)H&T+k368P5?bYnjI0S~>qT*->n zqn0#a)V$c*n*uj(gml5|TxdiOZ**m6o`WoV^*Ae@o{ii*^^5xBtT@kZM}~T>yAX32 zQgO%tGlsP%tU%LDBQxRetl>E?d+2wN<6w{(s&Y(J%`OTN%d0r3*iU}ZYr)iUb=iV7 zohhLgS6dgGgch)$LGj#vMZ^A7`NpMOkzD9v(l^C#Q5iR9HWCm^59`N#62;%-6Nz(c z1r$6nx9W^1$DYrBV4+1!t~nl;7Dy4AK28?Um3EkY(eo(!rR683UToh*T$jXb)txQ! zr9p$~yj#wdxYvUIJJ7CWZKjX@BIBcj%-TI)uh){F{K+W~j$+|s!)$H{{Z1n{*#+CN z&>q>i7n`V@Lc4kiQE%W+9@g39!~fpCEJRjTI-5Lea}$s#uK|?WDb9QyXO1q-<{y2= z7@**rFYBC$wI%v-z?B8mn1AV_V_)$;z-BJ9-GhC`+12G@dBT8#oL^kyU6y6uqzVZ) zmxBD|OIJ!nh4acc>ayoh?6?*X=Xwtgl^%g9t-9SB7H)FdTHvg+`hnjV@>E`*(L&a6@NlNwb) zIqZ``#w>L5QpU5BbVGZJ$UJCT`LzMT^TDRC0B{34Xpe$o`*yHDM-sg+qWnvcu!< zppCue=apDF!&`6bgc6`P) zLXIu=D{oYvK)(V#`Tk@>@jpDzmo(<$3+4G2spJt9TV2(4${vHb2S;G^_ZtTPJl!(; z4bJi(ir)Ft3#x>@1ZuF5%w5|x0gBj1L2fw-wb^8EZhiNoN&C}#8ZaHPD9zcQB$ZBg z-8byroUIev~5Ky4QhNR?m8<;~4#;sZ!4k4yO%-*)pJxaQ_oa~Jxm z2FI#IPi75By84``vx59y&e)9rc^8Qn^SKoIgsHGl>p`we<0SaAAABGz)isWI7G85lc5q69oz+o#i#c! z(i?~-p?l3HO}E*;9S^`zI-+~HW+#o_Hs*46Xp(=3-084Fe&}}O(=4#>k$Gv^u5Dc( z9$w(kAM$-=!=bWL%hB0$YZGu}HUBgUL=d&RwgNG@j!@*z%Ul@e=6YNVdLE-HK>+)j z+{+MQ5UPRT>mUthE1PLl|%VUQ?Wbz^H$GJpjZ2T?%zEW8hIq($(WHf1f3Hr_cFh z@H;)jbZ8F(tHtoTdR3J=6*-F?&;8roA1@HQ25q+;$R%GzSYbhXG$-$NoUzJ3xga7@ z+uV#9VrKz&l`QG~n;A!H({5G(xWDx8sBhGQ293|yuebV`UhoOT>^3UYPp^`o_JV#L zOV#b+6C$d}wo+|DV`sTzGy3}22iu+ke(0kq$`@VOwi~*QIqo_qZHY|b&4f9*-{Np~ z0bvft_|!^FtJ40r2Zl*tWSk!RA5EG==vDme`VFr2lUMkDSLVvL)Gp=1)V_N;a9NSgxBEyyWZ+aBCHK(sM%|9*_E4_}Xb|A3Js`kD^N>Eul^K|Hf4IOK9RHAj?fu97%`ApxaBe&~Jw!?^+E0CK5!Ds%rB=r1`6Pn*06NqF zN4jl>p4>=;1ls~y`+GZ;lhuXk7wh~>zodrU;{_+?4?Y9JUKHdMjDM=>xoq+ zNs)w6D!(jKerY$!PN6wWZwsFJ!3{REE;PjB?k!(U9a!lrvJc3^!G5!rO;P{jzG{n;+l$=>XxN81s@!ChU{HW3g6Q=d$lHJ;|+TU24+g3N5Ts-Wk zTOz^BHA~WQEE!H2Cj%WU+^>w$ppBR~l-FS-=kr+@6U8*k`NNH%%nhqddrO@6Md3i7 z3;v_w-++SNK#PV z1pEXlA<4i!`L+x9odIh*w>t!l{1>c&PKmV5C(>CK`)pBf9%g=yNKc|7Q1BjS(l#%wdIBD9gqb7a;YEET<8Rcsc{f*b0j=uY4 zuD*Teqsy3>Fnkmb)~KmJMY>6uJptZuANhBsukfQ+ob@_VCNn;w`XjXa2<&JoDiyNU zZ}dAToA}&vFG(&Vrcwz;GiwJhRbV{l&MA{SuW!VAd(l$#;`+uJY~nO;LATotxd{%K zr{xho;>zP{Bt~#OWTfd-N1{3805z(NIH2@bc%(<(<%edc0QRF}>%kD(Cy=iCT8Cl! z%6mgBDhXmD-8A3skXe6LFz9M)m3VC!yPh2r7;oHdyz=wLfd|Uyy_+a3(1z4C+co|B^kPm0HN_Nh+s--ylVQDBB0LROd-E#Xo+)rdU@S9=}bcD|OUr zjABllQ6!h}Ma+_IpU>49mJdcE5Mic(K%Y%`wQ!DtHrQe^Fi@WX=aJ7s!ZI1*3aZ5= zg0_=T&y^sx|Ku-XQcw2&2OctT6T1bbv!Il{fIj01H zYEV`dSu)qKn_yYC(6yn(@Ck%2!b(*@h1`nzS4prHikL|}T5lq_`=+7TXqiKX9Wl`! zrTb)~WnF=;j{TjC6={+{tDXa+l3p9n6O8_uxld!R>kT5CQ7cC6`qrZ~E3!ZVB$0@H z?A70e{g`l$yIk70x_uBm5p)F%BG1Abj!41rs7`$FQ?W2vm(2jY@^YCl#4^_y6_43=~B=?=fIdqT*MCo z-ghW!)y@pC$szdf!ckJ@Or)s7qV^#&Y+blq;Gy$D{q#_h%YSjxbSGxqwjcw=u+eam z`2stkD%2vTjK=<;cyIa}t*2td4#%}m0n(oih5y=KMlp(i5JO3uW=AF)(PN^C?PWaN z5eXnX-oEwOvm$NA$v?c(NAW=9>CllV%BWUK#+S)Z0qGBt)qc)~!GNgXAZFk7&~D^S zWdPPNNym4;!`X+!?_fR7!$C2wOhdoPjy-K`^J7KYW9}#lSSk)RdtjYA{02>{F}voP z&Zk_Zt$ZSbWW<^fJ)0Yd3B|ROFPc-J#$HO^nyh5zwba;{wwjMN1R{ELe+gXR`?Ar%LEXCE)@$ZS!$ZO3G>`7q6!x#n z!%+^29nQB5b4-M1cv~_C@RrZ8wRVaG#3sck-8@{YHxEs`F|RxQ-Y}qAPj^MmWI)yh ze)4fH>+p2H9_`swXq7*aYdF+Rf)FS)s@7Nb2hQ~0lB_?3}#mi~cNg9>+Z zL3N6YFac1ER{ue!dEsSa^WGMYChzGE;C1%|C&G1z1oszV z|1ArRY3sUO+zU-~s*aaz~$M6eJO|q*IwFYyz@!V^xHm{Hs)oYT2d;i;`@FxxnjT$^@@m@JO z>XU)LOG{CqG|bcr6w6E(3PsD2+CXV}B=a6EaBV1EF#ZZR3YtO@LQc9!Mp-=Lb=~C! z*P18Q2ok=oQk}~tLZl%Q6aB*d^QRUr;NguD2QBLW3q0xP-nMui4Qa_0$;6;(MU06D zn;#qoOUmHcQ^Jf4hZ^}u$ZKWRerWiBa-GgqMyp9LOCB%*i7K3-aUO zKK>@U3$edO?K48U9_1Miy=yrzLQ4*P3Sgt3A)!=KN=7lI2fjKcgFwU{Jjif^p=G8! zxWRZTus2eO4+QkW?`vAOh`g5EqWAA@?GiYlr!4I*9kO(l4dhNX1-8*ENGpNww- zjQvg<2~=xSrQ(>F4!B33#9X#eKF^h|X1t#GuT@SS%Ex^Mun9s!BH`LCC8-&Uls=-- z{qyS)UiSuIOfqvLQev;sKhYDUz=~?#rT9pHt3&B$v zN<)kicfY1T7AXh7M%3e(p!;lch)^O0o#ZT)Q~^;wd_-R|D?u3Ckj6|*1O5Nk0&php z1__nzXr-3ml~=U{-;rX4tWnNRb!qC<26*o(1}NIO`t6U!&AZ)3ecEf^=m%yIP3dvZ z-H0DIz+Cx^!c3B>nj$=4SnzdoD=3gDAqJVAryt7?n9Sct7LG2dZ!mmgWN{j{4^jNL69v+su`FDDNn<111DMp5Oo+DSB1Wq=RFRO_kOX>Jg# ztF?69rB=7hw5UXo6IZ5ObhLE4q#(L7Joo_zt60<~<(TfWGSi#eT}&cN+!oJwV94Rn zb+Fc2`V;uOC~qI;oBqP_1xC6OVs%3%xGaKVXh}NcCkfr_-jEAhEk%EjUkxdZppw2r zntq`Jw*jO*GJbc=P7uy*W*~=^uB` z$Hd9^uhY#T1A~-0byMZ(km^??MpB^*FO*#G2gV$?u!G+=ji>xY629_Jch-LSx%~VH zL1byond7D)s*%9yAvb2h`u6Fg?JYxv(go{g<}?|JUUF%X>~N3ews|Hs2%=aePJ4KU z&z+X7UYfA7l-m|tdEZd{A8NESFn+^l*kb|XOU0&(wSHnIXiJs^G$LoPATp`sC;rEG`GY<5(}+VV7b3S?*bV5+d|B0O!555td?t+ zCjM;)mz-+KK@=A3+ZhXk*| z95r5<2CXGnniDmu4UN%Z^p8?KP^KK3({w+7h0T8ofh_jmLj)9))tgopZAxXW2vNm^ z%WG4uk7p>nZx?J?`9w4`vh-KG_oKC79lukXCrHas|Jyfl zAJS~>2445C(qr!YOPH0ajZggkx*_>(hsA zsXJ&yrbGAwLISiGH+wD^7JtE>QvzmFF^fy*t@n6*4%RXUSR5{dxm929MBu ztC+G)>Zq$zo*)HrD;~nyq7lxtezdC{6 zjF14l4@o8(Oau*52z0g5lIr>^JKa%%@r~Rbm3L3?9vh0PMhy^RM&$;g@4a0Uwp}wr z%oCZBLB`;KBt*#|lEV#>8{s&;KiYA!3Br@gta(Jl;Y>9Q6)Q#byx;i;tCVAKcsQ8) zpj3kSh&_5JbXcNm3->%}+%H4c0XCjoL$k(Q@VcL9G*yoq8xW<((1!F@0~aC|;3$yr z;1|e7!eMkul3Y9{TW@%150i=rufJ0+jEjB=JNR)>OhQ1OvpAv8#g7X}YP$TH&O6ueR>&j)tT#geqTY>_7%%ImRqYJU z2m&9^Ew1MoJ$pWQ)f~t)AyogTW^mhulPt9bbOBl431Xpd>Eiz{mA~WUHX&+aGw}uxLti!i$okkE}5}pBi+y+ zP2C_2YC!!3S@{Nb-%Baga8DsgI_5gpR#IcQ+!mdjbvISrV8G|Un0VREf0=SU@@~Z+%~9!G_8TXv$-O_ zr7;}z1el17G151T2gKQA&gs|HW?wBC??$GMdb?OcZVmv#7S;Kz6oem_0OhX&gdG{7 z5r6+&*WhYK3{8}gfeft83JOS@R-&m2mz1D_m=YwYLGdypquqNNtN7;zlaitDINoGf zigvLQtS5Yl5!n+Nk{e^g1C+mF=Bnd;dbMgS5zwI^Md}uK13sR2N|mN~W$mmO@7Ed| z2j@?&g#eS8l?-bP4n6qO6Opj>qa&uJT-Ma7OE{&z;5+v>7@W@3FF%LH0a{P89bX{N zaBl722gcSD??E7j6jW2)SE?f3%7xmd@;nZZrOyhwH;TcxT-w4%7DQWryuNs=Q$Z*4 zIT`lD=YO>Nu<&2fq9H|8jK6JD9-i@KTyAM_sGjHkVour5`2HA;`nvkzc{--~XE;^m)lhwp|H(|0pcmq(mEw`l^ah!lsI1k9=5|IUllNtlT05Fid3N{+ttzH4k_1Q zmB4p`GH8t~mkRi|%Xwl)x<1SHVBQBqvL*CiU=h_1N$R8v6|>yx^6Ki$uA^MASxjpt zyP&;a&ut}p39#WQr@F|TK}~H+#mMtt&!?YP*BPw=14R;2WfRGNvz0>*(LtYneuu*G z_P_K4Tm`Nx*pQknT(t`Q9!$GO>C^N4>Q*kJwZl-D2kG`R^NGHrlZF5;`P4$eiBwWq zyz3d7?p%n&{a2UotEW#L%cswvtM$dK=<6tTY&vc2?k1*)kQbr!kqxIlDh&vbTz#GyJ!?0z9?fc4x(JGVcx3c4Vb@Ws0bI8x}d3A^BMM?Z%R+{R3qX9;uZ}ItbGx zAhsI)9$_OfKp7DtgWV!q=gIDdGi_Xsu&aI-{O=U5(rw!6ENCIiEu{-GJ1XX8nW2EVellnj!cN7{}9vmeuO|CbU6f*VbUw5Q|5z)E9rn!4O=90|)SJ^M#B&>}uo zk}4EtHi!8v8#WK;T}hvVhh(2fQ8JHMLbIXfTSx(Ek9Jk8oGg{60Be-hxyMT(hdRz} zP|(2^@O4q9ULx;IR&5!sYb?a-Uc&yYNNyR)eR-f+c`b0=J|E`$^0g!Ljti;xR(AND z?TbCPOL@4Q=b9`szLr9`3x>HGZRuwi5Of(%g7-(q$GKn!)d9@BsWX)}$Y3I%6#k=? z0SU5^jZ;4ror!!s)&1^Z=Ndg+fv;I(M@Gc3tzlVLz+DVZtC~mMj_%yX%~o6-mcCkz z>o7}R`>k4@>hG{41GdY``>T?pc?A&kux{Usoi;waSTL@7*qHkvQxwmel@oOE%a`dk z6i8B#j^|cSv!ao}0=~-1Hmhmf^z{x-9O&Ev;}iv%@0?``g^nWyiWEf{!sXm>phpd? zl5$i4?z!xax=B0qdx(>V?d`(GYZ_ufMt7WokknQG*8vjmZ^#MCF0~@uMX4WjKUPF> z4=;IbwB5A>UI+w+$)++6`@gtHxQE(JQj{y%D(@5*_-`~RxIqdcfWOtEe}h1~!rJD! zJF@t69{$DoJ>1W2qNVi<--oct@kMOE4|)0b{*SBUoxgF;l6*qV=WxUb&@ZK4X-Z8f z;_LSs@O7JKg1#+z#jg(bwH<1_{+3ud`&CzZ=^5ktt#ys<^Ze&8T=-Cu*{#sd<#~B5 z`_mzo5Q3&-$q%3WTKPscZy_1DLGgr^hV1)6M(8gcH_Sp~&2MIOP0mjq@sOZoaGU6Q zJqH3PByn8;|E~Q#OU>SoCC9^`wdIlq^DWt`@Ru6t0n7wKx;tO%KO>X=@D9r}%|YO| zWGHrR;+6Ff#!>-FZN7Ga@;*}Vr>8T$kwAJarcJ5DZw<^IV=TzT(~CoyBJXWyb^4r< zy(Fc9wdOKu{nYxu!CmgNuS%nMY2CsXg5Nf!JUTFK6eG>~cHPG6K%OWZ4X%)=&UGk|m40onTp}u!yi%N|6YCE!K=s5bPL=@!_ zQ1B%adBRsYj#0x73@!gkI!gmTCp__yYb>Uajn*d<>f&V&?k8nopap~eTSiEq|N8KLey&9BZU&*B$H?c~a)}hw?+e6_ zQTIkl*)A?^9{+}uXDy-m^AN@-ZGE>x_U*Azv5=KoLKoyt@rSHw zf^QaWM(O2w*Z1!hyB8O=ggRYKwJk~sN}+yI>x*T;6)G*0ui&Zz9^Lt z7oWMm^>_BpXT<>bP;lTyE`w$N2NV6)Z<&n0ehRfE2K1QBX=k_e>`7mf%H$>l(LS1} z#rG`Ut=`8eUq33+M}4Nm0#qxPrQSVSnhmXzUI5XHz=t)I4-^QCU)#-&dTNh7DeJEz z2Um2nn5O?M*=#Mag6&%9_-vwG&k#J}jb_7?agaE5h5CORWhZFPbTW~@yj6QlZ2P%K-8-Zr0MOc~24&xrg$NT`Ycsn|FWB7j*=^{l~g;zzIo z4GG+@uF(h(HLL^8l$vCR8?r*PVO8_aIzB(?7R{bszgBaK`(#)7A01+m?n3~gt=X6J zg38Y`fy0RvPPtT1fvI|YTCdhJBz`D=epTEFfQ&TDFf99lpi&O$+yLX#O%+ zXPd$L$CiEgTB9EdfkJ~qHOQoliN;d1B9H5Ag9$3YXPezN%CO9?7ZS9(5E>M&L{_{P z9fqciVYHlSXmuk!2%Nd%;4t?r$7IF8JV5~+oid)`Xx1>_kA=%zPIs@8d@sFV)G_Wh z?OH@-+e$U{1uJocMJ!iYBTBlHr*Go)O3;M!{mdwxmFg)w=#tHyVBkt2**qzZ#;ax!afH>?O0>Ab2NOlDOJ$t;NT7TNeshxkTpa zi=kGJJaB2=0zfHXFN#F94&`~QxEc}(>h@8;el5msL$>Q_SU4q#_wfP!4S zpFmj$)B6H_u!0YlG4%wWNra?Ofv2Ki>S--z&RPfEgw@9l)z%goC6>TO;}n-;YQOqh z8i?q-s%?HbeG!SAs4(hG9sBZDqAN4nOvRli5^0EZ?wH36PmMC^NQYd@r73@o24rw@ z{lsaKYhOCd=eiA(lZ8lkCA7RFUW4EpsgPq$LEAw-AcQq7l@u-522lcji-;J>C0akjs{5!kMc)6w9 zpAKS{Eru*G=G`a%``5g-Y_|BDhbiqG=;yM22A@^dcg_p=ySiPhS>KuC{uLQ$BL1e; zQxkQG_I<;VV9jo-iu-1P2A_6zYKLB4sLR6ldJ+3Z^yZ>@m6ws{sX&!(8N_s7KxYiZ zU&uK8W+#E#k5bDw(dPEuyRh2cyKt?(n^?%-;^Kwz8syB3a z^g0oUhxPCWk3Vj@{nMOp>2{M7r6z@7E3Mne?vJ?JI2Kw)!>p}m@O5Av5-K@M8+5^h2tU7hsfC!N>TFk5+jZx4N z>+>v%{eGNy->%_GtSD9SpNItYieZ``%aZrJj&tS&0R!QC$$imXdo+Y&S#N1j#zlBi zsVqa#{Nq-qpEU7hDTcTm;LQ=$97b^$fCgXC_B>SHJy4w7cA>=c_V04#H_jgy5Iy1{ zjA$KAtI%LK_Di+95TO-G(P%X02wlJu#P(hWWiaQ;k#+?bLH6e(h3F8;zF5+3#Cr6Y zG+p?)@!X$T@VvoBkBA=bsx^B1`05R6jSTlUN~7vBO(V@BgIFR`BF~6c2#UT1X{4=B ztDjZav$z8Thj#B!hhr$7kz@||s6oc8utTp^T&fHgxh0=16_Egy%JE?qc57!_J# ztJnzt6KpC7LTiHeOFr)q*AGeF^_p^LoNb|%ujW5;PUI9HxZwEn4q9dLgB=(JL;_?^ zf(eYjn%`S+UI6zV$>?+d6hL&tbIl+&P+%v?%Uv5Et`W#I<u43$Yxl%=Ytvq7du4C@9bZ{d6OA zs(Eqxz^>t%Nnd|6Tck?3L7@FA*|sf&OSapU{(?EvZ}n&RxNBb>T~(QD*O>7H+<9jm zMSEx+`?BH=w1E|@)mwZx;;hb3WZT(}-$xo7xn!KGGswQGmRXj8wy-MM3?qXJH^ze3 zC#RMG`#92};CQF=*-DJr2S7!&4#X6`Zw%5pKU|*ae7HOr*#DcY-MiO!zT;4v1fE0D z$1}a4z0K=a)~Fm{SKX+ddp8gE$oCOlcR1K>BPMhdpsN;66B6FGzsoah(Xyw}nEZzl zxu0D^s~E2ksVWNrA}+cdbdC~jHh>JUv@9=)?xd1lo<^+pMktqJ)XnL3aTSoxKvkMg zF1vmOhU?h>8?HHF3)0pAck*W&7Yw-1pf8?Rt!v``JaAT&s7h@8zpFgN1GCRO`?WTa z@=_b06J6oH3tZd9EgR4-5rrEO$(W%JjA+#yBSmp?pCj7D2R8dhP8DDR;#N z@q`sVuSpU=SfCbJrZQ>`hh=Xfa2Nkqy8vS;tt_9$Icxq2B9W*KPk=wVS#E?AR*B|W zhc`7Md_}Rrj4t=l8}k(5;K_Z|`(e2h^ZYDS-Yh1i5K08vnqm@ZcFOsqS~MqWit_S4 zLt#>*@@rIv1WSfek(kfxQhPB;ryZShM#djWAUO|$xAf@FaD~+J{J0=x0- zCUKGO=9fY$k~2)QdV}O<*&=N5vl8RcKU==6=fLWKT{c=J>oOzuJpMEI#-4h9*T>7) zEw7F!0$1dJ&15_cVWotWrmJNN)sS%GtsC)S(0h!qh?PYF|cO(gEit< zptoqTRJNQhbZ4E!82JJE0vH2d8VCr z|B-=vZIi&u(K`X?&&d<-rp-n-ShoUOY97B2m4#8_&CZ(7D;d%G`S9aio%@_UBm^~) z8KNfmLY#?W7QowTWen)*&tirc1YwIk&S&YyAN$)Uo#34)OwF86(mA_?Ov) z{6Q+(uMVvZcny^6d>gI~b-4`jgT z(}ZcGa_bq*B&MZnUqlk?nXFEW6E2yZ+0lUe9JV_TEc`%i3FHgKl-dhaV&hD^}z%A^3=o zsUB8zJ36skf4ssq9Xb$-Uh?Cz(*07Rrmql6T&Or>@ zeont)Dw92`7C>_leTUkWv_%0y8H2W7&ngGzsNf+$L*0xbnAMuRzcYA9aZ}m z^I0{RS8de_kvcjOdK`@P?-z8!$CmK5qJiX=n^OgYSgobSOXi!d`t`v->=prffpMlaiG zCiY+ld`h}qb$bp5UpD>fu8;elkzn#uV8M#j!-94A7k8ut#jN3q-EUc_7CR0X8^y}f zWr@NAs&g}zPpAzCCwmNf{cTXm;a4yl$5l`^P@th@Juiz{&g+baLik5gk_*-ZNn&)2 z3XLBDa@Lo|1a0=n=KqEFk_*n^p@UcwEHpkEA1~3-nhJ6PyrB|QiZVtxz+rz$y&O21 zo&MzfppNU{7l}u^i554yPHb>l)@`6xolQbW)K%A=9C%@87wES!_w)>nBG48i_4KGF0P7ddv~A<@p;YaED4 zJvb22Lw2uqK_T$%_}&b4D^blqt>eLcp#E-`-~fZV;(ngovDciGf;BKXJMlNU>7nPx z`}uk&cHwiu4{#bU{!8U*^Z`SLN0<3YsMy4F2PRYlY`%AM(|wkPYFRQ%L<8_t$wPyVjrl2VN+$HiQ`czC4(wm9o-WCQnvWw7iah~!v2Qiwld z39*bZp5Y|mU?D(aP!I=!pGL^Glmd^t+}s?qC+O2TqYmY>U3LEETq!QDFMjjHu>l2G zR|(2#A?&@1koL2@dl+}O&hwuz8bmKL%wq#Kc7Bhyy&DZ-FcsG9!H#7%tPEP-L7nSe zhNZ9ysc@+gIaSqLB(V)o#j{1Xpw$^FD6+&Et@1!5zD}gY~|DP9Xx=OdXTImOO8S$o(rm zX~VbXMgaHmL9>;JG$%LWOC2JHs7_5d+1$K)0L<~mY;wUKUx-X?FGe5LNOr($cXM~4 zf$Z9j&{v8JuF11MF0&|iwRt$KRtltC;81TI7=3a_gFm&O`S}^iy|Cq&)a0C91k0P< z4$WLh!tGW*^!bC(btnDH5?DhmjS0Lo^G1`2tQ3a@#_L~Ts28(q-Vc<(7fttJNm=&M zigk(F?HY{9Qyh^WPb!Vv(M*FhUyc=be^6pUnDz?jE15$c01<*kM1!j1dJE$wEK|>4 zuwCE+HtY!Rk!3n=H!!vZo;F&2e%D^_I*dLP98SM__g6-tB&{i%2-Q3Mi#L$bPPzT$ZeMGrxc zkfOnnV?;y>l{=yQih@c_{&vLg4VyEp*P&*0&3Dg|XAq-Kre1|k53D%zvbQo{-o?bs z$mO07g!It>k*r_k83^ZQ53r=it=Xlf-)oin=3rjB--apo%NrV&EeXB){k~JP%M3Ds zrPvoOJ-LT#ZRn9%;|;VJYu^0aefEcxo^nnlRSWks`&s-vn6fi`xk-&twMo93!E4 z!T32!BETbf z1-8tRXw%o=yw^KcvmBGrwy#_$XPsKN=fq5T-QUzL zxuul*i8=08XLE?KQ1~)A`TKmR_2e2WC>ij^Xm>Jp^gI5+y(9~a|N7{2kbeItLm3L^ zbo=^CFa5@y9J9x0X*ae_WRR$9iJ^W$cx(f)(5(vwH;76@^n38$9#VHIE;FUv@vhCI ziO*?@>f?BvvGOoUt6Ke+`fI~RWlmiC&FQzRLA6>(nNk#BKZMIF0>U3{tpfKZ>cDz% z!-UBr-VFo{Lg_wiK}$&9Zxee}&Bj_Qck*e)@j~$dQ0pq2D&8I9QdWRbYnWzx2_yU{ z+OM1|<}b%01I!t3W>@uo9Hn!z$SyWA@Q=}yAP2Lh$97gUai&pNBhN-PN3G z=M~d$-mngO^n^LO#CY<3-wvk!Hdk2Pkb?#4+oGQK4`VJ`l8%=$@h4=iCyPgNUf#37 zW$gyK-$BF=ncFwq#-2kKuv`6&yELM3Jy18SHNVuNQVWeb(~ud<)4qWvP|wfAuG3Fb zc^YiK=?;qs4YpO6wmkLZ)ub;nzGbn-ox=o<+E99|Nu$Izy8#`pi7ub5*rVH++8yJ^ zc?wM2Ez&M`WI~{7aD3vIgV(FSCqRPAsn_n&U`XQIDE47+yyh4zxuD1S+LPDK_M4ft z|5024m6Wd_a?k*wxZMUD9TI9HsNW9=&@2?%?=Q|VC4fAnPj;THsxFvWugbM66(P>P?ukpHtNR9T2KcWTiAqU4OP++3 zrzipehBl&Bj@g(|YR%{5%*w89OI#aKp7c}a;l=Y~l=_usU%OwZ!ART{1Z!q1owu zTC9}=AQuHm{_loBbyWJ}*n8KobjoJZRy3&kZi|;$Z6>T=jS4k__wARYx+*70f?+JZ zjT*3{3?{oi6Kxuq$f81mAnb3LcLE<~e?S2oNcM;huu$+PqspM4=zbO9F&zeofw8eL z2czp0ADONju5j!1Q1bb)z4semVhKgc<|Jwnny$w`MZg-PRW2|3XYLUgnsm>zy>$LS zr7pWm)Peyqo;D|yh)qapix1)oNm0zo6v3-u77+!{symwYSFYAB+*o0P$iihzpb`l2 z{vHDE=d1IbrViu>{>t#-pQIoPzqENvt0TAMZadQ9gsQ&Jlvx zE=_&Kso|+RY~mx+jZDS#jYtqO!tOl9eY5Z~0>RF$r%HWMTe)d>>_#L3G87pSz~RVl z)l#T1eMJ?wV)Vyp0KU(jT6q2Seq={I~(t8(4t-M1@AM8o)Sg|H-_l@Cz-;4>r$ zz5G4)e1p)~En`W>pyM9XM<=Gmu-D`KD+Nr+-8I{7)UeMt46h2_l1q+ALQgbxHL zE>y_*_c)8+&CPsPUey-o$lvLKdhm3YjxvVRnm@zA*x)#VNG7qcCtgu*TaGE-bl4DidHq42!2j)7~wV86yNyFd*(js zex>*sC@B3Ml%^Gal?R;=+te0m;5W! zKbRl_=+NlU1Ak6fbf4eIqz^ov!#D z`frgU1E61BhAMtLetB1qk3j%(YkZk1x*o}q6~VT*3pfubLR-oYxx@Y!2e1E@NSk*F z4F{^otJO5v9Pk_IuM#NxB@?k*QEGxog= zrgMcNwR!08OVfZoo)1T3X_hj4f8&=MgNabR741fbsUvCeO~sK;#g%E1K(xA)j*4Uo zU7#h^o%*1uNr92n?t;f`F5@+?&b8yojwnbpdTQCh)%;VpRdn}eby28725d6CB1KcD z0R+z{iJ(1<$`Zb{NdoJE%y}Rck#&BN_@gaZ?Ab=eZJfjPlOV?gN^TL8 zA_>$x_-1^?bxB$3-0pNy=ya*DFV^K( zET!hRBddb(?_U-0ZPBmhT4m&s#4pP<(x8Dg=8Fww?6Ph(m2e4$b*tZ~r?CNQEzsm&|^<@8;t`yc2wv&wJnB)bqPP zx>_4-J&{N4Lt;Iyd|Hub3sbvs={x-?EYxQqY@_Ys-hh6oWMiItGjZlF$&1VsS z1l7tnA-rQ|PXT>T?AYHNXfG(gonxH7Adkg# zj8Ter1Gob2fy0=-Qv(+w!PyaeOe@i%!Dy{}KFqUZpr*&nFp!Tu*GLMLHEAbI$93(z1*A`9644fQI<}M}m>4Apr3Eq5FZ8{ut zwFCL|K8E@5O?4yZ6SXcWU95;x=oGxO?**L_z zGzZ2MDE)x_^j$UYuxIt!Zp=7R6~c(p2evMD}!|!;yXzJ_U=nkY2TSlVX)YMaYOcp52KGzLOq_qAdsR}9yu>EK(hb>%yN*I zJto5R7Aj6|KwGo$gW6@V9gX%1StP(dqzoy?lt~FH@W6=Q9}{M#hXpmt#w*Pn%+y6e zLjWkGOc7k1_pza<_o4(e^>%v=C(1prvvJ1b>FjE$7;At^#@nyk>##MPCZM&IcsKh) z5D$I}%0iAhwQ*%N>=nRjlt!%h{r@|obPR=Kp@#;6NQc?shJuYm3*Tb%#*Ysf=Lt7A zr4wcHMPOUs3UZudfXU;0cPOjldIO5s<6lIrQvp}rva2<|62G_r4B6u@`w zu%o^BjjNuP=yMKiypv8C(~+sOubf8nh84aY^w4XS6dOV*0h)jZcNmzLe(z?tYTsFn zc9l(^g&iG035R$4+PVJj*KmmRLsfm3Dh0hZuoGEaP*>0z^LjZxQuT9@9i&v2B;8aKki_R$)hK;D~AOO{D)+vS`K5j`@$+m4xFNM zPRT%jNMnxpfU^eSCb$9~_SQWPSD-V{d+e~|h=oyxqvjdi(7N!VDG0KtNIC;3l9>}_ znnbxZokj+gJLsT2P(TD{$WKWMR;Z)%*^5zBKe__eyh#xfA)H|=MaI)l0g~Br^?296 z@|x%}3pJqObj)^bZke9MeydGtkO-P}UdP2s+F+j6g`*RE1M5aw$x^09#wac%5Sc~q zmka36o28>nwjSMwiQbm}Ll(*4TxSRGQ_9ha|VKTEknz(SijG2rX8j2a#32=)lw&-RE;4ZB0V4fdwD*7BYRaD06-+t2iNEk z7}+mSAVia19p@CI0bpCu)mRf0m4#QJNH(o1AE&n&sY*<^u zw5pnf9|KoRLy~O=@5%5I@ci{XHh;O#FMGq(AAx7TSYvqOWR(uDhFB#W$E_+sgU zBSmRr=Qcn3cb5l^%1%MB@n0AV8`kDW`(`{MTIY3scdfSE1X@-QH*+|0GZu z65^VS+i2|q6Dfb@vlvvn1V_+8OyaQ44B9aLo$G$Z2jwT@`UJt>=P*}i9-7*{dH07} z%dOM|O45TWr4(for)qkl zG;yL*sybQpAmQ~U>`>}rkM8ADS3crB;Beb_7_N}ZE(tYU#uRurH*Ve(F2Zq zdn<$u+M`mxM-ObJ>80^?}7`ze0`K49VGvM#`! zg*0HZ5m!tI0;EnYJ9dzB6;X)cVguO+hcH|@ZDOYEKKOi6=Jb;AAdB2dw3H!(j+XOoL3|Tp607CYuAUbN#-C(Oh+QTUN2n2`_Li(LtRh4?G-g?c z=WsC^d)f;%%1XkyUL}?m`?_2u%Q2BUpurAnA+$N7Gxl zMcsAZ!vhk7bO{L3HFS3f(kb2DA>A$A4BetMLw9#c3kXO{OLy1%xqr|5{Rd{|y5^j- z_g;HNiDLpfs|}}QrGT8T>n;qMLuoM_c;Maj!!A`Hv0K&1oRYZk%V)8{EEAYb-zL4V z3h{TfcpZf4IvzdM!?MUvCuS0pdsSo>3y#Q`dGU_RTmYnH)P?yq2ME$^-f_f|ASt?w zXAeD%Fnhp*&kfa^4phN^Ameab+6yJt? zQq&^3jrj0)9kon`HaeR#FW35o&NklD{7~l+pd7jq9MH|QqO0ZVF$G*s6m*HDjz#bv zXf`57+tAi2t)R6GOZfEOd%1j9>Tg8=NkC0()G5M$#7idv!q*xEnN8r2@BbW3O?-62 z!0qW-P8WLA)Ui~dS0xZ$B;2tq0cNh&3=B?t`G69#efxT~o%cFsMu7l^U{l8;+xXmy zdVb9B9DaEqD7r`zfoxHol=F0XeJO6=M`2M=6NatP6{6^AGwg?Zyx!a#gc0#NPO_#J zu&w&c+f<~{ZFofZ_IKt2Nd>2;S8(4|UGad1!<~nqAaOs*Z<^`%b;zFBkK$m7tV(); zZ+xa$5@_+DqFcOYsHAY5`}xM!T-OBksf~o z;`?DKYI@-{9;jJ-ivrGvZwalJx56L+fi)M7?3Opo5Ue@9oUZHv4pr%#g219SlV5Iz#>)ZzTA)uxczWNOsWpyj0{CWmA7!Z+`Bt$_G-#~M49_qMaz zp+b99J}w~|Jw`x)*Z~Psy&_Qk?qFPAnHLZA6DJ&{&ZVsiqTZ|8S3?F0f~f?n;1#Ff z7^sbL4>vSSv%MXf-Y!TjS8Cl|X>V-wC<{2*Tu#{#MMvS-*fYwzc;o!UN^n;wk&!z zT7XZ1>ka2m`vWBb{b)It_+CPzPQJ_ar{TkRyDpp2zthjVF?5y4>&Nfpn{4bVg+nW{ymbpN7vWVubge`!;m^=UPAGX}crkusGs=w}# za^^*K=>Pwwe`{Wyh{+>5coyJsha)%Ln(Z^AkQ{#lI4If2{;UIhJ<~1Y<|GhsKK4tg zlxJ=4`16Yao}4w-xd~q6)O0fZqc&v4xdboI3dOlCnUQy`feDmFr4t!^R-YNSw}8`9 zz}k9%nH{I|+n`ZYJje*)R!S$GoI&g@K!s{ks<><=9=5|w-lqN;gvs8Q+`F}9&LI|r zmNO=iboS5M@s;UgkmgZ&Q&OJwQW##YdAccL#<=;CyxwsO3RuoI_f0mJ+>rgB|AYw{ z>ZhQOiSVlNbv$AR$^S5C8F@-9_#^G>SZZk&hU!QTIG`+#K*T`hJqB6;{-u*Bf4*5*Ppn zl+C>a3<2f@b_@_q%4#pBoWOFjK_Rb&x#M0nMY{yiWy9{QCIUhI_tBxhN1BHBxjTpUu@m{>_z#7nDQ&0mo(;}}2 zLPdq{Y#o8Vbc%K7^luC7O=@LODDXZg7Sl`2s%r$Fz3GN!BnN!1DwTugKG!DUdTW(L z%2D)_pNDS%xXzAUjKfCUF2Nexir-Rzm!s#kpCa$?0M80*x8iS}m%A@Yq8PIP_-WC7 zWT;`Q^uwC<$%eWC)8}R3^?EV4+K8T^(N&;`S{6|76K-|J-`-cVKEe0q{kQ)r;QSvw ze2iV^USV*NHy3xEBezSr@rz`hqxRv%zcM+rhb6p*qml@CFMzkLD1A7P^$0h{>$Z6k zI3BJ%?8y^?%rlYa>3}p&OuLGgui0RyVkO(^HQB}E_)W0O<;5dfcS1EMT11eD7tka& z#vCXp8u8V-WT;)dpXW>*Rl~T~uYun0q(4~wb-euZI$H!|R&TryiX%(to|rZrO+uX< zPWIx5giT2SDxWyQ_dNPVc$c6zs`2-ZvM9A+yegLw1Se_ccd40TOE>?I7vk1?f5+Sx znj#H?vSus3lQgpwsD5sz&Y;Fl*c_PLFF`fNx8s!h6ug3xm(oC#%m@AmA39EKUMYDf zuBi9huu+{O^9v%e1$4<%A93kv@W-^)RgaOLvYHV^>VZ^+fBi7I%YfQ zh#gzI6Ks)iBa30Cc7fLa&x%)k&ln5@QZKlLu?GmHD9x1~TdR($h&H&q2Z3KiR^b4g zGp-wb(Q9ly5;HZ|%FGe^9-~g5iil1Jsi~5pBFs7Gj%l_o8s^6B@V^^aRDlV zdx0dut~FsGH*u)dX4%O>@9gj z|HUPT?iUMi8vXWpvBn}fCWLqTov+lVAQ93q$i9V^2)NVg=ei?3?(?O<5y|xyN$@XJ zOzg5&VZ~x)6u0?REv=mFkhofkRKo^pxYlDBxas2S zJ!O%fzB{ovJiiPAr#r>Yq4I>(;DTu@TUmE(&kpnS#IWu&e8|(5q`x_XnXB zG}4scK1vW!Q1N^3B0z0l%0>S9azlETHky;oBE_hfV4cy zNErwY_V5bO9D6t7)q-g4rUR?US%`3TM1^zeC;ju7Bb<~V<2^F~wF0Tu_8|%3>o4ar z!O#`6q==R3{TR4Q^}@2>ziRhkMbBr58NcE^=_t?Y*9lEPrOd!eh;jt@py_q4t(%RG0!d^1prBveIzM6)d zf>+bgdn&d*`Q1SUYQ2~6g0wFO3^H3#$#Js6}bt%V&TCZ84cO<&DSu?H&4eD^R;T(O6PhyZ*jBMLRx?T9yHUmSKnx#I%|s zBtaONH+JdwJ(it5?tajP9~qP`s*4pX3n>4K%QO$~RTo*(zA%=^L)yQb0x0%q>=?(( zW1tVm`%r*Vs-0F`sy>^-WMan3p!H!=GKmf4qI8g!k0a7xELDNxHSlKbP(Gef?{axK zG(pCZaV-BcTNwODs3OnuT4vXKn>fR3qXRMdEM(dGd3}S~HqW2MaI)W{=`$`^I2pg( zMVehD~LnQ{pBP5hZ?Iu?l>AWHRf?#QJpkV2X%XT)M9Ub)qd555+Qp zu5<}1rj}oEhkU~XwFaYrGW@1$gFol6W`!lqS>xAXd9BC5eQb4!5XF34?&Onml`Ln! z?vxRNK^N`j9LbI;5O_};CXw}>1g8V@J~c`a)4e$q*8YMOdlVG4r$<(;i^0bV0Y9 z1(Ci;waRGC>-Y;t_|Yl$UH)L!u|jXV#r)R8n@+MV^mlB$##O%+sEDhRtE>HOxll}wF->< zph3?}1R`gGK&X(e$3fO!MP$(D&!dDJfTq!AmmM0tHv05hMgO;6L9FwqohvQKUX(PO zU$PzyANgjD_>T9KyQHL?^O7J>AHlk}OHGwnvT?VL0vAOxTJh4|>_)+*UD5^gm-Dnw z^9%V9$at0$d){SM?{Mf*@8vy`cx@leR?>vtSm(C&h_@51=iiZomjxqxrKwc;9THF> zrGs?40?nztc_EbgK?I>*w{D{+PrTTgqXI`qy?ZWM`J=7$!hfNy#MQEV3L8p9G^v z@IX~9o!U(|?V_s;8b|%ly(hcprQ5*3h%H`RDP@9lcYdW$gSOd|piKPR3U@W9Hb4_) z;WGXB^$S0#CvTJID!WGxj6Ts>6b_URkPhB)p_>^H;7C}4Ve~Lwj4f=NYP#nFaPr-L z!LtdcQRUvHWc@so$1)43Ft+S{qWB3Ayb|ii8^5)EGwN2E__`YdB%K9zH8MR9G5Q8V zXv|EX&tGn0l)B7oQyvZNmsz>F*Z6Y2F>A?tHz1uCB{BSG+S)BB zB0%zdz`Nkc)J+bd^D`?kI`CH~@6P*=!-|IPBfx`zaT*PY=a3pFfgaueJL}=HaH1xCp?Rrk-pt#i zAp3he1|W@{eZ-U$K8ZI6nb!q#t#$Q1JeSofY@btYs1fQ5FG1VZRb%MGSoengAJA&j z*7}0rh+ltdwPs2BhN0f{Jz6elj|XpR0C`~86e}p6?<$rZtJYpEaH2q<3>krG(qt6) z3aklA{t#`#jU+=swC4EyFS)un=A*c&*5WP+aX6XuGVG|0!H zIS4l8-s;k*uK${@2$($3*r18mX!R~wGu=#+yeB#qnBxSp$3bD!~M%c#n*H9$ABA! zytwA@sjfu>vat{g>5Ai}1@q z{RFj10+~aey}maaudtR*>+N#5$X=Zo5ZP8L>7wEP@I?z5WW4Wj*}u;0e^WihldRO3 z$cd&AjMmZO%4G?cRXM3UOOWk=WY6WuoTuk~PuliFd-2$F)pU^-0WQc`TyF93K1)j8qFvP&IWyPR%t=g3KkeeMB~XF|o}9~|D(NUPpj9sWaGF1j>?C+rO9mHej^3NY`+sDepxU+=(`NWZX&JKi^Bo1U%~(!*@dD# zhLC>@`ubUhDpBhIVOG&`j`Duz2{2s4Hgq|;P4+Nk_T7idD=6`NQUr(pH?@i0Ko2r?)xePYMy|&Iq zwuC`Y)wS0-K^bLrjfd&ebb1;cm&cKtRAkq|QOZv57NS72nvG0x{}fVbO0LLUwdg$$ z?-Lp>UAtYoiS*8^=^j?C+&$%Zw@+UtQa0)13bu_szuUeAT!*g8fp( z3ffeh$o<|mtEfLV#e#-p*$+$%s=)EK<*!(MziddHLhJP78v7~!DrrRsA3JceRxxlCeF#IeXFP>9@~hm9QC``Mz@LZ?q|oU@$7YaC!j zNd{GX&KaR%HkUe9w#D{;bRV4tJRZr5)Y$UbTD`4oZQJg89p7;)-uJJw@|MUSKbw%0 zfIdR1xKS4zd5%{+r3g>xSA3@VPhtz`i&C~xE$y0wxYZcam_dXX!7g)1K`s+S7*9Y@ z$uia0^c&F;d_@Z5OK(6fhZ)%Hwlx~{P%eveGa_0Yc)@xY3e}%h$7d*Xl2*YRdY-H?12i?wPuu{Gwl${fI@y*gYxpWBE8&NC445uL znW|Ij$XcRg!e!G(K0(5w8&aPfKF0yr;@vq)eB+p+|2+x>7dw)G0b zN|-6DJ@YY$k_KDF0}0L;F#iPZjq~$3&N#hr8o7Ou)7lbmklHLdZw*6}S)B_uDafVIjrS%IfcYF1Qve~^uan0^E0D!C9bt}{NUksxS zlES$ zX%+PfeBvHe{*$8GDO7j=6?p{EZD=7xhPDMy)i_oo)n|+C%xrmj)j4HIe{O%x!|@NM zAFH@(FsNUhGmtMDTX}H07qm4~5TUnP;A~fQgwdbOJDbIvYS+5!Mx?eGU(jloT9&E0 zXWh^}E06PyHN!(m*>tyUdbj>&<`}a2S!*rZz}t~0UJd%a^lE^~_}6XoH_vZXAM737 zFm4}UaydCgMA3MrJH0C>nx6YNzgKVfw7S>WndjIvLVrD(qMMO;P1n;Q%Z|H$>Md=* zFrFMC0xY||XkAt0_~jCWdCUQOh^2S6G|JE58Rzf$4(sW%H= z)Z71YcHe;3yayU`(6UHu^60td50oE+EXRS+CI@K4;X`c7 zckF`F`KrkHWbz1EPiVuZ6M3ir52|fr1$Q980|r_Kr3O6}Vv>Oo)kr0@xPM!P1TKzD zkN9S`lWj%D*HS0FsGf~vWXEC3W+(T4cyGJ&d6~1SZ7Y+peG<@-&!;ocEn^4y4>gt*|y@%DKG9?>pdm1JPmYONn~xip8^!HXgN#%Ol#l14y7rc%Z0$*G#F0@PQFOJ6w_0`AvGd>4!s`~`)(1=l?7d(R;A2co_PRQOOlD9%-|egQ zZ05*yhAwZXL?B&(%xZAU^^vXF-qY}|04fbvz!2>R;ol`^qm4zKY&F3Ga#BM}Ao8j_ z@9$PKh>J&C2{GS5Bc0P+983%MQ(PgT9|;iy{8m12PCg1J7^}kg2`OSf!jqg}f!!)*y;ZlG4dHl6uZP%j?QYBJ9IavrlO%Lh1y*$>1i@M`U>00k%ld)v!Nrvm zGA`DmPZ5@l;jkCro{3Y*t)}bE*4)*0x*ca9^cs3jf42IIZEjPt@%g`7G4#I%D&y?U z5ADiQwd^%p-lg(`*%CXibaVrr(*0TPXKvgmQsNKc#QlYIVjz&DoNT!=kh)k>S1mQT zgr8<#A}e{Z^0=gkYz3D7J@ItwiESo zUTrm+wW|A86WpNJ3M9Kv4K`D50Q0%n3~Bw#z8aO-&DM=r3%>(UKjCqeidcUGO}efYp-@Q|{4X#vG8-W5lPcEo^v_fmp?3%#HI|}kYBWM< zN{TTkvshdfvFHyQAU$>-6$=)83kOHbr$}TaK8F{p;!(#Yj`J~CNPy5-96aQl(@>xP z;rr)0`a$1iVNi-_&jQm<_S8}r0bud>cfl$G%#-J7SV30l zUoTIehV!m!fjf6dWl4k(9#rJDA?3ei^VqUA$vp3{o=c11%Ayobb>h!v1mn965TvKr4u)reUBcvdYkY8}SaLv|D$ z@!{qpSqfz&pH`9=jvwV)ktb6zv_;V<2HPG7m;R~Y?`wR~rK5$91Tq!ANU!WARc?#E z5ShO^ic`Z=v?^63>At}_w&qo$L@Xy{L;e;$kk23cGn4#dh&J=(dysy;*8H$h?Cguf z8B+;f{d_|@hVKZ4_)l8zJ&pDXvgYOKs`$8IRiffy#70}y<-(={JkKY0gwl#R#iYl@ zaO}bqirWkYNHLQ0WJ)l@{9fgb*i0=8hmX7k8i+g*AyN{nu&N;Cibk@n;+c6&R+c&L zduR-`>BjkwbwSd-wC8#EVO0eX7+P*z2~*_E^b>s02X&vUOfj+vNM&T-C;nzkXMm z{tPpQXldZT!3U1Hb4oCRV2KM$Zcb+L_=l1d97U~AN+I49b{VMnPimzwthOI8h7p!6 zE(;SVM;ev_mUwE`C-6JfmMti!$>PJL)Pie&!mF3sT*^5c8`Bq`Dwl`vW#X0uL3jj7jsoSCCqf;Ok(1`$XRBidhcp$e=Dh>KPc>s;{+HwOxZOSrd ze92fEc1MpxHjWx$f5mx!+X{Pjg)oPapoj1&m5Dd)6il2s%a-NMCuDGR*LvS!3L5!C z;!7qD-xkgJye!2@by?H0`vN7D|JlH5ZOe>B4IhXIX<-48#~}j7xZM7htX|W~OSNEb zKWDd}otV2tP|(>R9cw=MhCUbqp}-W;ZFzjr_di&DO=kxVyb*aad;kEB;s)>`OfR=$ zdWMwHQT+ody9#2+pUazzIs7}mV=J{$i$)v9!6RN6)D-IW&DZEn&uZUkz;?&E_tLad zk3M=fy8lTbAsd)G(w&4%$d&9}3Vwf^~> z#p9m|C5F>=A+>+B13Be$M@p)z+j%#tE?Ct^2g|>6BA~JdN<%0B{My)lH|;E)<9VKg z&1W^I2OewzyU2U7mc=NK#quYoU>QkAMdAfzS~DQE?}^Sq;AgqT({nFSKI!)X%#*)p zCCVeroMDEm!Un%|of16Kuff7DTQ*8_PDwiByu~tEi8aOrM~=^q3z38cYd~6pH876+ z=rSpbzN-V@8P0B%<*3zTCc#Dty5Mk?W(h+mOI#Q~KWKXka`rn{n#q6*y5abx#4&