From c875fd335fe3eed8d9f64d333436923abc8f75f9 Mon Sep 17 00:00:00 2001 From: 3mmaRand <7593411+3mmaRand@users.noreply.github.com> Date: Tue, 8 Oct 2024 15:04:15 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=203mmaRand?= =?UTF-8?q?/BIO00088H-data@2d7435b978fc5c3b39c270a1c10418b1cae0d5ce=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/week-2-old/workshop.html | 78 +- search.json | 2948 ++++++++--------- site_libs/bootstrap/bootstrap.min.css | 2 +- .../week-4/study_after_workshop.html | 1 + .../week-4/study_before_workshop.html | 23 +- transcriptomics/week-4/workshop.html | 154 +- .../figure-html/unnamed-chunk-44-1.png | Bin 134147 -> 134067 bytes .../figure-html/unnamed-chunk-45-1.png | Bin 67872 -> 67883 bytes 8 files changed, 1606 insertions(+), 1600 deletions(-) diff --git a/core/week-2-old/workshop.html b/core/week-2-old/workshop.html index ea40f2a..8d268f3 100644 --- a/core/week-2-old/workshop.html +++ b/core/week-2-old/workshop.html @@ -306,8 +306,8 @@

Workshop

data
 images
-overview.html
 overview.qmd
+study_after_workshop.html
 study_after_workshop.qmd
 study_before_workshop.ipynb
 study_before_workshop.qmd
@@ -321,56 +321,56 @@ 

Workshop

ls -l
-
total 156
-drwxr-xr-x 2 runner docker  4096 Oct  8 14:05 data
-drwxr-xr-x 2 runner docker  4096 Oct  8 14:05 images
--rw-r--r-- 1 runner docker 24690 Oct  8 14:10 overview.html
--rw-r--r-- 1 runner docker  1597 Oct  8 14:05 overview.qmd
--rw-r--r-- 1 runner docker   184 Oct  8 14:05 study_after_workshop.qmd
--rw-r--r-- 1 runner docker  4807 Oct  8 14:05 study_before_workshop.ipynb
--rw-r--r-- 1 runner docker 13029 Oct  8 14:05 study_before_workshop.qmd
--rw-r--r-- 1 runner docker 58063 Oct  8 14:05 workshop.html
--rw-r--r-- 1 runner docker  8550 Oct  8 14:05 workshop.qmd
--rw-r--r-- 1 runner docker  8590 Oct  8 14:10 workshop.rmarkdown
-drwxr-xr-x 3 runner docker  4096 Oct  8 14:05 workshop_files
+
total 152
+drwxr-xr-x 2 runner docker  4096 Oct  8 14:58 data
+drwxr-xr-x 2 runner docker  4096 Oct  8 14:58 images
+-rw-r--r-- 1 runner docker  1597 Oct  8 14:58 overview.qmd
+-rw-r--r-- 1 runner docker 22716 Oct  8 15:03 study_after_workshop.html
+-rw-r--r-- 1 runner docker   184 Oct  8 14:58 study_after_workshop.qmd
+-rw-r--r-- 1 runner docker  4807 Oct  8 14:58 study_before_workshop.ipynb
+-rw-r--r-- 1 runner docker 13029 Oct  8 14:58 study_before_workshop.qmd
+-rw-r--r-- 1 runner docker 58063 Oct  8 14:58 workshop.html
+-rw-r--r-- 1 runner docker  8550 Oct  8 14:58 workshop.qmd
+-rw-r--r-- 1 runner docker  8577 Oct  8 15:03 workshop.rmarkdown
+drwxr-xr-x 3 runner docker  4096 Oct  8 14:58 workshop_files

You 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:

ls -hl
-
total 156K
-drwxr-xr-x 2 runner docker 4.0K Oct  8 14:05 data
-drwxr-xr-x 2 runner docker 4.0K Oct  8 14:05 images
--rw-r--r-- 1 runner docker  25K Oct  8 14:10 overview.html
--rw-r--r-- 1 runner docker 1.6K Oct  8 14:05 overview.qmd
--rw-r--r-- 1 runner docker  184 Oct  8 14:05 study_after_workshop.qmd
--rw-r--r-- 1 runner docker 4.7K Oct  8 14:05 study_before_workshop.ipynb
--rw-r--r-- 1 runner docker  13K Oct  8 14:05 study_before_workshop.qmd
--rw-r--r-- 1 runner docker  57K Oct  8 14:05 workshop.html
--rw-r--r-- 1 runner docker 8.4K Oct  8 14:05 workshop.qmd
--rw-r--r-- 1 runner docker 8.4K Oct  8 14:10 workshop.rmarkdown
-drwxr-xr-x 3 runner docker 4.0K Oct  8 14:05 workshop_files
+
total 152K
+drwxr-xr-x 2 runner docker 4.0K Oct  8 14:58 data
+drwxr-xr-x 2 runner docker 4.0K Oct  8 14:58 images
+-rw-r--r-- 1 runner docker 1.6K Oct  8 14:58 overview.qmd
+-rw-r--r-- 1 runner docker  23K Oct  8 15:03 study_after_workshop.html
+-rw-r--r-- 1 runner docker  184 Oct  8 14:58 study_after_workshop.qmd
+-rw-r--r-- 1 runner docker 4.7K Oct  8 14:58 study_before_workshop.ipynb
+-rw-r--r-- 1 runner docker  13K Oct  8 14:58 study_before_workshop.qmd
+-rw-r--r-- 1 runner docker  57K Oct  8 14:58 workshop.html
+-rw-r--r-- 1 runner docker 8.4K Oct  8 14:58 workshop.qmd
+-rw-r--r-- 1 runner docker 8.4K Oct  8 15:03 workshop.rmarkdown
+drwxr-xr-x 3 runner docker 4.0K Oct  8 14:58 workshop_files

The -a option stands for “all” and shows us all the files, including hidden files.

ls -alh
-
total 164K
-drwxr-xr-x 5 runner docker 4.0K Oct  8 14:10 .
-drwxr-xr-x 8 runner docker 4.0K Oct  8 14:05 ..
-drwxr-xr-x 2 runner docker 4.0K Oct  8 14:05 data
-drwxr-xr-x 2 runner docker 4.0K Oct  8 14:05 images
--rw-r--r-- 1 runner docker  25K Oct  8 14:10 overview.html
--rw-r--r-- 1 runner docker 1.6K Oct  8 14:05 overview.qmd
--rw-r--r-- 1 runner docker  184 Oct  8 14:05 study_after_workshop.qmd
--rw-r--r-- 1 runner docker 4.7K Oct  8 14:05 study_before_workshop.ipynb
--rw-r--r-- 1 runner docker  13K Oct  8 14:05 study_before_workshop.qmd
--rw-r--r-- 1 runner docker  57K Oct  8 14:05 workshop.html
--rw-r--r-- 1 runner docker 8.4K Oct  8 14:05 workshop.qmd
--rw-r--r-- 1 runner docker 8.4K Oct  8 14:10 workshop.rmarkdown
-drwxr-xr-x 3 runner docker 4.0K Oct  8 14:05 workshop_files
+
total 160K
+drwxr-xr-x 5 runner docker 4.0K Oct  8 15:03 .
+drwxr-xr-x 8 runner docker 4.0K Oct  8 15:03 ..
+drwxr-xr-x 2 runner docker 4.0K Oct  8 14:58 data
+drwxr-xr-x 2 runner docker 4.0K Oct  8 14:58 images
+-rw-r--r-- 1 runner docker 1.6K Oct  8 14:58 overview.qmd
+-rw-r--r-- 1 runner docker  23K Oct  8 15:03 study_after_workshop.html
+-rw-r--r-- 1 runner docker  184 Oct  8 14:58 study_after_workshop.qmd
+-rw-r--r-- 1 runner docker 4.7K Oct  8 14:58 study_before_workshop.ipynb
+-rw-r--r-- 1 runner docker  13K Oct  8 14:58 study_before_workshop.qmd
+-rw-r--r-- 1 runner docker  57K Oct  8 14:58 workshop.html
+-rw-r--r-- 1 runner docker 8.4K Oct  8 14:58 workshop.qmd
+-rw-r--r-- 1 runner docker 8.4K Oct  8 15:03 workshop.rmarkdown
+drwxr-xr-x 3 runner docker 4.0K Oct  8 14:58 workshop_files

You 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:

diff --git a/search.json b/search.json index 80798f2..0d3b399 100644 --- a/search.json +++ b/search.json @@ -29,1160 +29,1283 @@ "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": "core/week-6-old/overview.html", - "href": "core/week-6-old/overview.html", - "title": "Overview", + "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": "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" + "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/study_after_workshop.html", - "href": "core/week-6/study_after_workshop.html", - "title": "Independent Study to consolidate this week", + "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": "These are suggestions", + "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": [ "Core Supporting Info", - "Week 6: Supporting Information 2", - "Consolidate!" + "Week 2: Supporting Information 1", + "Prepare!" ] }, { - "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", + "objectID": "core/week-2/study_after_workshop.html", + "href": "core/week-2/study_after_workshop.html", "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)", + "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": [ "Core Supporting Info", - "Week 6: Supporting Information 2", + "Week 2: Supporting Information 1", "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-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-6/workshop.html", - "href": "core/week-6/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:", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Workshop" - ] + "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-6/workshop.html#session-overview", - "href": "core/week-6/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:", - "crumbs": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "Workshop" - ] + "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-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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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": [ - "Core Supporting Info", - "Week 6: Supporting Information 2", - "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": "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-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-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-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-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-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-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-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-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": "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-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": "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-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": "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-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": "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-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": "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-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": "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-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": "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": "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": "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": "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": "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": "😎 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": "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": "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": "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": "core/week-2-old/workshop.html", - "href": "core/week-2-old/workshop.html", - "title": "Workshop", - "section": "", - "text": "In this workshop you will" + "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": "😩 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": "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": "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": "😩 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": "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": "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": "😩 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/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": "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" }, { - "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": "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": "😎 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": "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": "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": "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": "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.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 8 14:05 data\ndrwxr-xr-x 2 runner docker 4096 Oct 8 14:05 images\n-rw-r--r-- 1 runner docker 24690 Oct 8 14:10 overview.html\n-rw-r--r-- 1 runner docker 1597 Oct 8 14:05 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 8 14:05 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4807 Oct 8 14:05 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13029 Oct 8 14:05 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 58063 Oct 8 14:05 workshop.html\n-rw-r--r-- 1 runner docker 8550 Oct 8 14:05 workshop.qmd\n-rw-r--r-- 1 runner docker 8590 Oct 8 14:10 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4096 Oct 8 14:05 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 8 14:05 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:05 images\n-rw-r--r-- 1 runner docker 25K Oct 8 14:10 overview.html\n-rw-r--r-- 1 runner docker 1.6K Oct 8 14:05 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 8 14:05 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 8 14:05 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 8 14:05 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 8 14:05 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:05 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:10 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 8 14:05 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 8 14:10 .\ndrwxr-xr-x 8 runner docker 4.0K Oct 8 14:05 ..\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:05 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:05 images\n-rw-r--r-- 1 runner docker 25K Oct 8 14:10 overview.html\n-rw-r--r-- 1 runner docker 1.6K Oct 8 14:05 overview.qmd\n-rw-r--r-- 1 runner docker 184 Oct 8 14:05 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 8 14:05 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 8 14:05 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 8 14:05 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:05 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:10 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 8 14:05 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": "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": "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": "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": "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": "core/week-2/study_after_workshop.html", - "href": "core/week-2/study_after_workshop.html", + "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": "", + "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": "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\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", + "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-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 2: Supporting Information 1", - "Consolidate!" + "Week 6: Supporting Information 2", + "About" ] }, { - "objectID": "core/week-2/workshop.html#session-overview", - "href": "core/week-2/workshop.html#session-overview", + "objectID": "core/week-6/workshop.html", + "href": "core/week-6/workshop.html", "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:\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", + "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 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#what-is-reproducibility", - "href": "core/week-2/workshop.html#what-is-reproducibility", + "objectID": "core/week-6/workshop.html#session-overview", + "href": "core/week-6/workshop.html#session-overview", "title": "Workshop", - "section": "What is reproducibility?", - "text": "What is reproducibility?\n\n\nThe Turing Way’s definitions of reproducible research", + "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 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#definitions", - "href": "core/week-2/workshop.html#definitions", + "objectID": "core/week-6/workshop.html#what-is-reproducibility", + "href": "core/week-6/workshop.html#what-is-reproducibility", "title": "Workshop", - "section": "Definitions", - "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\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.", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#definitions-1", - "href": "core/week-2/workshop.html#definitions-1", + "objectID": "core/week-6/workshop.html#why-does-it-matter", + "href": "core/week-6/workshop.html#why-does-it-matter", "title": "Workshop", - "section": "Definitions", - "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#definitions-2", - "href": "core/week-2/workshop.html#definitions-2", + "objectID": "core/week-6/workshop.html#how-to-achieve-reproducibility", + "href": "core/week-6/workshop.html#how-to-achieve-reproducibility", "title": "Workshop", - "section": "Definitions", - "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#definitions-3", - "href": "core/week-2/workshop.html#definitions-3", + "objectID": "core/week-6/workshop.html#rationale-for-scripting", + "href": "core/week-6/workshop.html#rationale-for-scripting", "title": "Workshop", - "section": "Definitions", - "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions.", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#why-does-it-matter", - "href": "core/week-2/workshop.html#why-does-it-matter", + "objectID": "core/week-6/workshop.html#project-oriented-workflow", + "href": "core/week-6/workshop.html#project-oriented-workflow", "title": "Workshop", - "section": "Why does it matter?", - "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)", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#how-to-achieve-reproducibility", - "href": "core/week-2/workshop.html#how-to-achieve-reproducibility", + "objectID": "core/week-6/workshop.html#naming-things", + "href": "core/week-6/workshop.html#naming-things", "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,\nMore advanced: version, control, continuous integration and testing (not required for Supporting Information)", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rationale-for-scripting", - "href": "core/week-2/workshop.html#rationale-for-scripting", + "objectID": "core/week-6/workshop.html#readme-files", + "href": "core/week-6/workshop.html#readme-files", "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": "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#project-oriented-workflow", - "href": "core/week-2/workshop.html#project-oriented-workflow", + "objectID": "core/week-6/workshop.html#code-comments", + "href": "core/week-6/workshop.html#code-comments", "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", + "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": [ "Core Supporting Info", - "Week 2: Supporting Information 1", + "Week 6: Supporting Information 2", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#example-si-itself-is-an-rsp", - "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", + "objectID": "index.html", + "href": "index.html", + "title": "Data Analysis for the Group Research 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" + }, + { + "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": "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": "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": "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": "index.html#please-cite-as", + "href": "index.html#please-cite-as", + "title": "Data Analysis for the Group Research Project", + "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" + }, + { + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", - "Workshop" + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "About" ] }, { - "objectID": "core/week-2/workshop.html#example-si-includes-an-rsp", - "href": "core/week-2/workshop.html#example-si-includes-an-rsp", + "objectID": "transcriptomics/week-5/workshop.html", + "href": "transcriptomics/week-5/workshop.html", "title": "Workshop", - "section": "Example: SI includes an RSP", - "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", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rstudio-projects", - "href": "core/week-2/workshop.html#rstudio-projects", + "objectID": "transcriptomics/week-5/workshop.html#session-overview", + "href": "transcriptomics/week-5/workshop.html#session-overview", "title": "Workshop", - "section": "RStudio Projects", - "text": "RStudio Projects\n\n\nRStudio Projects make it easy to manage working directories and paths because they set the working directory to the RStudio Projects directory automatically.", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rstudio-projects-1", - "href": "core/week-2/workshop.html#rstudio-projects-1", + "objectID": "transcriptomics/week-5/workshop.html#frog-development", + "href": "transcriptomics/week-5/workshop.html#frog-development", "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", + "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 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rstudio-projects-2", - "href": "core/week-2/workshop.html#rstudio-projects-2", + "objectID": "transcriptomics/week-5/workshop.html#arabidopisis", + "href": "transcriptomics/week-5/workshop.html#arabidopisis", "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 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.", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\n🎬 Open the arabi-88H RStudio Project and the wildsuf-wilddef-s30.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rstudio-projects-3", - "href": "core/week-2/workshop.html#rstudio-projects-3", + "objectID": "transcriptomics/week-5/workshop.html#leishmania-mexicana", + "href": "transcriptomics/week-5/workshop.html#leishmania-mexicana", "title": "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.", + "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 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#rstudio-projects-4", - "href": "core/week-2/workshop.html#rstudio-projects-4", + "objectID": "transcriptomics/week-5/workshop.html#stem-cells", + "href": "transcriptomics/week-5/workshop.html#stem-cells", "title": "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”", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#creating-an-rstudio-project", - "href": "core/week-2/workshop.html#creating-an-rstudio-project", + "objectID": "transcriptomics/week-5/workshop.html#everyone", + "href": "transcriptomics/week-5/workshop.html#everyone", "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.", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#creating-an-rstudio-project-1", - "href": "core/week-2/workshop.html#creating-an-rstudio-project-1", + "objectID": "transcriptomics/week-5/workshop.html#everyone-1", + "href": "transcriptomics/week-5/workshop.html#everyone-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?", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#creating-an-rstudio-project-2", - "href": "core/week-2/workshop.html#creating-an-rstudio-project-2", + "objectID": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", + "href": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", "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", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#opening-and-closing", - "href": "core/week-2/workshop.html#opening-and-closing", + "objectID": "transcriptomics/week-5/workshop.html#stem-cells-1", + "href": "transcriptomics/week-5/workshop.html#stem-cells-1", "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", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\ndo not because the data is already log2 transformed.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#opening-and-closing-1", - "href": "core/week-2/workshop.html#opening-and-closing-1", + "objectID": "transcriptomics/week-5/workshop.html#everyone-2", + "href": "transcriptomics/week-5/workshop.html#everyone-2", "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.", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#code-formatting-and-style-1", - "href": "core/week-2/workshop.html#code-formatting-and-style-1", + "objectID": "transcriptomics/week-5/workshop.html#everyone-3", + "href": "transcriptomics/week-5/workshop.html#everyone-3", "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\n\nCode is not write only.\nCode is communication!", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#code-formatting-and-style-2", - "href": "core/week-2/workshop.html#code-formatting-and-style-2", + "objectID": "transcriptomics/week-5/workshop.html#frog-development-1", + "href": "transcriptomics/week-5/workshop.html#frog-development-1", "title": "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", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#code-formatting-and-style-3", - "href": "core/week-2/workshop.html#code-formatting-and-style-3", + "objectID": "transcriptomics/week-5/workshop.html#arabidopsis", + "href": "transcriptomics/week-5/workshop.html#arabidopsis", "title": "Workshop", - "section": "Code formatting and style", - "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", + "section": "🎄 Arabidopsis", + "text": "🎄 Arabidopsis", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#ugly-code", - "href": "core/week-2/workshop.html#ugly-code", + "objectID": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", + "href": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", "title": "Workshop", - "section": "😩 Ugly code 😩", - "text": "😩 Ugly code 😩\n\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::\",\"\"))", + "section": "💉 Leishmainia mexicana", + "text": "💉 Leishmainia mexicana", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#ugly-code-1", - "href": "core/week-2/workshop.html#ugly-code-1", + "objectID": "transcriptomics/week-5/workshop.html#stem-cells-2", + "href": "transcriptomics/week-5/workshop.html#stem-cells-2", "title": "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", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#cool-code", - "href": "core/week-2/workshop.html#cool-code", + "objectID": "transcriptomics/week-5/workshop.html#frog-development-2", + "href": "transcriptomics/week-5/workshop.html#frog-development-2", "title": "Workshop", - "section": "😎 Cool code 😎", - "text": "😎 Cool code 😎\n\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 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::\", \"\"))", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 5: Visualising and Interpreting", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#cool-code-1", - "href": "core/week-2/workshop.html#cool-code-1", + "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. 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": "transcriptomics/week-4/workshop.html", + "href": "transcriptomics/week-4/workshop.html", "title": "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": "", + "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 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#code-algorithmically-1", - "href": "core/week-2/workshop.html#code-algorithmically-1", + "objectID": "transcriptomics/week-4/workshop.html#session-overview", + "href": "transcriptomics/week-4/workshop.html#session-overview", "title": "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": "", + "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 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#hard-coding-numbers.", - "href": "core/week-2/workshop.html#hard-coding-numbers.", + "objectID": "transcriptomics/week-4/workshop.html#frog-development", + "href": "transcriptomics/week-4/workshop.html#frog-development", "title": "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": "🐸 Frog development", + "text": "🐸 Frog development\n🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#hard-coding-numbers.-1", - "href": "core/week-2/workshop.html#hard-coding-numbers.-1", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis", + "href": "transcriptomics/week-4/workshop.html#arabidopisis", "title": "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": "🎄 Arabidopisis\n", + "text": "🎄 Arabidopisis\n\n🎬 Open the arab-88H RStudio Project and the suff-def-wild.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#hard-coding-numbers", - "href": "core/week-2/workshop.html#hard-coding-numbers", + "objectID": "transcriptomics/week-4/workshop.html#leishmania", + "href": "transcriptomics/week-4/workshop.html#leishmania", "title": "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", + "section": "💉 Leishmania\n", + "text": "💉 Leishmania\n\n🎬 Open the leish-88H RStudio Project and the pro-meta.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#better", - "href": "core/week-2/workshop.html#better", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells", + "href": "transcriptomics/week-4/workshop.html#stem-cells", "title": "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": "🐭 Stem cells", + "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#better-1", - "href": "core/week-2/workshop.html#better-1", + "objectID": "transcriptomics/week-4/workshop.html#everyone", + "href": "transcriptomics/week-4/workshop.html#everyone", "title": "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": "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 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#naming-things", - "href": "core/week-2/workshop.html#naming-things", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-1", + "href": "transcriptomics/week-4/workshop.html#frog-development-1", "title": "Workshop", - "section": "Naming things", - "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", + "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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#naming-suggestions", - "href": "core/week-2/workshop.html#naming-suggestions", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-1", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-1", "title": "Workshop", - "section": "Naming suggestions", - "text": "Naming suggestions\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", + "section": "🎄 Arabidopisis\n", + "text": "🎄 Arabidopisis\n\nWe need to import the wildtype data that were filtered to remove genes with 3 or 4 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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#summary", - "href": "core/week-2/workshop.html#summary", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-1", + "href": "transcriptomics/week-4/workshop.html#leishmania-1", "title": "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": "💉 Leishmania\n", + "text": "💉 Leishmania\n\nWe need to import the procyclic- and metacyclic-promastigote 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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#reading", - "href": "core/week-2/workshop.html#reading", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-1", + "href": "transcriptomics/week-4/workshop.html#stem-cells-1", "title": "Workshop", - "section": "Reading", - "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)", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nImport\nNow go to Differential Expression Analysis.", "crumbs": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "core/week-2/workshop.html#references", - "href": "core/week-2/workshop.html#references", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-2", + "href": "transcriptomics/week-4/workshop.html#frog-development-2", "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. 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.", + "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\nAll 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 other columns give the “treatments”. In this case, the treatments stage (with three levels) and treatment (with two levels).\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 recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by treatment and sibling_rep. 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\nYou should be able to see that this is the same as in s30_count_mat.\n🎬 View the column information:\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\nYou should be able to see this is the same as in meta_s30.\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\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 for the comparison 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": [ - "Core Supporting Info", - "Week 2: Supporting Information 1", + "Transcriptomics", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "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", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-2", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-2", + "title": "Workshop", + "section": "🎄 Arabidopisis\n", + "text": "🎄 Arabidopisis\n\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\nAll 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 both replicates in one group and non-zero values in both replicates in the other group. For example, those shown here:\n\n\n\n\n\n\n\n\n\n\n\ngene_id\nSRX028956_wild_suf\nSRX028957_wild_def\nSRX028960_wild_suf\nSRX028961_wild_def\n\n\n\nAT1G04513\n11\n0\n25\n0\n\n\nAT1G22610\n36\n0\n52\n0\n\n\nAT1G26290\n12\n0\n23\n0\n\n\nAT1G59810\n5\n0\n16\n0\n\n\nAT2G44130\n28\n0\n18\n0\n\n\n\n\n\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only in the sufficient copper group:\n\nwild_suf_only <- wild_filtered |>\n filter(SRX028961_wild_def == 0,\n SRX028957_wild_def == 0,\n SRX028960_wild_suf > 0,\n SRX028956_wild_suf > 0)\n\n❓ How many genes are expressed only in the sufficient copper group?\n\n\n🎬 Now you find any genes that are expressed only in the deficient copper group.\n❓ How many genes are expressed only in the deficient copper 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🎬 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 Bioconductor2 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 wild_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\nwild_count_mat <- wild_filtered |>\n select(-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(wild_count_mat) <- wild_filtered$gene_id\n\nYou might want to view the matrix (click on it in your environment pane).\nThe metadata are in a file, arab_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other columns give the “treatments”. In this case, the treatments genotype (with two levels) and copper (with two levels).\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/arab_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 wild data so we need to remove the samples that are not in the wild data.\n🎬 Filter the metadata to keep only the wild information:\n\nmeta_wild <- meta |>\n filter(genotype == \"wt\")\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by copper status.\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(wild_count_mat,\n colData = meta_wild,\n design = ~ copper)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of copper in the metadata dataframe is “char” and it has been converted into a factor type.\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\nYou should be able to see that this is the same as in wild_count_mat.\n🎬 View the column information:\n\ncolData(dds)\n\nDataFrame with 4 rows and 3 columns\n sample_id genotype copper\n <character> <character> <factor>\nSRX028956_wild_suf SRX028956_wild_suf wt sufficient\nSRX028957_wild_def SRX028957_wild_def wt deficient \nSRX028960_wild_suf SRX028960_wild_suf wt sufficient\nSRX028961_wild_def SRX028961_wild_def wt deficient \n\n\nYou should be able to see this is the same as in meta_wild.\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\nSRX028956_wild_suf SRX028957_wild_def SRX028960_wild_suf SRX028961_wild_def \n 0.8200020 0.4653024 2.3002428 1.1965924 \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\n🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:\n\nwild_normalised_counts <- data.frame(normalised_counts,\n 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 sufficient and deficient.\n🎬 Define the contrast:\n\ncontrast_suf <- c(\"copper\", \"sufficient\", \"deficient\")\n\nNote that copper is the name of the column in the metadata dataframe and sufficient and deficient are the names of the levels in the copper column. By putting them in the order sufficient , deficient we are saying the fold change will be sufficient / deficient. This means:\n\npositive log fold changes indicate sufficient > deficient and\nnegative log fold changes indicates deficient > sufficient.\n\nIf we had put them in the order deficient, sufficient we would have the reverse.\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_suf <- results(dds,\n contrast = contrast_suf)\n\nThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between the sufficient- and\ndeficient-copper for each gene.\n🎬 Put the results in a dataframe and add the gene ids as a column:\n\nwild_results <- data.frame(results_suf,\n gene_id = row.names(results_suf))\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\nwild_results <- wild_normalised_counts |>\n left_join(wild_results, by = \"gene_id\")\n\nNow go to Add gene information.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "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-2", + "href": "transcriptomics/week-4/workshop.html#leishmania-2", "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", + "section": "💉 Leishmania\n", + "text": "💉 Leishmania\n\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\nAll 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 replicates in one group and non-zero values in all replicates in the other group.\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only at the procyclic-promastigote stage:\n\npro_meta_pro_only <- pro_meta_filtered |>\n filter(lm_pro_1 > 0,\n lm_pro_2 > 0,\n lm_pro_3 > 0,\n lm_meta_1 == 0,\n lm_meta_2 == 0,\n lm_meta_2 == 0)\n\n❓ How many genes are expressed only in the procyclic-promastigote stage group?\n\n\n🎬 Now you find any genes that are expressed only at the metacyclic stage\n❓ How many genes are expressed only at the metacyclic stage?\n\n\n❓ Do the results make sense to you in light of what you know about the biology?\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 Bioconductor3 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 pro_meta_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\npro_meta_count_mat <- pro_meta_filtered |>\n select(-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(pro_meta_count_mat) <- pro_meta_filtered$gene_id\n\nYou might want to view the matrix (click on it in your environment pane).\nThe metadata are in a file, leish_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other columns give the “treatments”. In this case, the treatment is stage (with three levels).\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/leish_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 wild data so we need to remove the samples that are not in the wild data.\n🎬 Filter the metadata to keep only the procyclic and metacyclic information:\n\nmeta_pro_meta <- meta |>\n filter(stage != \"amastigotes\")\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by stage status.\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(pro_meta_count_mat,\n colData = meta_pro_meta,\n design = ~ stage)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of stage in the metadata dataframe is “char” and it has been converted into a factor type.\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\nYou should be able to see that this is the same as in pro_meta_count_mat.\n🎬 View the column information:\n\ncolData(dds)\n\nDataFrame with 6 rows and 3 columns\n sample_id stage replicate\n <character> <factor> <numeric>\nlm_pro_1 lm_pro_1 procyclic 1\nlm_pro_2 lm_pro_2 procyclic 2\nlm_pro_3 lm_pro_3 procyclic 3\nlm_meta_1 lm_meta_1 metacyclic 1\nlm_meta_2 lm_meta_2 metacyclic 2\nlm_meta_3 lm_meta_3 metacyclic 3\n\n\nYou should be able to see this is the same as in meta_pro_meta.\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 lm_pro_1 lm_pro_2 lm_pro_3 lm_meta_1 lm_meta_2 lm_meta_3 \n1.3029351 0.9158157 0.9943186 0.7849299 0.8443586 1.3250409 \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\n🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:\n\npro_meta_normalised_counts <- data.frame(normalised_counts,\n 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 procyclic and metacyclic.\n🎬 Define the contrast:\n\ncontrast_pro_meta <- c(\"stage\", \"procyclic\", \"metacyclic\")\n\nNote that stage is the name of the column in the metadata dataframe and procyclic and metacyclic are the names of the levels in the stage column. By putting them in the order procyclic , metacyclic we are saying the fold change will be procyclic / metacyclic. This means:\n\npositive log fold changes indicate procyclic > metacyclic and\nnegative log fold changes indicates metacyclic > procyclic.\n\nIf we had put them in the order metacyclic, procyclic we would have the reverse.\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_pro_meta <- results(dds,\n contrast = contrast_pro_meta)\n\nThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between procyclic and metacyclic stage for each gene\n🎬 Put the results in a dataframe and add the gene ids as a column:\n\npro_meta_results <- data.frame(results_pro_meta,\n gene_id = row.names(results_pro_meta))\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\npro_meta_results <- pro_meta_normalised_counts |>\n left_join(pro_meta_results, by = \"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#session-overview", - "href": "transcriptomics/week-5/workshop.html#session-overview", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-2", + "href": "transcriptomics/week-4/workshop.html#stem-cells-2", "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", + "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#frog-development", - "href": "transcriptomics/week-5/workshop.html#frog-development", + "objectID": "transcriptomics/week-4/workshop.html#frog-development-3", + "href": "transcriptomics/week-4/workshop.html#frog-development-3", "title": "Workshop", "section": "🐸 Frog development", - "text": "🐸 Frog development\n🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.", + "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#arabidopisis", - "href": "transcriptomics/week-5/workshop.html#arabidopisis", + "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-3", + "href": "transcriptomics/week-4/workshop.html#arabidopisis-3", "title": "Workshop", - "section": "🎄 Arabidopisis", - "text": "🎄 Arabidopisis\n🎬 Open the arabi-88H RStudio Project and the wildsuf-wilddef-s30.R script.", + "section": "🎄 Arabidopisis\n", + "text": "🎄 Arabidopisis\n\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 and 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 (Durinck et al. 2009, 2005) gives you programmatic access making it easier to integrate information into R dataframes.\n🎬 Load the biomaRt (Durinck et al. 2009, 2005) package:\n\nlibrary(biomaRt)\n\nThe biomaRt package includes a function to list all the available datasets\n🎬 List the Ensembl “marts” available:\n\nlistEnsemblGenomes()\n\n biomart version\n1 protists_mart Ensembl Protists Genes 59\n2 protists_variations Ensembl Protists Variations 59\n3 fungi_mart Ensembl Fungi Genes 59\n4 fungi_variations Ensembl Fungi Variations 59\n5 metazoa_mart Ensembl Metazoa Genes 59\n6 metazoa_variations Ensembl Metazoa Variations 59\n7 plants_mart Ensembl Plants Genes 59\n8 plants_variations Ensembl Plants Variations 59\n\n\nplants_mart looks like the one we want. We can see what genomes are available with names like “Arabidopsis” in this mart using the searchDatasets() function.\n🎬\n\nsearchDatasets(useEnsemblGenomes(biomart = \"plants_mart\"), \n pattern = \"Arabidopsis\")\n\n dataset description version\n4 ahalleri_eg_gene Arabidopsis halleri genes (Ahal2.2) Ahal2.2\n5 alyrata_eg_gene Arabidopsis lyrata genes (v.1.0) v.1.0\n10 athaliana_eg_gene Arabidopsis thaliana genes (TAIR10) TAIR10\n\n\nathaliana_eg_gene is the Arabidopsis thaliana genes (TAIR10) dataset we want.\n🎬 Connect to the athaliana_eg_gene database in plants_mart:\n\nensembl <- useEnsemblGenomes(biomart = \"plants_mart\",\n dataset = \"athaliana_eg_gene\")\n\n🎬 See the the types of information we can retrieve:\n\nlistAttributes(mart = ensembl) |> View()\n\nThere are many (1,714!) possible bits of information (attributes) that can be obtained.\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 in values 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 the gene name and a description. We also retreive the gene id so we can later join the information with the results:\n\ngene_info <- getBM(filters = \"ensembl_gene_id\",\n attributes = c(\"ensembl_gene_id\",\n \"external_gene_name\",\n \"description\"),\n values = wild_results$gene_id,\n mart = ensembl)\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\nwild_results <- wild_results |>\n left_join(gene_info,\n by = join_by(gene_id == ensembl_gene_id))\n\n🎬 Save the results to a file:\n\nwrite_csv(wild_results, file = \"results/wild_results.csv\")", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#leishmania-mexicana", - "href": "transcriptomics/week-5/workshop.html#leishmania-mexicana", + "objectID": "transcriptomics/week-4/workshop.html#leishmania-3", + "href": "transcriptomics/week-4/workshop.html#leishmania-3", "title": "Workshop", - "section": "💉 Leishmania mexicana", - "text": "💉 Leishmania mexicana\n🎬 Open the leish-88H RStudio Project and the pro-meta-s30.R script.", + "section": "💉 Leishmania\n", + "text": "💉 Leishmania\n\n???\n🎬 Save the results to a file:\n\nwrite_csv(pro_meta_results, file = \"results/pro_meta_results .csv\")", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#stem-cells", - "href": "transcriptomics/week-5/workshop.html#stem-cells", + "objectID": "transcriptomics/week-4/workshop.html#stem-cells-3", + "href": "transcriptomics/week-4/workshop.html#stem-cells-3", "title": "Workshop", "section": "🐭 Stem cells", - "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", + "text": "🐭 Stem cells", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 4: Statistical Analysis", "Workshop" ] }, { - "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)", + "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.↩︎\nBioconductor is a project that develops and supports R packages for bioinformatics.↩︎\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#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.", + "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 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": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Workshop" + "Week 3: Hello data!", + "About" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", - "href": "transcriptomics/week-5/workshop.html#frog-arab-and-leish", + "objectID": "transcriptomics/week-3/workshop.html", + "href": "transcriptomics/week-3/workshop.html", "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.", + "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/workshop.html#stem-cells-1", - "href": "transcriptomics/week-5/workshop.html#stem-cells-1", + "objectID": "transcriptomics/week-3/workshop.html#session-overview", + "href": "transcriptomics/week-3/workshop.html#session-overview", "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells\ndo not because the data is already log2 transformed.", + "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/workshop.html#everyone-2", - "href": "transcriptomics/week-5/workshop.html#everyone-2", + "objectID": "transcriptomics/week-3/workshop.html#frog-development", + "href": "transcriptomics/week-3/workshop.html#frog-development", "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.", + "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. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you 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 could 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 conducting our analysis both with and without this replicate to determine whether its oddness was influencing our conclusions. Since we have just 3 replicates, we will leave it in. The potential effect of an odd replicate is reduced statistical power. 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 though S30_F_3 does stand out a little\nthe peak at zero suggests quite a few counts of 1.\nwe 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 similar to that 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 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.\nNow go to Filtering for QC.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#everyone-3", - "href": "transcriptomics/week-5/workshop.html#everyone-3", + "objectID": "transcriptomics/week-3/workshop.html#arabidopsis", + "href": "transcriptomics/week-3/workshop.html#arabidopsis", "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.", + "section": "🎄 Arabidopsis\n", + "text": "🎄 Arabidopsis\n\nImport\nImport the data for wildtype plants.\n🎬 Import arabidopsis-wild.csv\n\n# 🎄 import the wild data\nwild <- read_csv(\"data-raw/arabidopsis-wild.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\nwild |>\n pivot_longer(cols = -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\nwild |>\n pivot_longer(cols = -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 genome2. 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 5 columns:\n\n# examine all the columns quickly\n# works well with smaller numbers of column\nsummary(wild)\n\n gene_id SRX028956_wild_suf SRX028957_wild_def SRX028960_wild_suf\n Length:32833 Min. : 0.0 Min. : 0.00 Min. : 0.0 \n Class :character 1st Qu.: 6.0 1st Qu.: 2.00 1st Qu.: 15.0 \n Mode :character Median : 29.0 Median : 15.00 Median : 76.0 \n Mean : 112.3 Mean : 70.27 Mean : 295.5 \n 3rd Qu.: 99.0 3rd Qu.: 63.00 3rd Qu.: 263.0 \n Max. :38287.0 Max. :24439.00 Max. :80527.0 \n SRX028961_wild_def\n Min. : 0.0 \n 1st Qu.: 6.0 \n Median : 37.0 \n Mean : 173.4 \n 3rd Qu.: 151.0 \n Max. :58548.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\nWe want to know how many zeros there are in each a column. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you the number of TRUE values. For example, sum(SRX028961_wild_def > 0) gives the number of values above zero in the SRX028961_wild_def column. If you wanted the number of zeros, you could use sum(SRX028961_wild_def == 0).\n🎬 Find the number values above zero in all six columns:\n\nwild |>\n summarise(sum(SRX028961_wild_def > 0),\n sum(SRX028957_wild_def > 0),\n sum(SRX028960_wild_suf > 0),\n sum(SRX028956_wild_suf > 0))\n\n# A tibble: 1 × 4\n `sum(SRX028961_wild_def > 0)` sum(SRX028957_wild_def …¹ sum(SRX028960_wild_s…²\n <int> <int> <int>\n1 29712 28015 30946\n# ℹ abbreviated names: ¹​`sum(SRX028957_wild_def > 0)`,\n# ²​`sum(SRX028960_wild_suf > 0)`\n# ℹ 1 more variable: `sum(SRX028956_wild_suf > 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\nwild |>\n pivot_longer(cols = -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: 4 × 2\n sample n_above_zero\n <chr> <int>\n1 SRX028956_wild_suf 29997\n2 SRX028957_wild_def 28015\n3 SRX028960_wild_suf 30946\n4 SRX028961_wild_def 29712\n\n\nYou could expand this code to get get other useful summary information\n🎬 Summarise all the samples:\n\nwild |>\n pivot_longer(cols = -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: 4 × 8\n sample min lowerq mean median upperq max n_above_zero\n <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>\n1 SRX028956_wild_suf 0 6 112. 29 99 38287 29997\n2 SRX028957_wild_def 0 2 70.3 15 63 24439 28015\n3 SRX028960_wild_suf 0 15 296. 76 263 80527 30946\n4 SRX028961_wild_def 0 6 173. 37 151 58548 29712\n\n\nThe mean count ranges from 70 to 296. It is difficult to determine whether any replicates are “unusual” when there are only two replicates. The potential effect of only two replicates, or of an an odd replicate when you have more replicates, is reduced statistical power. 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, wild_summary_samp (using assignment).\nWe can also plot the distribution of counts across samples. We have many values (32833) 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\nwild |>\n pivot_longer(cols = -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\ndifficult to say was is usual/unusual with 2 replicates\nthe peak at zero suggests quite a few counts of 1.\nwe would expect the distribution of counts in each sample to be roughly log normal so that the 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 similar to that 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 wild_summary_gene. Include the same columns as we had in the by sample summary (wild_summary_samp) and an additional column, total for the total number of counts for each gene.\n🎬 View the wild_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 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\nwild_summary_gene |> \n ggplot(aes(x = reorder(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 43348) is far greater than between samples (average counts from 70 to 296) which is exactly what we would expect to see.\nNow go to Filtering for QC.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#frog-development-1", - "href": "transcriptomics/week-5/workshop.html#frog-development-1", + "objectID": "transcriptomics/week-3/workshop.html#leishmania", + "href": "transcriptomics/week-3/workshop.html#leishmania", "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()", + "section": "💉 Leishmania\n", + "text": "💉 Leishmania\n\nImport\nImport the data for L.mexicana procyclic promastigote (pro) and the metacyclic promastigotes (meta)\n🎬 Import leishmania-mex-pro.csv and leishmania-mex-meta.csv\n\n# 💉 import the pro and meta leish data\npro <- read_csv(\"data-raw/leishmania-mex-pro.csv\")\nmeta <- read_csv(\"data-raw/leishmania-mex-meta.csv\")\n\nWe will need to combine the two sets of columns (datasets) so we can compare the two stages. We will join them using gene_id to match the rows. The column names differ so we don’t need to worry about renaming any of them.\n🎬 Combine the two datasets by gene_id and save the result as pro_meta.\n\n# combine the two datasets\npro_meta <- pro |>\n left_join(meta, \n by = \"gene_id\")\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\npro_meta |>\n pivot_longer(cols = -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\npro_meta |>\n pivot_longer(cols = -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 genome3. 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(pro_meta)\n\n gene_id lm_pro_1 lm_pro_2 lm_pro_3 \n Length:8677 Min. : 0.0 Min. : 0.0 Min. : 0.0 \n Class :character 1st Qu.: 77.0 1st Qu.: 53.0 1st Qu.: 59.0 \n Mode :character Median : 191.0 Median : 135.0 Median : 145.0 \n Mean : 364.5 Mean : 255.7 Mean : 281.4 \n 3rd Qu.: 332.0 3rd Qu.: 238.0 3rd Qu.: 256.0 \n Max. :442477.0 Max. :295423.0 Max. :411663.0 \n lm_meta_1 lm_meta_2 lm_meta_3 \n Min. : 0.0 Min. : 0.0 Min. : 0.0 \n 1st Qu.: 48.0 1st Qu.: 51.0 1st Qu.: 78.0 \n Median : 110.0 Median : 120.0 Median : 187.0 \n Mean : 220.3 Mean : 221.9 Mean : 355.9 \n 3rd Qu.: 197.0 3rd Qu.: 215.0 3rd Qu.: 341.0 \n Max. :244569.0 Max. :205203.0 Max. :498303.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\nWe want to know how many zeros there are in each a column. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you the number of TRUE values. For example, sum(lm_pro_1 > 0) gives the number of values above zero in the lm_pro_1 column. If you wanted the number of zeros, you could use sum(lm_pro_1 == 0).\n🎬 Find the number values above zero in all six columns:\n\npro_meta |>\n summarise(sum(lm_pro_1 > 0),\n sum(lm_pro_2 > 0),\n sum(lm_pro_3 > 0),\n sum(lm_meta_1 > 0),\n sum(lm_meta_2 > 0),\n sum(lm_meta_3 > 0))\n\n# A tibble: 1 × 6\n `sum(lm_pro_1 > 0)` `sum(lm_pro_2 > 0)` `sum(lm_pro_3 > 0)`\n <int> <int> <int>\n1 8549 8522 8509\n# ℹ 3 more variables: `sum(lm_meta_1 > 0)` <int>, `sum(lm_meta_2 > 0)` <int>,\n# `sum(lm_meta_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\npro_meta |>\n pivot_longer(cols = -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 lm_meta_1 8535\n2 lm_meta_2 8535\n3 lm_meta_3 8530\n4 lm_pro_1 8549\n5 lm_pro_2 8522\n6 lm_pro_3 8509\n\n\nYou could expand this code to get get other useful summary information\n🎬 Summarise all the samples:\n\npro_meta |>\n pivot_longer(cols = -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 lm_meta_1 0 48 220. 110 197 244569 8535\n2 lm_meta_2 0 51 222. 120 215 205203 8535\n3 lm_meta_3 0 78 356. 187 341 498303 8530\n4 lm_pro_1 0 77 364. 191 332 442477 8549\n5 lm_pro_2 0 53 256. 135 238 295423 8522\n6 lm_pro_3 0 59 281. 145 256 411663 8509\n\n\nThe mean count ranges from 220 to 364. We do not appear to have any outlying (odd) replicates. The potential effect of an odd replicate is reduced statistical power. 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.\n🎬 Save the summary as a dataframe, pro_meta_summary_samp (using assignment).\nWe can also plot the distribution of counts across samples. We have many values (8677) 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\npro_meta |>\n pivot_longer(cols = -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\nthe peak at zero suggests quite a few counts of 1.\nwe 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 similar to that 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 pro_meta_summary_gene. Include the same columns as we had in the by sample summary (pro_meta_summary_samp) and an additional column, total for the total number of counts for each gene.\n🎬 View the pro_meta_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 stages. 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 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\npro_meta_summary_gene |> \n ggplot(aes(x = reorder(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 349606) is far greater than between samples (average counts from 220 to 364) which is exactly what we would expect to see.\nNow go to Filtering for QC.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#arabidopsis", - "href": "transcriptomics/week-5/workshop.html#arabidopsis", + "objectID": "transcriptomics/week-3/workshop.html#stem-cells", + "href": "transcriptomics/week-3/workshop.html#stem-cells", "title": "Workshop", - "section": "🎄 Arabidopsis", - "text": "🎄 Arabidopsis", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\nImport\nImport the data for the HSPC and the Progenitor cells.\n🎬 Import surfaceome_hspc.csv and surfaceome_hspc.csv\n\n# 🐭 import the hspc and prog data\nhspc <- read_csv(\"data-raw/surfaceome_hspc.csv\")\nprog <- read_csv(\"data-raw/surfaceome_prog.csv\")\n\nWe will need to combine the two sets of columns (datasets) so we can compare the two stages. We will join them using ensembl_gene_id to match the rows. The column names differ so we don’t need to worry about renaming any of them.\n🎬 Combine the two datasets by ensembl_gene_id and save the result as hspc_prog.\n\n# combine the two datasets\nhspc_prog <- hspc |>\n left_join(prog, \n by = \"ensembl_gene_id\")\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 (expr) labelled in cell by the column it came from and pipe into ggplot() to create a histogram:\n\nhspc_prog |>\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? Notice we have a peak at zero indicating there are low values zeros. This inflation of low values suggests some are anomalous - they will have been derived from low counts which are likely false positives. As inaccurate measures, 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 transcriptome we would not expect to see such a pattern - we’d expect to see a roughly normal distribution4. 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” leading to a bimodal distribution.\nUnlike the other three datasets, which count raw counts, these data are normalised and log2 transformed. We do not need to plot the log of the values to see the distribution - they are already logged.\nDistribution of values across the samples\nFor the other three datasets, we used the summary() function to get an overview of the columns. This works well when you have upto about 25 columns but it is not helpful here because we have a lot of cells! Feel free to try it!\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. The mean and the standard deviation are useful to see the distributions across cells in a plot but we will also examine the interquartile values, maximums and the number of non-zero values.\n🎬 Summarise all the cells:\n\nhspc_prog_summary_cell <- hspc_prog |>\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 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_above_zero = sum(expr > 0))\n\n🎬 View the hspc_prog_summary_cell dataframe (click on it in the environment).\nNotice that: - a minimum value of 0 appears in all 1499 cells - the lower quartiles are all zero and so are many of the medians - there are no cells with above 0 expression in all 280 of the gene subset - the highest number of genes expressed is 208, the lowest is 94\nIn short, there are quite a lot of zeros.\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 standard deviation. Not unlike a boxplot, but when you need the boxes too be very narrow!\n🎬 Create a pointrange plot.\n\nhspc_prog_summary_cell |> \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 judge if there are unusual cells 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_prog_summary_cell |> \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\nAs we thought, the distributions are similar across cells - there are not any cells that are obviously different from the others (only incrementally).\nDistribution of values across the genes\nWe will use the same approach to summarise the genes.\n🎬 Summarise the expression for each gene and save the result as hspc_prog_summary_gene. Include the same columns as we had in the by cell summary (hspc_prog_summary_cell) and an additional column, total for the total expression for each gene.\n🎬 View the hspc_prog_summary_gene dataframe. Remember these are normalised and logged (base 2) so we should not see very large values.\nNotice that we have:\n\nsome genes (7) expressed in every cell, and many expressed in most cells\nquite a few genes with zero in many cells but this matters less when we have many cells (samples) than when we have few samples.\nno genes with zeros in every cell - the lowest number of cells is 15.\n\nIt is again helpful to plot the ordered mean expression with pointrange to get an overview.\n🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():\n\nhspc_prog_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 that the variability between genes (average expression between 0.020 and and 9.567) is far greater than between cells (average expression from 1.319 to 9.567) which is just what we would expect.\nNow go to Filtering for QC.", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", - "href": "transcriptomics/week-5/workshop.html#leishmainia-mexicana", + "objectID": "transcriptomics/week-3/workshop.html#frog-development-1", + "href": "transcriptomics/week-3/workshop.html#frog-development-1", "title": "Workshop", - "section": "💉 Leishmainia mexicana", - "text": "💉 Leishmainia mexicana", + "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 treatment: [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 data to file:\n\nwrite_csv(s30_filtered, \n file = \"data-processed/s30_filtered.csv\")\n\nNow go to Look after future you", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#stem-cells-2", - "href": "transcriptomics/week-5/workshop.html#stem-cells-2", + "objectID": "transcriptomics/week-3/workshop.html#arabidopsis-1", + "href": "transcriptomics/week-3/workshop.html#arabidopsis-1", "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells", + "section": "🎄 Arabidopsis\n", + "text": "🎄 Arabidopsis\n\nOur samples look to be similarly well sequenced although this is difficult to determine with only two replicates. 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 wild_summary_gene dataframe to obtain a list of gene_id we can use to filter wild.\nMy suggestion is to include only the genes with counts in at least 2 samples, and those with total counts above 20. I chose 2 because that would keep genes expressed only in one treatment: [0, 0] [#,#]. This is a difference we cannot test statistically, but which matters biologically.\n🎬 Filter the summary by gene dataframe:\n\nwild_summary_gene_filtered <- wild_summary_gene |> \n filter(total > 20) |> \n filter(n_above_zero >= 2)\n\n❓ How many genes do you have left\n\n\n\n🎬 Use the list of gene_id in the filtered summary to filter the original dataset:\n\nwild_filtered <- wild |> \n filter(gene_id %in% wild_summary_gene_filtered$gene_id)\n\n🎬 Write the filtered data to file:\n\nwrite_csv(wild_filtered, \n file = \"data-processed/wild_filtered.csv\")\n\nNow go to Look after future you", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "objectID": "transcriptomics/week-5/workshop.html#frog-development-2", - "href": "transcriptomics/week-5/workshop.html#frog-development-2", + "objectID": "transcriptomics/week-3/workshop.html#leishmania-1", + "href": "transcriptomics/week-3/workshop.html#leishmania-1", "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\")", + "section": "💉 Leishmania\n", + "text": "💉 Leishmania\n\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 pro_meta_summary_gene dataframe to obtain a list of gene_id we can use to filter pro_meta.\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 treatment: [0, 0, 0] [#,#,#]. This is a difference we cannot test statistically, but which matters biologically.\n🎬 Filter the summary by gene dataframe:\n\npro_meta_summary_gene_filtered <- pro_meta_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 gene_id in the filtered summary to filter the original dataset:\n\npro_meta_filtered <- pro_meta |> \n filter(gene_id %in% pro_meta_summary_gene_filtered$gene_id)\n\n🎬 Write the filtered data to file:\n\nwrite_csv(pro_meta_filtered, \n file = \"data-processed/pro_meta_filtered.csv\")\n\nNow go to Look after future you", "crumbs": [ "Transcriptomics", - "Week 5: Visualising and Interpreting", + "Week 3: Hello data!", "Workshop" ] }, { - "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", + "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\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. This means we do not need to filter for unexpressed genes.\nNow go to Look after future you", "crumbs": [ "Transcriptomics", - "Transcriptomics Data Analysis for Group Project" + "Week 3: Hello data!", + "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": "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 comparison between the control and FGF-treated embroys 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", - "Transcriptomics Data Analysis for Group Project" + "Week 3: Hello data!", + "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": "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\n🎬 Create a new Project, arab-88H, populated with folders and your data. Make a script file called suff-def-wild.R. This will a be commented analysis of comparison between copper sufficient and copper deficient wildtype plants. 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", - "Transcriptomics Data Analysis for Group Project" + "Week 3: Hello data!", + "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": "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\n🎬 Create a new Project, leish-88H, populated with folders and your data. Make a script file called pro_meta.R. This will a be commented analysis of comparison procyclic promastigote and metacyclic promastigotes. 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", - "Transcriptomics Data Analysis for Group Project" + "Week 3: Hello data!", + "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": "transcriptomics/week-3/workshop.html#stem-cells-and-future-you", + "href": "transcriptomics/week-3/workshop.html#stem-cells-and-future-you", + "title": "Workshop", + "section": "🐭 Stem cells and future you", + "text": "🐭 Stem cells 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. 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 3: Hello data!", - "Prepare!" + "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 4 transcriptomic datasets\n\n🐸 bulk RNA-seq from Xenopus laevis embryos.\n🎄 bulk RNA-seq from Arabidopsis thaliana\n💉 bulk RNA-seq from Leishmania mexicana\n🐭 single cell RNA-seq from mouse stemcells", + "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.↩︎\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.↩︎\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 3: Hello data!", - "Prepare!" + "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": "images/images.html", + "href": "images/images.html", + "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": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Image Analysis", + "Image Data Analysis for Group Project" ] }, { - "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\n2 siblings from each fertilisation one control, one FGF treated\nsequenced at 3 time points\n3 x 2 x 3 = 18 samples", + "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": [ - "Transcriptomics", - "Week 3: Hello data!", - "Prepare!" + "Image Analysis", + "Image Data Analysis for Group Project" ] }, { - "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\n2 siblings from each fertilisation one control, one FGF treated. The treatments are paired\nsequenced at 3 time points. S14, S20, S30\n3 x 2 x 3 = 18 samples", + "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", "crumbs": [ "Transcriptomics", "Week 3: Hello data!", - "Prepare!" + "Consolidate!" ] }, { - "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 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", + "objectID": "transcriptomics/week-3/study_after_workshop.html#frog-development", + "href": "transcriptomics/week-3/study_after_workshop.html#frog-development", + "title": "Independent Study to consolidate this week", + "section": "🐸 Frog development", + "text": "🐸 Frog development\n🎬 Open your frogs-88H Project. Make a new script, cont-fgf-s20.R, and, using cont-fgf-s30.R as a template, repeat the analysis stage 20.", "crumbs": [ "Transcriptomics", "Week 3: Hello data!", - "Prepare!" + "Consolidate!" ] }, { - "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\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!", + "objectID": "transcriptomics/week-3/study_after_workshop.html#arabidopisis", + "href": "transcriptomics/week-3/study_after_workshop.html#arabidopisis", + "title": "Independent Study to consolidate this week", + "section": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis\n🎬 Open your arab-88H Project. Make a new script, suff-def-spl7.R, and, using suff-def-wild.R as a template, repeat the analysis on the spl7 mutants.", "crumbs": [ "Transcriptomics", "Week 3: Hello data!", - "Prepare!" + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-3/study_before_workshop.html#experimental-design-4", + "objectID": "transcriptomics/week-3/study_after_workshop.html#leishmania", + "href": "transcriptomics/week-3/study_after_workshop.html#leishmania", + "title": "Independent Study to consolidate this week", + "section": "💉 Leishmania", + "text": "💉 Leishmania\n🎬 Open your leish-88H Project. Make a new script, pro_ama.R, and, using pro_meta.R as a template, repeat the analysis on the procyclic promastigotes (pro) and amastigotes (ama).", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Consolidate!" + ] + }, + { + "objectID": "transcriptomics/week-3/study_after_workshop.html#stem-cells", + "href": "transcriptomics/week-3/study_after_workshop.html#stem-cells", + "title": "Independent Study to consolidate this week", + "section": "🐭 Stem cells", + "text": "🐭 Stem cells\n🎬 Open your mice-88H Project. Make a new script and, using hspc-prog.R as a template, repeat the analysis on the HSPC and LT-HSC cells.", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Consolidate!" + ] + }, + { + "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", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] + }, + { + "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 4 transcriptomic datasets\n\n🐸 bulk RNA-seq from Xenopus laevis embryos.\n🎄 bulk RNA-seq from Arabidopsis thaliana\n💉 bulk RNA-seq from Leishmania mexicana\n🐭 single cell RNA-seq from mouse stemcells", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] + }, + { + "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", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] + }, + { + "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\n2 siblings from each fertilisation one control, one FGF treated\nsequenced at 3 time points\n3 x 2 x 3 = 18 samples", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] + }, + { + "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\n2 siblings from each fertilisation one control, one FGF treated. The treatments are paired\nsequenced at 3 time points. S14, S20, S30\n3 x 2 x 3 = 18 samples", + "crumbs": [ + "Transcriptomics", + "Week 3: Hello data!", + "Prepare!" + ] + }, + { + "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 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": "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\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": "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", @@ -1470,15 +1593,15 @@ ] }, { - "objectID": "transcriptomics/week-3/overview.html", - "href": "transcriptomics/week-3/overview.html", - "title": "Overview", + "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": "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.", + "text": "You need only do the section for your own project data\n🐸 Frog development\n🎬 Open your frogs-88H RStudio Project and the cont-fgf-s20.R script you began in the Consolidation study last week. 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🎬 Open your arab-88H RStudio Project and the suff-def-spl7.R script you began in the Consolidation study last week. Use the differential expression analysis you did in the workshop (in suff-def-wild.R) as a template to continue your script.\n💉 Leishmania\n🎬 Open your leish-88H RStudio Project and the pro_ama.R script you began in the Consolidation study last week. Use the differential expression analysis you did in the workshop (in pro_meta.R) as a template to continue your script.\n🐭 Stem cells\n🎬 Open your mice-88H RStudio Project.", "crumbs": [ "Transcriptomics", - "Week 3: Hello data!", - "About" + "Week 4: Statistical Analysis", + "Consolidate!" ] }, { @@ -1522,7 +1645,7 @@ "href": "transcriptomics/week-4/study_before_workshop.html#frog-development", "title": "Independent Study to prepare for workshop", "section": "🐸 Frog development", - "text": "🐸 Frog development\n\n\nAn RStudio Project called frogs-88H which contains:\n\nRaw data: xlaevis_counts_S14.csv, xlaevis_counts_S20.csv, xlaevis_counts_S30.csv\n\nProcessed data: s30_filtered.csv, s20_filtered.csv)\nTwo scripts: cont-fgf-s30.R, cont-fgf-s20.R\n\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "text": "🐸 Frog development\n\n\nAn RStudio Project called frogs-88H which contains:\n\nRaw data: xlaevis_counts_S14.csv, xlaevis_counts_S20.csv, xlaevis_counts_S30.csv\n\nProcessed data: s30_filtered.csv, s20_filtered.csv\n\nTwo scripts: cont-fgf-s30.R, cont-fgf-s20.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", @@ -1534,7 +1657,7 @@ "href": "transcriptomics/week-4/study_before_workshop.html#arabidopsis", "title": "Independent Study to prepare for workshop", "section": "🎄 Arabidopsis\n", - "text": "🎄 Arabidopsis\n\n\n\nAn RStudio Project called arab-88H which contains:\n\nRaw data: arabidopsis-wild.csv,arabidopsis-spl7.csv\n\nProcessed data: wild_filtered.csv, spl7_filtered.csv)\nTwo scripts: suff-def-wild.R, suff-def-spl7.R", + "text": "🎄 Arabidopsis\n\n\n\nAn RStudio Project called arab-88H which contains:\n\nRaw data: arabidopsis-wild.csv, arabidopsis-spl7.csv\n\nProcessed data: wild_filtered.csv, spl7_filtered.csv)\nTwo scripts: suff-def-wild.R, suff-def-spl7.R", "crumbs": [ "Transcriptomics", "Week 4: Statistical Analysis", @@ -1546,7 +1669,7 @@ "href": "transcriptomics/week-4/study_before_workshop.html#leishmania", "title": "Independent Study to prepare for workshop", "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\n\n\nAn RStudio Project called leish-88H which contains:\n\nRaw data: leishmania-mex-ama.csv,leishmania-mex-pro.csv, leishmania-mex-meta.csv\n\nProcessed data: pro_meta_filtered.csv, pro_ama_filtered.csv\n\nTwo scripts: pro_meta.R, pro_ama.R", + "text": "💉 Leishmania\n\n\n\nAn RStudio Project called leish-88H which contains:\n\nRaw data: leishmania-mex-ama.csv, leishmania-mex-pro.csv, leishmania-mex-meta.csv\n\nProcessed data: pro_meta_filtered.csv, pro_ama_filtered.csv\n\nTwo scripts: pro_meta.R, pro_ama.R", "crumbs": [ "Transcriptomics", "Week 4: Statistical Analysis", @@ -1558,7 +1681,7 @@ "href": "transcriptomics/week-4/study_before_workshop.html#stem-cells", "title": "Independent Study to prepare for workshop", "section": "🐭 Stem cells", - "text": "🐭 Stem cells\n\n\nAn RStudio Project called mice-88H which contains\n\nRaw data: surfaceome_hspc.csv,surfaceome_prog.csv, surfaceome_lthsc.csv\n\nProcessed data: _filtered.csv, _filtered.csv)\nTwo scripts: hspc-prog.R, hspc-lthsc.R`\n\n\n\nFiles should be organised into folders. Code should well commented and easy to read.", + "text": "🐭 Stem cells\n\n\nAn RStudio Project called mice-88H which contains\n\nRaw data: surfaceome_hspc.csv, surfaceome_prog.csv, surfaceome_lthsc.csv\n\nProcessed data: _filtered.csv, _filtered.csv)\nTwo scripts: hspc-prog.R, hspc-lthsc.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", @@ -1618,7 +1741,7 @@ "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", + "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: \\(\\frac{A}{B}\\)\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", @@ -1774,7 +1897,7 @@ "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🎄 Arabidopisis information comes from TAIR10 (Yates et al. 2022)\n💉 Leishmania information comes TriTrypDB (Rogers et al. 2011)\n🐭 Stem cell information comes from Ensembl (Birney et al. 2004)", + "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\n\n\n🐸 Frog data information comes from Xenbase (Fisher et al. 2023)\n🎄 Arabidopisis information comes from TAIR10 (Yates et al. 2022)\n💉 Leishmania information comes TriTrypDB (Rogers et al. 2011)\n🐭 Stem cell information comes from Ensembl (Birney et al. 2004)", "crumbs": [ "Transcriptomics", "Week 4: Statistical Analysis", @@ -1846,7 +1969,7 @@ "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:::", + "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.\n\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\")", "crumbs": [ "Transcriptomics", "Week 4: Statistical Analysis", @@ -1878,1183 +2001,1060 @@ ] }, { - "objectID": "transcriptomics/week-4/overview.html", - "href": "transcriptomics/week-4/overview.html", - "title": "Overview", + "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": "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.", + "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 4: Statistical Analysis", - "About" - ] - }, - { - "objectID": "index.html", - "href": "index.html", - "title": "Data Analysis for the Group Research 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" - }, - { - "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": "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": "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": "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": "index.html#please-cite-as", - "href": "index.html#please-cite-as", - "title": "Data Analysis for the Group Research Project", - "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" - }, - { - "objectID": "images/images.html", - "href": "images/images.html", - "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": [ - "Image Analysis", - "Image Data Analysis for Group Project" + "Week 5: Visualising and Interpreting", + "Consolidate!" ] }, { - "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.", + "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", "crumbs": [ - "Image Analysis", - "Image Data Analysis for Group Project" + "Transcriptomics", + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "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.", + "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", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "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.", + "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:", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#frog-development", - "href": "transcriptomics/week-4/workshop.html#frog-development", - "title": "Workshop", + "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": "🐸 Frog development", - "text": "🐸 Frog development\n🎬 Open the frogs-88H RStudio Project and the cont-fgf-s30.R script.", + "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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#arabidopisis", - "href": "transcriptomics/week-4/workshop.html#arabidopisis", - "title": "Workshop", - "section": "🎄 Arabidopisis\n", - "text": "🎄 Arabidopisis\n\n🎬 Open the arab-88H RStudio Project and the suff-def-wild.R script.", + "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": "🎄 Arabidopisis", + "text": "🎄 Arabidopisis", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#leishmania", - "href": "transcriptomics/week-4/workshop.html#leishmania", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\n🎬 Open the leish-88H RStudio Project and the pro-meta.R script.", + "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": "💉 Leishmania mexicana", + "text": "💉 Leishmania mexicana", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#stem-cells", - "href": "transcriptomics/week-4/workshop.html#stem-cells", - "title": "Workshop", + "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": "🐭 Stem cells", - "text": "🐭 Stem cells\n🎬 Open the mice-88H RStudio Project and the hspc-prog.R script.", + "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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#everyone", - "href": "transcriptomics/week-4/workshop.html#everyone", - "title": "Workshop", - "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)", + "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", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "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.", + "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": "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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-1", - "href": "transcriptomics/week-4/workshop.html#arabidopisis-1", - "title": "Workshop", - "section": "🎄 Arabidopisis\n", - "text": "🎄 Arabidopisis\n\nWe need to import the wildtype data that were filtered to remove genes with 3 or 4 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.", + "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": "🐸 , 🎄 , 💉 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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#leishmania-1", - "href": "transcriptomics/week-4/workshop.html#leishmania-1", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\nWe need to import the procyclic- and metacyclic-promastigote 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.", + "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": "🐭 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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#stem-cells-1", - "href": "transcriptomics/week-4/workshop.html#stem-cells-1", - "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells\nImport\nNow go to Differential Expression Analysis.", + "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": "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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#frog-development-2", - "href": "transcriptomics/week-4/workshop.html#frog-development-2", - "title": "Workshop", - "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\nAll 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 other # columns give the “treatments”. In this case, the treatments stage (with three levels) and treatment (with two levels).\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 recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by treatment and sibling_rep. 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\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\nTThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison 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.", + "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)", "crumbs": [ "Transcriptomics", - "Week 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#arabidopisis-2", - "href": "transcriptomics/week-4/workshop.html#arabidopisis-2", - "title": "Workshop", - "section": "🎄 Arabidopisis\n", - "text": "🎄 Arabidopisis\n\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\nAll 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 both replicates in one group and non-zero values in both replicates in the other group. For example, those shown here:\n\n\n\n\n\n\n\n\n\n\n\ngene_id\nSRX028956_wild_suf\nSRX028957_wild_def\nSRX028960_wild_suf\nSRX028961_wild_def\n\n\n\nAT1G04513\n11\n0\n25\n0\n\n\nAT1G22610\n36\n0\n52\n0\n\n\nAT1G26290\n12\n0\n23\n0\n\n\nAT1G59810\n5\n0\n16\n0\n\n\nAT2G44130\n28\n0\n18\n0\n\n\n\n\n\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only in the sufficient copper group:\n\nwild_suf_only <- wild_filtered |>\n filter(SRX028961_wild_def == 0,\n SRX028957_wild_def == 0,\n SRX028960_wild_suf > 0,\n SRX028956_wild_suf > 0)\n\n❓ How many genes are expressed only in the sufficient copper group?\n\n\n🎬 Now you find any genes that are expressed only in the deficient copper group.\n❓ How many genes are expressed only in the deficient copper 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🎬 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 Bioconductor2 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 wild_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\nwild_count_mat <- wild_filtered |>\n select(-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(wild_count_mat) <- wild_filtered$gene_id\n\nYou might want to view the matrix (click on it in your environment pane).\nThe metadata are in a file, arab_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other columns give the “treatments”. In this case, the treatments genotype (with two levels) and copper (with two levels).\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/arab_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 wild data so we need to remove the samples that are not in the wild data.\n🎬 Filter the metadata to keep only the wild information:\n\nmeta_wild <- meta |>\n filter(genotype == \"wt\")\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by copper status.\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(wild_count_mat,\n colData = meta_wild,\n design = ~ copper)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of copper in the metadata dataframe is “char” and it has been converted into a factor type.\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 wild_count_mat.\n\ncolData(dds)\n\nDataFrame with 4 rows and 3 columns\n sample_id genotype copper\n <character> <character> <factor>\nSRX028956_wild_suf SRX028956_wild_suf wt sufficient\nSRX028957_wild_def SRX028957_wild_def wt deficient \nSRX028960_wild_suf SRX028960_wild_suf wt sufficient\nSRX028961_wild_def SRX028961_wild_def wt deficient \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\nSRX028956_wild_suf SRX028957_wild_def SRX028960_wild_suf SRX028961_wild_def \n 0.8200020 0.4653024 2.3002428 1.1965924 \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\n🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:\n\nwild_normalised_counts <- data.frame(normalised_counts,\n 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 sufficient and deficient.\n🎬 Define the contrast:\n\ncontrast_suf <- c(\"copper\", \"sufficient\", \"deficient\")\n\nNote that copper is the name of the column in the metadata dataframe and sufficient and deficient are the names of the levels in the copper column. By putting them in the order sufficient , deficient we are saying the fold change will be sufficient / deficient. This means:\n\npositive log fold changes indicate sufficient > deficient and\nnegative log fold changes indicates deficient > sufficient.\n\nIf we had put them in the order deficient, sufficient we would have the reverse.\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_suf <- results(dds,\n contrast = contrast_suf)\n\nThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between the sufficient- and\ndeficient-copper for each gene.\n🎬 Put the results in a dataframe and add the gene ids as a column:\n\nwild_results <- data.frame(results_suf,\n gene_id = row.names(results_suf))\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\nwild_results <- wild_normalised_counts |>\n left_join(wild_results, by = \"gene_id\")\n\nNow go to Add gene information.", + "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": "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 4: Statistical Analysis", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-4/workshop.html#leishmania-2", - "href": "transcriptomics/week-4/workshop.html#leishmania-2", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\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\nAll 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 replicates in one group and non-zero values in all replicates in the other group.\nWe will use filter() to find these genes.\n🎬 Find the genes that are expressed only at the procyclic-promastigote stage:\n\npro_meta_pro_only <- pro_meta_filtered |>\n filter(lm_pro_1 > 0,\n lm_pro_2 > 0,\n lm_pro_3 > 0,\n lm_meta_1 == 0,\n lm_meta_2 == 0,\n lm_meta_2 == 0)\n\n❓ How many genes are expressed only in the procyclic-promastigote stage group?\n\n\n🎬 Now you find any genes that are expressed only at the metacyclic stage\n❓ How many genes are expressed only at the metacyclic stage?\n\n\n❓ Do the results make sense to you in light of what you know about the biology?\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 Bioconductor3 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 pro_meta_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\npro_meta_count_mat <- pro_meta_filtered |>\n select(-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(pro_meta_count_mat) <- pro_meta_filtered$gene_id\n\nYou might want to view the matrix (click on it in your environment pane).\nThe metadata are in a file, leish_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other columns give the “treatments”. In this case, the treatment is stage (with three levels).\n🎬 Make a folder called meta and save the file to it.\n🎬 Read the metadata into a dataframe:\n\nmeta <- read_table(\"meta/leish_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 wild data so we need to remove the samples that are not in the wild data.\n🎬 Filter the metadata to keep only the procyclic and metacyclic information:\n\nmeta_pro_meta <- meta |>\n filter(stage != \"amastigotes\")\n\nWe can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by stage status.\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(pro_meta_count_mat,\n colData = meta_pro_meta,\n design = ~ stage)\n\nThe warning “Warning: some variables in design formula are characters, converting to factors” just means that the variable type of stage in the metadata dataframe is “char” and it has been converted into a factor type.\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 pro_meta_count_mat.\n\ncolData(dds)\n\nDataFrame with 6 rows and 3 columns\n sample_id stage replicate\n <character> <factor> <numeric>\nlm_pro_1 lm_pro_1 procyclic 1\nlm_pro_2 lm_pro_2 procyclic 2\nlm_pro_3 lm_pro_3 procyclic 3\nlm_meta_1 lm_meta_1 metacyclic 1\nlm_meta_2 lm_meta_2 metacyclic 2\nlm_meta_3 lm_meta_3 metacyclic 3\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 lm_pro_1 lm_pro_2 lm_pro_3 lm_meta_1 lm_meta_2 lm_meta_3 \n1.3029351 0.9158157 0.9943186 0.7849299 0.8443586 1.3250409 \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\n🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:\n\npro_meta_normalised_counts <- data.frame(normalised_counts,\n 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 procyclic and metacyclic.\n🎬 Define the contrast:\n\ncontrast_pro_meta <- c(\"stage\", \"procyclic\", \"metacyclic\")\n\nNote that stage is the name of the column in the metadata dataframe and procyclic and metacyclic are the names of the levels in the stage column. By putting them in the order procyclic , metacyclic we are saying the fold change will be procyclic / metacyclic. This means:\n\npositive log fold changes indicate procyclic > metacyclic and\nnegative log fold changes indicates metacyclic > procyclic.\n\nIf we had put them in the order metacyclic, procyclic we would have the reverse.\n🎬 Extract the results from the DESseqDataSet object:\n\nresults_pro_meta <- results(dds,\n contrast = contrast_pro_meta)\n\nThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between procyclic and metacyclic stage for each gene\n🎬 Put the results in a dataframe and add the gene ids as a column:\n\npro_meta_results <- data.frame(results_pro_meta,\n gene_id = row.names(results_pro_meta))\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\npro_meta_results <- pro_meta_normalised_counts |>\n left_join(pro_meta_results, by = \"gene_id\")\n\nNow go to Add gene information.", + "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#stem-cells-2", - "href": "transcriptomics/week-4/workshop.html#stem-cells-2", - "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells\nDE instructions\nNow go to Add gene information.", + "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#frog-development-3", - "href": "transcriptomics/week-4/workshop.html#frog-development-3", - "title": "Workshop", - "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\")", + "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#arabidopisis-3", - "href": "transcriptomics/week-4/workshop.html#arabidopisis-3", - "title": "Workshop", - "section": "🎄 Arabidopisis\n", - "text": "🎄 Arabidopisis\n\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 (Durinck et al. 2009, 2005) gives you programmatic access making it easier to integrate information into R dataframes\n🎬 Load the biomaRt (Durinck et al. 2009, 2005) package:\n\nlibrary(biomaRt)\n\nThe biomaRt package includes a function to list all the available datasets\n🎬 List the Ensembl “marts” available:\n\nlistEnsemblGenomes()\n\n biomart version\n1 protists_mart Ensembl Protists Genes 59\n2 protists_variations Ensembl Protists Variations 59\n3 fungi_mart Ensembl Fungi Genes 59\n4 fungi_variations Ensembl Fungi Variations 59\n5 metazoa_mart Ensembl Metazoa Genes 59\n6 metazoa_variations Ensembl Metazoa Variations 59\n7 plants_mart Ensembl Plants Genes 59\n8 plants_variations Ensembl Plants Variations 59\n\n\nplants_mart looks like the one we want. We can see what genomes are available with names like “Arabidopsis” in this mart using the searchDatasets() function.\n🎬\n\nsearchDatasets(useEnsemblGenomes(biomart = \"plants_mart\"), \n pattern = \"Arabidopsis\")\n\n dataset description version\n4 ahalleri_eg_gene Arabidopsis halleri genes (Ahal2.2) Ahal2.2\n5 alyrata_eg_gene Arabidopsis lyrata genes (v.1.0) v.1.0\n10 athaliana_eg_gene Arabidopsis thaliana genes (TAIR10) TAIR10\n\n\nathaliana_eg_gene is the Arabidopsis thaliana genes (TAIR10) dataset we want.\n🎬 Connect to the athaliana_eg_gene database in plants_mart:\n\nensembl <- useEnsemblGenomes(biomart = \"plants_mart\",\n dataset = \"athaliana_eg_gene\")\n\n🎬 See the the types of information we can retrieve:\n\nlistAttributes(mart = ensembl) |> View()\n\nError in .External2(C_dataviewer, x, title): unable to start data viewer\n\n\nThere are many (1,714!) possible bits of information (attributes) that can be obtained.\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 in values 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 the gene name and a description. We also retreive the gene id so we can later join the information with the results:\n\ngene_info <- getBM(filters = \"ensembl_gene_id\",\n attributes = c(\"ensembl_gene_id\",\n \"external_gene_name\",\n \"description\"),\n values = wild_results$gene_id,\n mart = ensembl)\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\nwild_results <- wild_results |>\n left_join(gene_info,\n by = join_by(gene_id == ensembl_gene_id))\n\n🎬 Save the results to a file:\n\nwrite_csv(wild_results, file = \"results/wild_results.csv\")", + "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#leishmania-3", - "href": "transcriptomics/week-4/workshop.html#leishmania-3", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\n???", + "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#stem-cells-3", - "href": "transcriptomics/week-4/workshop.html#stem-cells-3", - "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells", + "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.↩︎\nBioconductor is a project that develops and supports R packages for bioinformatics.↩︎\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_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 cont-fgf-s20.R script you began in the Consolidation study last week. 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🎬 Open your arab-88H RStudio Project and the suff-def-spl7.R script you began in the Consolidation study last week. Use the differential expression analysis you did in the workshop (in suff-def-wild.R) as a template to continue your script.\n💉 Leishmania\n🐭 Stem cells\n🎬 Open your mice-88H RStudio Project.", + "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": "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", - "Consolidate!" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "objectID": "transcriptomics/week-3/workshop.html", - "href": "transcriptomics/week-3/workshop.html", - "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.", + "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": "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!", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "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.", + "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": "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 3: Hello data!", - "Workshop" + "Week 5: Visualising and Interpreting", + "Prepare!" ] }, { - "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. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you 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 could 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 conducting our analysis both with and without this replicate to determine whether its oddness was influencing our conclusions. Since we have just 3 replicates, we will leave it in. The potential effect of an odd replicate is reduced statistical power. 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 though S30_F_3 does stand out a little\nthe peak at zero suggests quite a few counts of 1.\nwe 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 similar to that 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 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.\nNow go to Filtering for QC.", + "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", - "Week 3: Hello data!", - "Workshop" + "Transcriptomics Data Analysis for Group Project" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#arabidopsis", - "href": "transcriptomics/week-3/workshop.html#arabidopsis", - "title": "Workshop", - "section": "🎄 Arabidopsis\n", - "text": "🎄 Arabidopsis\n\nImport\nImport the data for wildtype plants.\n🎬 Import arabidopsis-wild.csv\n\n# 🎄 import the wild data\nwild <- read_csv(\"data-raw/arabidopsis-wild.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\nwild |>\n pivot_longer(cols = -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\nwild |>\n pivot_longer(cols = -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 genome2. 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 5 columns:\n\n# examine all the columns quickly\n# works well with smaller numbers of column\nsummary(wild)\n\n gene_id SRX028956_wild_suf SRX028957_wild_def SRX028960_wild_suf\n Length:32833 Min. : 0.0 Min. : 0.00 Min. : 0.0 \n Class :character 1st Qu.: 6.0 1st Qu.: 2.00 1st Qu.: 15.0 \n Mode :character Median : 29.0 Median : 15.00 Median : 76.0 \n Mean : 112.3 Mean : 70.27 Mean : 295.5 \n 3rd Qu.: 99.0 3rd Qu.: 63.00 3rd Qu.: 263.0 \n Max. :38287.0 Max. :24439.00 Max. :80527.0 \n SRX028961_wild_def\n Min. : 0.0 \n 1st Qu.: 6.0 \n Median : 37.0 \n Mean : 173.4 \n 3rd Qu.: 151.0 \n Max. :58548.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\nWe want to know how many zeros there are in each a column. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you the number of TRUE values. For example, sum(SRX028961_wild_def > 0) gives the number of values above zero in the SRX028961_wild_def column. If you wanted the number of zeros, you could use sum(SRX028961_wild_def == 0).\n🎬 Find the number values above zero in all six columns:\n\nwild |>\n summarise(sum(SRX028961_wild_def > 0),\n sum(SRX028957_wild_def > 0),\n sum(SRX028960_wild_suf > 0),\n sum(SRX028956_wild_suf > 0))\n\n# A tibble: 1 × 4\n `sum(SRX028961_wild_def > 0)` sum(SRX028957_wild_def …¹ sum(SRX028960_wild_s…²\n <int> <int> <int>\n1 29712 28015 30946\n# ℹ abbreviated names: ¹​`sum(SRX028957_wild_def > 0)`,\n# ²​`sum(SRX028960_wild_suf > 0)`\n# ℹ 1 more variable: `sum(SRX028956_wild_suf > 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\nwild |>\n pivot_longer(cols = -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: 4 × 2\n sample n_above_zero\n <chr> <int>\n1 SRX028956_wild_suf 29997\n2 SRX028957_wild_def 28015\n3 SRX028960_wild_suf 30946\n4 SRX028961_wild_def 29712\n\n\nYou could expand this code to get get other useful summary information\n🎬 Summarise all the samples:\n\nwild |>\n pivot_longer(cols = -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: 4 × 8\n sample min lowerq mean median upperq max n_above_zero\n <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <int>\n1 SRX028956_wild_suf 0 6 112. 29 99 38287 29997\n2 SRX028957_wild_def 0 2 70.3 15 63 24439 28015\n3 SRX028960_wild_suf 0 15 296. 76 263 80527 30946\n4 SRX028961_wild_def 0 6 173. 37 151 58548 29712\n\n\nThe mean count ranges from 70 to 296. It is difficult to determine whether any replicates are “unusual” when there are only two replicates. The potential effect of only two replicates, or of an an odd replicate when you have more replicates, is reduced statistical power. 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, wild_summary_samp (using assignment).\nWe can also plot the distribution of counts across samples. We have many values (32833) 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\nwild |>\n pivot_longer(cols = -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\ndifficult to say was is usual/unusual with 2 replicates\nthe peak at zero suggests quite a few counts of 1.\nwe would expect the distribution of counts in each sample to be roughly log normal so that the 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 similar to that 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 wild_summary_gene. Include the same columns as we had in the by sample summary (wild_summary_samp) and an additional column, total for the total number of counts for each gene.\n🎬 View the wild_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 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\nwild_summary_gene |> \n ggplot(aes(x = reorder(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 43348) is far greater than between samples (average counts from 70 to 296) which is exactly what we would expect to see.\nNow go to Filtering for QC.", + "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", - "Week 3: Hello data!", - "Workshop" + "Transcriptomics Data Analysis for Group Project" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#leishmania", - "href": "transcriptomics/week-3/workshop.html#leishmania", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\nImport\nImport the data for L.mexicana procyclic promastigote (pro) and the metacyclic promastigotes (meta)\n🎬 Import leishmania-mex-pro.csv and leishmania-mex-meta.csv\n\n# 💉 import the pro and meta leish data\npro <- read_csv(\"data-raw/leishmania-mex-pro.csv\")\nmeta <- read_csv(\"data-raw/leishmania-mex-meta.csv\")\n\nWe will need to combine the two sets of columns (datasets) so we can compare the two stages. We will join them using gene_id to match the rows. The column names differ so we don’t need to worry about renaming any of them.\n🎬 Combine the two datasets by gene_id and save the result as pro_meta.\n\n# combine the two datasets\npro_meta <- pro |>\n left_join(meta, \n by = \"gene_id\")\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\npro_meta |>\n pivot_longer(cols = -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\npro_meta |>\n pivot_longer(cols = -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 genome3. 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(pro_meta)\n\n gene_id lm_pro_1 lm_pro_2 lm_pro_3 \n Length:8677 Min. : 0.0 Min. : 0.0 Min. : 0.0 \n Class :character 1st Qu.: 77.0 1st Qu.: 53.0 1st Qu.: 59.0 \n Mode :character Median : 191.0 Median : 135.0 Median : 145.0 \n Mean : 364.5 Mean : 255.7 Mean : 281.4 \n 3rd Qu.: 332.0 3rd Qu.: 238.0 3rd Qu.: 256.0 \n Max. :442477.0 Max. :295423.0 Max. :411663.0 \n lm_meta_1 lm_meta_2 lm_meta_3 \n Min. : 0.0 Min. : 0.0 Min. : 0.0 \n 1st Qu.: 48.0 1st Qu.: 51.0 1st Qu.: 78.0 \n Median : 110.0 Median : 120.0 Median : 187.0 \n Mean : 220.3 Mean : 221.9 Mean : 355.9 \n 3rd Qu.: 197.0 3rd Qu.: 215.0 3rd Qu.: 341.0 \n Max. :244569.0 Max. :205203.0 Max. :498303.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\nWe want to know how many zeros there are in each a column. To achieve this, we can make use of the fact that TRUE evaluates to 1 and FALSE evaluates to 0. Consequently, summing a column of TRUE/FALSE values will give you the number of TRUE values. For example, sum(lm_pro_1 > 0) gives the number of values above zero in the lm_pro_1 column. If you wanted the number of zeros, you could use sum(lm_pro_1 == 0).\n🎬 Find the number values above zero in all six columns:\n\npro_meta |>\n summarise(sum(lm_pro_1 > 0),\n sum(lm_pro_2 > 0),\n sum(lm_pro_3 > 0),\n sum(lm_meta_1 > 0),\n sum(lm_meta_2 > 0),\n sum(lm_meta_3 > 0))\n\n# A tibble: 1 × 6\n `sum(lm_pro_1 > 0)` `sum(lm_pro_2 > 0)` `sum(lm_pro_3 > 0)`\n <int> <int> <int>\n1 8549 8522 8509\n# ℹ 3 more variables: `sum(lm_meta_1 > 0)` <int>, `sum(lm_meta_2 > 0)` <int>,\n# `sum(lm_meta_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\npro_meta |>\n pivot_longer(cols = -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 lm_meta_1 8535\n2 lm_meta_2 8535\n3 lm_meta_3 8530\n4 lm_pro_1 8549\n5 lm_pro_2 8522\n6 lm_pro_3 8509\n\n\nYou could expand this code to get get other useful summary information\n🎬 Summarise all the samples:\n\npro_meta |>\n pivot_longer(cols = -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 lm_meta_1 0 48 220. 110 197 244569 8535\n2 lm_meta_2 0 51 222. 120 215 205203 8535\n3 lm_meta_3 0 78 356. 187 341 498303 8530\n4 lm_pro_1 0 77 364. 191 332 442477 8549\n5 lm_pro_2 0 53 256. 135 238 295423 8522\n6 lm_pro_3 0 59 281. 145 256 411663 8509\n\n\nThe mean count ranges from 220 to 364. We do not appear to have any outlying (odd) replicates. The potential effect of an odd replicate is reduced statistical power. 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.\n🎬 Save the summary as a dataframe, pro_meta_summary_samp (using assignment).\nWe can also plot the distribution of counts across samples. We have many values (8677) 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\npro_meta |>\n pivot_longer(cols = -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\nthe peak at zero suggests quite a few counts of 1.\nwe 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 similar to that 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 pro_meta_summary_gene. Include the same columns as we had in the by sample summary (pro_meta_summary_samp) and an additional column, total for the total number of counts for each gene.\n🎬 View the pro_meta_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 stages. 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 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\npro_meta_summary_gene |> \n ggplot(aes(x = reorder(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 349606) is far greater than between samples (average counts from 220 to 364) which is exactly what we would expect to see.\nNow go to Filtering for QC.", + "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", - "Week 3: Hello data!", - "Workshop" + "Transcriptomics Data Analysis for Group Project" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#stem-cells", - "href": "transcriptomics/week-3/workshop.html#stem-cells", - "title": "Workshop", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells\nImport\nImport the data for the HSPC and the Progenitor cells.\n🎬 Import surfaceome_hspc.csv and surfaceome_hspc.csv\n\n# 🐭 import the hspc and prog data\nhspc <- read_csv(\"data-raw/surfaceome_hspc.csv\")\nprog <- read_csv(\"data-raw/surfaceome_prog.csv\")\n\nWe will need to combine the two sets of columns (datasets) so we can compare the two stages. We will join them using ensembl_gene_id to match the rows. The column names differ so we don’t need to worry about renaming any of them.\n🎬 Combine the two datasets by ensembl_gene_id and save the result as hspc_prog.\n\n# combine the two datasets\nhspc_prog <- hspc |>\n left_join(prog, \n by = \"ensembl_gene_id\")\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 (expr) labelled in cell by the column it came from and pipe into ggplot() to create a histogram:\n\nhspc_prog |>\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? Notice we have a peak at zero indicating there are low values zeros. This inflation of low values suggests some are anomalous - they will have been derived from low counts which are likely false positives. As inaccurate measures, 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 transcriptome we would not expect to see such a pattern - we’d expect to see a roughly normal distribution4. 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” leading to a bimodal distribution.\nUnlike the other three datasets, which count raw counts, these data are normalised and log2 transformed. We do not need to plot the log of the values to see the distribution - they are already logged.\nDistribution of values across the samples\nFor the other three datasets, we used the summary() function to get an overview of the columns. This works well when you have upto about 25 columns but it is not helpful here because we have a lot of cells! Feel free to try it!\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. The mean and the standard deviation are useful to see the distributions across cells in a plot but we will also examine the interquartile values, maximums and the number of non-zero values.\n🎬 Summarise all the cells:\n\nhspc_prog_summary_cell <- hspc_prog |>\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 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_above_zero = sum(expr > 0))\n\n🎬 View the hspc_prog_summary_cell dataframe (click on it in the environment).\nNotice that: - a minimum value of 0 appears in all 1499 cells - the lower quartiles are all zero and so are many of the medians - there are no cells with above 0 expression in all 280 of the gene subset - the highest number of genes expressed is 208, the lowest is 94\nIn short, there are quite a lot of zeros.\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 standard deviation. Not unlike a boxplot, but when you need the boxes too be very narrow!\n🎬 Create a pointrange plot.\n\nhspc_prog_summary_cell |> \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 judge if there are unusual cells 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_prog_summary_cell |> \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\nAs we thought, the distributions are similar across cells - there are not any cells that are obviously different from the others (only incrementally).\nDistribution of values across the genes\nWe will use the same approach to summarise the genes.\n🎬 Summarise the expression for each gene and save the result as hspc_prog_summary_gene. Include the same columns as we had in the by cell summary (hspc_prog_summary_cell) and an additional column, total for the total expression for each gene.\n🎬 View the hspc_prog_summary_gene dataframe. Remember these are normalised and logged (base 2) so we should not see very large values.\nNotice that we have:\n\nsome genes (7) expressed in every cell, and many expressed in most cells\nquite a few genes with zero in many cells but this matters less when we have many cells (samples) than when we have few samples.\nno genes with zeros in every cell - the lowest number of cells is 15.\n\nIt is again helpful to plot the ordered mean expression with pointrange to get an overview.\n🎬 Plot the logged mean counts for each gene in order of size using geom_pointrange():\n\nhspc_prog_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 that the variability between genes (average expression between 0.020 and and 9.567) is far greater than between cells (average expression from 1.319 to 9.567) which is just what we would expect.\nNow go to Filtering for QC.", + "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", - "Week 3: Hello data!", - "Workshop" + "Transcriptomics Data Analysis for Group Project" ] }, { - "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 treatment: [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 data to file:\n\nwrite_csv(s30_filtered, \n file = \"data-processed/s30_filtered.csv\")\n\nNow go to Look after future you", + "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": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#arabidopsis-1", - "href": "transcriptomics/week-3/workshop.html#arabidopsis-1", - "title": "Workshop", - "section": "🎄 Arabidopsis\n", - "text": "🎄 Arabidopsis\n\nOur samples look to be similarly well sequenced although this is difficult to determine with only two replicates. 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 wild_summary_gene dataframe to obtain a list of gene_id we can use to filter wild.\nMy suggestion is to include only the genes with counts in at least 2 samples, and those with total counts above 20. I chose 2 because that would keep genes expressed only in one treatment: [0, 0] [#,#]. This is a difference we cannot test statistically, but which matters biologically.\n🎬 Filter the summary by gene dataframe:\n\nwild_summary_gene_filtered <- wild_summary_gene |> \n filter(total > 20) |> \n filter(n_above_zero >= 2)\n\n❓ How many genes do you have left\n\n\n\n🎬 Use the list of gene_id in the filtered summary to filter the original dataset:\n\nwild_filtered <- wild |> \n filter(gene_id %in% wild_summary_gene_filtered$gene_id)\n\n🎬 Write the filtered data to file:\n\nwrite_csv(wild_filtered, \n file = \"data-processed/wild_filtered.csv\")\n\nNow go to Look after future you", + "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 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Consolidate!" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#leishmania-1", - "href": "transcriptomics/week-3/workshop.html#leishmania-1", - "title": "Workshop", - "section": "💉 Leishmania\n", - "text": "💉 Leishmania\n\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 pro_meta_summary_gene dataframe to obtain a list of gene_id we can use to filter pro_meta.\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 treatment: [0, 0, 0] [#,#,#]. This is a difference we cannot test statistically, but which matters biologically.\n🎬 Filter the summary by gene dataframe:\n\npro_meta_summary_gene_filtered <- pro_meta_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 gene_id in the filtered summary to filter the original dataset:\n\npro_meta_filtered <- pro_meta |> \n filter(gene_id %in% pro_meta_summary_gene_filtered$gene_id)\n\n🎬 Write the filtered data to file:\n\nwrite_csv(pro_meta_filtered, \n file = \"data-processed/pro_meta_filtered.csv\")\n\nNow go to Look after future you", + "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": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "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\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. This means we do not need to filter for unexpressed genes.\nNow go to Look after future you", + "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": [ - "Transcriptomics", - "Week 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Week 6: Supporting Information 2", + "Prepare!" ] }, { - "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 comparison between the control and FGF-treated embroys 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.", + "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 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "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\n🎬 Create a new Project, arab-88H, populated with folders and your data. Make a script file called suff-def-wild.R. This will a be commented analysis of comparison between copper sufficient and copper deficient wildtype plants. 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.", + "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 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "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\n🎬 Create a new Project, leish-88H, populated with folders and your data. Make a script file called pro_meta.R. This will a be commented analysis of comparison procyclic promastigote and metacyclic promastigotes. 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.", + "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 3: Hello data!", - "Workshop" + "Core Supporting Info", + "Core: Supporting Information" ] }, { - "objectID": "transcriptomics/week-3/workshop.html#stem-cells-and-future-you", - "href": "transcriptomics/week-3/workshop.html#stem-cells-and-future-you", + "objectID": "core/week-1-old/workshop.html", + "href": "core/week-1-old/workshop.html", "title": "Workshop", - "section": "🐭 Stem cells and future you", - "text": "🐭 Stem cells 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. 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 3: Hello data!", - "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/workshop.html#footnotes", - "href": "transcriptomics/week-3/workshop.html#footnotes", + "objectID": "core/week-1-old/workshop.html#session-overview", + "href": "core/week-1-old/workshop.html#session-overview", "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.↩︎\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.↩︎", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "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_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", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" - ] + "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_after_workshop.html#frog-development", - "href": "transcriptomics/week-3/study_after_workshop.html#frog-development", - "title": "Independent Study to consolidate this week", - "section": "🐸 Frog development", - "text": "🐸 Frog development\n🎬 Open your frogs-88H Project. Make a new script, cont-fgf-s20.R, and, using cont-fgf-s30.R as a template, repeat the analysis stage 20.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" - ] + "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_after_workshop.html#arabidopisis", - "href": "transcriptomics/week-3/study_after_workshop.html#arabidopisis", - "title": "Independent Study to consolidate this week", - "section": "🎄 Arabidopisis", - "text": "🎄 Arabidopisis\n🎬 Open your arab-88H Project. Make a new script, suff-def-spl7.R, and, using suff-def-wild.R as a template, repeat the analysis on the spl7 mutants.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" - ] + "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_after_workshop.html#leishmania", - "href": "transcriptomics/week-3/study_after_workshop.html#leishmania", - "title": "Independent Study to consolidate this week", - "section": "💉 Leishmania", - "text": "💉 Leishmania\n🎬 Open your leish-88H Project. Make a new script, pro_ama.R, and, using pro_meta.R as a template, repeat the analysis on the procyclic promastigotes (pro) and amastigotes (ama).", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" - ] + "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_after_workshop.html#stem-cells", - "href": "transcriptomics/week-3/study_after_workshop.html#stem-cells", - "title": "Independent Study to consolidate this week", - "section": "🐭 Stem cells", - "text": "🐭 Stem cells\n🎬 Open your mice-88H Project. Make a new script and, using hspc-prog.R as a template, repeat the analysis on the HSPC and LT-HSC cells.", - "crumbs": [ - "Transcriptomics", - "Week 3: Hello data!", - "Consolidate!" - ] + "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-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", - "About" - ] - }, - { - "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", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" - ] - }, - { - "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", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" - ] - }, - { - "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:", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" - ] - }, - { - "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": "🐸 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", - "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-5/study_before_workshop.html#arabidopisis", - "href": "transcriptomics/week-5/study_before_workshop.html#arabidopisis", - "title": "Independent Study to prepare for workshop", - "section": "🎄 Arabidopisis", - "text": "🎄 Arabidopisis", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "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-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": "💉 Leishmania mexicana", - "text": "💉 Leishmania mexicana", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "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-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": "🐭 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", - "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-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", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "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-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": "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", - "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-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": "🐸 , 🎄 , 💉 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", - "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-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": "🐭 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", - "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-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": "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", - "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-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)", - "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "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-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": "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", - "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.html\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 152\ndrwxr-xr-x 2 runner docker 4096 Oct 8 14:58 data\ndrwxr-xr-x 2 runner docker 4096 Oct 8 14:58 images\n-rw-r--r-- 1 runner docker 1597 Oct 8 14:58 overview.qmd\n-rw-r--r-- 1 runner docker 22716 Oct 8 15:03 study_after_workshop.html\n-rw-r--r-- 1 runner docker 184 Oct 8 14:58 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4807 Oct 8 14:58 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13029 Oct 8 14:58 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 58063 Oct 8 14:58 workshop.html\n-rw-r--r-- 1 runner docker 8550 Oct 8 14:58 workshop.qmd\n-rw-r--r-- 1 runner docker 8577 Oct 8 15:03 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4096 Oct 8 14:58 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 152K\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:58 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:58 images\n-rw-r--r-- 1 runner docker 1.6K Oct 8 14:58 overview.qmd\n-rw-r--r-- 1 runner docker 23K Oct 8 15:03 study_after_workshop.html\n-rw-r--r-- 1 runner docker 184 Oct 8 14:58 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 8 14:58 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 8 14:58 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 8 14:58 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:58 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 8 15:03 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 8 14:58 workshop_files\n\n\nThe -a option stands for “all” and shows us all the files, including hidden files.\n\nls -alh\n\ntotal 160K\ndrwxr-xr-x 5 runner docker 4.0K Oct 8 15:03 .\ndrwxr-xr-x 8 runner docker 4.0K Oct 8 15:03 ..\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:58 data\ndrwxr-xr-x 2 runner docker 4.0K Oct 8 14:58 images\n-rw-r--r-- 1 runner docker 1.6K Oct 8 14:58 overview.qmd\n-rw-r--r-- 1 runner docker 23K Oct 8 15:03 study_after_workshop.html\n-rw-r--r-- 1 runner docker 184 Oct 8 14:58 study_after_workshop.qmd\n-rw-r--r-- 1 runner docker 4.7K Oct 8 14:58 study_before_workshop.ipynb\n-rw-r--r-- 1 runner docker 13K Oct 8 14:58 study_before_workshop.qmd\n-rw-r--r-- 1 runner docker 57K Oct 8 14:58 workshop.html\n-rw-r--r-- 1 runner docker 8.4K Oct 8 14:58 workshop.qmd\n-rw-r--r-- 1 runner docker 8.4K Oct 8 15:03 workshop.rmarkdown\ndrwxr-xr-x 3 runner docker 4.0K Oct 8 14:58 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-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 5: Visualising and Interpreting", - "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-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 5: Visualising and Interpreting", - "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-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.", + "objectID": "core/week-2/workshop.html#session-overview", + "href": "core/week-2/workshop.html#session-overview", + "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:\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 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "objectID": "core/week-2/workshop.html#what-is-reproducibility", + "href": "core/week-2/workshop.html#what-is-reproducibility", + "title": "Workshop", + "section": "What is reproducibility?", + "text": "What is reproducibility?\n\n\nThe Turing Way’s definitions of reproducible research", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "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\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": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "objectID": "core/week-2/workshop.html#definitions-1", + "href": "core/week-2/workshop.html#definitions-1", + "title": "Workshop", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nReplicable: Different data + same analysis = qualitatively similar results. The work is not dependent on the specificities of the data.", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "objectID": "core/week-2/workshop.html#definitions-2", + "href": "core/week-2/workshop.html#definitions-2", + "title": "Workshop", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nRobust: Same data + different analysis = qualitatively similar or identical results. The work is not dependent on the specificities of the analysis.", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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": "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.", + "objectID": "core/week-2/workshop.html#definitions-3", + "href": "core/week-2/workshop.html#definitions-3", + "title": "Workshop", + "section": "Definitions", + "text": "Definitions\n\n\nThe Turing Way’s definitions of reproducible research\n\nGeneralisable: Different data + different analysis = qualitatively similar results and same conclusions.", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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": "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", + "objectID": "core/week-2/workshop.html#why-does-it-matter", + "href": "core/week-2/workshop.html#why-does-it-matter", + "title": "Workshop", + "section": "Why does it matter?", + "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": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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": "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.", + "objectID": "core/week-2/workshop.html#how-to-achieve-reproducibility", + "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,\nMore advanced: version, control, continuous integration and testing (not required for Supporting Information)", "crumbs": [ - "Transcriptomics", - "Week 5: Visualising and Interpreting", - "Prepare!" + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "objectID": "core/week-2/workshop.html#rationale-for-scripting", + "href": "core/week-2/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": [ "Core Supporting Info", "Week 2: Supporting Information 1", - "About" + "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#project-oriented-workflow", + "href": "core/week-2/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", "crumbs": [ "Core Supporting Info", "Week 2: Supporting Information 1", - "Prepare!" + "Workshop" ] }, { - "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/workshop.html#example-si-itself-is-an-rsp", + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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/workshop.html#example-si-includes-an-rsp", + "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-- 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", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#rstudio-projects", + "href": "core/week-2/workshop.html#rstudio-projects", + "title": "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." + "text": "RStudio Projects\n\n\nRStudio Projects make it easy to manage working directories and paths because they set the working directory to the RStudio Projects directory automatically.", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "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", + "objectID": "core/week-2/workshop.html#rstudio-projects-1", + "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", + "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", + "objectID": "core/week-2/workshop.html#rstudio-projects-2", + "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", + "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", + "objectID": "core/week-2/workshop.html#rstudio-projects-3", + "href": "core/week-2/workshop.html#rstudio-projects-3", + "title": "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." + "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.", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "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", + "objectID": "core/week-2/workshop.html#rstudio-projects-4", + "href": "core/week-2/workshop.html#rstudio-projects-4", + "title": "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”" + "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”", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "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", + "objectID": "core/week-2/workshop.html#creating-an-rstudio-project", + "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 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>'" + "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-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/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-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/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", + "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", + "objectID": "core/week-2/workshop.html#opening-and-closing", + "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-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/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", + "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", + "objectID": "core/week-2/workshop.html#code-formatting-and-style-1", + "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", + "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", + "objectID": "core/week-2/workshop.html#code-formatting-and-style-2", + "href": "core/week-2/workshop.html#code-formatting-and-style-2", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "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", + "objectID": "core/week-2/workshop.html#code-formatting-and-style-3", + "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", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#ugly-code", + "href": "core/week-2/workshop.html#ugly-code", + "title": "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::\",\"\"))" + "text": "😩 Ugly code 😩\n\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::\",\"\"))", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#ugly-code-1", + "href": "core/week-2/workshop.html#ugly-code-1", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#cool-code", + "href": "core/week-2/workshop.html#cool-code", + "title": "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::\", \"\"))" + "text": "😎 Cool code 😎\n\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 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::\", \"\"))", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#cool-code-1", + "href": "core/week-2/workshop.html#cool-code-1", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#code-algorithmically-1", + "href": "core/week-2/workshop.html#code-algorithmically-1", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#hard-coding-numbers.", + "href": "core/week-2/workshop.html#hard-coding-numbers.", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#hard-coding-numbers.-1", + "href": "core/week-2/workshop.html#hard-coding-numbers.-1", + "title": "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." + "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.", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#hard-coding-numbers", + "href": "core/week-2/workshop.html#hard-coding-numbers", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#better", + "href": "core/week-2/workshop.html#better", + "title": "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" + "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", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#better-1", + "href": "core/week-2/workshop.html#better-1", + "title": "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)" - }, - { - "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": "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": "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": "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": "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" + "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)", + "crumbs": [ + "Core Supporting Info", + "Week 2: Supporting Information 1", + "Workshop" + ] }, { - "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": "", - "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": "core/week-2/workshop.html#naming-things", + "href": "core/week-2/workshop.html#naming-things", + "title": "Workshop", + "section": "Naming things", + "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", + "Workshop" + ] }, { - "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", + "objectID": "core/week-2/workshop.html#naming-suggestions", + "href": "core/week-2/workshop.html#naming-suggestions", + "title": "Workshop", + "section": "Naming suggestions", + "text": "Naming suggestions\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", "crumbs": [ "Core Supporting Info", - "Week 6: Supporting Information 2", - "About" + "Week 2: Supporting Information 1", + "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.", + "objectID": "core/week-2/workshop.html#summary", + "href": "core/week-2/workshop.html#summary", + "title": "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", "crumbs": [ "Core Supporting Info", - "Week 6: Supporting Information 2", - "Prepare!" + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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", + "objectID": "core/week-2/workshop.html#reading", + "href": "core/week-2/workshop.html#reading", + "title": "Workshop", + "section": "Reading", + "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", - "Core: Supporting Information" + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "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.", + "objectID": "core/week-2/workshop.html#references", + "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. 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", - "Core: Supporting Information" + "Week 2: Supporting Information 1", + "Workshop" ] }, { - "objectID": "core/core.html#week-6-core-supporting-information-2", - "href": "core/core.html#week-6-core-supporting-information-2", - "title": "Core: Supporting Information", + "objectID": "core/week-2/overview.html", + "href": "core/week-2/overview.html", + "title": "Overview", "section": "", - "text": "Documenting your Supporting Information with a read me and appropriate code commenting, curating code, non-coded processing", + "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": [ "Core Supporting Info", - "Core: Supporting Information" + "Week 2: Supporting Information 1", + "About" ] }, { @@ -3072,10 +3072,10 @@ "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", + "objectID": "core/week-6-old/overview.html", + "href": "core/week-6-old/overview.html", + "title": "Overview", "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." + "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" } ] \ No newline at end of file diff --git a/site_libs/bootstrap/bootstrap.min.css b/site_libs/bootstrap/bootstrap.min.css index 0081808..6ceb315 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}}: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}/*! + */@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}.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}.tab-content>.tab-pane.html-fill-container{display:none}.tab-content>.active.html-fill-container{display:flex}.tab-content.html-fill-container{padding:0}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)}}.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)}}.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-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}}.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-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-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%)}: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}@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-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/transcriptomics/week-4/study_after_workshop.html b/transcriptomics/week-4/study_after_workshop.html index a76bd9a..e8ff887 100644 --- a/transcriptomics/week-4/study_after_workshop.html +++ b/transcriptomics/week-4/study_after_workshop.html @@ -297,6 +297,7 @@

Independent Study to consolidate this week

🎄 Arabidopisis

🎬 Open your arab-88H RStudio Project and the suff-def-spl7.R script you began in the Consolidation study last week. Use the differential expression analysis you did in the workshop (in suff-def-wild.R) as a template to continue your script.

💉 Leishmania

+

🎬 Open your leish-88H RStudio Project and the pro_ama.R script you began in the Consolidation study last week. Use the differential expression analysis you did in the workshop (in pro_meta.R) as a template to continue your script.

🐭 Stem cells

🎬 Open your mice-88H RStudio Project.

diff --git a/transcriptomics/week-4/study_before_workshop.html b/transcriptomics/week-4/study_before_workshop.html index 679ec18..e3717eb 100644 --- a/transcriptomics/week-4/study_before_workshop.html +++ b/transcriptomics/week-4/study_before_workshop.html @@ -477,7 +477,8 @@
  • Raw data: xlaevis_counts_S14.csv, xlaevis_counts_S20.csv, xlaevis_counts_S30.csv
  • -
  • Processed data: s30_filtered.csv, s20_filtered.csv)
  • +
  • Processed data: s30_filtered.csv, s20_filtered.csv +
  • Two scripts: cont-fgf-s30.R, cont-fgf-s20.R
@@ -490,7 +491,7 @@
  • An RStudio Project called arab-88H which contains:

      -
    • Raw data: arabidopsis-wild.csv,arabidopsis-spl7.csv +
    • Raw data: arabidopsis-wild.csv, arabidopsis-spl7.csv
    • Processed data: wild_filtered.csv, spl7_filtered.csv)
    • Two scripts: suff-def-wild.R, suff-def-spl7.R @@ -503,7 +504,7 @@
    • An RStudio Project called leish-88H which contains:

        -
      • Raw data: leishmania-mex-ama.csv,leishmania-mex-pro.csv, leishmania-mex-meta.csv +
      • Raw data: leishmania-mex-ama.csv, leishmania-mex-pro.csv, leishmania-mex-meta.csv
      • Processed data: pro_meta_filtered.csv, pro_ama_filtered.csv
      • @@ -516,10 +517,11 @@
      • An RStudio Project called mice-88H which contains

          -
        • Raw data: surfaceome_hspc.csv,surfaceome_prog.csv, surfaceome_lthsc.csv +
        • Raw data: surfaceome_hspc.csv, surfaceome_prog.csv, surfaceome_lthsc.csv
        • Processed data: _filtered.csv, _filtered.csv)
        • -
        • Two scripts: hspc-prog.R, hspc-lthsc.R`
        • +
        • Two scripts: hspc-prog.R, hspc-lthsc.R +
      @@ -563,7 +565,7 @@
      • The difference between groups is given as the log2 fold change in expression between groups

      • -
      • A fold change is the expression in one group divided by the expression in the other group

      • +
      • A fold change is the expression in one group divided by the expression in the other group: \(\frac{A}{B}\)

      • we use fold changes because the absolute expression values may not be accurate and relative changes are what matters

      • we use log2 fold changes because they are symmetrical around 0

      @@ -672,12 +674,16 @@
      • The gene id is difficult to interpret

      • Therefore we need to add information such as the gene name and a description to the results

      • +
      +
      +
      +

      🐸 Xenbase

      xenbase logo

      Xenbase is a model organism database that provides genomic, molecular, and developmental biology information about Xenopus laevis and Xenopus tropicalis.

      @@ -717,7 +723,8 @@
  • Packages

    These packages are all on the University computers which you can access on campus or remotely using the VDS

    -

    If you want to use your own machine you will need to install the packages. ::: {style=“font-size: 60%;”}

    +

    If you want to use your own machine you will need to install the packages.

    +

    Install BiocManager from CRAN in the the normal way and set the version of Bioconductor packages to install:

    install.packages("BiocManager")
    @@ -735,7 +742,7 @@
     
    BiocManager::install("biomaRt")
    -

    :::

    +

    Workshops

    Workshops

    diff --git a/transcriptomics/week-4/workshop.html b/transcriptomics/week-4/workshop.html index d6613c7..2adb2f7 100644 --- a/transcriptomics/week-4/workshop.html +++ b/transcriptomics/week-4/workshop.html @@ -458,7 +458,7 @@

    Workshop

    We need to import the procyclic- and metacyclic-promastigote data that were filtered to remove genes with 4, 5 or 6 zeros and those where the total counts was less than 20.

    🎬 Import the data from the data-processed folder.

    -

    Now go to Differential Expression Analysis.

    +

    Now go to Differential Expression Analysis.

    🐭 Stem cells

    Import

    Now go to Differential Expression Analysis.

    @@ -577,7 +577,7 @@

    Workshop

    rownames(s30_count_mat) <- s30_filtered$xenbase_gene_id

    You might want to view the matrix (click on it in your environment pane).

    -

    The metadata are in a file, frog_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other # columns give the “treatments”. In this case, the treatments stage (with three levels) and treatment (with two levels).

    +

    The metadata are in a file, frog_meta_data.txt. This is a tab-delimited file. The first column is the sample name and the other columns give the “treatments”. In this case, the treatments stage (with three levels) and treatment (with two levels).

    🎬 Make a folder called meta and save the file to it.

    🎬 Read the metadata into a dataframe:

    @@ -614,13 +614,11 @@

    Workshop

    🎬 View the counts:

    counts(dds) |> View()
    -
    -
    Error in .External2(C_dataviewer, x, title): unable to start data viewer
    -

    You should be able to see that this is the same as in s30_count_mat.

    +

    🎬 View the column information:

    -
    colData(dds)
    +
    colData(dds)
    DataFrame with 6 rows and 4 columns
               sample_id       stage treatment sibling_rep
    @@ -633,15 +631,16 @@ 

    Workshop

    S30_F_3 S30_F_3 stage_30 FGF three
    +

    You should be able to see this is the same as in meta_s30.

    3. Prepare the normalised counts

    The 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.

    🎬 Estimate the factors for normalisation and store them in the DESeqDataSet object:

    -
    dds <- estimateSizeFactors(dds)
    +
    dds <- estimateSizeFactors(dds)

    🎬 Look at the factors (just for information):

    -
    sizeFactors(dds)
    +
    sizeFactors(dds)
      S30_C_1   S30_C_2   S30_C_3   S30_F_1   S30_F_2   S30_F_3 
     0.8812200 0.9454600 1.2989886 1.0881870 1.0518961 0.8322894 
    @@ -650,24 +649,24 @@

    Workshop

    The 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.

    🎬 Save the normalised to a matrix:

    -
    normalised_counts <- counts(dds, normalized = TRUE)
    +
    normalised_counts <- counts(dds, normalized = TRUE)

    🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:

    -
    s30_normalised_counts <- data.frame(normalised_counts,
    +
    s30_normalised_counts <- data.frame(normalised_counts,
                                         xenbase_gene_id = row.names(normalised_counts))

    4. Differential expression analysis

    We 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.

    🎬 Run the differential expression analysis and store the results in the same object:

    -
    dds <- DESeq(dds)
    +
    dds <- DESeq(dds)

    The function will take only a few moments to run on this data but can take longer for bigger datasets.

    We 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.

    🎬 Define the contrast:

    -
    contrast_fgf <- c("treatment", "FGF", "control")
    +
    contrast_fgf <- c("treatment", "FGF", "control")

    Note 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:

      @@ -677,19 +676,19 @@

      Workshop

      If we had put them in the order control, FGF we would have the reverse.

      🎬 Extract the results from the DESseqDataSet object:

      -
      results_fgf <- results(dds,
      +
      results_fgf <- results(dds,
                              contrast = contrast_fgf)
      -

      TThis will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between the control and the FGF-treatment for each gene.

      +

      This will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between the control and the FGF-treatment for each gene.

      🎬 Put the results in a dataframe and add the gene ids as a column:

      -
      s30_results <- data.frame(results_fgf,
      +
      s30_results <- data.frame(results_fgf,
                                 xenbase_gene_id = row.names(results_fgf))

      It is useful to have the normalised counts and the statistical results in one dataframe.

      🎬 Merge the two dataframes:

      -
      # merge the results with the normalised counts
      +
      # merge the results with the normalised counts
       s30_results <- s30_normalised_counts |>
         left_join(s30_results, by = "xenbase_gene_id")
      @@ -766,7 +765,7 @@

      Workshop

      We will use filter() to find these genes.

      🎬 Find the genes that are expressed only in the sufficient copper group:

      -
      wild_suf_only <- wild_filtered |>
      +
      wild_suf_only <- wild_filtered |>
         filter(SRX028961_wild_def == 0,
                SRX028957_wild_def == 0,
                SRX028960_wild_suf > 0,
      @@ -800,13 +799,13 @@ 

      Workshop

      The 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.

      🎬 Create a matrix of the counts:

      -
      wild_count_mat <- wild_filtered |>
      +
      wild_count_mat <- wild_filtered |>
         select(-gene_id) |>
         as.matrix()

      🎬 Add the gene ids as row names to the matrix:

      -
      # add the row names to the matrix
      +
      # add the row names to the matrix
       rownames(wild_count_mat) <- wild_filtered$gene_id

      You might want to view the matrix (click on it in your environment pane).

      @@ -814,19 +813,19 @@

      Workshop

      🎬 Make a folder called meta and save the file to it.

      🎬 Read the metadata into a dataframe:

      -
      meta <- read_table("meta/arab_meta_data.txt")
      +
      meta <- read_table("meta/arab_meta_data.txt")

      🎬 Examine the resulting dataframe.

      We 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.

      🎬 Add the sample names as row names to the metadata dataframe:

      -
      row.names(meta) <- meta$sample_id
      +
      row.names(meta) <- meta$sample_id

      (you will get a warning message but you can ignore it)

      We are dealing only with the wild data so we need to remove the samples that are not in the wild data.

      🎬 Filter the metadata to keep only the wild information:

      -
      meta_wild <- meta |>
      +
      meta_wild <- meta |>
         filter(genotype == "wt")

      We can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by copper status.

      @@ -837,7 +836,7 @@

      Workshop

    🎬 Create the DESeqDataSet object:

    -
    dds <- DESeqDataSetFromMatrix(wild_count_mat,
    +
    dds <- DESeqDataSetFromMatrix(wild_count_mat,
                                   colData = meta_wild,
                                   design = ~ copper)
    @@ -846,14 +845,12 @@

    Workshop

    The 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.

    🎬 View the counts:

    -
    counts(dds) |> View()
    -
    -
    Error in .External2(C_dataviewer, x, title): unable to start data viewer
    -
    +
    counts(dds) |> View()

    You should be able to see that this is the same as in wild_count_mat.

    +

    🎬 View the column information:

    -
    colData(dds)
    +
    colData(dds)
    DataFrame with 4 rows and 3 columns
                                 sample_id    genotype     copper
    @@ -864,15 +861,16 @@ 

    Workshop

    SRX028961_wild_def SRX028961_wild_def wt deficient
    +

    You should be able to see this is the same as in meta_wild.

    3. Prepare the normalised counts

    The 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.

    🎬 Estimate the factors for normalisation and store them in the DESeqDataSet object:

    -
    dds <- estimateSizeFactors(dds)
    +
    dds <- estimateSizeFactors(dds)

    🎬 Look at the factors (just for information):

    -
    sizeFactors(dds)
    +
    sizeFactors(dds)
    SRX028956_wild_suf SRX028957_wild_def SRX028960_wild_suf SRX028961_wild_def 
              0.8200020          0.4653024          2.3002428          1.1965924 
    @@ -881,24 +879,24 @@

    Workshop

    The 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.

    🎬 Save the normalised to a matrix:

    -
    normalised_counts <- counts(dds, normalized = TRUE)
    +
    normalised_counts <- counts(dds, normalized = TRUE)

    🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:

    -
    wild_normalised_counts <- data.frame(normalised_counts,
    +
    wild_normalised_counts <- data.frame(normalised_counts,
                                         gene_id = row.names(normalised_counts))

    4. Differential expression analysis

    We 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.

    🎬 Run the differential expression analysis and store the results in the same object:

    -
    dds <- DESeq(dds)
    +
    dds <- DESeq(dds)

    The function will take only a few moments to run on this data but can take longer for bigger datasets.

    We 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 sufficient and deficient.

    🎬 Define the contrast:

    -
    contrast_suf <- c("copper", "sufficient", "deficient")
    +
    contrast_suf <- c("copper", "sufficient", "deficient")

    Note that copper is the name of the column in the metadata dataframe and sufficient and deficient are the names of the levels in the copper column. By putting them in the order sufficient , deficient we are saying the fold change will be sufficient / deficient. This means:

      @@ -908,20 +906,20 @@

      Workshop

      If we had put them in the order deficient, sufficient we would have the reverse.

      🎬 Extract the results from the DESseqDataSet object:

      -
      results_suf <- results(dds,
      +
      results_suf <- results(dds,
                              contrast = contrast_suf)

      This will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between the sufficient- and
      deficient-copper for each gene.

      🎬 Put the results in a dataframe and add the gene ids as a column:

      -
      wild_results <- data.frame(results_suf,
      +
      wild_results <- data.frame(results_suf,
                                 gene_id = row.names(results_suf))

      It is useful to have the normalised counts and the statistical results in one dataframe.

      🎬 Merge the two dataframes:

      -
      # merge the results with the normalised counts
      +
      # merge the results with the normalised counts
       wild_results <- wild_normalised_counts |>
         left_join(wild_results, by = "gene_id")
      @@ -941,7 +939,7 @@

      Workshop

      We will use filter() to find these genes.

      🎬 Find the genes that are expressed only at the procyclic-promastigote stage:

      -
      pro_meta_pro_only <- pro_meta_filtered  |>
      +
      pro_meta_pro_only <- pro_meta_filtered  |>
         filter(lm_pro_1 > 0,
                lm_pro_2 > 0,
                lm_pro_3 > 0,
      @@ -975,13 +973,13 @@ 

      Workshop

      The 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.

      🎬 Create a matrix of the counts:

      -
      pro_meta_count_mat <- pro_meta_filtered  |>
      +
      pro_meta_count_mat <- pro_meta_filtered  |>
         select(-gene_id) |>
         as.matrix()

      🎬 Add the gene ids as row names to the matrix:

      -
      # add the row names to the matrix
      +
      # add the row names to the matrix
       rownames(pro_meta_count_mat) <- pro_meta_filtered$gene_id

      You might want to view the matrix (click on it in your environment pane).

      @@ -989,19 +987,19 @@

      Workshop

      🎬 Make a folder called meta and save the file to it.

      🎬 Read the metadata into a dataframe:

      -
      meta <- read_table("meta/leish_meta_data.txt")
      +
      meta <- read_table("meta/leish_meta_data.txt")

      🎬 Examine the resulting dataframe.

      We 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.

      🎬 Add the sample names as row names to the metadata dataframe:

      -
      row.names(meta) <- meta$sample_id
      +
      row.names(meta) <- meta$sample_id

      (you will get a warning message but you can ignore it)

      We are dealing only with the wild data so we need to remove the samples that are not in the wild data.

      🎬 Filter the metadata to keep only the procyclic and metacyclic information:

      -
      meta_pro_meta <- meta |>
      +
      meta_pro_meta <- meta |>
         filter(stage != "amastigotes")

      We can now create the DESeqDataSet object. The design formula describes the statistical model. You should recognise the form from previous work. The ~ can be read as “explain by” and on its right hand side are the explanatory variables. That is, the model is counts explained by stage status.

      @@ -1012,7 +1010,7 @@

      Workshop

    🎬 Create the DESeqDataSet object:

    -
    dds <- DESeqDataSetFromMatrix(pro_meta_count_mat,
    +
    dds <- DESeqDataSetFromMatrix(pro_meta_count_mat,
                                   colData = meta_pro_meta,
                                   design = ~ stage)
    @@ -1021,14 +1019,12 @@

    Workshop

    The 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.

    🎬 View the counts:

    -
    counts(dds) |> View()
    -
    -
    Error in .External2(C_dataviewer, x, title): unable to start data viewer
    -
    +
    counts(dds) |> View()

    You should be able to see that this is the same as in pro_meta_count_mat.

    +

    🎬 View the column information:

    -
    colData(dds)
    +
    colData(dds)
    DataFrame with 6 rows and 3 columns
                 sample_id      stage replicate
    @@ -1041,15 +1037,16 @@ 

    Workshop

    lm_meta_3 lm_meta_3 metacyclic 3
    +

    You should be able to see this is the same as in meta_pro_meta.

    3. Prepare the normalised counts

    The 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.

    🎬 Estimate the factors for normalisation and store them in the DESeqDataSet object:

    -
    dds <- estimateSizeFactors(dds)
    +
    dds <- estimateSizeFactors(dds)

    🎬 Look at the factors (just for information):

    -
    sizeFactors(dds)
    +
    sizeFactors(dds)
     lm_pro_1  lm_pro_2  lm_pro_3 lm_meta_1 lm_meta_2 lm_meta_3 
     1.3029351 0.9158157 0.9943186 0.7849299 0.8443586 1.3250409 
    @@ -1058,24 +1055,24 @@

    Workshop

    The 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.

    🎬 Save the normalised to a matrix:

    -
    normalised_counts <- counts(dds, normalized = TRUE)
    +
    normalised_counts <- counts(dds, normalized = TRUE)

    🎬 Make a dataframe of the normalised counts, adding a column for the gene ids at the same time:

    -
    pro_meta_normalised_counts <- data.frame(normalised_counts,
    +
    pro_meta_normalised_counts <- data.frame(normalised_counts,
                                         gene_id = row.names(normalised_counts))

    4. Differential expression analysis

    We 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.

    🎬 Run the differential expression analysis and store the results in the same object:

    -
    dds <- DESeq(dds)
    +
    dds <- DESeq(dds)

    The function will take only a few moments to run on this data but can take longer for bigger datasets.

    We 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 procyclic and metacyclic.

    🎬 Define the contrast:

    -
    contrast_pro_meta <- c("stage", "procyclic", "metacyclic")
    +
    contrast_pro_meta <- c("stage", "procyclic", "metacyclic")

    Note that stage is the name of the column in the metadata dataframe and procyclic and metacyclic are the names of the levels in the stage column. By putting them in the order procyclic , metacyclic we are saying the fold change will be procyclic / metacyclic. This means:

      @@ -1085,23 +1082,23 @@

      Workshop

      If we had put them in the order metacyclic, procyclic we would have the reverse.

      🎬 Extract the results from the DESseqDataSet object:

      -
      results_pro_meta <- results(dds,
      +
      results_pro_meta <- results(dds,
                              contrast = contrast_pro_meta)

      This will give us the log2 fold change, the p-value and the adjusted p-value for the comparison between procyclic and metacyclic stage for each gene

      🎬 Put the results in a dataframe and add the gene ids as a column:

      -
      pro_meta_results <- data.frame(results_pro_meta,
      +
      pro_meta_results <- data.frame(results_pro_meta,
                                 gene_id = row.names(results_pro_meta))

      It is useful to have the normalised counts and the statistical results in one dataframe.

      🎬 Merge the two dataframes:

      -
      # merge the results with the normalised counts
      +
      # merge the results with the normalised counts
       pro_meta_results <- pro_meta_normalised_counts |>
         left_join(pro_meta_results, by = "gene_id")
      -

      Now go to Add gene information.

      +

      Now go to Add gene information.

    🐭 Stem cells

    DE instructions

    Now go to Add gene information.

    @@ -1114,41 +1111,41 @@

    Workshop

  • I downloaded xenbase.gpi.gz, unzipped it, removed header lines and the Xenopus tropicalis (taxon:8364) entries and saved it as xenbase_info.xlsx

  • If you want to emulate what I did you can use the following commands in the terminal after downloading the file:

    -
    gunzip xenbase.gpi.gz
    -less xenbase.gpi
    -q
    +
    gunzip xenbase.gpi.gz
    +less xenbase.gpi
    +q

    gunzip 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.

    However, 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.

    🎬 Load the readxl (Wickham and Bryan 2023) package:

    🎬 Import the Xenbase gene information file:

    -
    gene_info <- read_excel("meta/xenbase_info.xlsx") 
    +
    gene_info <- read_excel("meta/xenbase_info.xlsx") 

    You should view the resulting dataframe to see what information is available. You can use glimpse() or View().

    🎬 Merge the gene information with the results:

    -
    # join the gene info with the results
    +
    # join the gene info with the results
     s30_results <- s30_results |>
       left_join(gene_info, by = "xenbase_gene_id")

    🎬 Save the results to a file:

    -
    write_csv(s30_results, file = "results/s30_results.csv")
    +
    write_csv(s30_results, file = "results/s30_results.csv")

    🎄 Arabidopisis

    -

    Ensembl (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 (Durinck et al. 2009, 2005) gives you programmatic access making it easier to integrate information into R dataframes

    +

    Ensembl (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 and 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 (Durinck et al. 2009, 2005) gives you programmatic access making it easier to integrate information into R dataframes.

    🎬 Load the biomaRt (Durinck et al. 2009, 2005) package:

    The biomaRt package includes a function to list all the available datasets

    🎬 List the Ensembl “marts” available:

    - +
                  biomart                        version
     1       protists_mart      Ensembl Protists Genes 59
    @@ -1164,7 +1161,7 @@ 

    Workshop

    plants_mart looks like the one we want. We can see what genomes are available with names like “Arabidopsis” in this mart using the searchDatasets() function.

    🎬

    -
    searchDatasets(useEnsemblGenomes(biomart = "plants_mart"), 
    +
    searchDatasets(useEnsemblGenomes(biomart = "plants_mart"), 
                    pattern = "Arabidopsis")
                 dataset                         description version
    @@ -1176,21 +1173,18 @@ 

    Workshop

    athaliana_eg_gene is the Arabidopsis thaliana genes (TAIR10) dataset we want.

    🎬 Connect to the athaliana_eg_gene database in plants_mart:

    -
    ensembl <- useEnsemblGenomes(biomart = "plants_mart",
    +
    ensembl <- useEnsemblGenomes(biomart = "plants_mart",
                                  dataset = "athaliana_eg_gene")

    🎬 See the the types of information we can retrieve:

    -
    listAttributes(mart = ensembl) |> View()
    -
    -
    Error in .External2(C_dataviewer, x, title): unable to start data viewer
    -
    +
    listAttributes(mart = ensembl) |> View()

    There are many (1,714!) possible bits of information (attributes) that can be obtained.

    We use the getBM() function to retrieve information from the database. The filters argument is used to specified what kind of identifier we are supplying in values 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.

    🎬 Get the the gene name and a description. We also retreive the gene id so we can later join the information with the results:

    -
    gene_info <- getBM(filters = "ensembl_gene_id",
    +
    gene_info <- getBM(filters = "ensembl_gene_id",
                        attributes = c("ensembl_gene_id",
                                       "external_gene_name",
                                       "description"),
    @@ -1200,18 +1194,22 @@ 

    Workshop

    You should view the resulting dataframe to see what information is available. You can use glimpse() or View().

    🎬 Merge the gene information with the results:

    -
    # join the gene info with the results
    +
    # join the gene info with the results
     wild_results <- wild_results |>
       left_join(gene_info,
                 by = join_by(gene_id == ensembl_gene_id))

    🎬 Save the results to a file:

    -
    write_csv(wild_results, file = "results/wild_results.csv")
    +
    write_csv(wild_results, file = "results/wild_results.csv")

    💉 Leishmania

    ???

    +

    🎬 Save the results to a file:

    +
    +
    write_csv(pro_meta_results, file = "results/pro_meta_results .csv")
    +

    🐭 Stem cells

    🤗 Look after future you!

    🎬 Go through you script and tidy up. You might need to :

    diff --git a/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-44-1.png b/transcriptomics/week-5/workshop_files/figure-html/unnamed-chunk-44-1.png index 4352147636a065182938711447e224ede81ece87..9b61fbc9273ddc63eee40001b92ced5015a350b5 100644 GIT binary patch literal 134067 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 z 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 literal 134147 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

    J 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

    3k-eqO{@Z60!(eQZjmH}pl$-G{o|7EDH ze>yG)om7ptud$gK!16tS(hdWE4`UXZMvhx?v453A06K&+YKfr;_n zPfL=pySAOXhDlaTW?#qpbx%aurkYHlp2dh>4M(XsTy#qLt)@VB3SnX9>*nc9BX?n zh}?1!2|J^+<&U7og)E2-K6-I}xyTN|H|~B1|0){Ue>+F!aLcxi zBvb@TOUU<}|7xnaVSq#^+}Gx^FED6apJQRQZ0`9C`GPRN*?@&g92u7T*Rn+xdan1= zj_n*JCXAPH1M7@<0R;CFnkEhIT3TCZzlnA?SQiSwaw_Q2>3T$M6_mqE1R zXx5djR3U!(%uNRo1}juwaCT2k*Zn4N1l@o{*g2jLAIXc+s$}EjbOvQN5Xa;U4gY|u z1K@9nIm{JW?<3>&F7ZV0SJ`;H;P5+Jhov00;YM)5bM1J(NkswMme(novX%t4*s+3E zpGuzHz8Yt2Koe2}81riEcjrByQ$Bgr)ace@XE)gP>lxe|s%;UEMBJ>YOX%tv;zzg# zN}21uR_Dd5&~FyxLl2k8|9mo)A=TGNWMv86S^MHl!R26MJ!v>mBXRj_tYCUiaeZ21ELn`)^YjW@f~Q<^769H+6r< zovki*2>U+iL3M+%@>q@puCFVy z9?gYoa^^M#TstL&rD(bHRTkFIDSzD6nGXVhtq|O|dsjwk@UipOT*G4daV)K>#m8(sNek^?#pQL4X!?e(AbA{oV?4}M%~#C$wh@mhEcLLhIYLtF zqhQb8+OKCjEfm`8jB2!Y7{}Ir)Seic!zM3To8V9V_EsU}>kBbq>p~&{nqbp@Yu-N@ zDNPZr~VS3(TYgabsef`S5YY*Idvt82XE z!-oeW2+fIUS$KF4m=xO$bm|vvN7s=!;yN$H&JC+w5`%^^A&tsNl~=JB-aKCq8^ecL;jD2=>e>X(P;wV3s!Y2ZhVoONb0B>UQ!sgGBhmxQGR z=mY>+4g$DUsG79yPFH|pZ8&|5P_@Q7atJdfN8%#JlJVy!eeYw_j8i~z^ppf9^HX8+_?Ik-W%e)3thTf-hmN2IAOI2+ zs77=UIo<_2pmx&I2YRVZux0;N$?C_}<|l&>u(Kk27H>P^r*jLYT}YK|jAh=LUpN`< z3>q0|LVa1^eC2AOfXIArw%}#=%K+eK?%mWt8wt;?KJbTlG>WWPvV+&$5Ki^H!R=Vc z4eDPY`nl*PCh`;{Hzg%HYcT%siJEu+VFyf)yZoAMKogx|v^U5NuYu8fUrQYYLQS=o zB(i&;AFR@U8A<3E02JzPi&o|CZf?M!O8^g@0NO7g+crO1YHBV5h8YGRrCnct1!zlP z2ttwr`#VaA%}yU4c;VdZIh$kMBi$~JVPGPz518;Pr@~lxc2FtIXX$sd0Pn~fL5i_u ztfo&7+GxCbma8c!LvEI1FbCz@6d$dsDKI`i0bQN{2AX-KzUg07sTKfAYGb4nnMcAA zhS z@tbw+wU^CT<8Uv}?5ce9m{;OER5uv4tIiXja!=9Fqe2#d{Q)b{X~R}@U|=Ay8aZHm z82~GQ>tbt= zW@>`dJB99ObHaW>9?+Nlj& z<~7{gZK|*~VEWAGFQt*XeMf02Rmgg3(U~MH5s$RbYwOEVk8`i^qYeZC>v*4{-vEN- z%M+GpZs3qX=@=kcCsAu$0uus&$p~3Io-P1d24vZWCZVg{(E{ldMxd~%iutR;Dbjlq z#d%&0+TLb%om}GXvf1XF;FyLWA<220@$Pq@_@|4v>0XsfZ zJbdO@WVC(dEZw%2KNwI%9gkZha3p^M)V?{{0coHe+dvF^E%0336ZX6p|MBUn-TpOv zuOw`2m3ui@K~09d?sogG+06{gx5x3Cdi3Z|DJY$D=jg^GV(JLQapicd${$_mSVu$h z@}YBpso;A)?|!F={{HxN{QUuVtao!*T^-wFSth{guL7{6BUd7B)$2;eDuf87x3iM~ zu+I$)3>@8|A~rIhNA;x}ZFjvx$q4a;AKxYO!#u{&%NN&Q)wscTnL4uEyGzkhLd7lO zwRCNmG4b9N6I_qqEx3Qfnj&ert)az-t6-+}qNy$)4%ls5M^wZ@&LPd7zp-Q+(%B55 zqrI-;h}c3Sy#a{7DTv<+kX_m8U4U|e#3iTP8jV5^a5;<*4P9Pb{1ui-==D2503zq; z$O_P%i&C}H7zvW!PB-dA8lz-Z9vr`$u+@f&Cny4>A)wz6`j42DA;q6G`!`T8f9;`jX3yTb4%YUv9a+Har zh>~%J%Hnd(wygU{c_Xd*fA-D7Ndf0^yQ<+!+x+;MLQgu>M|(4M5IN_cWpTAc#b2?a zuNFPIs|}>3R!;?Jp1SOi3nwHKJIqWH9?+#@!@tLlA{T4;%naHmF>3gx-}GZl z{TP3oyN;;`65h6G1w*g{6-QF$5|Vr3_#Go#a& zeBg zU(q?W;7Am9v1ab)Y_uk*_7ty3MoHBVx-B|G?thq)KFSdirHR&B>?(}G)78#@(Ovw` z=h?o=&wXaS)!mkW`9mD#7s<8a4UX(?L3_mExyr|wx*UPhp-ShjB%q&6m2*0xecY`Uji`=~pt!iA%7 zB&7pEt$aZjXQ$J%#4X}JoKU(&Z78upKHt)ah|<<_D5)@k)r4h`VYJ}O-NG5C-XGZ6 zYKSYQCUgNS!dNJ2T5XQaL)>9quKH-Jl}zRd6`irQP}@=!OSs0S63i#7T_7aN%C%KC zC6+4+knk#c+Y6TmfO|9HSdlcQl(_bLSOd{uOI4-f7Gfbg86E0lsgH=DW#-96p35`0 zTq(hn^7+iduMrrk5QU-5kv!nLidW?RNk!!qzFB372|5=J0FMq$!#Oe-A>yo#*?Do5 zfD$DxGDN+q6}#C|+*n3;7pJ>zpLI+NTp&A9hvCuur9~VxzC&teZ%;Flx0Z?*@O)7G z8lBS;)f(X?WaG`!oYy^zs*lilh_};redfdgin3U3IPe5btns5e3#~|A!o0ZH(OGq$ z=d`R>Q!(uaFMCxD5z)QPizh^B&=VPg)_@G%%{<5D){gJLn2+c0FNllemF)rC)7L<1txDmEF^)ThG zCe~C(K`LOW@9Qpx_kIpPwD-iPIokDF$Oatwetv*XswxP$Z+7wkI0_013OJ|$LThKV z5gi$twpZPfN|B@mNgDB>G2=6xGewsFafHKpb$|+d$mz*&hCq<6bCrqYgUS|KV;5|> z^>(d{dzI_@v`D7jxRzGw7u7-Fep_x7cYZ**q;L%J@LGHu$^r%j0>(;AWMm}?|FF>b z5WrZWI=-e;8eS<}$L=j$6lnX|tzNCu>9~#+D4bQDhs}PP&ZRZiF{nE|^7K!GMp|g_ zd-9n1;L389OTvp=`k5e(K+{|wqCIK&ww{o&fsmXl(ztO}KH~Pd_Pi7!2OM!S5G3!o z9wI0p#$rup2+V2FFaJd4!BkacCPX>AxTVGvsE|8VZi(_=Z7XT0=8iGLn>gmg@nG(m zDqIex!to@Uf~>f-#kG+_!&`J?%!NL?Gu?Z6EKCY#^w!hhS_Y{Bc0LRm*Xr>Y)(U&N zup(xrEb|q4R+KS7p$IIxUD{){@yMU6V1b|A^~uJ4R&2e#HVLAGE)>py0QWz2ix=By zD&|>C#Dhci2rdhVt@nt(3eB4>X@Okemal%8&=R*UL$sT9;b_w^;-v0gtp_?FPDS%;kp{JHwPU zqAaU#aohL?eh^_x6AugLECRC6Al&2N56q!Fw=_$;`=P?W=AoX&nn=~$Wsb#5H&0wU zyAyU{TiBcQ!XsfrO9k&|ZM)}94Yun?pZ7`-s0FJSF~d1q==)c8)TFAq$p7U@iak8d zqh+S{f{{>i?ORh0n~48`$GyP*%JI|ZF?QTt9_=VtTVV*!6{)P2}j zocFH!E%b{jZgnzL`5R|6HMYPNCxo`;UT@b@p>s}omYC;XgHx`@5OXCD99pv=6?IE> z#{L!eeExc|mMlF}AWs2DmaGw*ZBc(<*?ps~@3P_=IUx$opMaYjjjzclVqu&So%}z! zy1~#FV3&#*>Pz3X3_!d$Gc#*$Zr1v1wsHfshEY?e3{D6c%usOyT4Vb?q(!$X18GpT zIcy^_Y~G-ff|n2GIII8m0vPhy*+AIWkaT4Hb_yf|$X6hL=;dTX(%eK5Dsmi0Eie7> z)Y9aNR{SeOzR#n7cL7OS1D=<>7AD%DB(^G^Xnxn(Wu?cDedR{F=nj~3} z=^KU^!SMrDel5rpH@#`#mc6e3VieS;DT+Vl5>~|$KQ2WoCFs<|+m)*wr*#b36t4qz zYw_ZGCtMXyboD@D0HdzIau+=ZhC)T>5KBZj9N6XB0Fz|?8u;1^Z%3LO=5$< zmNnf(oyFUWO(m({NU^D?p-qokT8X8K#&yOJ!Cq^`Qks&=SsZZw)t4cY?a>&UY);hFhy?3^*nJq zYv5x1Ig9M*4?N*0VgQXvdNXk1#2)4k1G4CDzzlGXR%zl5J;gdsPr%IE!Y6uuC0AKJ z<3--O^mT0yTPUVyBM7P-dd!d4KN|sXOua*r7)7}kMg*|hfc_0xJH+7$MTke&@KP%? z!r9SoOZ(hsT-Up~+acF&-)i}dc_4tJe$tNDAPkU%r*EPU6H={>VBt$T#)93u4-Vs& zGUJB^dUK8cylefi7LiFzPJ)F;JvsvSGj(6BJlze~w|fOc_Lo9gGi!>{+Fz_W<)`75 z3+=ujQs4p+xgkMe9UACf1@Tno2tWZY|Trph__d1)d#qZ*6d zPYI~rIl1r@0^y9}jyd4z>$FzIF8l&!)iGw3*zEzLt zP@5L}l4^LmbY7w_;ZiBw_0goK&jn%%D~_*~?D67?nxHc+uPaeW0TG)1bS%qwWDRy4 ztifPat{vv_6Kan3QvGl2?@J|xd9$1%0YAbtyfs3&fuv_DPpH^ zu8>vMc8)>fvqV6tR!~58ECo3ojKG;(L1TV#oSsGD*t4L+bEScH^Yy=Lw) zsXGQ{IAHULUAu46B@kL7B32GO=wBZpEMq&)!M9H_$z@5UEH`~zZ(U7fQPMj$Q-W

    0sOl$M` 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

    E;%G+Sdool^b7EJ-p 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

    r+ds5h+hXP_+bUc#_A|g+t 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 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 index 5664ee296d8d775f1e3c28ad8912faeb270f021e..bf6c2765af8b8cdddd6000d7a053ebe6c80fa4a0 100644 GIT binary patch delta 53701 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 z zFS>VjF{teOG=Rx4AwZWJVRLHjW}P#C7{nxfZS8~@y63Enn**2$m=qV4SF0`;&P{!H z(?hoX&buw=TE&i)AV_K4Vq&2g^U_e&V=< z@fx20CA;&!Ig_Mi)0V}DZ`5O!K6Y#hD3E~kNwYtlDQyXcL*D%LZaaKm<>f^(2wnTi z;JHn~f6t3_?<9+IcU{dr(aT-qYE;lYxVhh5DnJLpI4O)sIK1&JKR$1YF=MQx1^V;l z?UK_)@l>R~z>g1iYKvbpB4LK7Z+p0M0}b5Oh$@O49>;fQ?QN^hA%My;%s>43qw-!p zqr4eFjU;1H4e_eri_{bX+g1q@@*HLbJGQ0UI@(2;Wg$FG9|{*eMGF zJ0mf8rz|GPwz}mgT)NbWM%+}xTn*9)+GO_a46=oqh1q!Jw+vW-%wk7`CAJ< z6)iPEqN1H?URSWNy%>_TzAcCO?hnW`-#7BoVi6x^75k^rQdIr|PGf1s2rm=u(N_L? zfzz=A?Dx_@+`+pS?rSjc)Fq3GYnRH}IP)YfeTFm$OgW_-{^Z9Tg z#7wx0-~+;DMX^alAiJZRw!Hgg^E&How~e(|HuP-MNNxm`(rml|*+cAAEpB7R5d;GOzvIn0DJfOmb8D*;YpZ=h=Nc>>U~{;8cM+w6#Id`_=XcD& z(ta#0IjzSYxRtqJr|hrZ-U!$zy4t6o#b- z2@1o;N-=AQiL(mBAZQ~~N!^(a|{A_!x z&rmodaueAuDmq(}0kAQ0vmI0&-tZrM%10lSdq@tQ5P=UkPJ2sM_*TZouN&fz5XqW*qG$1CBIzF2mW0l+KK);6&^kC4?*S`xd zRty?+zJM>TZ$X3Lr_b4d9+2D^0?S86c?6esY~6Rlj*YbsmJj6G#MMqb(%&~#RaE}W z%&>Wlwxkb2XgTiK2QCwg-A-9NDrBE>cfK;gtG&?U!4gR1UysBrsf^M0`vwYA@P!;+ z4Mao3GJ4Dx6`|ySv$wOiH^k8~|KF!4y3AsBlTLUsCz*;A-$ZqJM%ithLp_>dzO_A@12IK1jO+d&deChpMoAl zp8E%_Q})Fq;5{C7uN{$#XR{d5N1iQ1qJ?*cEtn{ePJee)#^f+VU*8v;!$6S8Rptp@ zJ7sa!jHu(NZYBR?1|c9DSOaiFF1%EDYnb~1yaB2@OlBbI04zv22~|`ofp#$cI2*l2 zo7Pj`4!k*D34RU5%ik*D8WBQ71k*sxP*p+O!r>4uVBU*htU>$7PFZqdEUb7B1@=-X zc`=S#FdGF-dt}59n96>%%)%PE$Ny$QK>_i%pK0X`{6gnW?sW%2hxb1E=O%(#hDcUf z{v$YZzL!M&?R-_>(9Ku4{%Xw`I8orlp9w7PC8luSgfO@7A99>M=hj_J_5H)-B9a$o z3R$fvLIB$?i^GFbi&TXBSCKIy1F)p(Pv&@fmXf{eeP6eK4}}6`g)tXC5tJwfJ8Y$~ zv4o-&e>CgDIkRWK#0O-9z4FMaYIZs2F_>o97iY!$f1{<3_oNag8L~KpR+IuccS7te736QVVA#=7-oK!{RYvGU@+> zNk{^c7(xo|;>w+FkmhK(BpKN&pS<3`7i3~$VhLnAa6rnD7;VNz4h{_^k1k*?D#pQj z19&!jabAS3?w+v9fCmpSZoCtZ`6Mj8T$%|Varh3ZUsoApqT+6S#OenjNJFqhcA^|Z zr2<_Vl>{_0?6Pa-<~Q52-o9koiVd(;et(kxW<0=ipRlV??Zv><9TY@d9V+YZW8?F9*p|%f+vz`Z`3V|^jFOn&i$OqYV z{=x+yHz89$(L9>aQu0l;%Sq`ba|v%esWmk{{SCA1u*9%YPaJquRCE%VAuB**nGtZ*bhW>fWQCf;-%9YdrXn0 zMr270GARd#E*LsDd>~Zv;6;!S$$k hFG)!3V)}1wqwzu_ZQmJhydj06EUzy2PWJM>{{t;myv6_k delta 53757 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