From 5a7b0c5ff7f8d8fac1b9036198b7602fdb77a804 Mon Sep 17 00:00:00 2001 From: A-hedgecock-Flowcore Date: Sun, 1 Mar 2026 20:19:51 -0500 Subject: [PATCH 1/8] Week4 HW problems. See README. --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 2 + course/.DS_Store | Bin 0 -> 6148 bytes course/04_IntroToTidyverse/.DS_Store | Bin 0 -> 6148 bytes .../04_IntroToTidyverse/homeworks/.DS_Store | Bin 0 -> 6148 bytes .../homeworks/A-hedgecock-FlowCore/.DS_Store | Bin 0 -> 6148 bytes .../A-hedgecock-FlowCore/Homework.html | 560 +++++ .../A-hedgecock-FlowCore/Homework.qmd | 136 ++ ...p-d6a003b94517c951b2d65075d42fb01b.min.css | 12 + .../libs/bootstrap/bootstrap-icons.css | 2106 +++++++++++++++++ .../libs/bootstrap/bootstrap-icons.woff | Bin 0 -> 180288 bytes .../libs/bootstrap/bootstrap.min.js | 7 + .../libs/clipboard/clipboard.min.js | 7 + .../libs/quarto-html/anchor.min.js | 9 + .../libs/quarto-html/axe/axe-check.js | 145 ++ .../libs/quarto-html/popper.min.js | 6 + ...hting-ed96de9b727972fe78a7b5d16c58bf87.css | 236 ++ .../Homework_files/libs/quarto-html/quarto.js | 847 +++++++ .../libs/quarto-html/tabsets/tabsets.js | 95 + .../Homework_files/libs/quarto-html/tippy.css | 1 + .../libs/quarto-html/tippy.umd.min.js | 2 + .../homeworks/A-hedgecock-FlowCore/README | 21 + .../A-hedgecock-FlowCore/data/.DS_Store | Bin 0 -> 6148 bytes .../data/AnalysisData.csv | 197 ++ .../A-hedgecock-FlowCore/data/Dataset.csv | 197 ++ .../A-hedgecock-FlowCore/data/TidyData.csv | 10 + 26 files changed, 4596 insertions(+) create mode 100644 .DS_Store create mode 100644 course/.DS_Store create mode 100644 course/04_IntroToTidyverse/.DS_Store create mode 100644 course/04_IntroToTidyverse/homeworks/.DS_Store create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/.DS_Store create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.html create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.qmd create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.css create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.woff create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap.min.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/clipboard/clipboard.min.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/anchor.min.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/axe/axe-check.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/popper.min.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/quarto.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tabsets/tabsets.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.css create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.umd.min.js create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/README create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/.DS_Store create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/AnalysisData.csv create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/Dataset.csv create mode 100644 course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/TidyData.csv diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..29b09c95d15c580eb9d58b3139ab8f19e1188ac4 GIT binary patch literal 6148 zcmeHKI|>3Z5S>vG!N$@uSMUZw^aNf&{8hq&V!xH=@@T&K6v}F+h4Ka_FPY3s$SZbs zL`3J8-ArU6A|tq=Ty5x@?VES3mk|ZRamHEphuwL*X_{jv`*py$L)l6r7dbuhZG%Py zr~nn90#twsd|ZJnv7_5Ukb<4onVA4CfOR{D9>+17j~&bWae(15X9Bjr=Y@&FV+8EP@=E9M#ZM zGd*21OaB1WY1j2FD&63Nv;vAQ_#r254 z#uIvc;sYC=xx?nM-#y%Kx6e+INdYM!1*Cu!kOF%uP=$1UvL|0ODIf(7R{{S%G`eF~ zI3&iWgG00c#2Le3oJTJ~Y#tzXg+n4EG)pQmsa7q9C7tnBd0pXb*A67S8bto3M z^ZXX+ur5)f6p#XA1&(vM@cMs6|E2#QleCfoQsAHzu-WQnwd9kkwoV@BwYJgk=$`XU rcjG)L9HJZ(qa1VL<@hX;GOziZ`(5FX7<9&iPSnqU>mri^|E<6eO^_JH literal 0 HcmV?d00001 diff --git a/course/04_IntroToTidyverse/.DS_Store b/course/04_IntroToTidyverse/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..fbb89ed658e0cc860f6d3b06cb94658c00d4351c GIT binary patch literal 6148 zcmeHKJ5EC}5S%3`f@o4w`U>2@ijos>0Ym~q0`w#zl=f9Q7e{0EQxHAqLKDqO>#^56 zwmik#w*YMQxw`|F02Xvd9DSIY@4HXzsv<_D^Na%qeBc%P=iMax_keS+@j~7^o__N8 z+s9#e^KF?FkOERb3P=Gda7G2HxGrwac&3h$0#e{I6!7muqdWG(F)=9A@(tZugIP%Lie`7P36JyD|+kOHR) z%yPN(`oE$7(f^;4w2}f+;Gz_;`TBmn;*+YjP9EpAw$UHxp7TX_<2)!Fq8t;W9CP92 e_%@OLtnI^#hn>Sw@pkx7C7R^S_mloi7O literal 0 HcmV?d00001 diff --git a/course/04_IntroToTidyverse/homeworks/.DS_Store b/course/04_IntroToTidyverse/homeworks/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..1c4affeeeb9f23a8384519cc9fd01692cc921b1d GIT binary patch literal 6148 zcmeHKOG*P#5UkcL0&cQ!;qqO;g*O;u^a5T$%tQqP0}*jME6?T8to|$vgCGGnp&GjD zy?$M9m|9Fv1F+?Le+4W6%;}E!^e{C)cc0ivWsFGY9X+10!5RboZ|2-{T;mciWd7v8 zGIxh9@A|+E;|`mr{%!p@3|lA3q<|EV0#ZN~V$hinI#E9Zu8T|x{I>$%2}~HR literal 0 HcmV?d00001 diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/.DS_Store b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..849bf2e8541995963f3ef241fc88e27b8c12beba GIT binary patch literal 6148 zcmeHK%}*0S6n|5yw0thmDq>6;dNF|@0`VipPzy#HV<40u2v~Q!)3RZ^Q+KyiAS6BO zN$>svUOkz3@#w{?H{+k6S5NxpqlLD3A~A;SOJ;s==DpvWonJFMT>v2Iig_JC1AquN zj^QrsPB0$lt<6Geh6f3+k+E6cu$h5lUNEpgfk1)(TLFG{!(f6AKIkpyH;u80-@?Qu z8hJ+5E30$qj;ZaLHy1k0qDviaC@Ojb>^ieq|$o0WkmT2322IGCEgIi8rBxpg?6IJiAEIi8rA zzHxXMjl`4J?kwka?2^M?O4$j%mxT2ytivmG8v7}jUf#gxp898%e&0BmzZby z7IW4&JrqCV(^AGMFkEpLg}mdCBDLPbqCO^|0<-m5v5U>EJaIt9uGb@{?B<{))pK8cn8_WF(4L&KTT- zN3aSzun(`{Exdz|@EN|r5BNnoiAF}r7?~k=$t+nQ8S;eW$u_ZwD+`3`zx)-olmg$bkZZ0%uVH{(eYc}XwCk9bp4n)#1o>KWWiINUPtc-Qk%0zvk5V1PWCqz1s zl*FJ96bKY(R-i);HGco!$20tw@Bd~}FbWh16gX1~knntVK8;&acWc|`_+6X8_6!?0 qo>!A7DA=j%SUCJD9>yjNV+rmcrWDpB;tX2wM?lCBbb$i@RDnNi&IMus literal 0 HcmV?d00001 diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.html b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.html new file mode 100644 index 0000000..77c703a --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.html @@ -0,0 +1,560 @@ + + + + + + + + + + +Homework- Week 4 + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
+
+

Homework- Week 4

+

Welcome to the Tidyverse

+
+ + + +
+ +
+
Author
+
+

Ayrianna Hedgecock

+
+
+ + + +
+ + + +
+ + +
+
library(dplyr)
+
+

+Attaching package: 'dplyr'
+
+
+
The following objects are masked from 'package:stats':
+
+    filter, lag
+
+
+
The following objects are masked from 'package:base':
+
+    intersect, setdiff, setequal, union
+
+
library(flowCore)
+
+
+
# Data folder
+PathToData <- file.path("homeworks","A-hedgecock-FlowCore","data")
+list.files(PathToData)
+
+
character(0)
+
+
+
+
# fcs file
+fcs_file <- list.files(PathToData)
+fcs_file
+
+
character(0)
+
+
+
+
# get flowFrame data
+# read.FCS(filename = fcs_file, transformation = FALSE, truncate_max_range = FALSE)
+isFCSfile(fcs_file)
+
+
named list()
+
+
+ +
+ + +
+ + + + + \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.qmd b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.qmd new file mode 100644 index 0000000..5a7bb15 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework.qmd @@ -0,0 +1,136 @@ +--- +title: Homework- Week 4 +subtitle: Welcome to the Tidyverse +author: Ayrianna Hedgecock +format: html +embed-resources: true +toc: true + +--- + +## Setup + +```{r} +library(dplyr) +``` + +```{r} +getwd() +``` + +```{r} +# Data folder +PathToData <- file.path("course", "04_IntroToTidyverse", "homeworks", "A-hedgecock-FlowCore", "data", "Dataset.csv") +HWDataPath <- file.path("course", "04_IntroToTidyverse", "homeworks", "A-hedgecock-FlowCore", "data") +``` + +```{r} +HWData <- read.csv(PathToData, check.names = FALSE) +``` + +## Problem 1 + +```{r} +glimpse(HWData) +``` + + +```{r} +ImportantData <- HWData |> select(bid, timepoint, Condition, Date, CD45_count, `Vd2+`, `Vd2-`, `Va7.2+`, `Va7.2-`, `CD4+`, `CD8+`, Tcells_count) +``` + +```{r} +# Clean up column names +CleanedNames <- ImportantData |> rename(specimen = bid, timepoint_mo = timepoint, Vd2_pos = `Vd2+`, Vd2_neg = `Vd2-`, Va7.2_pos = `Va7.2+`, Va7.2_neg = `Va7.2-`, CD4_pos = `CD4+`, CD8_pos = `CD8+`) +colnames(CleanedNames) +``` + + +```{r} +# Move colmnns around in a way that makes sense +PrettyData <- CleanedNames |> relocate(Date, .before = 1) |> relocate(Tcells_count, .after = CD45_count) + +colnames(PrettyData) +``` + + +```{r} +# filter for control condition and CD4 below 50%; descending order by CD8% +FilteredData <- PrettyData |> filter(Condition %in% "Ctrl") |> filter(CD4_pos < 0.5) |> arrange(desc(CD8_pos)) +``` + + +```{r} +NewName <- paste0("TidyData", ".csv") +StorageLocation <- file.path(HWDataPath, NewName) +StorageLocation +``` + + +```{r} +write.csv(FilteredData, StorageLocation, row.names = FALSE) +``` + + +## Problem 2 + + +```{r} +glimpse(PrettyData) +``` + + +```{r} +# across() function allows the same transformation for multiple columns +# where() helper function that give a logical +# \(x) is a necssary "anonymous" function needed for the 'across()' function in dplyr 1.1.0 + +RoundedData <- PrettyData |> + mutate( + across( + where(is.double),\(x) + round(x, digits = 2) + ) +) + +RoundedData |> head(3) +``` + + +```{r} +FinalDataProduct <- paste0("AnalysisData", ".csv") +StorageFolder <- file.path(HWDataPath, FinalDataProduct) +StorageFolder +``` + + +```{r} +write.csv(RoundedData, StorageFolder, row.names = FALSE) +``` + +## Problem 3 + + +```{r} +filenameData <- HWData |> + mutate( filename = + paste(bid, timepoint, Condition, sep = "_"), .before = 1 +) +``` + + +```{r} +Names <- filenameData |> pull(filename) +``` + + +```{r} +# help from ChatGPT here... +# True = There ARE duplicate filenames +# FALSE = there are NOT dups + +length(Names) != length(unique(Names)) +``` + +There is probably a better way to answer this question but I'm stumped. + diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css new file mode 100644 index 0000000..eea79df --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css @@ -0,0 +1,12 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */:root,[data-bs-theme=light]{--bs-blue: #0d6efd;--bs-indigo: #6610f2;--bs-purple: #6f42c1;--bs-pink: #d63384;--bs-red: #dc3545;--bs-orange: #fd7e14;--bs-yellow: #ffc107;--bs-green: #198754;--bs-teal: #20c997;--bs-cyan: #0dcaf0;--bs-black: #000;--bs-white: #ffffff;--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: #dee2e6;--bs-primary: #0d6efd;--bs-secondary: #6c757d;--bs-success: #198754;--bs-info: #0dcaf0;--bs-warning: #ffc107;--bs-danger: #dc3545;--bs-light: #f8f9fa;--bs-dark: #212529;--bs-default-rgb: 222, 226, 230;--bs-primary-rgb: 13, 110, 253;--bs-secondary-rgb: 108, 117, 125;--bs-success-rgb: 25, 135, 84;--bs-info-rgb: 13, 202, 240;--bs-warning-rgb: 255, 193, 7;--bs-danger-rgb: 220, 53, 69;--bs-light-rgb: 248, 249, 250;--bs-dark-rgb: 33, 37, 41;--bs-primary-text-emphasis: rgb(5.2, 44, 101.2);--bs-secondary-text-emphasis: rgb(43.2, 46.8, 50);--bs-success-text-emphasis: rgb(10, 54, 33.6);--bs-info-text-emphasis: rgb(5.2, 80.8, 96);--bs-warning-text-emphasis: rgb(102, 77.2, 2.8);--bs-danger-text-emphasis: rgb(88, 21.2, 27.6);--bs-light-text-emphasis: #495057;--bs-dark-text-emphasis: #495057;--bs-primary-bg-subtle: rgb(206.6, 226, 254.6);--bs-secondary-bg-subtle: rgb(225.6, 227.4, 229);--bs-success-bg-subtle: rgb(209, 231, 220.8);--bs-info-bg-subtle: rgb(206.6, 244.4, 252);--bs-warning-bg-subtle: rgb(255, 242.6, 205.4);--bs-danger-bg-subtle: rgb(248, 214.6, 217.8);--bs-light-bg-subtle: rgb(251.5, 252, 252.5);--bs-dark-bg-subtle: #ced4da;--bs-primary-border-subtle: rgb(158.2, 197, 254.2);--bs-secondary-border-subtle: rgb(196.2, 199.8, 203);--bs-success-border-subtle: rgb(163, 207, 186.6);--bs-info-border-subtle: rgb(158.2, 233.8, 249);--bs-warning-border-subtle: rgb(255, 230.2, 155.8);--bs-danger-border-subtle: rgb(241, 174.2, 180.6);--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: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--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: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-body-font-size:1rem;--bs-body-font-weight: 400;--bs-body-line-height: 1.5;--bs-body-color: #212529;--bs-body-color-rgb: 33, 37, 41;--bs-body-bg: #ffffff;--bs-body-bg-rgb: 255, 255, 255;--bs-emphasis-color: #000;--bs-emphasis-color-rgb: 0, 0, 0;--bs-secondary-color: rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb: 33, 37, 41;--bs-secondary-bg: #e9ecef;--bs-secondary-bg-rgb: 233, 236, 239;--bs-tertiary-color: rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb: 33, 37, 41;--bs-tertiary-bg: #f8f9fa;--bs-tertiary-bg-rgb: 248, 249, 250;--bs-heading-color: inherit;--bs-link-color: #0d6efd;--bs-link-color-rgb: 13, 110, 253;--bs-link-decoration: underline;--bs-link-hover-color: rgb(10.4, 88, 202.4);--bs-link-hover-color-rgb: 10, 88, 202;--bs-code-color: #7d12ba;--bs-highlight-bg: rgb(255, 242.6, 205.4);--bs-border-width: 1px;--bs-border-style: solid;--bs-border-color: rgb(221.7, 222.3, 222.9);--bs-border-color-translucent: rgba(0, 0, 0, 0.175);--bs-border-radius: 0.375rem;--bs-border-radius-sm: 0.25rem;--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(13, 110, 253, 0.25);--bs-form-valid-color: #198754;--bs-form-valid-border-color: #198754;--bs-form-invalid-color: #dc3545;--bs-form-invalid-border-color: #dc3545}[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: #ffffff;--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: rgb(42.5, 47.5, 52.5);--bs-tertiary-bg-rgb: 43, 48, 53;--bs-primary-text-emphasis: rgb(109.8, 168, 253.8);--bs-secondary-text-emphasis: rgb(166.8, 172.2, 177);--bs-success-text-emphasis: rgb(117, 183, 152.4);--bs-info-text-emphasis: rgb(109.8, 223.2, 246);--bs-warning-text-emphasis: rgb(255, 217.8, 106.2);--bs-danger-text-emphasis: rgb(234, 133.8, 143.4);--bs-light-text-emphasis: #f8f9fa;--bs-dark-text-emphasis: #dee2e6;--bs-primary-bg-subtle: rgb(2.6, 22, 50.6);--bs-secondary-bg-subtle: rgb(21.6, 23.4, 25);--bs-success-bg-subtle: rgb(5, 27, 16.8);--bs-info-bg-subtle: rgb(2.6, 40.4, 48);--bs-warning-bg-subtle: rgb(51, 38.6, 1.4);--bs-danger-bg-subtle: rgb(44, 10.6, 13.8);--bs-light-bg-subtle: #343a40;--bs-dark-bg-subtle: #1a1d20;--bs-primary-border-subtle: rgb(7.8, 66, 151.8);--bs-secondary-border-subtle: rgb(64.8, 70.2, 75);--bs-success-border-subtle: rgb(15, 81, 50.4);--bs-info-border-subtle: rgb(7.8, 121.2, 144);--bs-warning-border-subtle: rgb(153, 115.8, 4.2);--bs-danger-border-subtle: rgb(132, 31.8, 41.4);--bs-light-border-subtle: #495057;--bs-dark-border-subtle: #343a40;--bs-heading-color: inherit;--bs-link-color: rgb(109.8, 168, 253.8);--bs-link-hover-color: rgb(138.84, 185.4, 254.04);--bs-link-color-rgb: 110, 168, 254;--bs-link-hover-color-rgb: 139, 185, 254;--bs-code-color: white;--bs-border-color: #495057;--bs-border-color-translucent: rgba(255, 255, 255, 0.15);--bs-form-valid-color: rgb(117, 183, 152.4);--bs-form-valid-border-color: rgb(117, 183, 152.4);--bs-form-invalid-color: rgb(234, 133.8, 143.4);--bs-form-invalid-border-color: rgb(234, 133.8, 143.4)}*,*::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:500;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;line-height:1.5;padding:.5rem;border:1px solid var(--bs-border-color, rgb(221.7, 222.3, 222.9));border-radius:.375rem}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;border-radius:.375rem;padding:.125rem .25rem;word-wrap:break-word}a>code{color:inherit}kbd{padding:.4rem .4rem;font-size:0.875em;color:#fff;background-color:#212529;border-radius:.25rem}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(33,37,41,.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 rgb(221.7,222.3,222.9);border-radius:.375rem;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(33,37,41,.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}}body.quarto-light .dark-content{display:none !important}body.quarto-dark .light-content{display:none !important}: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: #212529;--bs-table-bg: #ffffff;--bs-table-border-color: rgb(221.7, 222.3, 222.9);--bs-table-accent-bg: transparent;--bs-table-striped-color: #212529;--bs-table-striped-bg: rgba(0, 0, 0, 0.05);--bs-table-active-color: #212529;--bs-table-active-bg: rgba(0, 0, 0, 0.1);--bs-table-hover-color: #212529;--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 #909294}.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: rgb(206.6, 226, 254.6);--bs-table-border-color: rgb(185.94, 203.4, 229.14);--bs-table-striped-bg: rgb(196.27, 214.7, 241.87);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(185.94, 203.4, 229.14);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(191.105, 209.05, 235.505);--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: rgb(225.6, 227.4, 229);--bs-table-border-color: rgb(203.04, 204.66, 206.1);--bs-table-striped-bg: rgb(214.32, 216.03, 217.55);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(203.04, 204.66, 206.1);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(208.68, 210.345, 211.825);--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: rgb(209, 231, 220.8);--bs-table-border-color: rgb(188.1, 207.9, 198.72);--bs-table-striped-bg: rgb(198.55, 219.45, 209.76);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(188.1, 207.9, 198.72);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(193.325, 213.675, 204.24);--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: rgb(206.6, 244.4, 252);--bs-table-border-color: rgb(185.94, 219.96, 226.8);--bs-table-striped-bg: rgb(196.27, 232.18, 239.4);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(185.94, 219.96, 226.8);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(191.105, 226.07, 233.1);--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: rgb(255, 242.6, 205.4);--bs-table-border-color: rgb(229.5, 218.34, 184.86);--bs-table-striped-bg: rgb(242.25, 230.47, 195.13);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(229.5, 218.34, 184.86);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(235.875, 224.405, 189.995);--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: rgb(248, 214.6, 217.8);--bs-table-border-color: rgb(223.2, 193.14, 196.02);--bs-table-striped-bg: rgb(235.6, 203.87, 206.91);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 193.14, 196.02);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 198.505, 201.465);--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: rgb(223.2, 224.1, 225);--bs-table-striped-bg: rgb(235.6, 236.55, 237.5);--bs-table-striped-color: #000;--bs-table-active-bg: rgb(223.2, 224.1, 225);--bs-table-active-color: #000;--bs-table-hover-bg: rgb(229.4, 230.325, 231.25);--bs-table-hover-color: #000;color:var(--bs-table-color);border-color:var(--bs-table-border-color)}.table-dark{--bs-table-color: #ffffff;--bs-table-bg: #212529;--bs-table-border-color: rgb(55.2, 58.8, 62.4);--bs-table-striped-bg: rgb(44.1, 47.9, 51.7);--bs-table-striped-color: #ffffff;--bs-table-active-bg: rgb(55.2, 58.8, 62.4);--bs-table-active-color: #ffffff;--bs-table-hover-bg: rgb(49.65, 53.35, 57.05);--bs-table-hover-color: #ffffff;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(33,37,41,.75)}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:#212529;appearance:none;-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;-o-appearance:none;background-color:#fff;background-clip:padding-box;border:1px solid rgb(221.7,222.3,222.9);border-radius:.375rem;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:#212529;background-color:#fff;border-color:rgb(134,182.5,254);outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.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(33,37,41,.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:#212529;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:#212529;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;border-radius:.25rem}.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;border-radius:.5rem}.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;border-radius:.375rem}.form-control-color::-webkit-color-swatch{border:0 !important;border-radius:.375rem}.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:#212529;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 rgb(221.7,222.3,222.9);border-radius:.375rem;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:rgb(134,182.5,254);outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.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 #212529}.form-select-sm{padding-top:.25rem;padding-bottom:.25rem;padding-left:.5rem;font-size:0.875rem;border-radius:.25rem}.form-select-lg{padding-top:.5rem;padding-bottom:.5rem;padding-left:1rem;font-size:1.25rem;border-radius:.5rem}[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: #ffffff;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 rgb(221.7,222.3,222.9);print-color-adjust:exact}.form-check-input[type=checkbox],.shiny-input-container .checkbox input[type=checkbox],.shiny-input-container .checkbox-inline input[type=checkbox],.shiny-input-container .radio input[type=checkbox],.shiny-input-container .radio-inline input[type=checkbox]{border-radius:.25em}.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:rgb(134,182.5,254);outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.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:#0d6efd;border-color:#0d6efd}.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='%23ffffff' 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='%23ffffff'/%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:#0d6efd;border-color:#0d6efd;--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='%23ffffff' 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;border-radius:2em;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='rgb%28134, 182.5, 254%29'/%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='%23ffffff'/%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(13,110,253,.25)}.form-range:focus::-moz-range-thumb{box-shadow:0 0 0 1px #fff,0 0 0 .25rem rgba(13,110,253,.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:#0d6efd;border:0;border-radius:1rem;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:rgb(182.4,211.5,254.4)}.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);border-radius:1rem}.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:#0d6efd;border:0;border-radius:1rem;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:rgb(182.4,211.5,254.4)}.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);border-radius:1rem}.form-range:disabled{pointer-events:none}.form-range:disabled::-webkit-slider-thumb{background-color:rgba(33,37,41,.75)}.form-range:disabled::-moz-range-thumb{background-color:rgba(33,37,41,.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;border-radius:.375rem}.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:#212529;text-align:center;white-space:nowrap;background-color:#f8f9fa;border:1px solid rgb(221.7,222.3,222.9);border-radius:.375rem}.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;border-radius:.5rem}.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;border-radius:.25rem}.input-group-lg>.form-select,.input-group-sm>.form-select{padding-right:3rem}.input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,.input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.input-group.has-validation>:nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),.input-group.has-validation>.dropdown-toggle:nth-last-child(n+4),.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-control,.input-group.has-validation>.form-floating:nth-last-child(n+3)>.form-select{border-top-right-radius:0;border-bottom-right-radius:0}.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);border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.form-floating:not(:first-child)>.form-control,.input-group>.form-floating:not(:first-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:0.875em;color:#198754}.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:#198754;border-radius:.375rem}.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:#198754;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='%23198754' 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:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.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:#198754}.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='%23198754' 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:#198754;box-shadow:0 0 0 .25rem rgba(25,135,84,.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:#198754}.was-validated .form-check-input:valid:checked,.form-check-input.is-valid:checked{background-color:#198754}.was-validated .form-check-input:valid:focus,.form-check-input.is-valid:focus{box-shadow:0 0 0 .25rem rgba(25,135,84,.25)}.was-validated .form-check-input:valid~.form-check-label,.form-check-input.is-valid~.form-check-label{color:#198754}.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:#dc3545}.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:#dc3545;border-radius:.375rem}.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:#dc3545;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='%23dc3545'%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='%23dc3545' 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:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.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:#dc3545}.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='%23dc3545'%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='%23dc3545' 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:#dc3545;box-shadow:0 0 0 .25rem rgba(220,53,69,.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:#dc3545}.was-validated .form-check-input:invalid:checked,.form-check-input.is-invalid:checked{background-color:#dc3545}.was-validated .form-check-input:invalid:focus,.form-check-input.is-invalid:focus{box-shadow:0 0 0 .25rem rgba(220,53,69,.25)}.was-validated .form-check-input:invalid~.form-check-label,.form-check-input.is-invalid~.form-check-label{color:#dc3545}.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: #212529;--bs-btn-bg: transparent;--bs-btn-border-width: 1px;--bs-btn-border-color: transparent;--bs-btn-border-radius: 0.375rem;--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);border-radius:var(--bs-btn-border-radius);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: #000;--bs-btn-bg: #dee2e6;--bs-btn-border-color: #dee2e6;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(226.95, 230.35, 233.75);--bs-btn-hover-border-color: rgb(225.3, 228.9, 232.5);--bs-btn-focus-shadow-rgb: 189, 192, 196;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(228.6, 231.8, 235);--bs-btn-active-border-color: rgb(225.3, 228.9, 232.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #dee2e6;--bs-btn-disabled-border-color: #dee2e6}.btn-primary{--bs-btn-color: #ffffff;--bs-btn-bg: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: rgb(11.05, 93.5, 215.05);--bs-btn-hover-border-color: rgb(10.4, 88, 202.4);--bs-btn-focus-shadow-rgb: 49, 132, 253;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: rgb(10.4, 88, 202.4);--bs-btn-active-border-color: rgb(9.75, 82.5, 189.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #0d6efd;--bs-btn-disabled-border-color: #0d6efd}.btn-secondary{--bs-btn-color: #ffffff;--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: rgb(91.8, 99.45, 106.25);--bs-btn-hover-border-color: rgb(86.4, 93.6, 100);--bs-btn-focus-shadow-rgb: 130, 138, 145;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: rgb(86.4, 93.6, 100);--bs-btn-active-border-color: rgb(81, 87.75, 93.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}.btn-success{--bs-btn-color: #ffffff;--bs-btn-bg: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: rgb(21.25, 114.75, 71.4);--bs-btn-hover-border-color: rgb(20, 108, 67.2);--bs-btn-focus-shadow-rgb: 60, 153, 110;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: rgb(20, 108, 67.2);--bs-btn-active-border-color: rgb(18.75, 101.25, 63);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #198754;--bs-btn-disabled-border-color: #198754}.btn-info{--bs-btn-color: #000;--bs-btn-bg: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(49.3, 209.95, 242.25);--bs-btn-hover-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-focus-shadow-rgb: 11, 172, 204;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(61.4, 212.6, 243);--bs-btn-active-border-color: rgb(37.2, 207.3, 241.5);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #0dcaf0;--bs-btn-disabled-border-color: #0dcaf0}.btn-warning{--bs-btn-color: #000;--bs-btn-bg: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(255, 202.3, 44.2);--bs-btn-hover-border-color: rgb(255, 199.2, 31.8);--bs-btn-focus-shadow-rgb: 217, 164, 6;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(255, 205.4, 56.6);--bs-btn-active-border-color: rgb(255, 199.2, 31.8);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #000;--bs-btn-disabled-bg: #ffc107;--bs-btn-disabled-border-color: #ffc107}.btn-danger{--bs-btn-color: #ffffff;--bs-btn-bg: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: rgb(187, 45.05, 58.65);--bs-btn-hover-border-color: rgb(176, 42.4, 55.2);--bs-btn-focus-shadow-rgb: 225, 83, 97;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: rgb(176, 42.4, 55.2);--bs-btn-active-border-color: rgb(165, 39.75, 51.75);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #dc3545;--bs-btn-disabled-border-color: #dc3545}.btn-light{--bs-btn-color: #000;--bs-btn-bg: #f8f9fa;--bs-btn-border-color: #f8f9fa;--bs-btn-hover-color: #000;--bs-btn-hover-bg: rgb(210.8, 211.65, 212.5);--bs-btn-hover-border-color: rgb(198.4, 199.2, 200);--bs-btn-focus-shadow-rgb: 211, 212, 213;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(198.4, 199.2, 200);--bs-btn-active-border-color: rgb(186, 186.75, 187.5);--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: #ffffff;--bs-btn-bg: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: rgb(66.3, 69.7, 73.1);--bs-btn-hover-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-focus-shadow-rgb: 66, 70, 73;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: rgb(77.4, 80.6, 83.8);--bs-btn-active-border-color: rgb(55.2, 58.8, 62.4);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #212529;--bs-btn-disabled-border-color: #212529}.btn-outline-default{--bs-btn-color: #dee2e6;--bs-btn-border-color: #dee2e6;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #dee2e6;--bs-btn-hover-border-color: #dee2e6;--bs-btn-focus-shadow-rgb: 222, 226, 230;--bs-btn-active-color: #000;--bs-btn-active-bg: #dee2e6;--bs-btn-active-border-color: #dee2e6;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #dee2e6;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dee2e6;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-primary{--bs-btn-color: #0d6efd;--bs-btn-border-color: #0d6efd;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: #0d6efd;--bs-btn-hover-border-color: #0d6efd;--bs-btn-focus-shadow-rgb: 13, 110, 253;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: #0d6efd;--bs-btn-active-border-color: #0d6efd;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0d6efd;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0d6efd;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-secondary{--bs-btn-color: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: #6c757d;--bs-btn-hover-border-color: #6c757d;--bs-btn-focus-shadow-rgb: 108, 117, 125;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: #6c757d;--bs-btn-active-border-color: #6c757d;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #6c757d;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #6c757d;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-success{--bs-btn-color: #198754;--bs-btn-border-color: #198754;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: #198754;--bs-btn-hover-border-color: #198754;--bs-btn-focus-shadow-rgb: 25, 135, 84;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: #198754;--bs-btn-active-border-color: #198754;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #198754;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #198754;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-info{--bs-btn-color: #0dcaf0;--bs-btn-border-color: #0dcaf0;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #0dcaf0;--bs-btn-hover-border-color: #0dcaf0;--bs-btn-focus-shadow-rgb: 13, 202, 240;--bs-btn-active-color: #000;--bs-btn-active-bg: #0dcaf0;--bs-btn-active-border-color: #0dcaf0;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #0dcaf0;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #0dcaf0;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-warning{--bs-btn-color: #ffc107;--bs-btn-border-color: #ffc107;--bs-btn-hover-color: #000;--bs-btn-hover-bg: #ffc107;--bs-btn-hover-border-color: #ffc107;--bs-btn-focus-shadow-rgb: 255, 193, 7;--bs-btn-active-color: #000;--bs-btn-active-bg: #ffc107;--bs-btn-active-border-color: #ffc107;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffc107;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #ffc107;--bs-btn-bg: transparent;--bs-gradient: none}.btn-outline-danger{--bs-btn-color: #dc3545;--bs-btn-border-color: #dc3545;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: #dc3545;--bs-btn-hover-border-color: #dc3545;--bs-btn-focus-shadow-rgb: 220, 53, 69;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: #dc3545;--bs-btn-active-border-color: #dc3545;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #dc3545;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #dc3545;--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: #212529;--bs-btn-border-color: #212529;--bs-btn-hover-color: #ffffff;--bs-btn-hover-bg: #212529;--bs-btn-hover-border-color: #212529;--bs-btn-focus-shadow-rgb: 33, 37, 41;--bs-btn-active-color: #ffffff;--bs-btn-active-bg: #212529;--bs-btn-active-border-color: #212529;--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #212529;--bs-btn-disabled-bg: transparent;--bs-btn-disabled-border-color: #212529;--bs-btn-bg: transparent;--bs-gradient: none}.btn-link{--bs-btn-font-weight: 400;--bs-btn-color: #0d6efd;--bs-btn-bg: transparent;--bs-btn-border-color: transparent;--bs-btn-hover-color: rgb(10.4, 88, 202.4);--bs-btn-hover-border-color: transparent;--bs-btn-active-color: rgb(10.4, 88, 202.4);--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: 49, 132, 253;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.25rem}.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: #212529;--bs-dropdown-bg: #ffffff;--bs-dropdown-border-color: rgba(0, 0, 0, 0.175);--bs-dropdown-border-radius: 0.375rem;--bs-dropdown-border-width: 1px;--bs-dropdown-inner-border-radius: calc(0.375rem - 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: #212529;--bs-dropdown-link-hover-color: #212529;--bs-dropdown-link-hover-bg: #f8f9fa;--bs-dropdown-link-active-color: #ffffff;--bs-dropdown-link-active-bg: #0d6efd;--bs-dropdown-link-disabled-color: rgba(33, 37, 41, 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);border-radius:var(--bs-dropdown-border-radius)}.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;border-radius:var(--bs-dropdown-item-border-radius, 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: #ffffff;--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: #ffffff;--bs-dropdown-link-active-bg: #0d6efd;--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{border-radius:.375rem}.btn-group>:not(.btn-check:first-child)+.btn,.btn-group>.btn-group:not(:first-child){margin-left:calc(1px*-1)}.btn-group>.btn:not(:last-child):not(.dropdown-toggle),.btn-group>.btn.dropdown-toggle-split:first-child,.btn-group>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:nth-child(n+3),.btn-group>:not(.btn-check)+.btn,.btn-group>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.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)}.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle),.btn-group-vertical>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn~.btn,.btn-group-vertical>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-top-right-radius:0}.nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: 0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: #0d6efd;--bs-nav-link-hover-color: rgb(10.4, 88, 202.4);--bs-nav-link-disabled-color: rgba(33, 37, 41, 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(13,110,253,.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: rgb(221.7, 222.3, 222.9);--bs-nav-tabs-border-radius: 0.375rem;--bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef rgb(221.7, 222.3, 222.9);--bs-nav-tabs-link-active-color: #000;--bs-nav-tabs-link-active-bg: #ffffff;--bs-nav-tabs-link-active-border-color: rgb(221.7, 222.3, 222.9) rgb(221.7, 222.3, 222.9) #ffffff;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);border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}.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));border-top-left-radius:0;border-top-right-radius:0}.nav-pills{--bs-nav-pills-border-radius: 0.375rem;--bs-nav-pills-link-active-color: #ffffff;--bs-nav-pills-link-active-bg: #0d6efd}.nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}.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: rgb(253.26, 253.63, 253.98);--bs-navbar-hover-color: rgba(252.58, 253.55, 254.98, 0.8);--bs-navbar-disabled-color: rgba(253.26, 253.63, 253.98, 0.75);--bs-navbar-active-color: rgb(252.58, 253.55, 254.98);--bs-navbar-brand-padding-y: 0.3125rem;--bs-navbar-brand-margin-end: 1rem;--bs-navbar-brand-font-size: 1.25rem;--bs-navbar-brand-color: rgb(253.26, 253.63, 253.98);--bs-navbar-brand-hover-color: rgb(252.58, 253.55, 254.98);--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='rgb%28253.26, 253.63, 253.98%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color: rgba(253.26, 253.63, 253.98, 0);--bs-navbar-toggler-border-radius: 0.375rem;--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);border-radius:var(--bs-navbar-toggler-border-radius);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: rgb(253.26, 253.63, 253.98);--bs-navbar-hover-color: rgba(252.58, 253.55, 254.98, 0.8);--bs-navbar-disabled-color: rgba(253.26, 253.63, 253.98, 0.75);--bs-navbar-active-color: rgb(252.58, 253.55, 254.98);--bs-navbar-brand-color: rgb(253.26, 253.63, 253.98);--bs-navbar-brand-hover-color: rgb(252.58, 253.55, 254.98);--bs-navbar-toggler-border-color: rgba(253.26, 253.63, 253.98, 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='rgb%28253.26, 253.63, 253.98%29' 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='rgb%28253.26, 253.63, 253.98%29' 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.375rem;--bs-card-box-shadow: ;--bs-card-inner-border-radius: calc(0.375rem - 1px);--bs-card-cap-padding-y: 0.5rem;--bs-card-cap-padding-x: 1rem;--bs-card-cap-bg: rgba(33, 37, 41, 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg: #ffffff;--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);border-radius:var(--bs-card-border-radius)}.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;border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card>.list-group:last-child{border-bottom-width:0;border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.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-header:first-child{border-radius:var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0}.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-footer:last-child{border-radius:0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius)}.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);border-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-top,.card-img-bottom{width:100%}.card-img,.card-img-top{border-top-left-radius:var(--bs-card-inner-border-radius);border-top-right-radius:var(--bs-card-inner-border-radius)}.card-img,.card-img-bottom{border-bottom-right-radius:var(--bs-card-inner-border-radius);border-bottom-left-radius:var(--bs-card-inner-border-radius)}.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}.card-group>.card:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:not(:last-child) .card-img-top,.card-group>.card:not(:last-child) .card-header{border-top-right-radius:0}.card-group>.card:not(:last-child) .card-img-bottom,.card-group>.card:not(:last-child) .card-footer{border-bottom-right-radius:0}.card-group>.card:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:not(:first-child) .card-img-top,.card-group>.card:not(:first-child) .card-header{border-top-left-radius:0}.card-group>.card:not(:first-child) .card-img-bottom,.card-group>.card:not(:first-child) .card-footer{border-bottom-left-radius:0}}.accordion{--bs-accordion-color: #212529;--bs-accordion-bg: #ffffff;--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: rgb(221.7, 222.3, 222.9);--bs-accordion-border-width: 1px;--bs-accordion-border-radius: 0.375rem;--bs-accordion-inner-border-radius: calc(0.375rem - 1px);--bs-accordion-btn-padding-x: 1.25rem;--bs-accordion-btn-padding-y: 1rem;--bs-accordion-btn-color: #212529;--bs-accordion-btn-bg: #ffffff;--bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%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='rgb%285.2, 44, 101.2%29'%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: rgb(134, 182.5, 254);--bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-accordion-body-padding-x: 1.25rem;--bs-accordion-body-padding-y: 1rem;--bs-accordion-active-color: rgb(5.2, 44, 101.2);--bs-accordion-active-bg: rgb(206.6, 226, 254.6)}.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;border-radius: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:first-of-type{border-top-left-radius:var(--bs-accordion-border-radius);border-top-right-radius:var(--bs-accordion-border-radius)}.accordion-item:first-of-type .accordion-button{border-top-left-radius:var(--bs-accordion-inner-border-radius);border-top-right-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:not(:first-of-type){border-top:0}.accordion-item:last-of-type{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.accordion-item:last-of-type .accordion-button.collapsed{border-bottom-right-radius:var(--bs-accordion-inner-border-radius);border-bottom-left-radius:var(--bs-accordion-inner-border-radius)}.accordion-item:last-of-type .accordion-collapse{border-bottom-right-radius:var(--bs-accordion-border-radius);border-bottom-left-radius:var(--bs-accordion-border-radius)}.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;border-radius:0}.accordion-flush .accordion-item:first-child{border-top:0}.accordion-flush .accordion-item:last-child{border-bottom:0}.accordion-flush .accordion-item .accordion-button,.accordion-flush .accordion-item .accordion-button.collapsed{border-radius: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='rgb%28109.8, 168, 253.8%29'%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='rgb%28109.8, 168, 253.8%29'%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(33, 37, 41, 0.75);--bs-breadcrumb-item-padding-x: 0.5rem;--bs-breadcrumb-item-active-color: rgba(33, 37, 41, 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);border-radius:var(--bs-breadcrumb-border-radius)}.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: #0d6efd;--bs-pagination-bg: #ffffff;--bs-pagination-border-width: 1px;--bs-pagination-border-color: rgb(221.7, 222.3, 222.9);--bs-pagination-border-radius: 0.375rem;--bs-pagination-hover-color: rgb(10.4, 88, 202.4);--bs-pagination-hover-bg: #f8f9fa;--bs-pagination-hover-border-color: rgb(221.7, 222.3, 222.9);--bs-pagination-focus-color: rgb(10.4, 88, 202.4);--bs-pagination-focus-bg: #e9ecef;--bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);--bs-pagination-active-color: #ffffff;--bs-pagination-active-bg: #0d6efd;--bs-pagination-active-border-color: #0d6efd;--bs-pagination-disabled-color: rgba(33, 37, 41, 0.75);--bs-pagination-disabled-bg: #e9ecef;--bs-pagination-disabled-border-color: rgb(221.7, 222.3, 222.9);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)}.page-item:first-child .page-link{border-top-left-radius:var(--bs-pagination-border-radius);border-bottom-left-radius:var(--bs-pagination-border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--bs-pagination-border-radius);border-bottom-right-radius:var(--bs-pagination-border-radius)}.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.25rem}.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: #ffffff;--bs-badge-border-radius: 0.375rem;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;border-radius:var(--bs-badge-border-radius)}.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: 1px solid var(--bs-alert-border-color);--bs-alert-border-radius: 0.375rem;--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);border-radius:var(--bs-alert-border-radius)}.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:1rem}}.progress,.progress-stacked{--bs-progress-height: 1rem;--bs-progress-font-size:0.75rem;--bs-progress-bg: #e9ecef;--bs-progress-border-radius: 0.375rem;--bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-progress-bar-color: #ffffff;--bs-progress-bar-bg: #0d6efd;--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);border-radius:var(--bs-progress-border-radius)}.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: #212529;--bs-list-group-bg: #ffffff;--bs-list-group-border-color: rgb(221.7, 222.3, 222.9);--bs-list-group-border-width: 1px;--bs-list-group-border-radius: 0.375rem;--bs-list-group-item-padding-x: 1rem;--bs-list-group-item-padding-y: 0.5rem;--bs-list-group-action-color: rgba(33, 37, 41, 0.75);--bs-list-group-action-hover-color: #000;--bs-list-group-action-hover-bg: #f8f9fa;--bs-list-group-action-active-color: #212529;--bs-list-group-action-active-bg: #e9ecef;--bs-list-group-disabled-color: rgba(33, 37, 41, 0.75);--bs-list-group-disabled-bg: #ffffff;--bs-list-group-active-color: #ffffff;--bs-list-group-active-bg: #0d6efd;--bs-list-group-active-border-color: #0d6efd;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;padding-left:0;margin-bottom:0;border-radius:var(--bs-list-group-border-radius)}.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:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.list-group-item:last-child{border-bottom-right-radius:inherit;border-bottom-left-radius:inherit}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-sm>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-md>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-lg>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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:first-child:not(:last-child){border-bottom-left-radius:var(--bs-list-group-border-radius);border-top-right-radius:0}.list-group-horizontal-xxl>.list-group-item:last-child:not(:first-child){border-top-right-radius:var(--bs-list-group-border-radius);border-bottom-left-radius:0}.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{border-radius:0}.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(13, 110, 253, 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;border-radius:.375rem;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.375rem;--bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-toast-header-color: rgba(33, 37, 41, 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);border-radius:var(--bs-toast-border-radius)}.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);border-top-left-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width));border-top-right-radius:calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width))}.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: #ffffff;--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: rgb(221.7, 222.3, 222.9);--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: rgb(221.7, 222.3, 222.9);--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);border-radius:var(--bs-modal-border-radius);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);border-top-left-radius:var(--bs-modal-inner-border-radius);border-top-right-radius:var(--bs-modal-inner-border-radius)}.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);border-bottom-right-radius:var(--bs-modal-inner-border-radius);border-bottom-left-radius:var(--bs-modal-inner-border-radius)}.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;border-radius:0}.modal-fullscreen .modal-header,.modal-fullscreen .modal-footer{border-radius: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;border-radius:0}.modal-fullscreen-sm-down .modal-header,.modal-fullscreen-sm-down .modal-footer{border-radius: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;border-radius:0}.modal-fullscreen-md-down .modal-header,.modal-fullscreen-md-down .modal-footer{border-radius: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;border-radius:0}.modal-fullscreen-lg-down .modal-header,.modal-fullscreen-lg-down .modal-footer{border-radius: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;border-radius:0}.modal-fullscreen-xl-down .modal-header,.modal-fullscreen-xl-down .modal-footer{border-radius: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;border-radius:0}.modal-fullscreen-xxl-down .modal-header,.modal-fullscreen-xxl-down .modal-footer{border-radius: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: #ffffff;--bs-tooltip-bg: #000;--bs-tooltip-border-radius: 0.375rem;--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:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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);border-radius:var(--bs-tooltip-border-radius)}.popover{--bs-popover-zindex: 1070;--bs-popover-max-width: 276px;--bs-popover-font-size:0.875rem;--bs-popover-bg: #ffffff;--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: #212529;--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:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";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);border-radius:var(--bs-popover-border-radius)}.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);border-top-left-radius:var(--bs-popover-inner-border-radius);border-top-right-radius:var(--bs-popover-inner-border-radius)}.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='%23ffffff'%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='%23ffffff'%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: #212529;--bs-offcanvas-bg: #ffffff;--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:#000 !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:#000 !important;background-color:RGBA(var(--bs-info-rgb), var(--bs-bg-opacity, 1)) !important}.text-bg-warning{color:#000 !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(229, 232, 235, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(229, 232, 235, 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(10, 88, 202, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(10, 88, 202, 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(86, 94, 100, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(86, 94, 100, 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(20, 108, 67, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(20, 108, 67, 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(61, 213, 243, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(61, 213, 243, 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(255, 205, 57, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(255, 205, 57, 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(176, 42, 55, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(176, 42, 55, 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(26, 30, 33, var(--bs-link-opacity, 1)) !important;text-decoration-color:RGBA(26, 30, 33, 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:hsla(0,0%,100%,.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:#000}.bg-primary{color:#fff}.bg-secondary{color:#fff}.bg-success{color:#fff}.bg-info{color:#000}.bg-warning{color:#000}.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: #0d6efd;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #0d6efd;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #ffffff;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: #6f42c1;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #d63384;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #d63384;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #dc3545;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #dc3545;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ffc107;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ffc107;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #198754;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #198754;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: #0dcaf0;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #0dcaf0;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #dee2e6}.bg-default{--bslib-color-bg: #dee2e6;--bslib-color-fg: #000}.text-primary{--bslib-color-fg: #0d6efd}.bg-primary{--bslib-color-bg: #0d6efd;--bslib-color-fg: #ffffff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #ffffff}.text-success{--bslib-color-fg: #198754}.bg-success{--bslib-color-bg: #198754;--bslib-color-fg: #ffffff}.text-info{--bslib-color-fg: #0dcaf0}.bg-info{--bslib-color-bg: #0dcaf0;--bslib-color-fg: #000}.text-warning{--bslib-color-fg: #ffc107}.bg-warning{--bslib-color-bg: #ffc107;--bslib-color-fg: #000}.text-danger{--bslib-color-fg: #dc3545}.bg-danger{--bslib-color-bg: #dc3545;--bslib-color-fg: #ffffff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #212529}.bg-dark{--bslib-color-bg: #212529;--bslib-color-fg: #ffffff}.bg-gradient-blue-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(48.6, 72.4, 248.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(48.6,72.4,248.6);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(52.2, 92.4, 229);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(52.2,92.4,229);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(93.4, 86.4, 204.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(93.4,86.4,204.6);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(95.8, 87.2, 179.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(95.8,87.2,179.4);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(109, 116.4, 159.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(109,116.4,159.8);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(109.8, 143.2, 154.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(109.8,143.2,154.6);color:#000}.bg-gradient-blue-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(17.8, 120, 185.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(17.8,120,185.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.6, 146.4, 212.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(20.6,146.4,212.2);color:#000}.bg-gradient-blue-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(13, 146.8, 247.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(13,146.8,247.8);color:#000}.bg-gradient-indigo-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(66.4, 53.6, 246.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(66.4,53.6,246.4);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(146.8, 30, 198);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(146.8,30,198);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(149.2, 30.8, 172.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(149.2,30.8,172.8);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(163.2, 86.8, 148);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(163.2,86.8,148);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(71.2, 63.6, 178.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(71.2,63.6,178.8);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(66.4, 90.4, 241.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(66.4,90.4,241.2);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(71.8, 83.6, 217);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(71.8,83.6,217);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(152.2, 60, 168.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(152.2,60,168.6);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(154.6, 60.8, 143.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(154.6,60.8,143.4);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(168.6, 116.8, 118.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(168.6,116.8,118.6);color:#000}.bg-gradient-purple-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(76.6, 93.6, 149.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(76.6,93.6,149.4);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(71.8, 120.4, 211.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(71.8,120.4,211.8);color:#000}.bg-gradient-pink-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(133.6, 74.6, 180.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(133.6,74.6,180.4);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(169.2, 37, 176);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(169.2,37,176);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(172.8, 57, 156.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(172.8,57,156.4);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(216.4, 51.8, 106.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(216.4,51.8,106.8);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(229.6, 81, 87.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(229.6,81,87.2);color:#000}.bg-gradient-pink-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(230.4, 107.8, 82);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(230.4,107.8,82);color:#000}.bg-gradient-pink-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(138.4, 84.6, 112.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(138.4,84.6,112.8);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(141.2, 111, 139.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(141.2,111,139.6);color:#000}.bg-gradient-pink-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(133.6, 111.4, 175.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(133.6,111.4,175.2);color:#000}.bg-gradient-red-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(137.2, 75.8, 142.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(137.2,75.8,142.6);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(172.8, 38.2, 138.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(172.8,38.2,138.2);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(176.4, 58.2, 118.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(176.4,58.2,118.6);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(217.6, 52.2, 94.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(217.6,52.2,94.2);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(233.2, 82.2, 49.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(233.2,82.2,49.4);color:#000}.bg-gradient-red-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(234, 109, 44.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(234,109,44.2);color:#000}.bg-gradient-red-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(142, 85.8, 75);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(142,85.8,75);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(144.8, 112.2, 101.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(144.8,112.2,101.8);color:#000}.bg-gradient-red-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(137.2, 112.6, 137.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(137.2,112.6,137.4);color:#000}.bg-gradient-orange-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(157, 119.6, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(157,119.6,113.2);color:#000}.bg-gradient-orange-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#000}.bg-gradient-orange-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#000}.bg-gradient-orange-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(237.4, 96, 64.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(237.4,96,64.8);color:#000}.bg-gradient-orange-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(239.8, 96.8, 39.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(239.8,96.8,39.6);color:#000}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(253.8, 152.8, 14.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(253.8,152.8,14.8);color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(161.8, 129.6, 45.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(161.8,129.6,45.6);color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(157, 156.4, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(157,156.4,108);color:#000}.bg-gradient-yellow-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(158.2, 159.8, 105.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(158.2,159.8,105.4);color:#000}.bg-gradient-yellow-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(193.8, 122.2, 101);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(193.8,122.2,101);color:#000}.bg-gradient-yellow-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(197.4, 142.2, 81.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(197.4,142.2,81.4);color:#000}.bg-gradient-yellow-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(238.6, 136.2, 57);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(238.6,136.2,57);color:#000}.bg-gradient-yellow-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(241, 137, 31.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(241,137,31.8);color:#000}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(254.2, 166.2, 12.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(254.2,166.2,12.2);color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(163, 169.8, 37.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(163,169.8,37.8);color:#000}.bg-gradient-yellow-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(165.8, 196.2, 64.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(165.8,196.2,64.6);color:#000}.bg-gradient-yellow-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(158.2, 196.6, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(158.2,196.6,100.2);color:#000}.bg-gradient-green-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(20.2, 125, 151.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(20.2,125,151.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(55.8, 87.4, 147.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.8,87.4,147.2);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(59.4, 107.4, 127.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(59.4,107.4,127.6);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(100.6, 101.4, 103.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(100.6,101.4,103.2);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(103, 102.2, 78);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(103,102.2,78);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(116.2, 131.4, 58.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(116.2,131.4,58.4);color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(117, 158.2, 53.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(117,158.2,53.2);color:#000}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(27.8, 161.4, 110.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.8,161.4,110.8);color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.2, 161.8, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(20.2,161.8,146.4);color:#000}.bg-gradient-teal-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(24.4, 164.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(24.4,164.6,191.8);color:#000}.bg-gradient-teal-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#000}.bg-gradient-teal-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#000}.bg-gradient-teal-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(104.8, 141, 143.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(104.8,141,143.4);color:#000}.bg-gradient-teal-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(107.2, 141.8, 118.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(107.2,141.8,118.2);color:#000}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(121.2, 197.8, 93.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(121.2,197.8,93.4);color:#000}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(29.2, 174.6, 124.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(29.2,174.6,124.2);color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(24.4, 201.4, 186.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(24.4,201.4,186.6);color:#000}.bg-gradient-cyan-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(13, 165.2, 245.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(13,165.2,245.2);color:#000}.bg-gradient-cyan-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(48.6, 127.6, 240.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(48.6,127.6,240.8);color:#000}.bg-gradient-cyan-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(52.2, 147.6, 221.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(52.2,147.6,221.2);color:#000}.bg-gradient-cyan-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(93.4, 141.6, 196.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(93.4,141.6,196.8);color:#000}.bg-gradient-cyan-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(95.8, 142.4, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(95.8,142.4,171.6);color:#000}.bg-gradient-cyan-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(109, 171.6, 152);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(109,171.6,152);color:#000}.bg-gradient-cyan-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(109.8, 198.4, 146.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(109.8,198.4,146.8);color:#000}.bg-gradient-cyan-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(17.8, 175.2, 177.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(17.8,175.2,177.6);color:#000}.bg-gradient-cyan-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.6, 201.6, 204.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(20.6,201.6,204.4);color:#000}.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: #0d6efd;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-blue{--bslib-color-fg: #0d6efd;color:var(--bslib-color-fg)}.bg-indigo{--bslib-color-bg: #6610f2;--bslib-color-fg: #ffffff;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: #6f42c1;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-purple{--bslib-color-fg: #6f42c1;color:var(--bslib-color-fg)}.bg-pink{--bslib-color-bg: #d63384;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-pink{--bslib-color-fg: #d63384;color:var(--bslib-color-fg)}.bg-red{--bslib-color-bg: #dc3545;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-red{--bslib-color-fg: #dc3545;color:var(--bslib-color-fg)}.bg-orange{--bslib-color-bg: #fd7e14;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-orange{--bslib-color-fg: #fd7e14;color:var(--bslib-color-fg)}.bg-yellow{--bslib-color-bg: #ffc107;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-yellow{--bslib-color-fg: #ffc107;color:var(--bslib-color-fg)}.bg-green{--bslib-color-bg: #198754;--bslib-color-fg: #ffffff;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-green{--bslib-color-fg: #198754;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: #0dcaf0;--bslib-color-fg: #000;background-color:var(--bslib-color-bg);color:var(--bslib-color-fg)}.text-cyan{--bslib-color-fg: #0dcaf0;color:var(--bslib-color-fg)}.text-default{--bslib-color-fg: #dee2e6}.bg-default{--bslib-color-bg: #dee2e6;--bslib-color-fg: #000}.text-primary{--bslib-color-fg: #0d6efd}.bg-primary{--bslib-color-bg: #0d6efd;--bslib-color-fg: #ffffff}.text-secondary{--bslib-color-fg: #6c757d}.bg-secondary{--bslib-color-bg: #6c757d;--bslib-color-fg: #ffffff}.text-success{--bslib-color-fg: #198754}.bg-success{--bslib-color-bg: #198754;--bslib-color-fg: #ffffff}.text-info{--bslib-color-fg: #0dcaf0}.bg-info{--bslib-color-bg: #0dcaf0;--bslib-color-fg: #000}.text-warning{--bslib-color-fg: #ffc107}.bg-warning{--bslib-color-bg: #ffc107;--bslib-color-fg: #000}.text-danger{--bslib-color-fg: #dc3545}.bg-danger{--bslib-color-bg: #dc3545;--bslib-color-fg: #ffffff}.text-light{--bslib-color-fg: #f8f9fa}.bg-light{--bslib-color-bg: #f8f9fa;--bslib-color-fg: #000}.text-dark{--bslib-color-fg: #212529}.bg-dark{--bslib-color-bg: #212529;--bslib-color-fg: #ffffff}.bg-gradient-blue-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(48.6, 72.4, 248.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(48.6,72.4,248.6);color:#fff}.bg-gradient-blue-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(52.2, 92.4, 229);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(52.2,92.4,229);color:#fff}.bg-gradient-blue-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(93.4, 86.4, 204.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(93.4,86.4,204.6);color:#fff}.bg-gradient-blue-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(95.8, 87.2, 179.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(95.8,87.2,179.4);color:#fff}.bg-gradient-blue-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(109, 116.4, 159.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(109,116.4,159.8);color:#fff}.bg-gradient-blue-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(109.8, 143.2, 154.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(109.8,143.2,154.6);color:#000}.bg-gradient-blue-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(17.8, 120, 185.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(17.8,120,185.4);color:#fff}.bg-gradient-blue-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.6, 146.4, 212.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(20.6,146.4,212.2);color:#000}.bg-gradient-blue-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(13, 146.8, 247.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0d6efd var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(13,146.8,247.8);color:#000}.bg-gradient-indigo-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(66.4, 53.6, 246.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(66.4,53.6,246.4);color:#fff}.bg-gradient-indigo-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(105.6, 36, 222.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(105.6,36,222.4);color:#fff}.bg-gradient-indigo-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(146.8, 30, 198);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(146.8,30,198);color:#fff}.bg-gradient-indigo-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(149.2, 30.8, 172.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(149.2,30.8,172.8);color:#fff}.bg-gradient-indigo-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(162.4, 60, 153.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(162.4,60,153.2);color:#fff}.bg-gradient-indigo-yellow{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(163.2, 86.8, 148);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(163.2,86.8,148);color:#fff}.bg-gradient-indigo-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(71.2, 63.6, 178.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(71.2,63.6,178.8);color:#fff}.bg-gradient-indigo-teal{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(74, 90, 205.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(74,90,205.6);color:#fff}.bg-gradient-indigo-cyan{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(66.4, 90.4, 241.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6610f2 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(66.4,90.4,241.2);color:#fff}.bg-gradient-purple-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(71.8, 83.6, 217);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(71.8,83.6,217);color:#fff}.bg-gradient-purple-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(107.4, 46, 212.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(107.4,46,212.6);color:#fff}.bg-gradient-purple-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(152.2, 60, 168.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(152.2,60,168.6);color:#fff}.bg-gradient-purple-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(154.6, 60.8, 143.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(154.6,60.8,143.4);color:#fff}.bg-gradient-purple-orange{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(167.8, 90, 123.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(167.8,90,123.8);color:#fff}.bg-gradient-purple-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(168.6, 116.8, 118.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(168.6,116.8,118.6);color:#000}.bg-gradient-purple-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(76.6, 93.6, 149.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(76.6,93.6,149.4);color:#fff}.bg-gradient-purple-teal{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(79.4, 120, 176.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(79.4,120,176.2);color:#fff}.bg-gradient-purple-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(71.8, 120.4, 211.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #6f42c1 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(71.8,120.4,211.8);color:#000}.bg-gradient-pink-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(133.6, 74.6, 180.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(133.6,74.6,180.4);color:#fff}.bg-gradient-pink-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(169.2, 37, 176);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(169.2,37,176);color:#fff}.bg-gradient-pink-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(172.8, 57, 156.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(172.8,57,156.4);color:#fff}.bg-gradient-pink-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(216.4, 51.8, 106.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(216.4,51.8,106.8);color:#fff}.bg-gradient-pink-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(229.6, 81, 87.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(229.6,81,87.2);color:#000}.bg-gradient-pink-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(230.4, 107.8, 82);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(230.4,107.8,82);color:#000}.bg-gradient-pink-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(138.4, 84.6, 112.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(138.4,84.6,112.8);color:#fff}.bg-gradient-pink-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(141.2, 111, 139.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(141.2,111,139.6);color:#000}.bg-gradient-pink-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(133.6, 111.4, 175.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #d63384 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(133.6,111.4,175.2);color:#000}.bg-gradient-red-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(137.2, 75.8, 142.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(137.2,75.8,142.6);color:#fff}.bg-gradient-red-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(172.8, 38.2, 138.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(172.8,38.2,138.2);color:#fff}.bg-gradient-red-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(176.4, 58.2, 118.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(176.4,58.2,118.6);color:#fff}.bg-gradient-red-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(217.6, 52.2, 94.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(217.6,52.2,94.2);color:#fff}.bg-gradient-red-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(233.2, 82.2, 49.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(233.2,82.2,49.4);color:#000}.bg-gradient-red-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(234, 109, 44.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(234,109,44.2);color:#000}.bg-gradient-red-green{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(142, 85.8, 75);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(142,85.8,75);color:#fff}.bg-gradient-red-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(144.8, 112.2, 101.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(144.8,112.2,101.8);color:#000}.bg-gradient-red-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(137.2, 112.6, 137.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #dc3545 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(137.2,112.6,137.4);color:#000}.bg-gradient-orange-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(157, 119.6, 113.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(157,119.6,113.2);color:#000}.bg-gradient-orange-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(192.6, 82, 108.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(192.6,82,108.8);color:#000}.bg-gradient-orange-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(196.2, 102, 89.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(196.2,102,89.2);color:#000}.bg-gradient-orange-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(237.4, 96, 64.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(237.4,96,64.8);color:#000}.bg-gradient-orange-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(239.8, 96.8, 39.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(239.8,96.8,39.6);color:#000}.bg-gradient-orange-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(253.8, 152.8, 14.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(253.8,152.8,14.8);color:#000}.bg-gradient-orange-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(161.8, 129.6, 45.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(161.8,129.6,45.6);color:#000}.bg-gradient-orange-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(164.6, 156, 72.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(164.6,156,72.4);color:#000}.bg-gradient-orange-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(157, 156.4, 108);background:linear-gradient(var(--bg-gradient-deg, 140deg), #fd7e14 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(157,156.4,108);color:#000}.bg-gradient-yellow-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(158.2, 159.8, 105.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(158.2,159.8,105.4);color:#000}.bg-gradient-yellow-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(193.8, 122.2, 101);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(193.8,122.2,101);color:#000}.bg-gradient-yellow-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(197.4, 142.2, 81.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(197.4,142.2,81.4);color:#000}.bg-gradient-yellow-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(238.6, 136.2, 57);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(238.6,136.2,57);color:#000}.bg-gradient-yellow-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(241, 137, 31.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(241,137,31.8);color:#000}.bg-gradient-yellow-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(254.2, 166.2, 12.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(254.2,166.2,12.2);color:#000}.bg-gradient-yellow-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(163, 169.8, 37.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(163,169.8,37.8);color:#000}.bg-gradient-yellow-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(165.8, 196.2, 64.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(165.8,196.2,64.6);color:#000}.bg-gradient-yellow-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(158.2, 196.6, 100.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #ffc107 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(158.2,196.6,100.2);color:#000}.bg-gradient-green-blue{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(20.2, 125, 151.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(20.2,125,151.6);color:#fff}.bg-gradient-green-indigo{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(55.8, 87.4, 147.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(55.8,87.4,147.2);color:#fff}.bg-gradient-green-purple{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(59.4, 107.4, 127.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(59.4,107.4,127.6);color:#fff}.bg-gradient-green-pink{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(100.6, 101.4, 103.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(100.6,101.4,103.2);color:#fff}.bg-gradient-green-red{--bslib-color-fg: #ffffff;--bslib-color-bg: rgb(103, 102.2, 78);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(103,102.2,78);color:#fff}.bg-gradient-green-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(116.2, 131.4, 58.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(116.2,131.4,58.4);color:#000}.bg-gradient-green-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(117, 158.2, 53.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(117,158.2,53.2);color:#000}.bg-gradient-green-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(27.8, 161.4, 110.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(27.8,161.4,110.8);color:#000}.bg-gradient-green-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.2, 161.8, 146.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #198754 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(20.2,161.8,146.4);color:#000}.bg-gradient-teal-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(24.4, 164.6, 191.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(24.4,164.6,191.8);color:#000}.bg-gradient-teal-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(60, 127, 187.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(60,127,187.4);color:#000}.bg-gradient-teal-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(63.6, 147, 167.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(63.6,147,167.8);color:#000}.bg-gradient-teal-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(104.8, 141, 143.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(104.8,141,143.4);color:#000}.bg-gradient-teal-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(107.2, 141.8, 118.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(107.2,141.8,118.2);color:#000}.bg-gradient-teal-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(120.4, 171, 98.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(120.4,171,98.6);color:#000}.bg-gradient-teal-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(121.2, 197.8, 93.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(121.2,197.8,93.4);color:#000}.bg-gradient-teal-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(29.2, 174.6, 124.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(29.2,174.6,124.2);color:#000}.bg-gradient-teal-cyan{--bslib-color-fg: #000;--bslib-color-bg: rgb(24.4, 201.4, 186.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #20c997 var(--bg-gradient-start, 36%), #0dcaf0 var(--bg-gradient-end, 180%)) rgb(24.4,201.4,186.6);color:#000}.bg-gradient-cyan-blue{--bslib-color-fg: #000;--bslib-color-bg: rgb(13, 165.2, 245.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #0d6efd var(--bg-gradient-end, 180%)) rgb(13,165.2,245.2);color:#000}.bg-gradient-cyan-indigo{--bslib-color-fg: #000;--bslib-color-bg: rgb(48.6, 127.6, 240.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #6610f2 var(--bg-gradient-end, 180%)) rgb(48.6,127.6,240.8);color:#000}.bg-gradient-cyan-purple{--bslib-color-fg: #000;--bslib-color-bg: rgb(52.2, 147.6, 221.2);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #6f42c1 var(--bg-gradient-end, 180%)) rgb(52.2,147.6,221.2);color:#000}.bg-gradient-cyan-pink{--bslib-color-fg: #000;--bslib-color-bg: rgb(93.4, 141.6, 196.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #d63384 var(--bg-gradient-end, 180%)) rgb(93.4,141.6,196.8);color:#000}.bg-gradient-cyan-red{--bslib-color-fg: #000;--bslib-color-bg: rgb(95.8, 142.4, 171.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #dc3545 var(--bg-gradient-end, 180%)) rgb(95.8,142.4,171.6);color:#000}.bg-gradient-cyan-orange{--bslib-color-fg: #000;--bslib-color-bg: rgb(109, 171.6, 152);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #fd7e14 var(--bg-gradient-end, 180%)) rgb(109,171.6,152);color:#000}.bg-gradient-cyan-yellow{--bslib-color-fg: #000;--bslib-color-bg: rgb(109.8, 198.4, 146.8);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #ffc107 var(--bg-gradient-end, 180%)) rgb(109.8,198.4,146.8);color:#000}.bg-gradient-cyan-green{--bslib-color-fg: #000;--bslib-color-bg: rgb(17.8, 175.2, 177.6);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #198754 var(--bg-gradient-end, 180%)) rgb(17.8,175.2,177.6);color:#000}.bg-gradient-cyan-teal{--bslib-color-fg: #000;--bslib-color-bg: rgb(20.6, 201.6, 204.4);background:linear-gradient(var(--bg-gradient-deg, 140deg), #0dcaf0 var(--bg-gradient-start, 36%), #20c997 var(--bg-gradient-end, 180%)) rgb(20.6,201.6,204.4);color:#000}: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, #ffffff);--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:500;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:500;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%)}@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-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}}.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)}}.accordion .accordion-header{font-size:calc(1.29rem + 0.48vw);margin-top:0;margin-bottom:.5rem;font-weight:500;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)}.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)}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)}}:root{--bslib-page-sidebar-title-bg: #517699;--bslib-page-sidebar-title-color: #ffffff}.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 rgb(221.7,222.3,222.9)}.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.375rem);--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}}.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}.tippy-box[data-theme~=quarto]{background-color:#fff;border:solid 1px rgb(221.7,222.3,222.9);border-radius:.375rem;color:#212529;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:rgb(221.7,222.3,222.9);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:rgb(221.7,222.3,222.9);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:rgb(221.7,222.3,222.9);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:rgb(221.7,222.3,222.9)}.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:#212529}.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:rgba(33,37,41,.75)}details>summary>p:only-child{display:inline}div.code-copy-outer-scaffold{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}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}.callout pre.sourceCode{padding-left:0}div.ansi-escaped-output{font-family:monospace;display:block}/*! +* +* ansi colors from IPython notebook's +* +* we also add `bright-[color]-` synonyms for the `-[color]-intense` classes since +* that seems to be what ansi_up emits +* +*/.ansi-black-fg{color:#3e424d}.ansi-black-bg{background-color:#3e424d}.ansi-black-intense-black,.ansi-bright-black-fg{color:#282c36}.ansi-black-intense-black,.ansi-bright-black-bg{background-color:#282c36}.ansi-red-fg{color:#e75c58}.ansi-red-bg{background-color:#e75c58}.ansi-red-intense-red,.ansi-bright-red-fg{color:#b22b31}.ansi-red-intense-red,.ansi-bright-red-bg{background-color:#b22b31}.ansi-green-fg{color:#00a250}.ansi-green-bg{background-color:#00a250}.ansi-green-intense-green,.ansi-bright-green-fg{color:#007427}.ansi-green-intense-green,.ansi-bright-green-bg{background-color:#007427}.ansi-yellow-fg{color:#ddb62b}.ansi-yellow-bg{background-color:#ddb62b}.ansi-yellow-intense-yellow,.ansi-bright-yellow-fg{color:#b27d12}.ansi-yellow-intense-yellow,.ansi-bright-yellow-bg{background-color:#b27d12}.ansi-blue-fg{color:#208ffb}.ansi-blue-bg{background-color:#208ffb}.ansi-blue-intense-blue,.ansi-bright-blue-fg{color:#0065ca}.ansi-blue-intense-blue,.ansi-bright-blue-bg{background-color:#0065ca}.ansi-magenta-fg{color:#d160c4}.ansi-magenta-bg{background-color:#d160c4}.ansi-magenta-intense-magenta,.ansi-bright-magenta-fg{color:#a03196}.ansi-magenta-intense-magenta,.ansi-bright-magenta-bg{background-color:#a03196}.ansi-cyan-fg{color:#60c6c8}.ansi-cyan-bg{background-color:#60c6c8}.ansi-cyan-intense-cyan,.ansi-bright-cyan-fg{color:#258f8f}.ansi-cyan-intense-cyan,.ansi-bright-cyan-bg{background-color:#258f8f}.ansi-white-fg{color:#c5c1b4}.ansi-white-bg{background-color:#c5c1b4}.ansi-white-intense-white,.ansi-bright-white-fg{color:#a1a6b2}.ansi-white-intense-white,.ansi-bright-white-bg{background-color:#a1a6b2}.ansi-default-inverse-fg{color:#fff}.ansi-default-inverse-bg{background-color:#000}.ansi-bold{font-weight:bold}.ansi-underline{text-decoration:underline}:root{--quarto-body-bg: #ffffff;--quarto-body-color: #212529;--quarto-text-muted: rgba(33, 37, 41, 0.75);--quarto-border-color: rgb(221.7, 222.3, 222.9);--quarto-border-width: 1px;--quarto-border-radius: 0.375rem}table.gt_table{color:var(--quarto-body-color);font-size:1em;width:100%;background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_column_spanner_outer{color:var(--quarto-body-color);background-color:rgba(0,0,0,0);border-top-width:inherit;border-bottom-width:inherit;border-color:var(--quarto-border-color)}table.gt_table th.gt_col_heading{color:var(--quarto-body-color);font-weight:bold;background-color:rgba(0,0,0,0)}table.gt_table thead.gt_col_headings{border-bottom:1px solid currentColor;border-top-width:inherit;border-top-color:var(--quarto-border-color)}table.gt_table thead.gt_col_headings:not(:first-child){border-top-width:1px;border-top-color:var(--quarto-border-color)}table.gt_table td.gt_row{border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-width:0px}table.gt_table tbody.gt_table_body{border-top-width:1px;border-bottom-width:1px;border-bottom-color:var(--quarto-border-color);border-top-color:currentColor}div.columns{display:initial;gap:initial}div.column{display:inline-block;overflow-x:initial;vertical-align:top;width:50%}.code-annotation-tip-content{word-wrap:break-word}.code-annotation-container-hidden{display:none !important}dl.code-annotation-container-grid{display:grid;grid-template-columns:min-content auto}dl.code-annotation-container-grid dt{grid-column:1}dl.code-annotation-container-grid dd{grid-column:2}pre.sourceCode.code-annotation-code{padding-right:0}code.sourceCode .code-annotation-anchor{z-index:100;position:relative;float:right;background-color:rgba(0,0,0,0)}input[type=checkbox]{margin-right:.5ch}:root{--mermaid-bg-color: #ffffff;--mermaid-edge-color: #6c757d;--mermaid-node-fg-color: #212529;--mermaid-fg-color: #212529;--mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--mermaid-font-family: system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Noto Sans, Liberation Sans, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;--mermaid-label-bg-color: #ffffff;--mermaid-label-fg-color: #0d6efd;--mermaid-node-bg-color: rgba(13, 110, 253, 0.1);--mermaid-node-fg-color: #212529}@media print{:root{font-size:11pt}#quarto-sidebar,#TOC,.nav-page{display:none}.page-columns .content{grid-column-start:page-start}.fixed-top{position:relative}.panel-caption,.figure-caption,figcaption{color:#666}}.code-copy-button{position:absolute;top:0;right:0;border:0;margin-top:5px;margin-right:5px;background-color:rgba(0,0,0,0);z-index:3}.code-copy-button-tooltip{font-size:.75em}div.code-copy-outer-scaffold:hover>.code-copy-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}div.code-copy-outer-scaffold:hover>.code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}div.code-copy-outer-scaffold:hover>.code-copy-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}div.code-copy-outer-scaffold:hover>.code-copy-button-checked:hover>.bi::before{background-image:url('data:image/svg+xml,')}main ol ol,main ul ul,main ol ul,main ul ol{margin-bottom:1em}ul>li:not(:has(>p))>ul,ol>li:not(:has(>p))>ul,ul>li:not(:has(>p))>ol,ol>li:not(:has(>p))>ol{margin-bottom:0}ul>li:not(:has(>p))>ul>li:has(>p),ol>li:not(:has(>p))>ul>li:has(>p),ul>li:not(:has(>p))>ol>li:has(>p),ol>li:not(:has(>p))>ol>li:has(>p){margin-top:1rem}body{margin:0}main.page-columns>header>h1.title,main.page-columns>header>.title.h1{margin-bottom:0}@media(min-width: 992px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] 35px [page-end-inset page-end] 5fr [screen-end-inset] 1.5em}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset] 35px [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(850px - 3em)) [body-content-end] 3em [body-end] 50px [body-end-outset] minmax(0px, 250px) [page-end-inset] minmax(50px, 100px) [page-end] 1fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 175px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 100px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start] minmax(50px, 100px) [page-start-inset] 50px [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(0px, 200px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 50px [page-start-inset] minmax(50px, 150px) [body-start-outset] 50px [body-start] 1.5em [body-content-start] minmax(450px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(50px, 150px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] minmax(25px, 50px) [page-start-inset] minmax(50px, 150px) [body-start-outset] minmax(25px, 50px) [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] minmax(25px, 50px) [body-end-outset] minmax(50px, 150px) [page-end-inset] minmax(25px, 50px) [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 991.98px){body .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.fullcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.slimcontent:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.listing:not(.floating):not(.docked) .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset] 5fr [body-start] 1.5em [body-content-start] minmax(500px, calc(1250px - 3em)) [body-content-end body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start] 35px [page-start-inset] minmax(0px, 145px) [body-start-outset] 35px [body-start] 1.5em [body-content-start] minmax(450px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1.5em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(1000px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(800px - 3em)) [body-content-end] 1.5em [body-end body-end-outset page-end-inset page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.docked.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.docked.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(25px, 50px) [page-end-inset] 50px [page-end] 5fr [screen-end-inset] 1.5em [screen-end]}body.floating.slimcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 35px [body-end-outset] minmax(75px, 145px) [page-end-inset] 35px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}body.floating.listing .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset] 5fr [page-start page-start-inset body-start-outset body-start] 1em [body-content-start] minmax(500px, calc(750px - 3em)) [body-content-end] 1.5em [body-end] 50px [body-end-outset] minmax(75px, 150px) [page-end-inset] 25px [page-end] 4fr [screen-end-inset] 1.5em [screen-end]}}@media(max-width: 767.98px){body .page-columns,body.fullcontent:not(.floating):not(.docked) .page-columns,body.slimcontent:not(.floating):not(.docked) .page-columns,body.docked .page-columns,body.docked.slimcontent .page-columns,body.docked.fullcontent .page-columns,body.floating .page-columns,body.floating.slimcontent .page-columns,body.floating.fullcontent .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}body:not(.floating):not(.docked) .page-columns.toc-left .page-columns{display:grid;gap:0;grid-template-columns:[screen-start] 1.5em [screen-start-inset page-start page-start-inset body-start-outset body-start body-content-start] minmax(0px, 1fr) [body-content-end body-end body-end-outset page-end-inset page-end screen-end-inset] 1.5em [screen-end]}nav[role=doc-toc]{display:none}}body,.page-row-navigation{grid-template-rows:[page-top] max-content [contents-top] max-content [contents-bottom] max-content [page-bottom]}.page-rows-contents{grid-template-rows:[content-top] minmax(max-content, 1fr) [content-bottom] minmax(60px, max-content) [page-bottom]}.page-full{grid-column:screen-start/screen-end !important}.page-columns>*{grid-column:body-content-start/body-content-end}.page-columns.column-page>*{grid-column:page-start/page-end}.page-columns.column-page-left .page-columns.page-full>*,.page-columns.column-page-left>*{grid-column:page-start/body-content-end}.page-columns.column-page-right .page-columns.page-full>*,.page-columns.column-page-right>*{grid-column:body-content-start/page-end}.page-rows{grid-auto-rows:auto}.header{grid-column:screen-start/screen-end;grid-row:page-top/contents-top}#quarto-content{padding:0;grid-column:screen-start/screen-end;grid-row:contents-top/contents-bottom}body.floating .sidebar.sidebar-navigation{grid-column:page-start/body-start;grid-row:content-top/page-bottom}body.docked .sidebar.sidebar-navigation{grid-column:screen-start/body-start;grid-row:content-top/page-bottom}.sidebar.toc-left{grid-column:page-start/body-start;grid-row:content-top/page-bottom}.sidebar.margin-sidebar{grid-column:body-end/page-end;grid-row:content-top/page-bottom}.page-columns .content{grid-column:body-content-start/body-content-end;grid-row:content-top/content-bottom;align-content:flex-start}.page-columns .page-navigation{grid-column:body-content-start/body-content-end;grid-row:content-bottom/page-bottom}.page-columns .footer{grid-column:screen-start/screen-end;grid-row:contents-bottom/page-bottom}.page-columns .column-body{grid-column:body-content-start/body-content-end}.page-columns .column-body-fullbleed{grid-column:body-start/body-end}.page-columns .column-body-outset{grid-column:body-start-outset/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset table{background:#fff}.page-columns .column-body-outset-left{grid-column:body-start-outset/body-content-end;z-index:998;opacity:.999}.page-columns .column-body-outset-left table{background:#fff}.page-columns .column-body-outset-right{grid-column:body-content-start/body-end-outset;z-index:998;opacity:.999}.page-columns .column-body-outset-right table{background:#fff}.page-columns .column-page{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-page table{background:#fff}.page-columns .column-page-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset table{background:#fff}.page-columns .column-page-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-inset-left table{background:#fff}.page-columns .column-page-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-page-inset-right figcaption table{background:#fff}.page-columns .column-page-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-page-left table{background:#fff}.page-columns .column-page-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-page-right figcaption table{background:#fff}#quarto-content.page-columns #quarto-margin-sidebar,#quarto-content.page-columns #quarto-sidebar{z-index:1}@media(max-width: 991.98px){#quarto-content.page-columns #quarto-margin-sidebar.collapse,#quarto-content.page-columns #quarto-sidebar.collapse,#quarto-content.page-columns #quarto-margin-sidebar.collapsing,#quarto-content.page-columns #quarto-sidebar.collapsing{z-index:1055}}#quarto-content.page-columns main.column-page,#quarto-content.page-columns main.column-page-right,#quarto-content.page-columns main.column-page-left{z-index:0}.page-columns .column-screen-inset{grid-column:screen-start-inset/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:screen-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/screen-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:screen-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:screen-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/screen-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:screen-start/screen-end;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}.zindex-content{z-index:998;opacity:.999}.zindex-modal{z-index:1055;opacity:.999}.zindex-over-content{z-index:999;opacity:.999}img.img-fluid.column-screen,img.img-fluid.column-screen-inset-shaded,img.img-fluid.column-screen-inset,img.img-fluid.column-screen-inset-left,img.img-fluid.column-screen-inset-right,img.img-fluid.column-screen-left,img.img-fluid.column-screen-right{width:100%}@media(min-width: 992px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.column-sidebar{grid-column:page-start/body-start !important;z-index:998}.column-leftmargin{grid-column:screen-start-inset/body-start !important;z-index:998}.no-row-height{height:1em;overflow:visible}}@media(max-width: 991.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-end/page-end !important;z-index:998}.no-row-height{height:1em;overflow:visible}.page-columns.page-full{overflow:visible}.page-columns.toc-left .margin-caption,.page-columns.toc-left div.aside,.page-columns.toc-left aside:not(.footnotes):not(.sidebar),.page-columns.toc-left .column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.page-columns.toc-left .no-row-height{height:initial;overflow:initial}}@media(max-width: 767.98px){.margin-caption,div.aside,aside:not(.footnotes):not(.sidebar),.column-margin{grid-column:body-content-start/body-content-end !important;z-index:998;opacity:.999}.no-row-height{height:initial;overflow:initial}#quarto-margin-sidebar{display:none}#quarto-sidebar-toc-left{display:none}.hidden-sm{display:none}}.panel-grid{display:grid;grid-template-rows:repeat(1, 1fr);grid-template-columns:repeat(24, 1fr);gap:1em}.panel-grid .g-col-1{grid-column:auto/span 1}.panel-grid .g-col-2{grid-column:auto/span 2}.panel-grid .g-col-3{grid-column:auto/span 3}.panel-grid .g-col-4{grid-column:auto/span 4}.panel-grid .g-col-5{grid-column:auto/span 5}.panel-grid .g-col-6{grid-column:auto/span 6}.panel-grid .g-col-7{grid-column:auto/span 7}.panel-grid .g-col-8{grid-column:auto/span 8}.panel-grid .g-col-9{grid-column:auto/span 9}.panel-grid .g-col-10{grid-column:auto/span 10}.panel-grid .g-col-11{grid-column:auto/span 11}.panel-grid .g-col-12{grid-column:auto/span 12}.panel-grid .g-col-13{grid-column:auto/span 13}.panel-grid .g-col-14{grid-column:auto/span 14}.panel-grid .g-col-15{grid-column:auto/span 15}.panel-grid .g-col-16{grid-column:auto/span 16}.panel-grid .g-col-17{grid-column:auto/span 17}.panel-grid .g-col-18{grid-column:auto/span 18}.panel-grid .g-col-19{grid-column:auto/span 19}.panel-grid .g-col-20{grid-column:auto/span 20}.panel-grid .g-col-21{grid-column:auto/span 21}.panel-grid .g-col-22{grid-column:auto/span 22}.panel-grid .g-col-23{grid-column:auto/span 23}.panel-grid .g-col-24{grid-column:auto/span 24}.panel-grid .g-start-1{grid-column-start:1}.panel-grid .g-start-2{grid-column-start:2}.panel-grid .g-start-3{grid-column-start:3}.panel-grid .g-start-4{grid-column-start:4}.panel-grid .g-start-5{grid-column-start:5}.panel-grid .g-start-6{grid-column-start:6}.panel-grid .g-start-7{grid-column-start:7}.panel-grid .g-start-8{grid-column-start:8}.panel-grid .g-start-9{grid-column-start:9}.panel-grid .g-start-10{grid-column-start:10}.panel-grid .g-start-11{grid-column-start:11}.panel-grid .g-start-12{grid-column-start:12}.panel-grid .g-start-13{grid-column-start:13}.panel-grid .g-start-14{grid-column-start:14}.panel-grid .g-start-15{grid-column-start:15}.panel-grid .g-start-16{grid-column-start:16}.panel-grid .g-start-17{grid-column-start:17}.panel-grid .g-start-18{grid-column-start:18}.panel-grid .g-start-19{grid-column-start:19}.panel-grid .g-start-20{grid-column-start:20}.panel-grid .g-start-21{grid-column-start:21}.panel-grid .g-start-22{grid-column-start:22}.panel-grid .g-start-23{grid-column-start:23}@media(min-width: 576px){.panel-grid .g-col-sm-1{grid-column:auto/span 1}.panel-grid .g-col-sm-2{grid-column:auto/span 2}.panel-grid .g-col-sm-3{grid-column:auto/span 3}.panel-grid .g-col-sm-4{grid-column:auto/span 4}.panel-grid .g-col-sm-5{grid-column:auto/span 5}.panel-grid .g-col-sm-6{grid-column:auto/span 6}.panel-grid .g-col-sm-7{grid-column:auto/span 7}.panel-grid .g-col-sm-8{grid-column:auto/span 8}.panel-grid .g-col-sm-9{grid-column:auto/span 9}.panel-grid .g-col-sm-10{grid-column:auto/span 10}.panel-grid .g-col-sm-11{grid-column:auto/span 11}.panel-grid .g-col-sm-12{grid-column:auto/span 12}.panel-grid .g-col-sm-13{grid-column:auto/span 13}.panel-grid .g-col-sm-14{grid-column:auto/span 14}.panel-grid .g-col-sm-15{grid-column:auto/span 15}.panel-grid .g-col-sm-16{grid-column:auto/span 16}.panel-grid .g-col-sm-17{grid-column:auto/span 17}.panel-grid .g-col-sm-18{grid-column:auto/span 18}.panel-grid .g-col-sm-19{grid-column:auto/span 19}.panel-grid .g-col-sm-20{grid-column:auto/span 20}.panel-grid .g-col-sm-21{grid-column:auto/span 21}.panel-grid .g-col-sm-22{grid-column:auto/span 22}.panel-grid .g-col-sm-23{grid-column:auto/span 23}.panel-grid .g-col-sm-24{grid-column:auto/span 24}.panel-grid .g-start-sm-1{grid-column-start:1}.panel-grid .g-start-sm-2{grid-column-start:2}.panel-grid .g-start-sm-3{grid-column-start:3}.panel-grid .g-start-sm-4{grid-column-start:4}.panel-grid .g-start-sm-5{grid-column-start:5}.panel-grid .g-start-sm-6{grid-column-start:6}.panel-grid .g-start-sm-7{grid-column-start:7}.panel-grid .g-start-sm-8{grid-column-start:8}.panel-grid .g-start-sm-9{grid-column-start:9}.panel-grid .g-start-sm-10{grid-column-start:10}.panel-grid .g-start-sm-11{grid-column-start:11}.panel-grid .g-start-sm-12{grid-column-start:12}.panel-grid .g-start-sm-13{grid-column-start:13}.panel-grid .g-start-sm-14{grid-column-start:14}.panel-grid .g-start-sm-15{grid-column-start:15}.panel-grid .g-start-sm-16{grid-column-start:16}.panel-grid .g-start-sm-17{grid-column-start:17}.panel-grid .g-start-sm-18{grid-column-start:18}.panel-grid .g-start-sm-19{grid-column-start:19}.panel-grid .g-start-sm-20{grid-column-start:20}.panel-grid .g-start-sm-21{grid-column-start:21}.panel-grid .g-start-sm-22{grid-column-start:22}.panel-grid .g-start-sm-23{grid-column-start:23}}@media(min-width: 768px){.panel-grid .g-col-md-1{grid-column:auto/span 1}.panel-grid .g-col-md-2{grid-column:auto/span 2}.panel-grid .g-col-md-3{grid-column:auto/span 3}.panel-grid .g-col-md-4{grid-column:auto/span 4}.panel-grid .g-col-md-5{grid-column:auto/span 5}.panel-grid .g-col-md-6{grid-column:auto/span 6}.panel-grid .g-col-md-7{grid-column:auto/span 7}.panel-grid .g-col-md-8{grid-column:auto/span 8}.panel-grid .g-col-md-9{grid-column:auto/span 9}.panel-grid .g-col-md-10{grid-column:auto/span 10}.panel-grid .g-col-md-11{grid-column:auto/span 11}.panel-grid .g-col-md-12{grid-column:auto/span 12}.panel-grid .g-col-md-13{grid-column:auto/span 13}.panel-grid .g-col-md-14{grid-column:auto/span 14}.panel-grid .g-col-md-15{grid-column:auto/span 15}.panel-grid .g-col-md-16{grid-column:auto/span 16}.panel-grid .g-col-md-17{grid-column:auto/span 17}.panel-grid .g-col-md-18{grid-column:auto/span 18}.panel-grid .g-col-md-19{grid-column:auto/span 19}.panel-grid .g-col-md-20{grid-column:auto/span 20}.panel-grid .g-col-md-21{grid-column:auto/span 21}.panel-grid .g-col-md-22{grid-column:auto/span 22}.panel-grid .g-col-md-23{grid-column:auto/span 23}.panel-grid .g-col-md-24{grid-column:auto/span 24}.panel-grid .g-start-md-1{grid-column-start:1}.panel-grid .g-start-md-2{grid-column-start:2}.panel-grid .g-start-md-3{grid-column-start:3}.panel-grid .g-start-md-4{grid-column-start:4}.panel-grid .g-start-md-5{grid-column-start:5}.panel-grid .g-start-md-6{grid-column-start:6}.panel-grid .g-start-md-7{grid-column-start:7}.panel-grid .g-start-md-8{grid-column-start:8}.panel-grid .g-start-md-9{grid-column-start:9}.panel-grid .g-start-md-10{grid-column-start:10}.panel-grid .g-start-md-11{grid-column-start:11}.panel-grid .g-start-md-12{grid-column-start:12}.panel-grid .g-start-md-13{grid-column-start:13}.panel-grid .g-start-md-14{grid-column-start:14}.panel-grid .g-start-md-15{grid-column-start:15}.panel-grid .g-start-md-16{grid-column-start:16}.panel-grid .g-start-md-17{grid-column-start:17}.panel-grid .g-start-md-18{grid-column-start:18}.panel-grid .g-start-md-19{grid-column-start:19}.panel-grid .g-start-md-20{grid-column-start:20}.panel-grid .g-start-md-21{grid-column-start:21}.panel-grid .g-start-md-22{grid-column-start:22}.panel-grid .g-start-md-23{grid-column-start:23}}@media(min-width: 992px){.panel-grid .g-col-lg-1{grid-column:auto/span 1}.panel-grid .g-col-lg-2{grid-column:auto/span 2}.panel-grid .g-col-lg-3{grid-column:auto/span 3}.panel-grid .g-col-lg-4{grid-column:auto/span 4}.panel-grid .g-col-lg-5{grid-column:auto/span 5}.panel-grid .g-col-lg-6{grid-column:auto/span 6}.panel-grid .g-col-lg-7{grid-column:auto/span 7}.panel-grid .g-col-lg-8{grid-column:auto/span 8}.panel-grid .g-col-lg-9{grid-column:auto/span 9}.panel-grid .g-col-lg-10{grid-column:auto/span 10}.panel-grid .g-col-lg-11{grid-column:auto/span 11}.panel-grid .g-col-lg-12{grid-column:auto/span 12}.panel-grid .g-col-lg-13{grid-column:auto/span 13}.panel-grid .g-col-lg-14{grid-column:auto/span 14}.panel-grid .g-col-lg-15{grid-column:auto/span 15}.panel-grid .g-col-lg-16{grid-column:auto/span 16}.panel-grid .g-col-lg-17{grid-column:auto/span 17}.panel-grid .g-col-lg-18{grid-column:auto/span 18}.panel-grid .g-col-lg-19{grid-column:auto/span 19}.panel-grid .g-col-lg-20{grid-column:auto/span 20}.panel-grid .g-col-lg-21{grid-column:auto/span 21}.panel-grid .g-col-lg-22{grid-column:auto/span 22}.panel-grid .g-col-lg-23{grid-column:auto/span 23}.panel-grid .g-col-lg-24{grid-column:auto/span 24}.panel-grid .g-start-lg-1{grid-column-start:1}.panel-grid .g-start-lg-2{grid-column-start:2}.panel-grid .g-start-lg-3{grid-column-start:3}.panel-grid .g-start-lg-4{grid-column-start:4}.panel-grid .g-start-lg-5{grid-column-start:5}.panel-grid .g-start-lg-6{grid-column-start:6}.panel-grid .g-start-lg-7{grid-column-start:7}.panel-grid .g-start-lg-8{grid-column-start:8}.panel-grid .g-start-lg-9{grid-column-start:9}.panel-grid .g-start-lg-10{grid-column-start:10}.panel-grid .g-start-lg-11{grid-column-start:11}.panel-grid .g-start-lg-12{grid-column-start:12}.panel-grid .g-start-lg-13{grid-column-start:13}.panel-grid .g-start-lg-14{grid-column-start:14}.panel-grid .g-start-lg-15{grid-column-start:15}.panel-grid .g-start-lg-16{grid-column-start:16}.panel-grid .g-start-lg-17{grid-column-start:17}.panel-grid .g-start-lg-18{grid-column-start:18}.panel-grid .g-start-lg-19{grid-column-start:19}.panel-grid .g-start-lg-20{grid-column-start:20}.panel-grid .g-start-lg-21{grid-column-start:21}.panel-grid .g-start-lg-22{grid-column-start:22}.panel-grid .g-start-lg-23{grid-column-start:23}}@media(min-width: 1200px){.panel-grid .g-col-xl-1{grid-column:auto/span 1}.panel-grid .g-col-xl-2{grid-column:auto/span 2}.panel-grid .g-col-xl-3{grid-column:auto/span 3}.panel-grid .g-col-xl-4{grid-column:auto/span 4}.panel-grid .g-col-xl-5{grid-column:auto/span 5}.panel-grid .g-col-xl-6{grid-column:auto/span 6}.panel-grid .g-col-xl-7{grid-column:auto/span 7}.panel-grid .g-col-xl-8{grid-column:auto/span 8}.panel-grid .g-col-xl-9{grid-column:auto/span 9}.panel-grid .g-col-xl-10{grid-column:auto/span 10}.panel-grid .g-col-xl-11{grid-column:auto/span 11}.panel-grid .g-col-xl-12{grid-column:auto/span 12}.panel-grid .g-col-xl-13{grid-column:auto/span 13}.panel-grid .g-col-xl-14{grid-column:auto/span 14}.panel-grid .g-col-xl-15{grid-column:auto/span 15}.panel-grid .g-col-xl-16{grid-column:auto/span 16}.panel-grid .g-col-xl-17{grid-column:auto/span 17}.panel-grid .g-col-xl-18{grid-column:auto/span 18}.panel-grid .g-col-xl-19{grid-column:auto/span 19}.panel-grid .g-col-xl-20{grid-column:auto/span 20}.panel-grid .g-col-xl-21{grid-column:auto/span 21}.panel-grid .g-col-xl-22{grid-column:auto/span 22}.panel-grid .g-col-xl-23{grid-column:auto/span 23}.panel-grid .g-col-xl-24{grid-column:auto/span 24}.panel-grid .g-start-xl-1{grid-column-start:1}.panel-grid .g-start-xl-2{grid-column-start:2}.panel-grid .g-start-xl-3{grid-column-start:3}.panel-grid .g-start-xl-4{grid-column-start:4}.panel-grid .g-start-xl-5{grid-column-start:5}.panel-grid .g-start-xl-6{grid-column-start:6}.panel-grid .g-start-xl-7{grid-column-start:7}.panel-grid .g-start-xl-8{grid-column-start:8}.panel-grid .g-start-xl-9{grid-column-start:9}.panel-grid .g-start-xl-10{grid-column-start:10}.panel-grid .g-start-xl-11{grid-column-start:11}.panel-grid .g-start-xl-12{grid-column-start:12}.panel-grid .g-start-xl-13{grid-column-start:13}.panel-grid .g-start-xl-14{grid-column-start:14}.panel-grid .g-start-xl-15{grid-column-start:15}.panel-grid .g-start-xl-16{grid-column-start:16}.panel-grid .g-start-xl-17{grid-column-start:17}.panel-grid .g-start-xl-18{grid-column-start:18}.panel-grid .g-start-xl-19{grid-column-start:19}.panel-grid .g-start-xl-20{grid-column-start:20}.panel-grid .g-start-xl-21{grid-column-start:21}.panel-grid .g-start-xl-22{grid-column-start:22}.panel-grid .g-start-xl-23{grid-column-start:23}}@media(min-width: 1400px){.panel-grid .g-col-xxl-1{grid-column:auto/span 1}.panel-grid .g-col-xxl-2{grid-column:auto/span 2}.panel-grid .g-col-xxl-3{grid-column:auto/span 3}.panel-grid .g-col-xxl-4{grid-column:auto/span 4}.panel-grid .g-col-xxl-5{grid-column:auto/span 5}.panel-grid .g-col-xxl-6{grid-column:auto/span 6}.panel-grid .g-col-xxl-7{grid-column:auto/span 7}.panel-grid .g-col-xxl-8{grid-column:auto/span 8}.panel-grid .g-col-xxl-9{grid-column:auto/span 9}.panel-grid .g-col-xxl-10{grid-column:auto/span 10}.panel-grid .g-col-xxl-11{grid-column:auto/span 11}.panel-grid .g-col-xxl-12{grid-column:auto/span 12}.panel-grid .g-col-xxl-13{grid-column:auto/span 13}.panel-grid .g-col-xxl-14{grid-column:auto/span 14}.panel-grid .g-col-xxl-15{grid-column:auto/span 15}.panel-grid .g-col-xxl-16{grid-column:auto/span 16}.panel-grid .g-col-xxl-17{grid-column:auto/span 17}.panel-grid .g-col-xxl-18{grid-column:auto/span 18}.panel-grid .g-col-xxl-19{grid-column:auto/span 19}.panel-grid .g-col-xxl-20{grid-column:auto/span 20}.panel-grid .g-col-xxl-21{grid-column:auto/span 21}.panel-grid .g-col-xxl-22{grid-column:auto/span 22}.panel-grid .g-col-xxl-23{grid-column:auto/span 23}.panel-grid .g-col-xxl-24{grid-column:auto/span 24}.panel-grid .g-start-xxl-1{grid-column-start:1}.panel-grid .g-start-xxl-2{grid-column-start:2}.panel-grid .g-start-xxl-3{grid-column-start:3}.panel-grid .g-start-xxl-4{grid-column-start:4}.panel-grid .g-start-xxl-5{grid-column-start:5}.panel-grid .g-start-xxl-6{grid-column-start:6}.panel-grid .g-start-xxl-7{grid-column-start:7}.panel-grid .g-start-xxl-8{grid-column-start:8}.panel-grid .g-start-xxl-9{grid-column-start:9}.panel-grid .g-start-xxl-10{grid-column-start:10}.panel-grid .g-start-xxl-11{grid-column-start:11}.panel-grid .g-start-xxl-12{grid-column-start:12}.panel-grid .g-start-xxl-13{grid-column-start:13}.panel-grid .g-start-xxl-14{grid-column-start:14}.panel-grid .g-start-xxl-15{grid-column-start:15}.panel-grid .g-start-xxl-16{grid-column-start:16}.panel-grid .g-start-xxl-17{grid-column-start:17}.panel-grid .g-start-xxl-18{grid-column-start:18}.panel-grid .g-start-xxl-19{grid-column-start:19}.panel-grid .g-start-xxl-20{grid-column-start:20}.panel-grid .g-start-xxl-21{grid-column-start:21}.panel-grid .g-start-xxl-22{grid-column-start:22}.panel-grid .g-start-xxl-23{grid-column-start:23}}main{margin-top:1em;margin-bottom:1em}h1,.h1,h2,.h2{color:inherit;margin-top:2rem;margin-bottom:1rem;font-weight:600}h1.title,.title.h1{margin-top:0}main.content>p:has(+section){margin-bottom:2rem}main.content>section:first-of-type>h2:nth-child(1),main.content>section:first-of-type>.h2:nth-child(1){margin-top:0}h2,.h2{border-bottom:1px solid rgb(221.7,222.3,222.9);padding-bottom:.5rem}h3,.h3{font-weight:600}h3,.h3,h4,.h4{opacity:.9;margin-top:1.5rem}h5,.h5,h6,.h6{opacity:.9}.header-section-number{color:hsl(210,10.8108108108%,39.5098039216%)}.nav-link.active .header-section-number{color:inherit}mark,.mark{padding:0em}.panel-caption,.figure-caption,.subfigure-caption,.table-caption,figcaption,caption{font-size:.9rem;color:hsl(210,10.8108108108%,39.5098039216%)}.quarto-layout-cell[data-ref-parent] caption{color:hsl(210,10.8108108108%,39.5098039216%)}.column-margin figcaption,.margin-caption,div.aside,aside,.column-margin{color:hsl(210,10.8108108108%,39.5098039216%);font-size:.825rem}.panel-caption.margin-caption{text-align:inherit}.column-margin.column-container p{margin-bottom:0}.column-margin.column-container>*:not(.collapse):first-child{padding-bottom:.5em;display:block}.column-margin.column-container>*:not(.collapse):not(:first-child){padding-top:.5em;padding-bottom:.5em;display:block}.column-margin.column-container>*.collapse:not(.show){display:none}@media(min-width: 768px){.column-margin.column-container .callout-margin-content:first-child{margin-top:4.5em}.column-margin.column-container .callout-margin-content-simple:first-child{margin-top:3.5em}}.margin-caption>*{padding-top:.5em;padding-bottom:.5em}@media(max-width: 767.98px){.quarto-layout-row{flex-direction:column}}.nav-tabs .nav-item{margin-top:1px;cursor:pointer}.tab-content{margin-top:0px;border-left:rgb(221.7,222.3,222.9) 1px solid;border-right:rgb(221.7,222.3,222.9) 1px solid;border-bottom:rgb(221.7,222.3,222.9) 1px solid;margin-left:0;padding:1em;margin-bottom:1em}@media(max-width: 767.98px){.layout-sidebar{margin-left:0;margin-right:0}}.panel-sidebar,.panel-sidebar .form-control,.panel-input,.panel-input .form-control,.selectize-dropdown{font-size:.9rem}.panel-sidebar .form-control,.panel-input .form-control{padding-top:.1rem}.tab-pane div.sourceCode{margin-top:0px}.tab-pane>p{padding-top:0}.tab-pane>p:nth-child(1){padding-top:0}.tab-pane>p:last-child{margin-bottom:0}.tab-pane>pre:last-child{margin-bottom:0}.tab-content>.tab-pane:not(.active){display:none !important}div.sourceCode{background-color:rgba(233,236,239,.65);border:1px solid rgba(233,236,239,.65);border-radius:.375rem}pre.sourceCode{background-color:rgba(0,0,0,0)}pre.sourceCode{border:none;font-size:.875em;overflow-y:visible !important;padding:.4em}div.sourceCode{overflow-y:hidden}.callout div.sourceCode{margin-left:initial}.blockquote{font-size:inherit;padding-left:1rem;padding-right:1.5rem;color:hsl(210,10.8108108108%,39.5098039216%)}.blockquote h1:first-child,.blockquote .h1:first-child,.blockquote h2:first-child,.blockquote .h2:first-child,.blockquote h3:first-child,.blockquote .h3:first-child,.blockquote h4:first-child,.blockquote .h4:first-child,.blockquote h5:first-child,.blockquote .h5:first-child{margin-top:0}pre{background-color:initial;padding:initial;border:initial}p code.sourceCode,li code.sourceCode,td code.sourceCode{background-color:rgba(233,236,239,.65)}p pre code:not(.sourceCode),li pre code:not(.sourceCode),pre code:not(.sourceCode){background-color:initial}p code:not(.sourceCode),li code:not(.sourceCode),td code:not(.sourceCode){background-color:rgba(233,236,239,.65);padding:.2em}nav p code:not(.sourceCode),nav li code:not(.sourceCode),nav td code:not(.sourceCode){background-color:rgba(0,0,0,0);padding:0}td code:not(.sourceCode){white-space:pre-wrap}#quarto-embedded-source-code-modal>.modal-dialog{max-width:1000px;padding-left:1.75rem;padding-right:1.75rem}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body{padding:0}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-body div.sourceCode{margin:0;padding:.2rem .2rem;border-radius:0px;border:none}#quarto-embedded-source-code-modal>.modal-dialog>.modal-content>.modal-header{padding:.7rem}.code-tools-button{font-size:1rem;padding:.15rem .15rem;margin-left:5px;color:rgba(33,37,41,.75);background-color:rgba(0,0,0,0);transition:initial;cursor:pointer}.code-tools-button>.bi::before{display:inline-block;height:1rem;width:1rem;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:1rem 1rem}.code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button>.bi::before{background-image:url('data:image/svg+xml,')}#quarto-embedded-source-code-modal .code-copy-button-checked>.bi::before{background-image:url('data:image/svg+xml,')}.sidebar{will-change:top;transition:top 200ms linear;position:sticky;overflow-y:auto;padding-top:1.2em;max-height:100vh}.sidebar.toc-left,.sidebar.margin-sidebar{top:0px;padding-top:1em}.sidebar.quarto-banner-title-block-sidebar>*{padding-top:1.65em}figure .quarto-notebook-link{margin-top:.5em}.quarto-notebook-link{font-size:.75em;color:rgba(33,37,41,.75);margin-bottom:1em;text-decoration:none;display:block}.quarto-notebook-link:hover{text-decoration:underline;color:#0d6efd}.quarto-notebook-link::before{display:inline-block;height:.75rem;width:.75rem;margin-bottom:0em;margin-right:.25em;content:"";vertical-align:-0.125em;background-image:url('data:image/svg+xml,');background-repeat:no-repeat;background-size:.75rem .75rem}.toc-actions i.bi,.quarto-code-links i.bi,.quarto-other-links i.bi,.quarto-alternate-notebooks i.bi,.quarto-alternate-formats i.bi{margin-right:.4em;font-size:.8rem}.quarto-other-links-text-target .quarto-code-links i.bi,.quarto-other-links-text-target .quarto-other-links i.bi{margin-right:.2em}.quarto-other-formats-text-target .quarto-alternate-formats i.bi{margin-right:.1em}.toc-actions i.bi.empty,.quarto-code-links i.bi.empty,.quarto-other-links i.bi.empty,.quarto-alternate-notebooks i.bi.empty,.quarto-alternate-formats i.bi.empty{padding-left:1em}.quarto-notebook h2,.quarto-notebook .h2{border-bottom:none}.quarto-notebook .cell-container{display:flex}.quarto-notebook .cell-container .cell{flex-grow:4}.quarto-notebook .cell-container .cell-decorator{padding-top:1.5em;padding-right:1em;text-align:right}.quarto-notebook .cell-container.code-fold .cell-decorator{padding-top:3em}.quarto-notebook .cell-code code{white-space:pre-wrap}.quarto-notebook .cell .cell-output-stderr pre code,.quarto-notebook .cell .cell-output-stdout pre code{white-space:pre-wrap;overflow-wrap:anywhere}.toc-actions,.quarto-alternate-formats,.quarto-other-links,.quarto-code-links,.quarto-alternate-notebooks{padding-left:0em}.sidebar .toc-actions a,.sidebar .quarto-alternate-formats a,.sidebar .quarto-other-links a,.sidebar .quarto-code-links a,.sidebar .quarto-alternate-notebooks a,.sidebar nav[role=doc-toc] a{text-decoration:none}.sidebar .toc-actions a:hover,.sidebar .quarto-other-links a:hover,.sidebar .quarto-code-links a:hover,.sidebar .quarto-alternate-formats a:hover,.sidebar .quarto-alternate-notebooks a:hover{color:#0d6efd}.sidebar .toc-actions h2,.sidebar .toc-actions .h2,.sidebar .quarto-code-links h2,.sidebar .quarto-code-links .h2,.sidebar .quarto-other-links h2,.sidebar .quarto-other-links .h2,.sidebar .quarto-alternate-notebooks h2,.sidebar .quarto-alternate-notebooks .h2,.sidebar .quarto-alternate-formats h2,.sidebar .quarto-alternate-formats .h2,.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-weight:500;margin-bottom:.2rem;margin-top:.3rem;font-family:inherit;border-bottom:0;padding-bottom:0;padding-top:0px}.sidebar .toc-actions>h2,.sidebar .toc-actions>.h2,.sidebar .quarto-code-links>h2,.sidebar .quarto-code-links>.h2,.sidebar .quarto-other-links>h2,.sidebar .quarto-other-links>.h2,.sidebar .quarto-alternate-notebooks>h2,.sidebar .quarto-alternate-notebooks>.h2,.sidebar .quarto-alternate-formats>h2,.sidebar .quarto-alternate-formats>.h2{font-size:.8rem}.sidebar nav[role=doc-toc]>h2,.sidebar nav[role=doc-toc]>.h2{font-size:.875rem}.sidebar nav[role=doc-toc]>ul a{border-left:1px solid #e9ecef;padding-left:.6rem}.sidebar .toc-actions h2>ul a,.sidebar .toc-actions .h2>ul a,.sidebar .quarto-code-links h2>ul a,.sidebar .quarto-code-links .h2>ul a,.sidebar .quarto-other-links h2>ul a,.sidebar .quarto-other-links .h2>ul a,.sidebar .quarto-alternate-notebooks h2>ul a,.sidebar .quarto-alternate-notebooks .h2>ul a,.sidebar .quarto-alternate-formats h2>ul a,.sidebar .quarto-alternate-formats .h2>ul a{border-left:none;padding-left:.6rem}.sidebar .toc-actions ul a:empty,.sidebar .quarto-code-links ul a:empty,.sidebar .quarto-other-links ul a:empty,.sidebar .quarto-alternate-notebooks ul a:empty,.sidebar .quarto-alternate-formats ul a:empty,.sidebar nav[role=doc-toc]>ul a:empty{display:none}.sidebar .toc-actions ul,.sidebar .quarto-code-links ul,.sidebar .quarto-other-links ul,.sidebar .quarto-alternate-notebooks ul,.sidebar .quarto-alternate-formats ul{padding-left:0;list-style:none}.sidebar nav[role=doc-toc] ul{list-style:none;padding-left:0;list-style:none}.sidebar nav[role=doc-toc]>ul{margin-left:.45em}.quarto-margin-sidebar nav[role=doc-toc]{padding-left:.5em}.sidebar .toc-actions>ul,.sidebar .quarto-code-links>ul,.sidebar .quarto-other-links>ul,.sidebar .quarto-alternate-notebooks>ul,.sidebar .quarto-alternate-formats>ul{font-size:.8rem}.sidebar nav[role=doc-toc]>ul{font-size:.875rem}.sidebar .toc-actions ul li a,.sidebar .quarto-code-links ul li a,.sidebar .quarto-other-links ul li a,.sidebar .quarto-alternate-notebooks ul li a,.sidebar .quarto-alternate-formats ul li a,.sidebar nav[role=doc-toc]>ul li a{line-height:1.1rem;padding-bottom:.2rem;padding-top:.2rem;color:inherit}.sidebar nav[role=doc-toc] ul>li>ul>li>a{padding-left:1.2em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>a{padding-left:2.4em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>a{padding-left:3.6em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:4.8em}.sidebar nav[role=doc-toc] ul>li>ul>li>ul>li>ul>li>ul>li>ul>li>a{padding-left:6em}.sidebar nav[role=doc-toc] ul>li>a.active,.sidebar nav[role=doc-toc] ul>li>ul>li>a.active{border-left:1px solid #0d6efd;color:#0d6efd !important}.sidebar nav[role=doc-toc] ul>li>a:hover,.sidebar nav[role=doc-toc] ul>li>ul>li>a:hover{color:#0d6efd !important}kbd,.kbd{color:#212529;background-color:#f8f9fa;border:1px solid;border-radius:5px;border-color:rgb(221.7,222.3,222.9)}.quarto-appendix-contents div.hanging-indent{margin-left:0em}.quarto-appendix-contents div.hanging-indent div.csl-entry{margin-left:1em;text-indent:-1em}.citation a,.footnote-ref{text-decoration:none}.footnotes ol{padding-left:1em}.tippy-content>*{margin-bottom:.7em}.tippy-content>*:last-child{margin-bottom:0}.callout{margin-top:1.25rem;margin-bottom:1.25rem;border-radius:.375rem;overflow-wrap:break-word}.callout .callout-title-container{overflow-wrap:anywhere}.callout.callout-style-simple{padding:.4em .7em;border-left:5px solid;border-right:1px solid rgb(221.7,222.3,222.9);border-top:1px solid rgb(221.7,222.3,222.9);border-bottom:1px solid rgb(221.7,222.3,222.9)}.callout.callout-style-default{border-left:5px solid;border-right:1px solid rgb(221.7,222.3,222.9);border-top:1px solid rgb(221.7,222.3,222.9);border-bottom:1px solid rgb(221.7,222.3,222.9)}.callout .callout-body-container{flex-grow:1}.callout.callout-style-simple .callout-body{font-size:.9rem;font-weight:400;margin-bottom:-0.4em;margin-top:.5em}.callout.callout-style-default .callout-body{font-size:.9rem;font-weight:400}.callout:not(.no-icon).callout-titled.callout-style-simple .callout-body{padding-left:1.6em}.callout.callout-titled>.callout-header{padding-top:.2em;margin-bottom:-0.2em}.callout.callout-empty-content>.callout-header{margin-bottom:0em;border-bottom-right-radius:calc(0.375rem + -1px)}.callout>.callout-header.collapsed{border-bottom-right-radius:calc(0.375rem + -1px)}.callout.callout-style-simple>div.callout-header{border-bottom:none;font-size:.9rem;font-weight:600;opacity:75%}.callout.callout-style-default>div.callout-header{border-bottom:none;font-weight:600;opacity:85%;font-size:.9rem;padding-left:.5em;padding-right:.5em;border-top-right-radius:calc(0.375rem + -1px)}.callout.callout-style-default .callout-body{padding-left:.5em;padding-right:.5em}.callout.callout-style-default .callout-body>:first-child{padding-top:.5rem;margin-top:0}.callout>div.callout-header[data-bs-toggle=collapse]{cursor:pointer}.callout.callout-style-default .callout-header[aria-expanded=false],.callout.callout-style-default .callout-header[aria-expanded=true]{padding-top:0px;margin-bottom:0px;align-items:center}.callout.callout-titled .callout-body>:last-child:not(.sourceCode),.callout.callout-titled .callout-body>div>:last-child:not(.sourceCode){padding-bottom:.5rem;margin-bottom:0}.callout:not(.callout-titled) .callout-body>:first-child,.callout:not(.callout-titled) .callout-body>div>:first-child{margin-top:.25rem}.callout:not(.callout-titled) .callout-body>:last-child,.callout:not(.callout-titled) .callout-body>div>:last-child{margin-bottom:.2rem}.callout.callout-style-simple .callout-icon::before,.callout.callout-style-simple .callout-toggle::before{height:1rem;width:1rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.callout.callout-style-default .callout-icon::before,.callout.callout-style-default .callout-toggle::before{height:.9rem;width:.9rem;display:inline-block;content:"";background-repeat:no-repeat;background-size:.9rem .9rem}.callout.callout-style-default .callout-toggle::before{margin-top:5px}.callout .callout-btn-toggle .callout-toggle::before{transition:transform .2s linear}.callout .callout-header[aria-expanded=false] .callout-toggle::before{transform:rotate(-90deg)}.callout .callout-header[aria-expanded=true] .callout-toggle::before{transform:none}.callout.callout-style-simple:not(.no-icon) div.callout-icon-container{padding-top:.2em;padding-right:.55em}.callout.callout-style-default:not(.no-icon) div.callout-icon-container{padding-top:.1em;padding-right:.35em}.callout.callout-style-default:not(.no-icon) div.callout-title-container{margin-top:-1px}.callout.callout-style-default.callout-caution:not(.no-icon) div.callout-icon-container{padding-top:.3em;padding-right:.35em}.callout>.callout-body>.callout-icon-container>.no-icon,.callout>.callout-header>.callout-icon-container>.no-icon{display:none}div.callout.callout{border-left-color:rgba(33,37,41,.75)}div.callout.callout-style-default>.callout-header{background-color:rgba(33,37,41,.75)}div.callout-note.callout{border-left-color:#0d6efd}div.callout-note.callout-style-default>.callout-header{background-color:rgb(230.8,240.5,254.8)}div.callout-note:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-note .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-tip.callout{border-left-color:#198754}div.callout-tip.callout-style-default>.callout-header{background-color:rgb(232,243,237.9)}div.callout-tip:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-tip .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-warning.callout{border-left-color:#ffc107}div.callout-warning.callout-style-default>.callout-header{background-color:rgb(255,248.8,230.2)}div.callout-warning:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-warning .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-caution.callout{border-left-color:#fd7e14}div.callout-caution.callout-style-default>.callout-header{background-color:rgb(254.8,242.1,231.5)}div.callout-caution:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-caution .callout-toggle::before{background-image:url('data:image/svg+xml,')}div.callout-important.callout{border-left-color:#dc3545}div.callout-important.callout-style-default>.callout-header{background-color:rgb(251.5,234.8,236.4)}div.callout-important:not(.callout-titled) .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important.callout-titled .callout-icon::before{background-image:url('data:image/svg+xml,');}div.callout-important .callout-toggle::before{background-image:url('data:image/svg+xml,')}.quarto-toggle-container{display:flex;align-items:center}.quarto-reader-toggle .bi::before,.quarto-color-scheme-toggle .bi::before{display:inline-block;height:1rem;width:1rem;content:"";background-repeat:no-repeat;background-size:1rem 1rem}.sidebar-navigation{padding-left:20px}.navbar{background-color:#517699;color:rgb(253.26,253.63,253.98)}.navbar .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.navbar .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle:not(.alternate) .bi::before{background-image:url('data:image/svg+xml,')}.sidebar-navigation .quarto-color-scheme-toggle.alternate .bi::before{background-image:url('data:image/svg+xml,')}.quarto-sidebar-toggle{border-color:rgb(221.7,222.3,222.9);border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;border-style:solid;border-width:1px;overflow:hidden;border-top-width:0px;padding-top:0px !important}.quarto-sidebar-toggle-title{cursor:pointer;padding-bottom:2px;margin-left:.25em;text-align:center;font-weight:400;font-size:.775em}#quarto-content .quarto-sidebar-toggle{background:hsl(0,0%,98%)}#quarto-content .quarto-sidebar-toggle-title{color:#212529}.quarto-sidebar-toggle-icon{color:rgb(221.7,222.3,222.9);margin-right:.5em;float:right;transition:transform .2s ease}.quarto-sidebar-toggle-icon::before{padding-top:5px}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-icon{transform:rotate(-180deg)}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-title{border-bottom:solid rgb(221.7,222.3,222.9) 1px}.quarto-sidebar-toggle-contents{background-color:#fff;padding-right:10px;padding-left:10px;margin-top:0px !important;transition:max-height .5s ease}.quarto-sidebar-toggle.expanded .quarto-sidebar-toggle-contents{padding-top:1em;padding-bottom:10px}@media(max-width: 767.98px){.sidebar-menu-container{padding-bottom:5em}}.quarto-sidebar-toggle:not(.expanded) .quarto-sidebar-toggle-contents{padding-top:0px !important;padding-bottom:0px}nav[role=doc-toc]{z-index:1020}#quarto-sidebar>*,nav[role=doc-toc]>*{transition:opacity .1s ease,border .1s ease}#quarto-sidebar.slow>*,nav[role=doc-toc].slow>*{transition:opacity .4s ease,border .4s ease}.quarto-color-scheme-toggle:not(.alternate).top-right .bi::before{background-image:url('data:image/svg+xml,')}.quarto-color-scheme-toggle.alternate.top-right .bi::before{background-image:url('data:image/svg+xml,')}#quarto-appendix.default{border-top:1px solid rgb(221.7,222.3,222.9)}#quarto-appendix.default{background-color:#fff;padding-top:1.5em;margin-top:2em;z-index:998}#quarto-appendix.default .quarto-appendix-heading{margin-top:0;line-height:1.4em;font-weight:600;opacity:.9;border-bottom:none;margin-bottom:0}#quarto-appendix.default .footnotes ol,#quarto-appendix.default .footnotes ol li>p:last-of-type,#quarto-appendix.default .quarto-appendix-contents>p:last-of-type{margin-bottom:0}#quarto-appendix.default .footnotes ol{margin-left:.5em}#quarto-appendix.default .quarto-appendix-secondary-label{margin-bottom:.4em}#quarto-appendix.default .quarto-appendix-bibtex{font-size:.7em;padding:1em;border:solid 1px rgb(221.7,222.3,222.9);margin-bottom:1em}#quarto-appendix.default .quarto-appendix-bibtex code.sourceCode{white-space:pre-wrap}#quarto-appendix.default .quarto-appendix-citeas{font-size:.9em;padding:1em;border:solid 1px rgb(221.7,222.3,222.9);margin-bottom:1em}#quarto-appendix.default .quarto-appendix-heading{font-size:1em !important}#quarto-appendix.default *[role=doc-endnotes]>ol,#quarto-appendix.default .quarto-appendix-contents>*:not(h2):not(.h2){font-size:.9em}#quarto-appendix.default section{padding-bottom:1.5em}#quarto-appendix.default section *[role=doc-endnotes],#quarto-appendix.default section>*:not(a){opacity:.9;word-wrap:break-word}.btn.btn-quarto,div.cell-output-display .btn-quarto{--bs-btn-color: rgb(253.53, 253.62, 253.7);--bs-btn-bg: #6c757d;--bs-btn-border-color: #6c757d;--bs-btn-hover-color: rgb(253.53, 253.62, 253.7);--bs-btn-hover-bg: rgb(130.05, 137.7, 144.5);--bs-btn-hover-border-color: rgb(122.7, 130.8, 138);--bs-btn-focus-shadow-rgb: 130, 137, 144;--bs-btn-active-color: #000;--bs-btn-active-bg: rgb(137.4, 144.6, 151);--bs-btn-active-border-color: rgb(122.7, 130.8, 138);--bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);--bs-btn-disabled-color: #ffffff;--bs-btn-disabled-bg: #6c757d;--bs-btn-disabled-border-color: #6c757d}nav.quarto-secondary-nav.color-navbar{background-color:#517699;color:rgb(253.26,253.63,253.98)}nav.quarto-secondary-nav.color-navbar h1,nav.quarto-secondary-nav.color-navbar .h1,nav.quarto-secondary-nav.color-navbar .quarto-btn-toggle{color:rgb(253.26,253.63,253.98)}@media(max-width: 991.98px){body.nav-sidebar .quarto-title-banner{margin-bottom:0;padding-bottom:1em}body.nav-sidebar #title-block-header{margin-block-end:0}}p.subtitle{margin-top:.25em;margin-bottom:.5em}code a:any-link{color:inherit;text-decoration-color:#6c757d}/*! light */div.observablehq table thead tr th{background-color:var(--bs-body-bg)}input,button,select,optgroup,textarea{background-color:var(--bs-body-bg)}.code-annotated .code-copy-button{margin-right:1.25em;margin-top:0;padding-bottom:0;padding-top:3px}.code-annotation-gutter-bg{background-color:#fff}.code-annotation-gutter{background-color:rgba(233,236,239,.65)}.code-annotation-gutter,.code-annotation-gutter-bg{height:100%;width:calc(20px + .5em);position:absolute;top:0;right:0}dl.code-annotation-container-grid dt{margin-right:1em;margin-top:.25rem}dl.code-annotation-container-grid dt{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:rgb(55.7432432432,62.5,69.2567567568);border:solid rgb(55.7432432432,62.5,69.2567567568) 1px;border-radius:50%;height:22px;width:22px;line-height:22px;font-size:11px;text-align:center;vertical-align:middle;text-decoration:none}dl.code-annotation-container-grid dt[data-target-cell]{cursor:pointer}dl.code-annotation-container-grid dt[data-target-cell].code-annotation-active{color:#fff;border:solid #aaa 1px;background-color:#aaa}pre.code-annotation-code{padding-top:0;padding-bottom:0}pre.code-annotation-code code{z-index:3}#code-annotation-line-highlight-gutter{width:100%;border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}#code-annotation-line-highlight{margin-left:-4em;width:calc(100% + 4em);border-top:solid rgba(170,170,170,.2666666667) 1px;border-bottom:solid rgba(170,170,170,.2666666667) 1px;z-index:2;background-color:rgba(170,170,170,.1333333333)}code.sourceCode .code-annotation-anchor.code-annotation-active{background-color:var(--quarto-hl-normal-color, #aaaaaa);border:solid var(--quarto-hl-normal-color, #aaaaaa) 1px;color:#e9ecef;font-weight:bolder}code.sourceCode .code-annotation-anchor{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;color:var(--quarto-hl-co-color);border:solid var(--quarto-hl-co-color) 1px;border-radius:50%;height:18px;width:18px;font-size:9px;margin-top:2px}code.sourceCode button.code-annotation-anchor{padding:2px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none}code.sourceCode a.code-annotation-anchor{line-height:18px;text-align:center;vertical-align:middle;cursor:default;text-decoration:none}@media print{.page-columns .column-screen-inset{grid-column:page-start-inset/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset table{background:#fff}.page-columns .column-screen-inset-left{grid-column:page-start-inset/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-inset-left table{background:#fff}.page-columns .column-screen-inset-right{grid-column:body-content-start/page-end-inset;z-index:998;opacity:.999}.page-columns .column-screen-inset-right table{background:#fff}.page-columns .column-screen{grid-column:page-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen table{background:#fff}.page-columns .column-screen-left{grid-column:page-start/body-content-end;z-index:998;opacity:.999}.page-columns .column-screen-left table{background:#fff}.page-columns .column-screen-right{grid-column:body-content-start/page-end;z-index:998;opacity:.999}.page-columns .column-screen-right table{background:#fff}.page-columns .column-screen-inset-shaded{grid-column:page-start-inset/page-end-inset;padding:1em;background:#f8f9fa;z-index:998;opacity:.999;margin-bottom:1em}}.quarto-video{margin-bottom:1em}.table{border-top:1px solid rgb(210.6,211.4,212.2);border-bottom:1px solid rgb(210.6,211.4,212.2)}.table>thead{border-top-width:0;border-bottom:1px solid #909294}.table a{word-break:break-word}.table>:not(caption)>*>*{background-color:unset;color:unset}#quarto-document-content .crosstalk-input .checkbox input[type=checkbox],#quarto-document-content .crosstalk-input .checkbox-inline input[type=checkbox]{position:unset;margin-top:unset;margin-left:unset}#quarto-document-content .row{margin-left:unset;margin-right:unset}.quarto-xref{white-space:nowrap}#quarto-draft-alert{margin-top:0px;margin-bottom:0px;padding:.3em;text-align:center;font-size:.9em}#quarto-draft-alert i{margin-right:.3em}#quarto-back-to-top{z-index:1000}pre{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}pre code{font-family:inherit;font-size:inherit;font-weight:inherit}code{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:0.875em;font-weight:400}a{background-color:rgba(0,0,0,0);font-weight:400;text-decoration:underline}.screen-reader-only{position:absolute;clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;width:1px}a.external:after{content:"";background-image:url('data:image/svg+xml,');background-size:contain;background-repeat:no-repeat;background-position:center center;margin-left:.2em;padding-right:.75em}div.sourceCode code a.external:after{content:none}a.external:after:hover{cursor:pointer}.quarto-ext-icon{display:inline-block;font-size:.75em;padding-left:.3em}.code-with-filename .code-with-filename-file{margin-bottom:0;padding-bottom:2px;padding-top:2px;padding-left:.7em;border:var(--quarto-border-width) solid var(--quarto-border-color);border-radius:var(--quarto-border-radius);border-bottom:0;border-bottom-left-radius:0%;border-bottom-right-radius:0%}.code-with-filename div.sourceCode,.reveal .code-with-filename div.sourceCode{margin-top:0;border-top-left-radius:0%;border-top-right-radius:0%}.code-with-filename .code-with-filename-file pre{margin-bottom:0}.code-with-filename .code-with-filename-file{background-color:rgba(219,219,219,.8)}.quarto-dark .code-with-filename .code-with-filename-file{background-color:#555}.code-with-filename .code-with-filename-file strong{font-weight:400}.quarto-title-banner{margin-bottom:1em;color:rgb(253.26,253.63,253.98);background:#517699}.quarto-title-banner a{color:rgb(253.26,253.63,253.98)}.quarto-title-banner h1,.quarto-title-banner .h1,.quarto-title-banner h2,.quarto-title-banner .h2{color:rgb(253.26,253.63,253.98)}.quarto-title-banner .code-tools-button{color:rgb(188.9556521739,202.9995652174,216.2843478261)}.quarto-title-banner .code-tools-button:hover{color:rgb(253.26,253.63,253.98)}.quarto-title-banner .code-tools-button>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .code-tools-button:hover>.bi::before{background-image:url('data:image/svg+xml,')}.quarto-title-banner .quarto-title .title{font-weight:600}.quarto-title-banner .quarto-categories{margin-top:.75em}@media(min-width: 992px){.quarto-title-banner{padding-top:2.5em;padding-bottom:2.5em}}@media(max-width: 991.98px){.quarto-title-banner{padding-top:1em;padding-bottom:1em}}@media(max-width: 767.98px){body.hypothesis-enabled #title-block-header>*{padding-right:20px}}main.quarto-banner-title-block>section:first-child>h2,main.quarto-banner-title-block>section:first-child>.h2,main.quarto-banner-title-block>section:first-child>h3,main.quarto-banner-title-block>section:first-child>.h3,main.quarto-banner-title-block>section:first-child>h4,main.quarto-banner-title-block>section:first-child>.h4{margin-top:0}.quarto-title .quarto-categories{display:flex;flex-wrap:wrap;row-gap:.5em;column-gap:.4em;padding-bottom:.5em;margin-top:.75em}.quarto-title .quarto-categories .quarto-category{padding:.25em .75em;font-size:.65em;text-transform:uppercase;border:solid 1px;border-radius:.375rem;opacity:.6}.quarto-title .quarto-categories .quarto-category a{color:inherit}.quarto-title-meta-container{display:grid;grid-template-columns:1fr auto}.quarto-title-meta-column-end{display:flex;flex-direction:column;padding-left:1em}.quarto-title-meta-column-end a .bi{margin-right:.3em}#title-block-header.quarto-title-block.default .quarto-title-meta{display:grid;grid-template-columns:repeat(2, 1fr);grid-column-gap:1em}#title-block-header.quarto-title-block.default .quarto-title .title{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-author-orcid img{margin-top:-0.2em;height:.8em;width:.8em}#title-block-header.quarto-title-block.default .quarto-title-author-email{opacity:.7}#title-block-header.quarto-title-block.default .quarto-description p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p,#title-block-header.quarto-title-block.default .quarto-title-authors p,#title-block-header.quarto-title-block.default .quarto-title-affiliations p{margin-bottom:.1em}#title-block-header.quarto-title-block.default .quarto-title-meta-heading{text-transform:uppercase;margin-top:1em;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-contents{font-size:.9em}#title-block-header.quarto-title-block.default .quarto-title-meta-contents p.affiliation:last-of-type{margin-bottom:.1em}#title-block-header.quarto-title-block.default p.affiliation{margin-bottom:.1em}#title-block-header.quarto-title-block.default .keywords,#title-block-header.quarto-title-block.default .description,#title-block-header.quarto-title-block.default .abstract{margin-top:0}#title-block-header.quarto-title-block.default .keywords>p,#title-block-header.quarto-title-block.default .description>p,#title-block-header.quarto-title-block.default .abstract>p{font-size:.9em}#title-block-header.quarto-title-block.default .keywords>p:last-of-type,#title-block-header.quarto-title-block.default .description>p:last-of-type,#title-block-header.quarto-title-block.default .abstract>p:last-of-type{margin-bottom:0}#title-block-header.quarto-title-block.default .keywords .block-title,#title-block-header.quarto-title-block.default .description .block-title,#title-block-header.quarto-title-block.default .abstract .block-title{margin-top:1em;text-transform:uppercase;font-size:.8em;opacity:.8;font-weight:400}#title-block-header.quarto-title-block.default .quarto-title-meta-author{display:grid;grid-template-columns:minmax(max-content, 1fr) 1fr;grid-column-gap:1em}.quarto-title-tools-only{display:flex;justify-content:right}:root{--quarto-scss-export-title-banner-color: ;--quarto-scss-export-title-banner-bg: ;--quarto-scss-export-btn-code-copy-color: #5E5E5E;--quarto-scss-export-btn-code-copy-color-active: #4758AB;--quarto-scss-export-sidebar-bg: #fff;--quarto-scss-export-blue: #0d6efd;--quarto-scss-export-primary: #0d6efd;--quarto-scss-export-white: #ffffff;--quarto-scss-export-gray-200: #e9ecef;--quarto-scss-export-gray-100: #f8f9fa;--quarto-scss-export-gray-900: #212529;--quarto-scss-export-link-color: #0d6efd;--quarto-scss-export-link-color-bg: transparent;--quarto-scss-export-code-color: #7d12ba;--quarto-scss-export-code-bg: #f8f9fa;--quarto-scss-export-toc-color: #0d6efd;--quarto-scss-export-toc-active-border: #0d6efd;--quarto-scss-export-toc-inactive-border: #e9ecef;--quarto-scss-export-navbar-default: #517699;--quarto-scss-export-navbar-hl-override: false;--quarto-scss-export-navbar-bg: #517699;--quarto-scss-export-btn-bg: #6c757d;--quarto-scss-export-btn-fg: rgb(253.53, 253.62, 253.7);--quarto-scss-export-body-contrast-bg: #ffffff;--quarto-scss-export-body-contrast-color: #212529;--quarto-scss-export-navbar-fg: rgb(253.26, 253.63, 253.98);--quarto-scss-export-navbar-hl: rgb(252.58, 253.55, 254.98);--quarto-scss-export-navbar-brand: rgb(253.26, 253.63, 253.98);--quarto-scss-export-navbar-brand-hl: rgb(252.58, 253.55, 254.98);--quarto-scss-export-navbar-toggler-border-color: rgba(253.26, 253.63, 253.98, 0);--quarto-scss-export-navbar-hover-color: rgba(252.58, 253.55, 254.98, 0.8);--quarto-scss-export-navbar-disabled-color: rgba(253.26, 253.63, 253.98, 0.75);--quarto-scss-export-sidebar-fg: rgb(89.25, 89.25, 89.25);--quarto-scss-export-sidebar-hl: ;--quarto-scss-export-title-block-color: #212529;--quarto-scss-export-title-block-contast-color: #ffffff;--quarto-scss-export-footer-bg: #fff;--quarto-scss-export-footer-fg: rgb(117.3, 117.3, 117.3);--quarto-scss-export-popover-bg: #ffffff;--quarto-scss-export-input-bg: #ffffff;--quarto-scss-export-input-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-code-annotation-higlight-color: rgba(170, 170, 170, 0.2666666667);--quarto-scss-export-code-annotation-higlight-bg: rgba(170, 170, 170, 0.1333333333);--quarto-scss-export-table-group-separator-color: #909294;--quarto-scss-export-table-group-separator-color-lighter: rgb(210.6, 211.4, 212.2);--quarto-scss-export-link-decoration: underline;--quarto-scss-export-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-table-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-gray-300: #dee2e6;--quarto-scss-export-gray-400: #ced4da;--quarto-scss-export-gray-500: #adb5bd;--quarto-scss-export-gray-600: #6c757d;--quarto-scss-export-gray-700: #495057;--quarto-scss-export-gray-800: #343a40;--quarto-scss-export-black: #000;--quarto-scss-export-indigo: #6610f2;--quarto-scss-export-purple: #6f42c1;--quarto-scss-export-pink: #d63384;--quarto-scss-export-red: #dc3545;--quarto-scss-export-orange: #fd7e14;--quarto-scss-export-yellow: #ffc107;--quarto-scss-export-green: #198754;--quarto-scss-export-teal: #20c997;--quarto-scss-export-cyan: #0dcaf0;--quarto-scss-export-color-contrast-dark: #000;--quarto-scss-export-color-contrast-light: #ffffff;--quarto-scss-export-blue-100: rgb(206.6, 226, 254.6);--quarto-scss-export-blue-200: rgb(158.2, 197, 254.2);--quarto-scss-export-blue-300: rgb(109.8, 168, 253.8);--quarto-scss-export-blue-400: rgb(61.4, 139, 253.4);--quarto-scss-export-blue-500: #0d6efd;--quarto-scss-export-blue-600: rgb(10.4, 88, 202.4);--quarto-scss-export-blue-700: rgb(7.8, 66, 151.8);--quarto-scss-export-blue-800: rgb(5.2, 44, 101.2);--quarto-scss-export-blue-900: rgb(2.6, 22, 50.6);--quarto-scss-export-indigo-100: rgb(224.4, 207.2, 252.4);--quarto-scss-export-indigo-200: rgb(193.8, 159.4, 249.8);--quarto-scss-export-indigo-300: rgb(163.2, 111.6, 247.2);--quarto-scss-export-indigo-400: rgb(132.6, 63.8, 244.6);--quarto-scss-export-indigo-500: #6610f2;--quarto-scss-export-indigo-600: rgb(81.6, 12.8, 193.6);--quarto-scss-export-indigo-700: rgb(61.2, 9.6, 145.2);--quarto-scss-export-indigo-800: rgb(40.8, 6.4, 96.8);--quarto-scss-export-indigo-900: rgb(20.4, 3.2, 48.4);--quarto-scss-export-purple-100: rgb(226.2, 217.2, 242.6);--quarto-scss-export-purple-200: rgb(197.4, 179.4, 230.2);--quarto-scss-export-purple-300: rgb(168.6, 141.6, 217.8);--quarto-scss-export-purple-400: rgb(139.8, 103.8, 205.4);--quarto-scss-export-purple-500: #6f42c1;--quarto-scss-export-purple-600: rgb(88.8, 52.8, 154.4);--quarto-scss-export-purple-700: rgb(66.6, 39.6, 115.8);--quarto-scss-export-purple-800: rgb(44.4, 26.4, 77.2);--quarto-scss-export-purple-900: rgb(22.2, 13.2, 38.6);--quarto-scss-export-pink-100: rgb(246.8, 214.2, 230.4);--quarto-scss-export-pink-200: rgb(238.6, 173.4, 205.8);--quarto-scss-export-pink-300: rgb(230.4, 132.6, 181.2);--quarto-scss-export-pink-400: rgb(222.2, 91.8, 156.6);--quarto-scss-export-pink-500: #d63384;--quarto-scss-export-pink-600: rgb(171.2, 40.8, 105.6);--quarto-scss-export-pink-700: rgb(128.4, 30.6, 79.2);--quarto-scss-export-pink-800: rgb(85.6, 20.4, 52.8);--quarto-scss-export-pink-900: rgb(42.8, 10.2, 26.4);--quarto-scss-export-red-100: rgb(248, 214.6, 217.8);--quarto-scss-export-red-200: rgb(241, 174.2, 180.6);--quarto-scss-export-red-300: rgb(234, 133.8, 143.4);--quarto-scss-export-red-400: rgb(227, 93.4, 106.2);--quarto-scss-export-red-500: #dc3545;--quarto-scss-export-red-600: rgb(176, 42.4, 55.2);--quarto-scss-export-red-700: rgb(132, 31.8, 41.4);--quarto-scss-export-red-800: rgb(88, 21.2, 27.6);--quarto-scss-export-red-900: rgb(44, 10.6, 13.8);--quarto-scss-export-orange-100: rgb(254.6, 229.2, 208);--quarto-scss-export-orange-200: rgb(254.2, 203.4, 161);--quarto-scss-export-orange-300: rgb(253.8, 177.6, 114);--quarto-scss-export-orange-400: rgb(253.4, 151.8, 67);--quarto-scss-export-orange-500: #fd7e14;--quarto-scss-export-orange-600: rgb(202.4, 100.8, 16);--quarto-scss-export-orange-700: rgb(151.8, 75.6, 12);--quarto-scss-export-orange-800: rgb(101.2, 50.4, 8);--quarto-scss-export-orange-900: rgb(50.6, 25.2, 4);--quarto-scss-export-yellow-100: rgb(255, 242.6, 205.4);--quarto-scss-export-yellow-200: rgb(255, 230.2, 155.8);--quarto-scss-export-yellow-300: rgb(255, 217.8, 106.2);--quarto-scss-export-yellow-400: rgb(255, 205.4, 56.6);--quarto-scss-export-yellow-500: #ffc107;--quarto-scss-export-yellow-600: rgb(204, 154.4, 5.6);--quarto-scss-export-yellow-700: rgb(153, 115.8, 4.2);--quarto-scss-export-yellow-800: rgb(102, 77.2, 2.8);--quarto-scss-export-yellow-900: rgb(51, 38.6, 1.4);--quarto-scss-export-green-100: rgb(209, 231, 220.8);--quarto-scss-export-green-200: rgb(163, 207, 186.6);--quarto-scss-export-green-300: rgb(117, 183, 152.4);--quarto-scss-export-green-400: rgb(71, 159, 118.2);--quarto-scss-export-green-500: #198754;--quarto-scss-export-green-600: rgb(20, 108, 67.2);--quarto-scss-export-green-700: rgb(15, 81, 50.4);--quarto-scss-export-green-800: rgb(10, 54, 33.6);--quarto-scss-export-green-900: rgb(5, 27, 16.8);--quarto-scss-export-teal-100: rgb(210.4, 244.2, 234.2);--quarto-scss-export-teal-200: rgb(165.8, 233.4, 213.4);--quarto-scss-export-teal-300: rgb(121.2, 222.6, 192.6);--quarto-scss-export-teal-400: rgb(76.6, 211.8, 171.8);--quarto-scss-export-teal-500: #20c997;--quarto-scss-export-teal-600: rgb(25.6, 160.8, 120.8);--quarto-scss-export-teal-700: rgb(19.2, 120.6, 90.6);--quarto-scss-export-teal-800: rgb(12.8, 80.4, 60.4);--quarto-scss-export-teal-900: rgb(6.4, 40.2, 30.2);--quarto-scss-export-cyan-100: rgb(206.6, 244.4, 252);--quarto-scss-export-cyan-200: rgb(158.2, 233.8, 249);--quarto-scss-export-cyan-300: rgb(109.8, 223.2, 246);--quarto-scss-export-cyan-400: rgb(61.4, 212.6, 243);--quarto-scss-export-cyan-500: #0dcaf0;--quarto-scss-export-cyan-600: rgb(10.4, 161.6, 192);--quarto-scss-export-cyan-700: rgb(7.8, 121.2, 144);--quarto-scss-export-cyan-800: rgb(5.2, 80.8, 96);--quarto-scss-export-cyan-900: rgb(2.6, 40.4, 48);--quarto-scss-export-default: #dee2e6;--quarto-scss-export-secondary: #6c757d;--quarto-scss-export-success: #198754;--quarto-scss-export-info: #0dcaf0;--quarto-scss-export-warning: #ffc107;--quarto-scss-export-danger: #dc3545;--quarto-scss-export-light: #f8f9fa;--quarto-scss-export-dark: #212529;--quarto-scss-export-primary-text-emphasis: rgb(5.2, 44, 101.2);--quarto-scss-export-secondary-text-emphasis: rgb(43.2, 46.8, 50);--quarto-scss-export-success-text-emphasis: rgb(10, 54, 33.6);--quarto-scss-export-info-text-emphasis: rgb(5.2, 80.8, 96);--quarto-scss-export-warning-text-emphasis: rgb(102, 77.2, 2.8);--quarto-scss-export-danger-text-emphasis: rgb(88, 21.2, 27.6);--quarto-scss-export-light-text-emphasis: #495057;--quarto-scss-export-dark-text-emphasis: #495057;--quarto-scss-export-primary-bg-subtle: rgb(206.6, 226, 254.6);--quarto-scss-export-secondary-bg-subtle: rgb(225.6, 227.4, 229);--quarto-scss-export-success-bg-subtle: rgb(209, 231, 220.8);--quarto-scss-export-info-bg-subtle: rgb(206.6, 244.4, 252);--quarto-scss-export-warning-bg-subtle: rgb(255, 242.6, 205.4);--quarto-scss-export-danger-bg-subtle: rgb(248, 214.6, 217.8);--quarto-scss-export-light-bg-subtle: rgb(251.5, 252, 252.5);--quarto-scss-export-dark-bg-subtle: #ced4da;--quarto-scss-export-primary-border-subtle: rgb(158.2, 197, 254.2);--quarto-scss-export-secondary-border-subtle: rgb(196.2, 199.8, 203);--quarto-scss-export-success-border-subtle: rgb(163, 207, 186.6);--quarto-scss-export-info-border-subtle: rgb(158.2, 233.8, 249);--quarto-scss-export-warning-border-subtle: rgb(255, 230.2, 155.8);--quarto-scss-export-danger-border-subtle: rgb(241, 174.2, 180.6);--quarto-scss-export-light-border-subtle: #e9ecef;--quarto-scss-export-dark-border-subtle: #adb5bd;--quarto-scss-export-body-text-align: ;--quarto-scss-export-body-color: #212529;--quarto-scss-export-body-bg: #ffffff;--quarto-scss-export-body-secondary-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-body-secondary-bg: #e9ecef;--quarto-scss-export-body-tertiary-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-body-tertiary-bg: #f8f9fa;--quarto-scss-export-body-emphasis-color: #000;--quarto-scss-export-link-hover-color: rgb(10.4, 88, 202.4);--quarto-scss-export-link-hover-decoration: ;--quarto-scss-export-border-color-translucent: rgba(0, 0, 0, 0.175);--quarto-scss-export-component-active-bg: #0d6efd;--quarto-scss-export-component-active-color: #ffffff;--quarto-scss-export-focus-ring-color: rgba(13, 110, 253, 0.25);--quarto-scss-export-headings-font-family: ;--quarto-scss-export-headings-font-style: ;--quarto-scss-export-display-font-family: ;--quarto-scss-export-display-font-style: ;--quarto-scss-export-text-muted: rgba(33, 37, 41, 0.75);--quarto-scss-export-blockquote-footer-color: #6c757d;--quarto-scss-export-blockquote-border-color: #e9ecef;--quarto-scss-export-hr-bg-color: ;--quarto-scss-export-hr-height: ;--quarto-scss-export-hr-border-color: ;--quarto-scss-export-legend-font-weight: ;--quarto-scss-export-mark-bg: rgb(255, 242.6, 205.4);--quarto-scss-export-table-color: #212529;--quarto-scss-export-table-bg: #ffffff;--quarto-scss-export-table-accent-bg: transparent;--quarto-scss-export-table-th-font-weight: ;--quarto-scss-export-table-striped-color: #212529;--quarto-scss-export-table-striped-bg: rgba(0, 0, 0, 0.05);--quarto-scss-export-table-active-color: #212529;--quarto-scss-export-table-active-bg: rgba(0, 0, 0, 0.1);--quarto-scss-export-table-hover-color: #212529;--quarto-scss-export-table-hover-bg: rgba(0, 0, 0, 0.075);--quarto-scss-export-table-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-btn-font-family: ;--quarto-scss-export-input-btn-focus-color: rgba(13, 110, 253, 0.25);--quarto-scss-export-btn-color: #212529;--quarto-scss-export-btn-font-family: ;--quarto-scss-export-btn-white-space: ;--quarto-scss-export-btn-link-color: #0d6efd;--quarto-scss-export-btn-link-hover-color: rgb(10.4, 88, 202.4);--quarto-scss-export-btn-link-disabled-color: #6c757d;--quarto-scss-export-form-text-font-style: ;--quarto-scss-export-form-text-font-weight: ;--quarto-scss-export-form-text-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-label-font-size: ;--quarto-scss-export-form-label-font-style: ;--quarto-scss-export-form-label-font-weight: ;--quarto-scss-export-form-label-color: ;--quarto-scss-export-input-font-family: ;--quarto-scss-export-input-disabled-color: ;--quarto-scss-export-input-disabled-bg: #e9ecef;--quarto-scss-export-input-disabled-border-color: ;--quarto-scss-export-input-color: #212529;--quarto-scss-export-input-focus-bg: #ffffff;--quarto-scss-export-input-focus-border-color: rgb(134, 182.5, 254);--quarto-scss-export-input-focus-color: #212529;--quarto-scss-export-input-placeholder-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-input-plaintext-color: #212529;--quarto-scss-export-form-check-label-color: ;--quarto-scss-export-form-check-transition: ;--quarto-scss-export-form-check-input-bg: #ffffff;--quarto-scss-export-form-check-input-focus-border: rgb(134, 182.5, 254);--quarto-scss-export-form-check-input-checked-color: #ffffff;--quarto-scss-export-form-check-input-checked-bg-color: #0d6efd;--quarto-scss-export-form-check-input-checked-border-color: #0d6efd;--quarto-scss-export-form-check-input-indeterminate-color: #ffffff;--quarto-scss-export-form-check-input-indeterminate-bg-color: #0d6efd;--quarto-scss-export-form-check-input-indeterminate-border-color: #0d6efd;--quarto-scss-export-form-switch-color: rgba(0, 0, 0, 0.25);--quarto-scss-export-form-switch-focus-color: rgb(134, 182.5, 254);--quarto-scss-export-form-switch-checked-color: #ffffff;--quarto-scss-export-input-group-addon-color: #212529;--quarto-scss-export-input-group-addon-bg: #f8f9fa;--quarto-scss-export-input-group-addon-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-form-select-font-family: ;--quarto-scss-export-form-select-color: #212529;--quarto-scss-export-form-select-bg: #ffffff;--quarto-scss-export-form-select-disabled-color: ;--quarto-scss-export-form-select-disabled-bg: #e9ecef;--quarto-scss-export-form-select-disabled-border-color: ;--quarto-scss-export-form-select-indicator-color: #343a40;--quarto-scss-export-form-select-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-form-select-focus-border-color: rgb(134, 182.5, 254);--quarto-scss-export-form-range-track-bg: #f8f9fa;--quarto-scss-export-form-range-thumb-bg: #0d6efd;--quarto-scss-export-form-range-thumb-active-bg: rgb(182.4, 211.5, 254.4);--quarto-scss-export-form-range-thumb-disabled-bg: rgba(33, 37, 41, 0.75);--quarto-scss-export-form-file-button-color: #212529;--quarto-scss-export-form-file-button-bg: #f8f9fa;--quarto-scss-export-form-file-button-hover-bg: #e9ecef;--quarto-scss-export-form-floating-label-disabled-color: #6c757d;--quarto-scss-export-form-feedback-font-style: ;--quarto-scss-export-form-feedback-valid-color: #198754;--quarto-scss-export-form-feedback-invalid-color: #dc3545;--quarto-scss-export-form-feedback-icon-valid-color: #198754;--quarto-scss-export-form-feedback-icon-invalid-color: #dc3545;--quarto-scss-export-form-valid-color: #198754;--quarto-scss-export-form-valid-border-color: #198754;--quarto-scss-export-form-invalid-color: #dc3545;--quarto-scss-export-form-invalid-border-color: #dc3545;--quarto-scss-export-nav-link-font-size: ;--quarto-scss-export-nav-link-font-weight: ;--quarto-scss-export-nav-link-color: #0d6efd;--quarto-scss-export-nav-link-hover-color: rgb(10.4, 88, 202.4);--quarto-scss-export-nav-link-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-nav-tabs-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-nav-tabs-link-hover-border-color: #e9ecef #e9ecef rgb(221.7, 222.3, 222.9);--quarto-scss-export-nav-tabs-link-active-color: #000;--quarto-scss-export-nav-tabs-link-active-bg: #ffffff;--quarto-scss-export-nav-pills-link-active-bg: #0d6efd;--quarto-scss-export-nav-pills-link-active-color: #ffffff;--quarto-scss-export-nav-underline-link-active-color: #000;--quarto-scss-export-navbar-padding-x: ;--quarto-scss-export-navbar-light-contrast: #ffffff;--quarto-scss-export-navbar-dark-contrast: #ffffff;--quarto-scss-export-navbar-light-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-navbar-dark-icon-color: rgba(255, 255, 255, 0.75);--quarto-scss-export-dropdown-color: #212529;--quarto-scss-export-dropdown-bg: #ffffff;--quarto-scss-export-dropdown-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-link-color: #212529;--quarto-scss-export-dropdown-link-hover-color: #212529;--quarto-scss-export-dropdown-link-hover-bg: #f8f9fa;--quarto-scss-export-dropdown-link-active-bg: #0d6efd;--quarto-scss-export-dropdown-link-active-color: #ffffff;--quarto-scss-export-dropdown-link-disabled-color: rgba(33, 37, 41, 0.5);--quarto-scss-export-dropdown-header-color: #6c757d;--quarto-scss-export-dropdown-dark-color: #dee2e6;--quarto-scss-export-dropdown-dark-bg: #343a40;--quarto-scss-export-dropdown-dark-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-divider-bg: rgba(0, 0, 0, 0.175);--quarto-scss-export-dropdown-dark-box-shadow: ;--quarto-scss-export-dropdown-dark-link-color: #dee2e6;--quarto-scss-export-dropdown-dark-link-hover-color: #ffffff;--quarto-scss-export-dropdown-dark-link-hover-bg: rgba(255, 255, 255, 0.15);--quarto-scss-export-dropdown-dark-link-active-color: #ffffff;--quarto-scss-export-dropdown-dark-link-active-bg: #0d6efd;--quarto-scss-export-dropdown-dark-link-disabled-color: #adb5bd;--quarto-scss-export-dropdown-dark-header-color: #adb5bd;--quarto-scss-export-pagination-color: #0d6efd;--quarto-scss-export-pagination-bg: #ffffff;--quarto-scss-export-pagination-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-pagination-focus-color: rgb(10.4, 88, 202.4);--quarto-scss-export-pagination-focus-bg: #e9ecef;--quarto-scss-export-pagination-hover-color: rgb(10.4, 88, 202.4);--quarto-scss-export-pagination-hover-bg: #f8f9fa;--quarto-scss-export-pagination-hover-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-pagination-active-color: #ffffff;--quarto-scss-export-pagination-active-bg: #0d6efd;--quarto-scss-export-pagination-active-border-color: #0d6efd;--quarto-scss-export-pagination-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-pagination-disabled-bg: #e9ecef;--quarto-scss-export-pagination-disabled-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-card-title-color: ;--quarto-scss-export-card-subtitle-color: ;--quarto-scss-export-card-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-card-box-shadow: ;--quarto-scss-export-card-cap-bg: rgba(33, 37, 41, 0.03);--quarto-scss-export-card-cap-color: ;--quarto-scss-export-card-height: ;--quarto-scss-export-card-color: ;--quarto-scss-export-card-bg: #ffffff;--quarto-scss-export-accordion-color: #212529;--quarto-scss-export-accordion-bg: #ffffff;--quarto-scss-export-accordion-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-accordion-button-color: #212529;--quarto-scss-export-accordion-button-bg: #ffffff;--quarto-scss-export-accordion-button-active-bg: rgb(206.6, 226, 254.6);--quarto-scss-export-accordion-button-active-color: rgb(5.2, 44, 101.2);--quarto-scss-export-accordion-button-focus-border-color: rgb(134, 182.5, 254);--quarto-scss-export-accordion-icon-color: #212529;--quarto-scss-export-accordion-icon-active-color: rgb(5.2, 44, 101.2);--quarto-scss-export-tooltip-color: #ffffff;--quarto-scss-export-tooltip-bg: #000;--quarto-scss-export-tooltip-margin: ;--quarto-scss-export-tooltip-arrow-color: ;--quarto-scss-export-form-feedback-tooltip-line-height: ;--quarto-scss-export-popover-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-popover-header-bg: #e9ecef;--quarto-scss-export-popover-body-color: #212529;--quarto-scss-export-popover-arrow-color: #ffffff;--quarto-scss-export-popover-arrow-outer-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-color: ;--quarto-scss-export-toast-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-toast-header-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-toast-header-background-color: rgba(255, 255, 255, 0.85);--quarto-scss-export-toast-header-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-badge-color: #ffffff;--quarto-scss-export-modal-content-color: ;--quarto-scss-export-modal-content-bg: #ffffff;--quarto-scss-export-modal-content-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-modal-backdrop-bg: #000;--quarto-scss-export-modal-header-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-modal-footer-bg: ;--quarto-scss-export-modal-footer-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-progress-bg: #e9ecef;--quarto-scss-export-progress-bar-color: #ffffff;--quarto-scss-export-progress-bar-bg: #0d6efd;--quarto-scss-export-list-group-color: #212529;--quarto-scss-export-list-group-bg: #ffffff;--quarto-scss-export-list-group-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-list-group-hover-bg: #f8f9fa;--quarto-scss-export-list-group-active-bg: #0d6efd;--quarto-scss-export-list-group-active-color: #ffffff;--quarto-scss-export-list-group-active-border-color: #0d6efd;--quarto-scss-export-list-group-disabled-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-disabled-bg: #ffffff;--quarto-scss-export-list-group-action-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-list-group-action-hover-color: #000;--quarto-scss-export-list-group-action-active-color: #212529;--quarto-scss-export-list-group-action-active-bg: #e9ecef;--quarto-scss-export-thumbnail-bg: #ffffff;--quarto-scss-export-thumbnail-border-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-figure-caption-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-font-size: ;--quarto-scss-export-breadcrumb-bg: ;--quarto-scss-export-breadcrumb-divider-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-active-color: rgba(33, 37, 41, 0.75);--quarto-scss-export-breadcrumb-border-radius: ;--quarto-scss-export-carousel-control-color: #ffffff;--quarto-scss-export-carousel-indicator-active-bg: #ffffff;--quarto-scss-export-carousel-caption-color: #ffffff;--quarto-scss-export-carousel-dark-indicator-active-bg: #000;--quarto-scss-export-carousel-dark-caption-color: #000;--quarto-scss-export-btn-close-color: #000;--quarto-scss-export-offcanvas-border-color: rgba(0, 0, 0, 0.175);--quarto-scss-export-offcanvas-bg-color: #ffffff;--quarto-scss-export-offcanvas-color: #212529;--quarto-scss-export-offcanvas-backdrop-bg: #000;--quarto-scss-export-code-color-dark: white;--quarto-scss-export-kbd-color: #ffffff;--quarto-scss-export-kbd-bg: #212529;--quarto-scss-export-nested-kbd-font-weight: ;--quarto-scss-export-pre-bg: #f8f9fa;--quarto-scss-export-pre-color: #000;--quarto-scss-export-bslib-page-sidebar-title-bg: #517699;--quarto-scss-export-bslib-page-sidebar-title-color: #ffffff;--quarto-scss-export-bslib-sidebar-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.05);--quarto-scss-export-bslib-sidebar-toggle-bg: rgba(var(--bs-emphasis-color-rgb, 0, 0, 0), 0.1);--quarto-scss-export-mermaid-bg-color: #ffffff;--quarto-scss-export-mermaid-edge-color: #6c757d;--quarto-scss-export-mermaid-node-fg-color: #212529;--quarto-scss-export-mermaid-fg-color: #212529;--quarto-scss-export-mermaid-fg-color--lighter: rgb(55.7432432432, 62.5, 69.2567567568);--quarto-scss-export-mermaid-fg-color--lightest: rgb(78.4864864865, 88, 97.5135135135);--quarto-scss-export-mermaid-label-bg-color: #ffffff;--quarto-scss-export-mermaid-label-fg-color: #0d6efd;--quarto-scss-export-mermaid-node-bg-color: rgba(13, 110, 253, 0.1);--quarto-scss-export-code-block-border-left-color: rgb(221.7, 222.3, 222.9);--quarto-scss-export-callout-color-note: #0d6efd;--quarto-scss-export-callout-color-tip: #198754;--quarto-scss-export-callout-color-important: #dc3545;--quarto-scss-export-callout-color-caution: #fd7e14;--quarto-scss-export-callout-color-warning: #ffc107} \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.css b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.css new file mode 100644 index 0000000..82b40f5 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.css @@ -0,0 +1,2106 @@ +/*! + * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/) + * Copyright 2019-2024 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE) + */ + +@font-face { + font-display: block; + font-family: "bootstrap-icons"; + src: +url("./bootstrap-icons.woff?e34853135f9e39acf64315236852cd5a") format("woff"); +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: bootstrap-icons !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bi-123::before { content: "\f67f"; } +.bi-alarm-fill::before { content: "\f101"; } +.bi-alarm::before { content: "\f102"; } +.bi-align-bottom::before { content: "\f103"; } +.bi-align-center::before { content: "\f104"; } +.bi-align-end::before { content: "\f105"; } +.bi-align-middle::before { content: "\f106"; } +.bi-align-start::before { content: "\f107"; } +.bi-align-top::before { content: "\f108"; } +.bi-alt::before { content: "\f109"; } +.bi-app-indicator::before { content: "\f10a"; } +.bi-app::before { content: "\f10b"; } +.bi-archive-fill::before { content: "\f10c"; } +.bi-archive::before { content: "\f10d"; } +.bi-arrow-90deg-down::before { content: "\f10e"; } +.bi-arrow-90deg-left::before { content: "\f10f"; } +.bi-arrow-90deg-right::before { content: "\f110"; } +.bi-arrow-90deg-up::before { content: "\f111"; } +.bi-arrow-bar-down::before { content: "\f112"; } +.bi-arrow-bar-left::before { content: "\f113"; } +.bi-arrow-bar-right::before { content: "\f114"; } +.bi-arrow-bar-up::before { content: "\f115"; } +.bi-arrow-clockwise::before { content: "\f116"; } +.bi-arrow-counterclockwise::before { content: "\f117"; } +.bi-arrow-down-circle-fill::before { content: "\f118"; } +.bi-arrow-down-circle::before { content: "\f119"; } +.bi-arrow-down-left-circle-fill::before { content: "\f11a"; } +.bi-arrow-down-left-circle::before { content: "\f11b"; } +.bi-arrow-down-left-square-fill::before { content: "\f11c"; } +.bi-arrow-down-left-square::before { content: "\f11d"; } +.bi-arrow-down-left::before { content: "\f11e"; } +.bi-arrow-down-right-circle-fill::before { content: "\f11f"; } +.bi-arrow-down-right-circle::before { content: "\f120"; } +.bi-arrow-down-right-square-fill::before { content: "\f121"; } +.bi-arrow-down-right-square::before { content: "\f122"; } +.bi-arrow-down-right::before { content: "\f123"; } +.bi-arrow-down-short::before { content: "\f124"; } +.bi-arrow-down-square-fill::before { content: "\f125"; } +.bi-arrow-down-square::before { content: "\f126"; } +.bi-arrow-down-up::before { content: "\f127"; } +.bi-arrow-down::before { content: "\f128"; } +.bi-arrow-left-circle-fill::before { content: "\f129"; } +.bi-arrow-left-circle::before { content: "\f12a"; } +.bi-arrow-left-right::before { content: "\f12b"; } +.bi-arrow-left-short::before { content: "\f12c"; } +.bi-arrow-left-square-fill::before { content: "\f12d"; } +.bi-arrow-left-square::before { content: "\f12e"; } +.bi-arrow-left::before { content: "\f12f"; } +.bi-arrow-repeat::before { content: "\f130"; } +.bi-arrow-return-left::before { content: "\f131"; } +.bi-arrow-return-right::before { content: "\f132"; } +.bi-arrow-right-circle-fill::before { content: "\f133"; } +.bi-arrow-right-circle::before { content: "\f134"; } +.bi-arrow-right-short::before { content: "\f135"; } +.bi-arrow-right-square-fill::before { content: "\f136"; } +.bi-arrow-right-square::before { content: "\f137"; } +.bi-arrow-right::before { content: "\f138"; } +.bi-arrow-up-circle-fill::before { content: "\f139"; } +.bi-arrow-up-circle::before { content: "\f13a"; } +.bi-arrow-up-left-circle-fill::before { content: "\f13b"; } +.bi-arrow-up-left-circle::before { content: "\f13c"; } +.bi-arrow-up-left-square-fill::before { content: "\f13d"; } +.bi-arrow-up-left-square::before { content: "\f13e"; } +.bi-arrow-up-left::before { content: "\f13f"; } +.bi-arrow-up-right-circle-fill::before { content: "\f140"; } +.bi-arrow-up-right-circle::before { content: "\f141"; } +.bi-arrow-up-right-square-fill::before { content: "\f142"; } +.bi-arrow-up-right-square::before { content: "\f143"; } +.bi-arrow-up-right::before { content: "\f144"; } +.bi-arrow-up-short::before { content: "\f145"; } +.bi-arrow-up-square-fill::before { content: "\f146"; } +.bi-arrow-up-square::before { content: "\f147"; } +.bi-arrow-up::before { content: "\f148"; } +.bi-arrows-angle-contract::before { content: "\f149"; } +.bi-arrows-angle-expand::before { content: "\f14a"; } +.bi-arrows-collapse::before { content: "\f14b"; } +.bi-arrows-expand::before { content: "\f14c"; } +.bi-arrows-fullscreen::before { content: "\f14d"; } +.bi-arrows-move::before { content: "\f14e"; } +.bi-aspect-ratio-fill::before { content: "\f14f"; } +.bi-aspect-ratio::before { content: "\f150"; } +.bi-asterisk::before { content: "\f151"; } +.bi-at::before { content: "\f152"; } +.bi-award-fill::before { content: "\f153"; } +.bi-award::before { content: "\f154"; } +.bi-back::before { content: "\f155"; } +.bi-backspace-fill::before { content: "\f156"; } +.bi-backspace-reverse-fill::before { content: "\f157"; } +.bi-backspace-reverse::before { content: "\f158"; } +.bi-backspace::before { content: "\f159"; } +.bi-badge-3d-fill::before { content: "\f15a"; } +.bi-badge-3d::before { content: "\f15b"; } +.bi-badge-4k-fill::before { content: "\f15c"; } +.bi-badge-4k::before { content: "\f15d"; } +.bi-badge-8k-fill::before { content: "\f15e"; } +.bi-badge-8k::before { content: "\f15f"; } +.bi-badge-ad-fill::before { content: "\f160"; } +.bi-badge-ad::before { content: "\f161"; } +.bi-badge-ar-fill::before { content: "\f162"; } +.bi-badge-ar::before { content: "\f163"; } +.bi-badge-cc-fill::before { content: "\f164"; } +.bi-badge-cc::before { content: "\f165"; } +.bi-badge-hd-fill::before { content: "\f166"; } +.bi-badge-hd::before { content: "\f167"; } +.bi-badge-tm-fill::before { content: "\f168"; } +.bi-badge-tm::before { content: "\f169"; } +.bi-badge-vo-fill::before { content: "\f16a"; } +.bi-badge-vo::before { content: "\f16b"; } +.bi-badge-vr-fill::before { content: "\f16c"; } +.bi-badge-vr::before { content: "\f16d"; } +.bi-badge-wc-fill::before { content: "\f16e"; } +.bi-badge-wc::before { content: "\f16f"; } +.bi-bag-check-fill::before { content: "\f170"; } +.bi-bag-check::before { content: "\f171"; } +.bi-bag-dash-fill::before { content: "\f172"; } +.bi-bag-dash::before { content: "\f173"; } +.bi-bag-fill::before { content: "\f174"; } +.bi-bag-plus-fill::before { content: "\f175"; } +.bi-bag-plus::before { content: "\f176"; } +.bi-bag-x-fill::before { content: "\f177"; } +.bi-bag-x::before { content: "\f178"; } +.bi-bag::before { content: "\f179"; } +.bi-bar-chart-fill::before { content: "\f17a"; } +.bi-bar-chart-line-fill::before { content: "\f17b"; } +.bi-bar-chart-line::before { content: "\f17c"; } +.bi-bar-chart-steps::before { content: "\f17d"; } +.bi-bar-chart::before { content: "\f17e"; } +.bi-basket-fill::before { content: "\f17f"; } +.bi-basket::before { content: "\f180"; } +.bi-basket2-fill::before { content: "\f181"; } +.bi-basket2::before { content: "\f182"; } +.bi-basket3-fill::before { content: "\f183"; } +.bi-basket3::before { content: "\f184"; } +.bi-battery-charging::before { content: "\f185"; } +.bi-battery-full::before { content: "\f186"; } +.bi-battery-half::before { content: "\f187"; } +.bi-battery::before { content: "\f188"; } +.bi-bell-fill::before { content: "\f189"; } +.bi-bell::before { content: "\f18a"; } +.bi-bezier::before { content: "\f18b"; } +.bi-bezier2::before { content: "\f18c"; } +.bi-bicycle::before { content: "\f18d"; } +.bi-binoculars-fill::before { content: "\f18e"; } +.bi-binoculars::before { content: "\f18f"; } +.bi-blockquote-left::before { content: "\f190"; } +.bi-blockquote-right::before { content: "\f191"; } +.bi-book-fill::before { content: "\f192"; } +.bi-book-half::before { content: "\f193"; } +.bi-book::before { content: "\f194"; } +.bi-bookmark-check-fill::before { content: "\f195"; } +.bi-bookmark-check::before { content: "\f196"; } +.bi-bookmark-dash-fill::before { content: "\f197"; } +.bi-bookmark-dash::before { content: "\f198"; } +.bi-bookmark-fill::before { content: "\f199"; } +.bi-bookmark-heart-fill::before { content: "\f19a"; } +.bi-bookmark-heart::before { content: "\f19b"; } +.bi-bookmark-plus-fill::before { content: "\f19c"; } +.bi-bookmark-plus::before { content: "\f19d"; } +.bi-bookmark-star-fill::before { content: "\f19e"; } +.bi-bookmark-star::before { content: "\f19f"; } +.bi-bookmark-x-fill::before { content: "\f1a0"; } +.bi-bookmark-x::before { content: "\f1a1"; } +.bi-bookmark::before { content: "\f1a2"; } +.bi-bookmarks-fill::before { content: "\f1a3"; } +.bi-bookmarks::before { content: "\f1a4"; } +.bi-bookshelf::before { content: "\f1a5"; } +.bi-bootstrap-fill::before { content: "\f1a6"; } +.bi-bootstrap-reboot::before { content: "\f1a7"; } +.bi-bootstrap::before { content: "\f1a8"; } +.bi-border-all::before { content: "\f1a9"; } +.bi-border-bottom::before { content: "\f1aa"; } +.bi-border-center::before { content: "\f1ab"; } +.bi-border-inner::before { content: "\f1ac"; } +.bi-border-left::before { content: "\f1ad"; } +.bi-border-middle::before { content: "\f1ae"; } +.bi-border-outer::before { content: "\f1af"; } +.bi-border-right::before { content: "\f1b0"; } +.bi-border-style::before { content: "\f1b1"; } +.bi-border-top::before { content: "\f1b2"; } +.bi-border-width::before { content: "\f1b3"; } +.bi-border::before { content: "\f1b4"; } +.bi-bounding-box-circles::before { content: "\f1b5"; } +.bi-bounding-box::before { content: "\f1b6"; } +.bi-box-arrow-down-left::before { content: "\f1b7"; } +.bi-box-arrow-down-right::before { content: "\f1b8"; } +.bi-box-arrow-down::before { content: "\f1b9"; } +.bi-box-arrow-in-down-left::before { content: "\f1ba"; } +.bi-box-arrow-in-down-right::before { content: "\f1bb"; } +.bi-box-arrow-in-down::before { content: "\f1bc"; } +.bi-box-arrow-in-left::before { content: "\f1bd"; } +.bi-box-arrow-in-right::before { content: "\f1be"; } +.bi-box-arrow-in-up-left::before { content: "\f1bf"; } +.bi-box-arrow-in-up-right::before { content: "\f1c0"; } +.bi-box-arrow-in-up::before { content: "\f1c1"; } +.bi-box-arrow-left::before { content: "\f1c2"; } +.bi-box-arrow-right::before { content: "\f1c3"; } +.bi-box-arrow-up-left::before { content: "\f1c4"; } +.bi-box-arrow-up-right::before { content: "\f1c5"; } +.bi-box-arrow-up::before { content: "\f1c6"; } +.bi-box-seam::before { content: "\f1c7"; } +.bi-box::before { content: "\f1c8"; } +.bi-braces::before { content: "\f1c9"; } +.bi-bricks::before { content: "\f1ca"; } +.bi-briefcase-fill::before { content: "\f1cb"; } +.bi-briefcase::before { content: "\f1cc"; } +.bi-brightness-alt-high-fill::before { content: "\f1cd"; } +.bi-brightness-alt-high::before { content: "\f1ce"; } +.bi-brightness-alt-low-fill::before { content: "\f1cf"; } +.bi-brightness-alt-low::before { content: "\f1d0"; } +.bi-brightness-high-fill::before { content: "\f1d1"; } +.bi-brightness-high::before { content: "\f1d2"; } +.bi-brightness-low-fill::before { content: "\f1d3"; } +.bi-brightness-low::before { content: "\f1d4"; } +.bi-broadcast-pin::before { content: "\f1d5"; } +.bi-broadcast::before { content: "\f1d6"; } +.bi-brush-fill::before { content: "\f1d7"; } +.bi-brush::before { content: "\f1d8"; } +.bi-bucket-fill::before { content: "\f1d9"; } +.bi-bucket::before { content: "\f1da"; } +.bi-bug-fill::before { content: "\f1db"; } +.bi-bug::before { content: "\f1dc"; } +.bi-building::before { content: "\f1dd"; } +.bi-bullseye::before { content: "\f1de"; } +.bi-calculator-fill::before { content: "\f1df"; } +.bi-calculator::before { content: "\f1e0"; } +.bi-calendar-check-fill::before { content: "\f1e1"; } +.bi-calendar-check::before { content: "\f1e2"; } +.bi-calendar-date-fill::before { content: "\f1e3"; } +.bi-calendar-date::before { content: "\f1e4"; } +.bi-calendar-day-fill::before { content: "\f1e5"; } +.bi-calendar-day::before { content: "\f1e6"; } +.bi-calendar-event-fill::before { content: "\f1e7"; } +.bi-calendar-event::before { content: "\f1e8"; } +.bi-calendar-fill::before { content: "\f1e9"; } +.bi-calendar-minus-fill::before { content: "\f1ea"; } +.bi-calendar-minus::before { content: "\f1eb"; } +.bi-calendar-month-fill::before { content: "\f1ec"; } +.bi-calendar-month::before { content: "\f1ed"; } +.bi-calendar-plus-fill::before { content: "\f1ee"; } +.bi-calendar-plus::before { content: "\f1ef"; } +.bi-calendar-range-fill::before { content: "\f1f0"; } +.bi-calendar-range::before { content: "\f1f1"; } +.bi-calendar-week-fill::before { content: "\f1f2"; } +.bi-calendar-week::before { content: "\f1f3"; } +.bi-calendar-x-fill::before { content: "\f1f4"; } +.bi-calendar-x::before { content: "\f1f5"; } +.bi-calendar::before { content: "\f1f6"; } +.bi-calendar2-check-fill::before { content: "\f1f7"; } +.bi-calendar2-check::before { content: "\f1f8"; } +.bi-calendar2-date-fill::before { content: "\f1f9"; } +.bi-calendar2-date::before { content: "\f1fa"; } +.bi-calendar2-day-fill::before { content: "\f1fb"; } +.bi-calendar2-day::before { content: "\f1fc"; } +.bi-calendar2-event-fill::before { content: "\f1fd"; } +.bi-calendar2-event::before { content: "\f1fe"; } +.bi-calendar2-fill::before { content: "\f1ff"; } +.bi-calendar2-minus-fill::before { content: "\f200"; } +.bi-calendar2-minus::before { content: "\f201"; } +.bi-calendar2-month-fill::before { content: "\f202"; } +.bi-calendar2-month::before { content: "\f203"; } +.bi-calendar2-plus-fill::before { content: "\f204"; } +.bi-calendar2-plus::before { content: "\f205"; } +.bi-calendar2-range-fill::before { content: "\f206"; } +.bi-calendar2-range::before { content: "\f207"; } +.bi-calendar2-week-fill::before { content: "\f208"; } +.bi-calendar2-week::before { content: "\f209"; } +.bi-calendar2-x-fill::before { content: "\f20a"; } +.bi-calendar2-x::before { content: "\f20b"; } +.bi-calendar2::before { content: "\f20c"; } +.bi-calendar3-event-fill::before { content: "\f20d"; } +.bi-calendar3-event::before { content: "\f20e"; } +.bi-calendar3-fill::before { content: "\f20f"; } +.bi-calendar3-range-fill::before { content: "\f210"; } +.bi-calendar3-range::before { content: "\f211"; } +.bi-calendar3-week-fill::before { content: "\f212"; } +.bi-calendar3-week::before { content: "\f213"; } +.bi-calendar3::before { content: "\f214"; } +.bi-calendar4-event::before { content: "\f215"; } +.bi-calendar4-range::before { content: "\f216"; } +.bi-calendar4-week::before { content: "\f217"; } +.bi-calendar4::before { content: "\f218"; } +.bi-camera-fill::before { content: "\f219"; } +.bi-camera-reels-fill::before { content: "\f21a"; } +.bi-camera-reels::before { content: "\f21b"; } +.bi-camera-video-fill::before { content: "\f21c"; } +.bi-camera-video-off-fill::before { content: "\f21d"; } +.bi-camera-video-off::before { content: "\f21e"; } +.bi-camera-video::before { content: "\f21f"; } +.bi-camera::before { content: "\f220"; } +.bi-camera2::before { content: "\f221"; } +.bi-capslock-fill::before { content: "\f222"; } +.bi-capslock::before { content: "\f223"; } +.bi-card-checklist::before { content: "\f224"; } +.bi-card-heading::before { content: "\f225"; } +.bi-card-image::before { content: "\f226"; } +.bi-card-list::before { content: "\f227"; } +.bi-card-text::before { content: "\f228"; } +.bi-caret-down-fill::before { content: "\f229"; } +.bi-caret-down-square-fill::before { content: "\f22a"; } +.bi-caret-down-square::before { content: "\f22b"; } +.bi-caret-down::before { content: "\f22c"; } +.bi-caret-left-fill::before { content: "\f22d"; } +.bi-caret-left-square-fill::before { content: "\f22e"; } +.bi-caret-left-square::before { content: "\f22f"; } +.bi-caret-left::before { content: "\f230"; } +.bi-caret-right-fill::before { content: "\f231"; } +.bi-caret-right-square-fill::before { content: "\f232"; } +.bi-caret-right-square::before { content: "\f233"; } +.bi-caret-right::before { content: "\f234"; } +.bi-caret-up-fill::before { content: "\f235"; } +.bi-caret-up-square-fill::before { content: "\f236"; } +.bi-caret-up-square::before { content: "\f237"; } +.bi-caret-up::before { content: "\f238"; } +.bi-cart-check-fill::before { content: "\f239"; } +.bi-cart-check::before { content: "\f23a"; } +.bi-cart-dash-fill::before { content: "\f23b"; } +.bi-cart-dash::before { content: "\f23c"; } +.bi-cart-fill::before { content: "\f23d"; } +.bi-cart-plus-fill::before { content: "\f23e"; } +.bi-cart-plus::before { content: "\f23f"; } +.bi-cart-x-fill::before { content: "\f240"; } +.bi-cart-x::before { content: "\f241"; } +.bi-cart::before { content: "\f242"; } +.bi-cart2::before { content: "\f243"; } +.bi-cart3::before { content: "\f244"; } +.bi-cart4::before { content: "\f245"; } +.bi-cash-stack::before { content: "\f246"; } +.bi-cash::before { content: "\f247"; } +.bi-cast::before { content: "\f248"; } +.bi-chat-dots-fill::before { content: "\f249"; } +.bi-chat-dots::before { content: "\f24a"; } +.bi-chat-fill::before { content: "\f24b"; } +.bi-chat-left-dots-fill::before { content: "\f24c"; } +.bi-chat-left-dots::before { content: "\f24d"; } +.bi-chat-left-fill::before { content: "\f24e"; } +.bi-chat-left-quote-fill::before { content: "\f24f"; } +.bi-chat-left-quote::before { content: "\f250"; } +.bi-chat-left-text-fill::before { content: "\f251"; } +.bi-chat-left-text::before { content: "\f252"; } +.bi-chat-left::before { content: "\f253"; } +.bi-chat-quote-fill::before { content: "\f254"; } +.bi-chat-quote::before { content: "\f255"; } +.bi-chat-right-dots-fill::before { content: "\f256"; } +.bi-chat-right-dots::before { content: "\f257"; } +.bi-chat-right-fill::before { content: "\f258"; } +.bi-chat-right-quote-fill::before { content: "\f259"; } +.bi-chat-right-quote::before { content: "\f25a"; } +.bi-chat-right-text-fill::before { content: "\f25b"; } +.bi-chat-right-text::before { content: "\f25c"; } +.bi-chat-right::before { content: "\f25d"; } +.bi-chat-square-dots-fill::before { content: "\f25e"; } +.bi-chat-square-dots::before { content: "\f25f"; } +.bi-chat-square-fill::before { content: "\f260"; } +.bi-chat-square-quote-fill::before { content: "\f261"; } +.bi-chat-square-quote::before { content: "\f262"; } +.bi-chat-square-text-fill::before { content: "\f263"; } +.bi-chat-square-text::before { content: "\f264"; } +.bi-chat-square::before { content: "\f265"; } +.bi-chat-text-fill::before { content: "\f266"; } +.bi-chat-text::before { content: "\f267"; } +.bi-chat::before { content: "\f268"; } +.bi-check-all::before { content: "\f269"; } +.bi-check-circle-fill::before { content: "\f26a"; } +.bi-check-circle::before { content: "\f26b"; } +.bi-check-square-fill::before { content: "\f26c"; } +.bi-check-square::before { content: "\f26d"; } +.bi-check::before { content: "\f26e"; } +.bi-check2-all::before { content: "\f26f"; } +.bi-check2-circle::before { content: "\f270"; } +.bi-check2-square::before { content: "\f271"; } +.bi-check2::before { content: "\f272"; } +.bi-chevron-bar-contract::before { content: "\f273"; } +.bi-chevron-bar-down::before { content: "\f274"; } +.bi-chevron-bar-expand::before { content: "\f275"; } +.bi-chevron-bar-left::before { content: "\f276"; } +.bi-chevron-bar-right::before { content: "\f277"; } +.bi-chevron-bar-up::before { content: "\f278"; } +.bi-chevron-compact-down::before { content: "\f279"; } +.bi-chevron-compact-left::before { content: "\f27a"; } +.bi-chevron-compact-right::before { content: "\f27b"; } +.bi-chevron-compact-up::before { content: "\f27c"; } +.bi-chevron-contract::before { content: "\f27d"; } +.bi-chevron-double-down::before { content: "\f27e"; } +.bi-chevron-double-left::before { content: "\f27f"; } +.bi-chevron-double-right::before { content: "\f280"; } +.bi-chevron-double-up::before { content: "\f281"; } +.bi-chevron-down::before { content: "\f282"; } +.bi-chevron-expand::before { content: "\f283"; } +.bi-chevron-left::before { content: "\f284"; } +.bi-chevron-right::before { content: "\f285"; } +.bi-chevron-up::before { content: "\f286"; } +.bi-circle-fill::before { content: "\f287"; } +.bi-circle-half::before { content: "\f288"; } +.bi-circle-square::before { content: "\f289"; } +.bi-circle::before { content: "\f28a"; } +.bi-clipboard-check::before { content: "\f28b"; } +.bi-clipboard-data::before { content: "\f28c"; } +.bi-clipboard-minus::before { content: "\f28d"; } +.bi-clipboard-plus::before { content: "\f28e"; } +.bi-clipboard-x::before { content: "\f28f"; } +.bi-clipboard::before { content: "\f290"; } +.bi-clock-fill::before { content: "\f291"; } +.bi-clock-history::before { content: "\f292"; } +.bi-clock::before { content: "\f293"; } +.bi-cloud-arrow-down-fill::before { content: "\f294"; } +.bi-cloud-arrow-down::before { content: "\f295"; } +.bi-cloud-arrow-up-fill::before { content: "\f296"; } +.bi-cloud-arrow-up::before { content: "\f297"; } +.bi-cloud-check-fill::before { content: "\f298"; } +.bi-cloud-check::before { content: "\f299"; } +.bi-cloud-download-fill::before { content: "\f29a"; } +.bi-cloud-download::before { content: "\f29b"; } +.bi-cloud-drizzle-fill::before { content: "\f29c"; } +.bi-cloud-drizzle::before { content: "\f29d"; } +.bi-cloud-fill::before { content: "\f29e"; } +.bi-cloud-fog-fill::before { content: "\f29f"; } +.bi-cloud-fog::before { content: "\f2a0"; } +.bi-cloud-fog2-fill::before { content: "\f2a1"; } +.bi-cloud-fog2::before { content: "\f2a2"; } +.bi-cloud-hail-fill::before { content: "\f2a3"; } +.bi-cloud-hail::before { content: "\f2a4"; } +.bi-cloud-haze-fill::before { content: "\f2a6"; } +.bi-cloud-haze::before { content: "\f2a7"; } +.bi-cloud-haze2-fill::before { content: "\f2a8"; } +.bi-cloud-lightning-fill::before { content: "\f2a9"; } +.bi-cloud-lightning-rain-fill::before { content: "\f2aa"; } +.bi-cloud-lightning-rain::before { content: "\f2ab"; } +.bi-cloud-lightning::before { content: "\f2ac"; } +.bi-cloud-minus-fill::before { content: "\f2ad"; } +.bi-cloud-minus::before { content: "\f2ae"; } +.bi-cloud-moon-fill::before { content: "\f2af"; } +.bi-cloud-moon::before { content: "\f2b0"; } +.bi-cloud-plus-fill::before { content: "\f2b1"; } +.bi-cloud-plus::before { content: "\f2b2"; } +.bi-cloud-rain-fill::before { content: "\f2b3"; } +.bi-cloud-rain-heavy-fill::before { content: "\f2b4"; } +.bi-cloud-rain-heavy::before { content: "\f2b5"; } +.bi-cloud-rain::before { content: "\f2b6"; } +.bi-cloud-slash-fill::before { content: "\f2b7"; } +.bi-cloud-slash::before { content: "\f2b8"; } +.bi-cloud-sleet-fill::before { content: "\f2b9"; } +.bi-cloud-sleet::before { content: "\f2ba"; } +.bi-cloud-snow-fill::before { content: "\f2bb"; } +.bi-cloud-snow::before { content: "\f2bc"; } +.bi-cloud-sun-fill::before { content: "\f2bd"; } +.bi-cloud-sun::before { content: "\f2be"; } +.bi-cloud-upload-fill::before { content: "\f2bf"; } +.bi-cloud-upload::before { content: "\f2c0"; } +.bi-cloud::before { content: "\f2c1"; } +.bi-clouds-fill::before { content: "\f2c2"; } +.bi-clouds::before { content: "\f2c3"; } +.bi-cloudy-fill::before { content: "\f2c4"; } +.bi-cloudy::before { content: "\f2c5"; } +.bi-code-slash::before { content: "\f2c6"; } +.bi-code-square::before { content: "\f2c7"; } +.bi-code::before { content: "\f2c8"; } +.bi-collection-fill::before { content: "\f2c9"; } +.bi-collection-play-fill::before { content: "\f2ca"; } +.bi-collection-play::before { content: "\f2cb"; } +.bi-collection::before { content: "\f2cc"; } +.bi-columns-gap::before { content: "\f2cd"; } +.bi-columns::before { content: "\f2ce"; } +.bi-command::before { content: "\f2cf"; } +.bi-compass-fill::before { content: "\f2d0"; } +.bi-compass::before { content: "\f2d1"; } +.bi-cone-striped::before { content: "\f2d2"; } +.bi-cone::before { content: "\f2d3"; } +.bi-controller::before { content: "\f2d4"; } +.bi-cpu-fill::before { content: "\f2d5"; } +.bi-cpu::before { content: "\f2d6"; } +.bi-credit-card-2-back-fill::before { content: "\f2d7"; } +.bi-credit-card-2-back::before { content: "\f2d8"; } +.bi-credit-card-2-front-fill::before { content: "\f2d9"; } +.bi-credit-card-2-front::before { content: "\f2da"; } +.bi-credit-card-fill::before { content: "\f2db"; } +.bi-credit-card::before { content: "\f2dc"; } +.bi-crop::before { content: "\f2dd"; } +.bi-cup-fill::before { content: "\f2de"; } +.bi-cup-straw::before { content: "\f2df"; } +.bi-cup::before { content: "\f2e0"; } +.bi-cursor-fill::before { content: "\f2e1"; } +.bi-cursor-text::before { content: "\f2e2"; } +.bi-cursor::before { content: "\f2e3"; } +.bi-dash-circle-dotted::before { content: "\f2e4"; } +.bi-dash-circle-fill::before { content: "\f2e5"; } +.bi-dash-circle::before { content: "\f2e6"; } +.bi-dash-square-dotted::before { content: "\f2e7"; } +.bi-dash-square-fill::before { content: "\f2e8"; } +.bi-dash-square::before { content: "\f2e9"; } +.bi-dash::before { content: "\f2ea"; } +.bi-diagram-2-fill::before { content: "\f2eb"; } +.bi-diagram-2::before { content: "\f2ec"; } +.bi-diagram-3-fill::before { content: "\f2ed"; } +.bi-diagram-3::before { content: "\f2ee"; } +.bi-diamond-fill::before { content: "\f2ef"; } +.bi-diamond-half::before { content: "\f2f0"; } +.bi-diamond::before { content: "\f2f1"; } +.bi-dice-1-fill::before { content: "\f2f2"; } +.bi-dice-1::before { content: "\f2f3"; } +.bi-dice-2-fill::before { content: "\f2f4"; } +.bi-dice-2::before { content: "\f2f5"; } +.bi-dice-3-fill::before { content: "\f2f6"; } +.bi-dice-3::before { content: "\f2f7"; } +.bi-dice-4-fill::before { content: "\f2f8"; } +.bi-dice-4::before { content: "\f2f9"; } +.bi-dice-5-fill::before { content: "\f2fa"; } +.bi-dice-5::before { content: "\f2fb"; } +.bi-dice-6-fill::before { content: "\f2fc"; } +.bi-dice-6::before { content: "\f2fd"; } +.bi-disc-fill::before { content: "\f2fe"; } +.bi-disc::before { content: "\f2ff"; } +.bi-discord::before { content: "\f300"; } +.bi-display-fill::before { content: "\f301"; } +.bi-display::before { content: "\f302"; } +.bi-distribute-horizontal::before { content: "\f303"; } +.bi-distribute-vertical::before { content: "\f304"; } +.bi-door-closed-fill::before { content: "\f305"; } +.bi-door-closed::before { content: "\f306"; } +.bi-door-open-fill::before { content: "\f307"; } +.bi-door-open::before { content: "\f308"; } +.bi-dot::before { content: "\f309"; } +.bi-download::before { content: "\f30a"; } +.bi-droplet-fill::before { content: "\f30b"; } +.bi-droplet-half::before { content: "\f30c"; } +.bi-droplet::before { content: "\f30d"; } +.bi-earbuds::before { content: "\f30e"; } +.bi-easel-fill::before { content: "\f30f"; } +.bi-easel::before { content: "\f310"; } +.bi-egg-fill::before { content: "\f311"; } +.bi-egg-fried::before { content: "\f312"; } +.bi-egg::before { content: "\f313"; } +.bi-eject-fill::before { content: "\f314"; } +.bi-eject::before { content: "\f315"; } +.bi-emoji-angry-fill::before { content: "\f316"; } +.bi-emoji-angry::before { content: "\f317"; } +.bi-emoji-dizzy-fill::before { content: "\f318"; } +.bi-emoji-dizzy::before { content: "\f319"; } +.bi-emoji-expressionless-fill::before { content: "\f31a"; } +.bi-emoji-expressionless::before { content: "\f31b"; } +.bi-emoji-frown-fill::before { content: "\f31c"; } +.bi-emoji-frown::before { content: "\f31d"; } +.bi-emoji-heart-eyes-fill::before { content: "\f31e"; } +.bi-emoji-heart-eyes::before { content: "\f31f"; } +.bi-emoji-laughing-fill::before { content: "\f320"; } +.bi-emoji-laughing::before { content: "\f321"; } +.bi-emoji-neutral-fill::before { content: "\f322"; } +.bi-emoji-neutral::before { content: "\f323"; } +.bi-emoji-smile-fill::before { content: "\f324"; } +.bi-emoji-smile-upside-down-fill::before { content: "\f325"; } +.bi-emoji-smile-upside-down::before { content: "\f326"; } +.bi-emoji-smile::before { content: "\f327"; } +.bi-emoji-sunglasses-fill::before { content: "\f328"; } +.bi-emoji-sunglasses::before { content: "\f329"; } +.bi-emoji-wink-fill::before { content: "\f32a"; } +.bi-emoji-wink::before { content: "\f32b"; } +.bi-envelope-fill::before { content: "\f32c"; } +.bi-envelope-open-fill::before { content: "\f32d"; } +.bi-envelope-open::before { content: "\f32e"; } +.bi-envelope::before { content: "\f32f"; } +.bi-eraser-fill::before { content: "\f330"; } +.bi-eraser::before { content: "\f331"; } +.bi-exclamation-circle-fill::before { content: "\f332"; } +.bi-exclamation-circle::before { content: "\f333"; } +.bi-exclamation-diamond-fill::before { content: "\f334"; } +.bi-exclamation-diamond::before { content: "\f335"; } +.bi-exclamation-octagon-fill::before { content: "\f336"; } +.bi-exclamation-octagon::before { content: "\f337"; } +.bi-exclamation-square-fill::before { content: "\f338"; } +.bi-exclamation-square::before { content: "\f339"; } +.bi-exclamation-triangle-fill::before { content: "\f33a"; } +.bi-exclamation-triangle::before { content: "\f33b"; } +.bi-exclamation::before { content: "\f33c"; } +.bi-exclude::before { content: "\f33d"; } +.bi-eye-fill::before { content: "\f33e"; } +.bi-eye-slash-fill::before { content: "\f33f"; } +.bi-eye-slash::before { content: "\f340"; } +.bi-eye::before { content: "\f341"; } +.bi-eyedropper::before { content: "\f342"; } +.bi-eyeglasses::before { content: "\f343"; } +.bi-facebook::before { content: "\f344"; } +.bi-file-arrow-down-fill::before { content: "\f345"; } +.bi-file-arrow-down::before { content: "\f346"; } +.bi-file-arrow-up-fill::before { content: "\f347"; } +.bi-file-arrow-up::before { content: "\f348"; } +.bi-file-bar-graph-fill::before { content: "\f349"; } +.bi-file-bar-graph::before { content: "\f34a"; } +.bi-file-binary-fill::before { content: "\f34b"; } +.bi-file-binary::before { content: "\f34c"; } +.bi-file-break-fill::before { content: "\f34d"; } +.bi-file-break::before { content: "\f34e"; } +.bi-file-check-fill::before { content: "\f34f"; } +.bi-file-check::before { content: "\f350"; } +.bi-file-code-fill::before { content: "\f351"; } +.bi-file-code::before { content: "\f352"; } +.bi-file-diff-fill::before { content: "\f353"; } +.bi-file-diff::before { content: "\f354"; } +.bi-file-earmark-arrow-down-fill::before { content: "\f355"; } +.bi-file-earmark-arrow-down::before { content: "\f356"; } +.bi-file-earmark-arrow-up-fill::before { content: "\f357"; } +.bi-file-earmark-arrow-up::before { content: "\f358"; } +.bi-file-earmark-bar-graph-fill::before { content: "\f359"; } +.bi-file-earmark-bar-graph::before { content: "\f35a"; } +.bi-file-earmark-binary-fill::before { content: "\f35b"; } +.bi-file-earmark-binary::before { content: "\f35c"; } +.bi-file-earmark-break-fill::before { content: "\f35d"; } +.bi-file-earmark-break::before { content: "\f35e"; } +.bi-file-earmark-check-fill::before { content: "\f35f"; } +.bi-file-earmark-check::before { content: "\f360"; } +.bi-file-earmark-code-fill::before { content: "\f361"; } +.bi-file-earmark-code::before { content: "\f362"; } +.bi-file-earmark-diff-fill::before { content: "\f363"; } +.bi-file-earmark-diff::before { content: "\f364"; } +.bi-file-earmark-easel-fill::before { content: "\f365"; } +.bi-file-earmark-easel::before { content: "\f366"; } +.bi-file-earmark-excel-fill::before { content: "\f367"; } +.bi-file-earmark-excel::before { content: "\f368"; } +.bi-file-earmark-fill::before { content: "\f369"; } +.bi-file-earmark-font-fill::before { content: "\f36a"; } +.bi-file-earmark-font::before { content: "\f36b"; } +.bi-file-earmark-image-fill::before { content: "\f36c"; } +.bi-file-earmark-image::before { content: "\f36d"; } +.bi-file-earmark-lock-fill::before { content: "\f36e"; } +.bi-file-earmark-lock::before { content: "\f36f"; } +.bi-file-earmark-lock2-fill::before { content: "\f370"; } +.bi-file-earmark-lock2::before { content: "\f371"; } +.bi-file-earmark-medical-fill::before { content: "\f372"; } +.bi-file-earmark-medical::before { content: "\f373"; } +.bi-file-earmark-minus-fill::before { content: "\f374"; } +.bi-file-earmark-minus::before { content: "\f375"; } +.bi-file-earmark-music-fill::before { content: "\f376"; } +.bi-file-earmark-music::before { content: "\f377"; } +.bi-file-earmark-person-fill::before { content: "\f378"; } +.bi-file-earmark-person::before { content: "\f379"; } +.bi-file-earmark-play-fill::before { content: "\f37a"; } +.bi-file-earmark-play::before { content: "\f37b"; } +.bi-file-earmark-plus-fill::before { content: "\f37c"; } +.bi-file-earmark-plus::before { content: "\f37d"; } +.bi-file-earmark-post-fill::before { content: "\f37e"; } +.bi-file-earmark-post::before { content: "\f37f"; } +.bi-file-earmark-ppt-fill::before { content: "\f380"; } +.bi-file-earmark-ppt::before { content: "\f381"; } +.bi-file-earmark-richtext-fill::before { content: "\f382"; } +.bi-file-earmark-richtext::before { content: "\f383"; } +.bi-file-earmark-ruled-fill::before { content: "\f384"; } +.bi-file-earmark-ruled::before { content: "\f385"; } +.bi-file-earmark-slides-fill::before { content: "\f386"; } +.bi-file-earmark-slides::before { content: "\f387"; } +.bi-file-earmark-spreadsheet-fill::before { content: "\f388"; } +.bi-file-earmark-spreadsheet::before { content: "\f389"; } +.bi-file-earmark-text-fill::before { content: "\f38a"; } +.bi-file-earmark-text::before { content: "\f38b"; } +.bi-file-earmark-word-fill::before { content: "\f38c"; } +.bi-file-earmark-word::before { content: "\f38d"; } +.bi-file-earmark-x-fill::before { content: "\f38e"; } +.bi-file-earmark-x::before { content: "\f38f"; } +.bi-file-earmark-zip-fill::before { content: "\f390"; } +.bi-file-earmark-zip::before { content: "\f391"; } +.bi-file-earmark::before { content: "\f392"; } +.bi-file-easel-fill::before { content: "\f393"; } +.bi-file-easel::before { content: "\f394"; } +.bi-file-excel-fill::before { content: "\f395"; } +.bi-file-excel::before { content: "\f396"; } +.bi-file-fill::before { content: "\f397"; } +.bi-file-font-fill::before { content: "\f398"; } +.bi-file-font::before { content: "\f399"; } +.bi-file-image-fill::before { content: "\f39a"; } +.bi-file-image::before { content: "\f39b"; } +.bi-file-lock-fill::before { content: "\f39c"; } +.bi-file-lock::before { content: "\f39d"; } +.bi-file-lock2-fill::before { content: "\f39e"; } +.bi-file-lock2::before { content: "\f39f"; } +.bi-file-medical-fill::before { content: "\f3a0"; } +.bi-file-medical::before { content: "\f3a1"; } +.bi-file-minus-fill::before { content: "\f3a2"; } +.bi-file-minus::before { content: "\f3a3"; } +.bi-file-music-fill::before { content: "\f3a4"; } +.bi-file-music::before { content: "\f3a5"; } +.bi-file-person-fill::before { content: "\f3a6"; } +.bi-file-person::before { content: "\f3a7"; } +.bi-file-play-fill::before { content: "\f3a8"; } +.bi-file-play::before { content: "\f3a9"; } +.bi-file-plus-fill::before { content: "\f3aa"; } +.bi-file-plus::before { content: "\f3ab"; } +.bi-file-post-fill::before { content: "\f3ac"; } +.bi-file-post::before { content: "\f3ad"; } +.bi-file-ppt-fill::before { content: "\f3ae"; } +.bi-file-ppt::before { content: "\f3af"; } +.bi-file-richtext-fill::before { content: "\f3b0"; } +.bi-file-richtext::before { content: "\f3b1"; } +.bi-file-ruled-fill::before { content: "\f3b2"; } +.bi-file-ruled::before { content: "\f3b3"; } +.bi-file-slides-fill::before { content: "\f3b4"; } +.bi-file-slides::before { content: "\f3b5"; } +.bi-file-spreadsheet-fill::before { content: "\f3b6"; } +.bi-file-spreadsheet::before { content: "\f3b7"; } +.bi-file-text-fill::before { content: "\f3b8"; } +.bi-file-text::before { content: "\f3b9"; } +.bi-file-word-fill::before { content: "\f3ba"; } +.bi-file-word::before { content: "\f3bb"; } +.bi-file-x-fill::before { content: "\f3bc"; } +.bi-file-x::before { content: "\f3bd"; } +.bi-file-zip-fill::before { content: "\f3be"; } +.bi-file-zip::before { content: "\f3bf"; } +.bi-file::before { content: "\f3c0"; } +.bi-files-alt::before { content: "\f3c1"; } +.bi-files::before { content: "\f3c2"; } +.bi-film::before { content: "\f3c3"; } +.bi-filter-circle-fill::before { content: "\f3c4"; } +.bi-filter-circle::before { content: "\f3c5"; } +.bi-filter-left::before { content: "\f3c6"; } +.bi-filter-right::before { content: "\f3c7"; } +.bi-filter-square-fill::before { content: "\f3c8"; } +.bi-filter-square::before { content: "\f3c9"; } +.bi-filter::before { content: "\f3ca"; } +.bi-flag-fill::before { content: "\f3cb"; } +.bi-flag::before { content: "\f3cc"; } +.bi-flower1::before { content: "\f3cd"; } +.bi-flower2::before { content: "\f3ce"; } +.bi-flower3::before { content: "\f3cf"; } +.bi-folder-check::before { content: "\f3d0"; } +.bi-folder-fill::before { content: "\f3d1"; } +.bi-folder-minus::before { content: "\f3d2"; } +.bi-folder-plus::before { content: "\f3d3"; } +.bi-folder-symlink-fill::before { content: "\f3d4"; } +.bi-folder-symlink::before { content: "\f3d5"; } +.bi-folder-x::before { content: "\f3d6"; } +.bi-folder::before { content: "\f3d7"; } +.bi-folder2-open::before { content: "\f3d8"; } +.bi-folder2::before { content: "\f3d9"; } +.bi-fonts::before { content: "\f3da"; } +.bi-forward-fill::before { content: "\f3db"; } +.bi-forward::before { content: "\f3dc"; } +.bi-front::before { content: "\f3dd"; } +.bi-fullscreen-exit::before { content: "\f3de"; } +.bi-fullscreen::before { content: "\f3df"; } +.bi-funnel-fill::before { content: "\f3e0"; } +.bi-funnel::before { content: "\f3e1"; } +.bi-gear-fill::before { content: "\f3e2"; } +.bi-gear-wide-connected::before { content: "\f3e3"; } +.bi-gear-wide::before { content: "\f3e4"; } +.bi-gear::before { content: "\f3e5"; } +.bi-gem::before { content: "\f3e6"; } +.bi-geo-alt-fill::before { content: "\f3e7"; } +.bi-geo-alt::before { content: "\f3e8"; } +.bi-geo-fill::before { content: "\f3e9"; } +.bi-geo::before { content: "\f3ea"; } +.bi-gift-fill::before { content: "\f3eb"; } +.bi-gift::before { content: "\f3ec"; } +.bi-github::before { content: "\f3ed"; } +.bi-globe::before { content: "\f3ee"; } +.bi-globe2::before { content: "\f3ef"; } +.bi-google::before { content: "\f3f0"; } +.bi-graph-down::before { content: "\f3f1"; } +.bi-graph-up::before { content: "\f3f2"; } +.bi-grid-1x2-fill::before { content: "\f3f3"; } +.bi-grid-1x2::before { content: "\f3f4"; } +.bi-grid-3x2-gap-fill::before { content: "\f3f5"; } +.bi-grid-3x2-gap::before { content: "\f3f6"; } +.bi-grid-3x2::before { content: "\f3f7"; } +.bi-grid-3x3-gap-fill::before { content: "\f3f8"; } +.bi-grid-3x3-gap::before { content: "\f3f9"; } +.bi-grid-3x3::before { content: "\f3fa"; } +.bi-grid-fill::before { content: "\f3fb"; } +.bi-grid::before { content: "\f3fc"; } +.bi-grip-horizontal::before { content: "\f3fd"; } +.bi-grip-vertical::before { content: "\f3fe"; } +.bi-hammer::before { content: "\f3ff"; } +.bi-hand-index-fill::before { content: "\f400"; } +.bi-hand-index-thumb-fill::before { content: "\f401"; } +.bi-hand-index-thumb::before { content: "\f402"; } +.bi-hand-index::before { content: "\f403"; } +.bi-hand-thumbs-down-fill::before { content: "\f404"; } +.bi-hand-thumbs-down::before { content: "\f405"; } +.bi-hand-thumbs-up-fill::before { content: "\f406"; } +.bi-hand-thumbs-up::before { content: "\f407"; } +.bi-handbag-fill::before { content: "\f408"; } +.bi-handbag::before { content: "\f409"; } +.bi-hash::before { content: "\f40a"; } +.bi-hdd-fill::before { content: "\f40b"; } +.bi-hdd-network-fill::before { content: "\f40c"; } +.bi-hdd-network::before { content: "\f40d"; } +.bi-hdd-rack-fill::before { content: "\f40e"; } +.bi-hdd-rack::before { content: "\f40f"; } +.bi-hdd-stack-fill::before { content: "\f410"; } +.bi-hdd-stack::before { content: "\f411"; } +.bi-hdd::before { content: "\f412"; } +.bi-headphones::before { content: "\f413"; } +.bi-headset::before { content: "\f414"; } +.bi-heart-fill::before { content: "\f415"; } +.bi-heart-half::before { content: "\f416"; } +.bi-heart::before { content: "\f417"; } +.bi-heptagon-fill::before { content: "\f418"; } +.bi-heptagon-half::before { content: "\f419"; } +.bi-heptagon::before { content: "\f41a"; } +.bi-hexagon-fill::before { content: "\f41b"; } +.bi-hexagon-half::before { content: "\f41c"; } +.bi-hexagon::before { content: "\f41d"; } +.bi-hourglass-bottom::before { content: "\f41e"; } +.bi-hourglass-split::before { content: "\f41f"; } +.bi-hourglass-top::before { content: "\f420"; } +.bi-hourglass::before { content: "\f421"; } +.bi-house-door-fill::before { content: "\f422"; } +.bi-house-door::before { content: "\f423"; } +.bi-house-fill::before { content: "\f424"; } +.bi-house::before { content: "\f425"; } +.bi-hr::before { content: "\f426"; } +.bi-hurricane::before { content: "\f427"; } +.bi-image-alt::before { content: "\f428"; } +.bi-image-fill::before { content: "\f429"; } +.bi-image::before { content: "\f42a"; } +.bi-images::before { content: "\f42b"; } +.bi-inbox-fill::before { content: "\f42c"; } +.bi-inbox::before { content: "\f42d"; } +.bi-inboxes-fill::before { content: "\f42e"; } +.bi-inboxes::before { content: "\f42f"; } +.bi-info-circle-fill::before { content: "\f430"; } +.bi-info-circle::before { content: "\f431"; } +.bi-info-square-fill::before { content: "\f432"; } +.bi-info-square::before { content: "\f433"; } +.bi-info::before { content: "\f434"; } +.bi-input-cursor-text::before { content: "\f435"; } +.bi-input-cursor::before { content: "\f436"; } +.bi-instagram::before { content: "\f437"; } +.bi-intersect::before { content: "\f438"; } +.bi-journal-album::before { content: "\f439"; } +.bi-journal-arrow-down::before { content: "\f43a"; } +.bi-journal-arrow-up::before { content: "\f43b"; } +.bi-journal-bookmark-fill::before { content: "\f43c"; } +.bi-journal-bookmark::before { content: "\f43d"; } +.bi-journal-check::before { content: "\f43e"; } +.bi-journal-code::before { content: "\f43f"; } +.bi-journal-medical::before { content: "\f440"; } +.bi-journal-minus::before { content: "\f441"; } +.bi-journal-plus::before { content: "\f442"; } +.bi-journal-richtext::before { content: "\f443"; } +.bi-journal-text::before { content: "\f444"; } +.bi-journal-x::before { content: "\f445"; } +.bi-journal::before { content: "\f446"; } +.bi-journals::before { content: "\f447"; } +.bi-joystick::before { content: "\f448"; } +.bi-justify-left::before { content: "\f449"; } +.bi-justify-right::before { content: "\f44a"; } +.bi-justify::before { content: "\f44b"; } +.bi-kanban-fill::before { content: "\f44c"; } +.bi-kanban::before { content: "\f44d"; } +.bi-key-fill::before { content: "\f44e"; } +.bi-key::before { content: "\f44f"; } +.bi-keyboard-fill::before { content: "\f450"; } +.bi-keyboard::before { content: "\f451"; } +.bi-ladder::before { content: "\f452"; } +.bi-lamp-fill::before { content: "\f453"; } +.bi-lamp::before { content: "\f454"; } +.bi-laptop-fill::before { content: "\f455"; } +.bi-laptop::before { content: "\f456"; } +.bi-layer-backward::before { content: "\f457"; } +.bi-layer-forward::before { content: "\f458"; } +.bi-layers-fill::before { content: "\f459"; } +.bi-layers-half::before { content: "\f45a"; } +.bi-layers::before { content: "\f45b"; } +.bi-layout-sidebar-inset-reverse::before { content: "\f45c"; } +.bi-layout-sidebar-inset::before { content: "\f45d"; } +.bi-layout-sidebar-reverse::before { content: "\f45e"; } +.bi-layout-sidebar::before { content: "\f45f"; } +.bi-layout-split::before { content: "\f460"; } +.bi-layout-text-sidebar-reverse::before { content: "\f461"; } +.bi-layout-text-sidebar::before { content: "\f462"; } +.bi-layout-text-window-reverse::before { content: "\f463"; } +.bi-layout-text-window::before { content: "\f464"; } +.bi-layout-three-columns::before { content: "\f465"; } +.bi-layout-wtf::before { content: "\f466"; } +.bi-life-preserver::before { content: "\f467"; } +.bi-lightbulb-fill::before { content: "\f468"; } +.bi-lightbulb-off-fill::before { content: "\f469"; } +.bi-lightbulb-off::before { content: "\f46a"; } +.bi-lightbulb::before { content: "\f46b"; } +.bi-lightning-charge-fill::before { content: "\f46c"; } +.bi-lightning-charge::before { content: "\f46d"; } +.bi-lightning-fill::before { content: "\f46e"; } +.bi-lightning::before { content: "\f46f"; } +.bi-link-45deg::before { content: "\f470"; } +.bi-link::before { content: "\f471"; } +.bi-linkedin::before { content: "\f472"; } +.bi-list-check::before { content: "\f473"; } +.bi-list-nested::before { content: "\f474"; } +.bi-list-ol::before { content: "\f475"; } +.bi-list-stars::before { content: "\f476"; } +.bi-list-task::before { content: "\f477"; } +.bi-list-ul::before { content: "\f478"; } +.bi-list::before { content: "\f479"; } +.bi-lock-fill::before { content: "\f47a"; } +.bi-lock::before { content: "\f47b"; } +.bi-mailbox::before { content: "\f47c"; } +.bi-mailbox2::before { content: "\f47d"; } +.bi-map-fill::before { content: "\f47e"; } +.bi-map::before { content: "\f47f"; } +.bi-markdown-fill::before { content: "\f480"; } +.bi-markdown::before { content: "\f481"; } +.bi-mask::before { content: "\f482"; } +.bi-megaphone-fill::before { content: "\f483"; } +.bi-megaphone::before { content: "\f484"; } +.bi-menu-app-fill::before { content: "\f485"; } +.bi-menu-app::before { content: "\f486"; } +.bi-menu-button-fill::before { content: "\f487"; } +.bi-menu-button-wide-fill::before { content: "\f488"; } +.bi-menu-button-wide::before { content: "\f489"; } +.bi-menu-button::before { content: "\f48a"; } +.bi-menu-down::before { content: "\f48b"; } +.bi-menu-up::before { content: "\f48c"; } +.bi-mic-fill::before { content: "\f48d"; } +.bi-mic-mute-fill::before { content: "\f48e"; } +.bi-mic-mute::before { content: "\f48f"; } +.bi-mic::before { content: "\f490"; } +.bi-minecart-loaded::before { content: "\f491"; } +.bi-minecart::before { content: "\f492"; } +.bi-moisture::before { content: "\f493"; } +.bi-moon-fill::before { content: "\f494"; } +.bi-moon-stars-fill::before { content: "\f495"; } +.bi-moon-stars::before { content: "\f496"; } +.bi-moon::before { content: "\f497"; } +.bi-mouse-fill::before { content: "\f498"; } +.bi-mouse::before { content: "\f499"; } +.bi-mouse2-fill::before { content: "\f49a"; } +.bi-mouse2::before { content: "\f49b"; } +.bi-mouse3-fill::before { content: "\f49c"; } +.bi-mouse3::before { content: "\f49d"; } +.bi-music-note-beamed::before { content: "\f49e"; } +.bi-music-note-list::before { content: "\f49f"; } +.bi-music-note::before { content: "\f4a0"; } +.bi-music-player-fill::before { content: "\f4a1"; } +.bi-music-player::before { content: "\f4a2"; } +.bi-newspaper::before { content: "\f4a3"; } +.bi-node-minus-fill::before { content: "\f4a4"; } +.bi-node-minus::before { content: "\f4a5"; } +.bi-node-plus-fill::before { content: "\f4a6"; } +.bi-node-plus::before { content: "\f4a7"; } +.bi-nut-fill::before { content: "\f4a8"; } +.bi-nut::before { content: "\f4a9"; } +.bi-octagon-fill::before { content: "\f4aa"; } +.bi-octagon-half::before { content: "\f4ab"; } +.bi-octagon::before { content: "\f4ac"; } +.bi-option::before { content: "\f4ad"; } +.bi-outlet::before { content: "\f4ae"; } +.bi-paint-bucket::before { content: "\f4af"; } +.bi-palette-fill::before { content: "\f4b0"; } +.bi-palette::before { content: "\f4b1"; } +.bi-palette2::before { content: "\f4b2"; } +.bi-paperclip::before { content: "\f4b3"; } +.bi-paragraph::before { content: "\f4b4"; } +.bi-patch-check-fill::before { content: "\f4b5"; } +.bi-patch-check::before { content: "\f4b6"; } +.bi-patch-exclamation-fill::before { content: "\f4b7"; } +.bi-patch-exclamation::before { content: "\f4b8"; } +.bi-patch-minus-fill::before { content: "\f4b9"; } +.bi-patch-minus::before { content: "\f4ba"; } +.bi-patch-plus-fill::before { content: "\f4bb"; } +.bi-patch-plus::before { content: "\f4bc"; } +.bi-patch-question-fill::before { content: "\f4bd"; } +.bi-patch-question::before { content: "\f4be"; } +.bi-pause-btn-fill::before { content: "\f4bf"; } +.bi-pause-btn::before { content: "\f4c0"; } +.bi-pause-circle-fill::before { content: "\f4c1"; } +.bi-pause-circle::before { content: "\f4c2"; } +.bi-pause-fill::before { content: "\f4c3"; } +.bi-pause::before { content: "\f4c4"; } +.bi-peace-fill::before { content: "\f4c5"; } +.bi-peace::before { content: "\f4c6"; } +.bi-pen-fill::before { content: "\f4c7"; } +.bi-pen::before { content: "\f4c8"; } +.bi-pencil-fill::before { content: "\f4c9"; } +.bi-pencil-square::before { content: "\f4ca"; } +.bi-pencil::before { content: "\f4cb"; } +.bi-pentagon-fill::before { content: "\f4cc"; } +.bi-pentagon-half::before { content: "\f4cd"; } +.bi-pentagon::before { content: "\f4ce"; } +.bi-people-fill::before { content: "\f4cf"; } +.bi-people::before { content: "\f4d0"; } +.bi-percent::before { content: "\f4d1"; } +.bi-person-badge-fill::before { content: "\f4d2"; } +.bi-person-badge::before { content: "\f4d3"; } +.bi-person-bounding-box::before { content: "\f4d4"; } +.bi-person-check-fill::before { content: "\f4d5"; } +.bi-person-check::before { content: "\f4d6"; } +.bi-person-circle::before { content: "\f4d7"; } +.bi-person-dash-fill::before { content: "\f4d8"; } +.bi-person-dash::before { content: "\f4d9"; } +.bi-person-fill::before { content: "\f4da"; } +.bi-person-lines-fill::before { content: "\f4db"; } +.bi-person-plus-fill::before { content: "\f4dc"; } +.bi-person-plus::before { content: "\f4dd"; } +.bi-person-square::before { content: "\f4de"; } +.bi-person-x-fill::before { content: "\f4df"; } +.bi-person-x::before { content: "\f4e0"; } +.bi-person::before { content: "\f4e1"; } +.bi-phone-fill::before { content: "\f4e2"; } +.bi-phone-landscape-fill::before { content: "\f4e3"; } +.bi-phone-landscape::before { content: "\f4e4"; } +.bi-phone-vibrate-fill::before { content: "\f4e5"; } +.bi-phone-vibrate::before { content: "\f4e6"; } +.bi-phone::before { content: "\f4e7"; } +.bi-pie-chart-fill::before { content: "\f4e8"; } +.bi-pie-chart::before { content: "\f4e9"; } +.bi-pin-angle-fill::before { content: "\f4ea"; } +.bi-pin-angle::before { content: "\f4eb"; } +.bi-pin-fill::before { content: "\f4ec"; } +.bi-pin::before { content: "\f4ed"; } +.bi-pip-fill::before { content: "\f4ee"; } +.bi-pip::before { content: "\f4ef"; } +.bi-play-btn-fill::before { content: "\f4f0"; } +.bi-play-btn::before { content: "\f4f1"; } +.bi-play-circle-fill::before { content: "\f4f2"; } +.bi-play-circle::before { content: "\f4f3"; } +.bi-play-fill::before { content: "\f4f4"; } +.bi-play::before { content: "\f4f5"; } +.bi-plug-fill::before { content: "\f4f6"; } +.bi-plug::before { content: "\f4f7"; } +.bi-plus-circle-dotted::before { content: "\f4f8"; } +.bi-plus-circle-fill::before { content: "\f4f9"; } +.bi-plus-circle::before { content: "\f4fa"; } +.bi-plus-square-dotted::before { content: "\f4fb"; } +.bi-plus-square-fill::before { content: "\f4fc"; } +.bi-plus-square::before { content: "\f4fd"; } +.bi-plus::before { content: "\f4fe"; } +.bi-power::before { content: "\f4ff"; } +.bi-printer-fill::before { content: "\f500"; } +.bi-printer::before { content: "\f501"; } +.bi-puzzle-fill::before { content: "\f502"; } +.bi-puzzle::before { content: "\f503"; } +.bi-question-circle-fill::before { content: "\f504"; } +.bi-question-circle::before { content: "\f505"; } +.bi-question-diamond-fill::before { content: "\f506"; } +.bi-question-diamond::before { content: "\f507"; } +.bi-question-octagon-fill::before { content: "\f508"; } +.bi-question-octagon::before { content: "\f509"; } +.bi-question-square-fill::before { content: "\f50a"; } +.bi-question-square::before { content: "\f50b"; } +.bi-question::before { content: "\f50c"; } +.bi-rainbow::before { content: "\f50d"; } +.bi-receipt-cutoff::before { content: "\f50e"; } +.bi-receipt::before { content: "\f50f"; } +.bi-reception-0::before { content: "\f510"; } +.bi-reception-1::before { content: "\f511"; } +.bi-reception-2::before { content: "\f512"; } +.bi-reception-3::before { content: "\f513"; } +.bi-reception-4::before { content: "\f514"; } +.bi-record-btn-fill::before { content: "\f515"; } +.bi-record-btn::before { content: "\f516"; } +.bi-record-circle-fill::before { content: "\f517"; } +.bi-record-circle::before { content: "\f518"; } +.bi-record-fill::before { content: "\f519"; } +.bi-record::before { content: "\f51a"; } +.bi-record2-fill::before { content: "\f51b"; } +.bi-record2::before { content: "\f51c"; } +.bi-reply-all-fill::before { content: "\f51d"; } +.bi-reply-all::before { content: "\f51e"; } +.bi-reply-fill::before { content: "\f51f"; } +.bi-reply::before { content: "\f520"; } +.bi-rss-fill::before { content: "\f521"; } +.bi-rss::before { content: "\f522"; } +.bi-rulers::before { content: "\f523"; } +.bi-save-fill::before { content: "\f524"; } +.bi-save::before { content: "\f525"; } +.bi-save2-fill::before { content: "\f526"; } +.bi-save2::before { content: "\f527"; } +.bi-scissors::before { content: "\f528"; } +.bi-screwdriver::before { content: "\f529"; } +.bi-search::before { content: "\f52a"; } +.bi-segmented-nav::before { content: "\f52b"; } +.bi-server::before { content: "\f52c"; } +.bi-share-fill::before { content: "\f52d"; } +.bi-share::before { content: "\f52e"; } +.bi-shield-check::before { content: "\f52f"; } +.bi-shield-exclamation::before { content: "\f530"; } +.bi-shield-fill-check::before { content: "\f531"; } +.bi-shield-fill-exclamation::before { content: "\f532"; } +.bi-shield-fill-minus::before { content: "\f533"; } +.bi-shield-fill-plus::before { content: "\f534"; } +.bi-shield-fill-x::before { content: "\f535"; } +.bi-shield-fill::before { content: "\f536"; } +.bi-shield-lock-fill::before { content: "\f537"; } +.bi-shield-lock::before { content: "\f538"; } +.bi-shield-minus::before { content: "\f539"; } +.bi-shield-plus::before { content: "\f53a"; } +.bi-shield-shaded::before { content: "\f53b"; } +.bi-shield-slash-fill::before { content: "\f53c"; } +.bi-shield-slash::before { content: "\f53d"; } +.bi-shield-x::before { content: "\f53e"; } +.bi-shield::before { content: "\f53f"; } +.bi-shift-fill::before { content: "\f540"; } +.bi-shift::before { content: "\f541"; } +.bi-shop-window::before { content: "\f542"; } +.bi-shop::before { content: "\f543"; } +.bi-shuffle::before { content: "\f544"; } +.bi-signpost-2-fill::before { content: "\f545"; } +.bi-signpost-2::before { content: "\f546"; } +.bi-signpost-fill::before { content: "\f547"; } +.bi-signpost-split-fill::before { content: "\f548"; } +.bi-signpost-split::before { content: "\f549"; } +.bi-signpost::before { content: "\f54a"; } +.bi-sim-fill::before { content: "\f54b"; } +.bi-sim::before { content: "\f54c"; } +.bi-skip-backward-btn-fill::before { content: "\f54d"; } +.bi-skip-backward-btn::before { content: "\f54e"; } +.bi-skip-backward-circle-fill::before { content: "\f54f"; } +.bi-skip-backward-circle::before { content: "\f550"; } +.bi-skip-backward-fill::before { content: "\f551"; } +.bi-skip-backward::before { content: "\f552"; } +.bi-skip-end-btn-fill::before { content: "\f553"; } +.bi-skip-end-btn::before { content: "\f554"; } +.bi-skip-end-circle-fill::before { content: "\f555"; } +.bi-skip-end-circle::before { content: "\f556"; } +.bi-skip-end-fill::before { content: "\f557"; } +.bi-skip-end::before { content: "\f558"; } +.bi-skip-forward-btn-fill::before { content: "\f559"; } +.bi-skip-forward-btn::before { content: "\f55a"; } +.bi-skip-forward-circle-fill::before { content: "\f55b"; } +.bi-skip-forward-circle::before { content: "\f55c"; } +.bi-skip-forward-fill::before { content: "\f55d"; } +.bi-skip-forward::before { content: "\f55e"; } +.bi-skip-start-btn-fill::before { content: "\f55f"; } +.bi-skip-start-btn::before { content: "\f560"; } +.bi-skip-start-circle-fill::before { content: "\f561"; } +.bi-skip-start-circle::before { content: "\f562"; } +.bi-skip-start-fill::before { content: "\f563"; } +.bi-skip-start::before { content: "\f564"; } +.bi-slack::before { content: "\f565"; } +.bi-slash-circle-fill::before { content: "\f566"; } +.bi-slash-circle::before { content: "\f567"; } +.bi-slash-square-fill::before { content: "\f568"; } +.bi-slash-square::before { content: "\f569"; } +.bi-slash::before { content: "\f56a"; } +.bi-sliders::before { content: "\f56b"; } +.bi-smartwatch::before { content: "\f56c"; } +.bi-snow::before { content: "\f56d"; } +.bi-snow2::before { content: "\f56e"; } +.bi-snow3::before { content: "\f56f"; } +.bi-sort-alpha-down-alt::before { content: "\f570"; } +.bi-sort-alpha-down::before { content: "\f571"; } +.bi-sort-alpha-up-alt::before { content: "\f572"; } +.bi-sort-alpha-up::before { content: "\f573"; } +.bi-sort-down-alt::before { content: "\f574"; } +.bi-sort-down::before { content: "\f575"; } +.bi-sort-numeric-down-alt::before { content: "\f576"; } +.bi-sort-numeric-down::before { content: "\f577"; } +.bi-sort-numeric-up-alt::before { content: "\f578"; } +.bi-sort-numeric-up::before { content: "\f579"; } +.bi-sort-up-alt::before { content: "\f57a"; } +.bi-sort-up::before { content: "\f57b"; } +.bi-soundwave::before { content: "\f57c"; } +.bi-speaker-fill::before { content: "\f57d"; } +.bi-speaker::before { content: "\f57e"; } +.bi-speedometer::before { content: "\f57f"; } +.bi-speedometer2::before { content: "\f580"; } +.bi-spellcheck::before { content: "\f581"; } +.bi-square-fill::before { content: "\f582"; } +.bi-square-half::before { content: "\f583"; } +.bi-square::before { content: "\f584"; } +.bi-stack::before { content: "\f585"; } +.bi-star-fill::before { content: "\f586"; } +.bi-star-half::before { content: "\f587"; } +.bi-star::before { content: "\f588"; } +.bi-stars::before { content: "\f589"; } +.bi-stickies-fill::before { content: "\f58a"; } +.bi-stickies::before { content: "\f58b"; } +.bi-sticky-fill::before { content: "\f58c"; } +.bi-sticky::before { content: "\f58d"; } +.bi-stop-btn-fill::before { content: "\f58e"; } +.bi-stop-btn::before { content: "\f58f"; } +.bi-stop-circle-fill::before { content: "\f590"; } +.bi-stop-circle::before { content: "\f591"; } +.bi-stop-fill::before { content: "\f592"; } +.bi-stop::before { content: "\f593"; } +.bi-stoplights-fill::before { content: "\f594"; } +.bi-stoplights::before { content: "\f595"; } +.bi-stopwatch-fill::before { content: "\f596"; } +.bi-stopwatch::before { content: "\f597"; } +.bi-subtract::before { content: "\f598"; } +.bi-suit-club-fill::before { content: "\f599"; } +.bi-suit-club::before { content: "\f59a"; } +.bi-suit-diamond-fill::before { content: "\f59b"; } +.bi-suit-diamond::before { content: "\f59c"; } +.bi-suit-heart-fill::before { content: "\f59d"; } +.bi-suit-heart::before { content: "\f59e"; } +.bi-suit-spade-fill::before { content: "\f59f"; } +.bi-suit-spade::before { content: "\f5a0"; } +.bi-sun-fill::before { content: "\f5a1"; } +.bi-sun::before { content: "\f5a2"; } +.bi-sunglasses::before { content: "\f5a3"; } +.bi-sunrise-fill::before { content: "\f5a4"; } +.bi-sunrise::before { content: "\f5a5"; } +.bi-sunset-fill::before { content: "\f5a6"; } +.bi-sunset::before { content: "\f5a7"; } +.bi-symmetry-horizontal::before { content: "\f5a8"; } +.bi-symmetry-vertical::before { content: "\f5a9"; } +.bi-table::before { content: "\f5aa"; } +.bi-tablet-fill::before { content: "\f5ab"; } +.bi-tablet-landscape-fill::before { content: "\f5ac"; } +.bi-tablet-landscape::before { content: "\f5ad"; } +.bi-tablet::before { content: "\f5ae"; } +.bi-tag-fill::before { content: "\f5af"; } +.bi-tag::before { content: "\f5b0"; } +.bi-tags-fill::before { content: "\f5b1"; } +.bi-tags::before { content: "\f5b2"; } +.bi-telegram::before { content: "\f5b3"; } +.bi-telephone-fill::before { content: "\f5b4"; } +.bi-telephone-forward-fill::before { content: "\f5b5"; } +.bi-telephone-forward::before { content: "\f5b6"; } +.bi-telephone-inbound-fill::before { content: "\f5b7"; } +.bi-telephone-inbound::before { content: "\f5b8"; } +.bi-telephone-minus-fill::before { content: "\f5b9"; } +.bi-telephone-minus::before { content: "\f5ba"; } +.bi-telephone-outbound-fill::before { content: "\f5bb"; } +.bi-telephone-outbound::before { content: "\f5bc"; } +.bi-telephone-plus-fill::before { content: "\f5bd"; } +.bi-telephone-plus::before { content: "\f5be"; } +.bi-telephone-x-fill::before { content: "\f5bf"; } +.bi-telephone-x::before { content: "\f5c0"; } +.bi-telephone::before { content: "\f5c1"; } +.bi-terminal-fill::before { content: "\f5c2"; } +.bi-terminal::before { content: "\f5c3"; } +.bi-text-center::before { content: "\f5c4"; } +.bi-text-indent-left::before { content: "\f5c5"; } +.bi-text-indent-right::before { content: "\f5c6"; } +.bi-text-left::before { content: "\f5c7"; } +.bi-text-paragraph::before { content: "\f5c8"; } +.bi-text-right::before { content: "\f5c9"; } +.bi-textarea-resize::before { content: "\f5ca"; } +.bi-textarea-t::before { content: "\f5cb"; } +.bi-textarea::before { content: "\f5cc"; } +.bi-thermometer-half::before { content: "\f5cd"; } +.bi-thermometer-high::before { content: "\f5ce"; } +.bi-thermometer-low::before { content: "\f5cf"; } +.bi-thermometer-snow::before { content: "\f5d0"; } +.bi-thermometer-sun::before { content: "\f5d1"; } +.bi-thermometer::before { content: "\f5d2"; } +.bi-three-dots-vertical::before { content: "\f5d3"; } +.bi-three-dots::before { content: "\f5d4"; } +.bi-toggle-off::before { content: "\f5d5"; } +.bi-toggle-on::before { content: "\f5d6"; } +.bi-toggle2-off::before { content: "\f5d7"; } +.bi-toggle2-on::before { content: "\f5d8"; } +.bi-toggles::before { content: "\f5d9"; } +.bi-toggles2::before { content: "\f5da"; } +.bi-tools::before { content: "\f5db"; } +.bi-tornado::before { content: "\f5dc"; } +.bi-trash-fill::before { content: "\f5dd"; } +.bi-trash::before { content: "\f5de"; } +.bi-trash2-fill::before { content: "\f5df"; } +.bi-trash2::before { content: "\f5e0"; } +.bi-tree-fill::before { content: "\f5e1"; } +.bi-tree::before { content: "\f5e2"; } +.bi-triangle-fill::before { content: "\f5e3"; } +.bi-triangle-half::before { content: "\f5e4"; } +.bi-triangle::before { content: "\f5e5"; } +.bi-trophy-fill::before { content: "\f5e6"; } +.bi-trophy::before { content: "\f5e7"; } +.bi-tropical-storm::before { content: "\f5e8"; } +.bi-truck-flatbed::before { content: "\f5e9"; } +.bi-truck::before { content: "\f5ea"; } +.bi-tsunami::before { content: "\f5eb"; } +.bi-tv-fill::before { content: "\f5ec"; } +.bi-tv::before { content: "\f5ed"; } +.bi-twitch::before { content: "\f5ee"; } +.bi-twitter::before { content: "\f5ef"; } +.bi-type-bold::before { content: "\f5f0"; } +.bi-type-h1::before { content: "\f5f1"; } +.bi-type-h2::before { content: "\f5f2"; } +.bi-type-h3::before { content: "\f5f3"; } +.bi-type-italic::before { content: "\f5f4"; } +.bi-type-strikethrough::before { content: "\f5f5"; } +.bi-type-underline::before { content: "\f5f6"; } +.bi-type::before { content: "\f5f7"; } +.bi-ui-checks-grid::before { content: "\f5f8"; } +.bi-ui-checks::before { content: "\f5f9"; } +.bi-ui-radios-grid::before { content: "\f5fa"; } +.bi-ui-radios::before { content: "\f5fb"; } +.bi-umbrella-fill::before { content: "\f5fc"; } +.bi-umbrella::before { content: "\f5fd"; } +.bi-union::before { content: "\f5fe"; } +.bi-unlock-fill::before { content: "\f5ff"; } +.bi-unlock::before { content: "\f600"; } +.bi-upc-scan::before { content: "\f601"; } +.bi-upc::before { content: "\f602"; } +.bi-upload::before { content: "\f603"; } +.bi-vector-pen::before { content: "\f604"; } +.bi-view-list::before { content: "\f605"; } +.bi-view-stacked::before { content: "\f606"; } +.bi-vinyl-fill::before { content: "\f607"; } +.bi-vinyl::before { content: "\f608"; } +.bi-voicemail::before { content: "\f609"; } +.bi-volume-down-fill::before { content: "\f60a"; } +.bi-volume-down::before { content: "\f60b"; } +.bi-volume-mute-fill::before { content: "\f60c"; } +.bi-volume-mute::before { content: "\f60d"; } +.bi-volume-off-fill::before { content: "\f60e"; } +.bi-volume-off::before { content: "\f60f"; } +.bi-volume-up-fill::before { content: "\f610"; } +.bi-volume-up::before { content: "\f611"; } +.bi-vr::before { content: "\f612"; } +.bi-wallet-fill::before { content: "\f613"; } +.bi-wallet::before { content: "\f614"; } +.bi-wallet2::before { content: "\f615"; } +.bi-watch::before { content: "\f616"; } +.bi-water::before { content: "\f617"; } +.bi-whatsapp::before { content: "\f618"; } +.bi-wifi-1::before { content: "\f619"; } +.bi-wifi-2::before { content: "\f61a"; } +.bi-wifi-off::before { content: "\f61b"; } +.bi-wifi::before { content: "\f61c"; } +.bi-wind::before { content: "\f61d"; } +.bi-window-dock::before { content: "\f61e"; } +.bi-window-sidebar::before { content: "\f61f"; } +.bi-window::before { content: "\f620"; } +.bi-wrench::before { content: "\f621"; } +.bi-x-circle-fill::before { content: "\f622"; } +.bi-x-circle::before { content: "\f623"; } +.bi-x-diamond-fill::before { content: "\f624"; } +.bi-x-diamond::before { content: "\f625"; } +.bi-x-octagon-fill::before { content: "\f626"; } +.bi-x-octagon::before { content: "\f627"; } +.bi-x-square-fill::before { content: "\f628"; } +.bi-x-square::before { content: "\f629"; } +.bi-x::before { content: "\f62a"; } +.bi-youtube::before { content: "\f62b"; } +.bi-zoom-in::before { content: "\f62c"; } +.bi-zoom-out::before { content: "\f62d"; } +.bi-bank::before { content: "\f62e"; } +.bi-bank2::before { content: "\f62f"; } +.bi-bell-slash-fill::before { content: "\f630"; } +.bi-bell-slash::before { content: "\f631"; } +.bi-cash-coin::before { content: "\f632"; } +.bi-check-lg::before { content: "\f633"; } +.bi-coin::before { content: "\f634"; } +.bi-currency-bitcoin::before { content: "\f635"; } +.bi-currency-dollar::before { content: "\f636"; } +.bi-currency-euro::before { content: "\f637"; } +.bi-currency-exchange::before { content: "\f638"; } +.bi-currency-pound::before { content: "\f639"; } +.bi-currency-yen::before { content: "\f63a"; } +.bi-dash-lg::before { content: "\f63b"; } +.bi-exclamation-lg::before { content: "\f63c"; } +.bi-file-earmark-pdf-fill::before { content: "\f63d"; } +.bi-file-earmark-pdf::before { content: "\f63e"; } +.bi-file-pdf-fill::before { content: "\f63f"; } +.bi-file-pdf::before { content: "\f640"; } +.bi-gender-ambiguous::before { content: "\f641"; } +.bi-gender-female::before { content: "\f642"; } +.bi-gender-male::before { content: "\f643"; } +.bi-gender-trans::before { content: "\f644"; } +.bi-headset-vr::before { content: "\f645"; } +.bi-info-lg::before { content: "\f646"; } +.bi-mastodon::before { content: "\f647"; } +.bi-messenger::before { content: "\f648"; } +.bi-piggy-bank-fill::before { content: "\f649"; } +.bi-piggy-bank::before { content: "\f64a"; } +.bi-pin-map-fill::before { content: "\f64b"; } +.bi-pin-map::before { content: "\f64c"; } +.bi-plus-lg::before { content: "\f64d"; } +.bi-question-lg::before { content: "\f64e"; } +.bi-recycle::before { content: "\f64f"; } +.bi-reddit::before { content: "\f650"; } +.bi-safe-fill::before { content: "\f651"; } +.bi-safe2-fill::before { content: "\f652"; } +.bi-safe2::before { content: "\f653"; } +.bi-sd-card-fill::before { content: "\f654"; } +.bi-sd-card::before { content: "\f655"; } +.bi-skype::before { content: "\f656"; } +.bi-slash-lg::before { content: "\f657"; } +.bi-translate::before { content: "\f658"; } +.bi-x-lg::before { content: "\f659"; } +.bi-safe::before { content: "\f65a"; } +.bi-apple::before { content: "\f65b"; } +.bi-microsoft::before { content: "\f65d"; } +.bi-windows::before { content: "\f65e"; } +.bi-behance::before { content: "\f65c"; } +.bi-dribbble::before { content: "\f65f"; } +.bi-line::before { content: "\f660"; } +.bi-medium::before { content: "\f661"; } +.bi-paypal::before { content: "\f662"; } +.bi-pinterest::before { content: "\f663"; } +.bi-signal::before { content: "\f664"; } +.bi-snapchat::before { content: "\f665"; } +.bi-spotify::before { content: "\f666"; } +.bi-stack-overflow::before { content: "\f667"; } +.bi-strava::before { content: "\f668"; } +.bi-wordpress::before { content: "\f669"; } +.bi-vimeo::before { content: "\f66a"; } +.bi-activity::before { content: "\f66b"; } +.bi-easel2-fill::before { content: "\f66c"; } +.bi-easel2::before { content: "\f66d"; } +.bi-easel3-fill::before { content: "\f66e"; } +.bi-easel3::before { content: "\f66f"; } +.bi-fan::before { content: "\f670"; } +.bi-fingerprint::before { content: "\f671"; } +.bi-graph-down-arrow::before { content: "\f672"; } +.bi-graph-up-arrow::before { content: "\f673"; } +.bi-hypnotize::before { content: "\f674"; } +.bi-magic::before { content: "\f675"; } +.bi-person-rolodex::before { content: "\f676"; } +.bi-person-video::before { content: "\f677"; } +.bi-person-video2::before { content: "\f678"; } +.bi-person-video3::before { content: "\f679"; } +.bi-person-workspace::before { content: "\f67a"; } +.bi-radioactive::before { content: "\f67b"; } +.bi-webcam-fill::before { content: "\f67c"; } +.bi-webcam::before { content: "\f67d"; } +.bi-yin-yang::before { content: "\f67e"; } +.bi-bandaid-fill::before { content: "\f680"; } +.bi-bandaid::before { content: "\f681"; } +.bi-bluetooth::before { content: "\f682"; } +.bi-body-text::before { content: "\f683"; } +.bi-boombox::before { content: "\f684"; } +.bi-boxes::before { content: "\f685"; } +.bi-dpad-fill::before { content: "\f686"; } +.bi-dpad::before { content: "\f687"; } +.bi-ear-fill::before { content: "\f688"; } +.bi-ear::before { content: "\f689"; } +.bi-envelope-check-fill::before { content: "\f68b"; } +.bi-envelope-check::before { content: "\f68c"; } +.bi-envelope-dash-fill::before { content: "\f68e"; } +.bi-envelope-dash::before { content: "\f68f"; } +.bi-envelope-exclamation-fill::before { content: "\f691"; } +.bi-envelope-exclamation::before { content: "\f692"; } +.bi-envelope-plus-fill::before { content: "\f693"; } +.bi-envelope-plus::before { content: "\f694"; } +.bi-envelope-slash-fill::before { content: "\f696"; } +.bi-envelope-slash::before { content: "\f697"; } +.bi-envelope-x-fill::before { content: "\f699"; } +.bi-envelope-x::before { content: "\f69a"; } +.bi-explicit-fill::before { content: "\f69b"; } +.bi-explicit::before { content: "\f69c"; } +.bi-git::before { content: "\f69d"; } +.bi-infinity::before { content: "\f69e"; } +.bi-list-columns-reverse::before { content: "\f69f"; } +.bi-list-columns::before { content: "\f6a0"; } +.bi-meta::before { content: "\f6a1"; } +.bi-nintendo-switch::before { content: "\f6a4"; } +.bi-pc-display-horizontal::before { content: "\f6a5"; } +.bi-pc-display::before { content: "\f6a6"; } +.bi-pc-horizontal::before { content: "\f6a7"; } +.bi-pc::before { content: "\f6a8"; } +.bi-playstation::before { content: "\f6a9"; } +.bi-plus-slash-minus::before { content: "\f6aa"; } +.bi-projector-fill::before { content: "\f6ab"; } +.bi-projector::before { content: "\f6ac"; } +.bi-qr-code-scan::before { content: "\f6ad"; } +.bi-qr-code::before { content: "\f6ae"; } +.bi-quora::before { content: "\f6af"; } +.bi-quote::before { content: "\f6b0"; } +.bi-robot::before { content: "\f6b1"; } +.bi-send-check-fill::before { content: "\f6b2"; } +.bi-send-check::before { content: "\f6b3"; } +.bi-send-dash-fill::before { content: "\f6b4"; } +.bi-send-dash::before { content: "\f6b5"; } +.bi-send-exclamation-fill::before { content: "\f6b7"; } +.bi-send-exclamation::before { content: "\f6b8"; } +.bi-send-fill::before { content: "\f6b9"; } +.bi-send-plus-fill::before { content: "\f6ba"; } +.bi-send-plus::before { content: "\f6bb"; } +.bi-send-slash-fill::before { content: "\f6bc"; } +.bi-send-slash::before { content: "\f6bd"; } +.bi-send-x-fill::before { content: "\f6be"; } +.bi-send-x::before { content: "\f6bf"; } +.bi-send::before { content: "\f6c0"; } +.bi-steam::before { content: "\f6c1"; } +.bi-terminal-dash::before { content: "\f6c3"; } +.bi-terminal-plus::before { content: "\f6c4"; } +.bi-terminal-split::before { content: "\f6c5"; } +.bi-ticket-detailed-fill::before { content: "\f6c6"; } +.bi-ticket-detailed::before { content: "\f6c7"; } +.bi-ticket-fill::before { content: "\f6c8"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } +.bi-ticket::before { content: "\f6cb"; } +.bi-tiktok::before { content: "\f6cc"; } +.bi-window-dash::before { content: "\f6cd"; } +.bi-window-desktop::before { content: "\f6ce"; } +.bi-window-fullscreen::before { content: "\f6cf"; } +.bi-window-plus::before { content: "\f6d0"; } +.bi-window-split::before { content: "\f6d1"; } +.bi-window-stack::before { content: "\f6d2"; } +.bi-window-x::before { content: "\f6d3"; } +.bi-xbox::before { content: "\f6d4"; } +.bi-ethernet::before { content: "\f6d5"; } +.bi-hdmi-fill::before { content: "\f6d6"; } +.bi-hdmi::before { content: "\f6d7"; } +.bi-usb-c-fill::before { content: "\f6d8"; } +.bi-usb-c::before { content: "\f6d9"; } +.bi-usb-fill::before { content: "\f6da"; } +.bi-usb-plug-fill::before { content: "\f6db"; } +.bi-usb-plug::before { content: "\f6dc"; } +.bi-usb-symbol::before { content: "\f6dd"; } +.bi-usb::before { content: "\f6de"; } +.bi-boombox-fill::before { content: "\f6df"; } +.bi-displayport::before { content: "\f6e1"; } +.bi-gpu-card::before { content: "\f6e2"; } +.bi-memory::before { content: "\f6e3"; } +.bi-modem-fill::before { content: "\f6e4"; } +.bi-modem::before { content: "\f6e5"; } +.bi-motherboard-fill::before { content: "\f6e6"; } +.bi-motherboard::before { content: "\f6e7"; } +.bi-optical-audio-fill::before { content: "\f6e8"; } +.bi-optical-audio::before { content: "\f6e9"; } +.bi-pci-card::before { content: "\f6ea"; } +.bi-router-fill::before { content: "\f6eb"; } +.bi-router::before { content: "\f6ec"; } +.bi-thunderbolt-fill::before { content: "\f6ef"; } +.bi-thunderbolt::before { content: "\f6f0"; } +.bi-usb-drive-fill::before { content: "\f6f1"; } +.bi-usb-drive::before { content: "\f6f2"; } +.bi-usb-micro-fill::before { content: "\f6f3"; } +.bi-usb-micro::before { content: "\f6f4"; } +.bi-usb-mini-fill::before { content: "\f6f5"; } +.bi-usb-mini::before { content: "\f6f6"; } +.bi-cloud-haze2::before { content: "\f6f7"; } +.bi-device-hdd-fill::before { content: "\f6f8"; } +.bi-device-hdd::before { content: "\f6f9"; } +.bi-device-ssd-fill::before { content: "\f6fa"; } +.bi-device-ssd::before { content: "\f6fb"; } +.bi-displayport-fill::before { content: "\f6fc"; } +.bi-mortarboard-fill::before { content: "\f6fd"; } +.bi-mortarboard::before { content: "\f6fe"; } +.bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } +.bi-alphabet-uppercase::before { content: "\f2a5"; } +.bi-alphabet::before { content: "\f68a"; } +.bi-amazon::before { content: "\f68d"; } +.bi-arrows-collapse-vertical::before { content: "\f690"; } +.bi-arrows-expand-vertical::before { content: "\f695"; } +.bi-arrows-vertical::before { content: "\f698"; } +.bi-arrows::before { content: "\f6a2"; } +.bi-ban-fill::before { content: "\f6a3"; } +.bi-ban::before { content: "\f6b6"; } +.bi-bing::before { content: "\f6c2"; } +.bi-cake::before { content: "\f6e0"; } +.bi-cake2::before { content: "\f6ed"; } +.bi-cookie::before { content: "\f6ee"; } +.bi-copy::before { content: "\f759"; } +.bi-crosshair::before { content: "\f769"; } +.bi-crosshair2::before { content: "\f794"; } +.bi-emoji-astonished-fill::before { content: "\f795"; } +.bi-emoji-astonished::before { content: "\f79a"; } +.bi-emoji-grimace-fill::before { content: "\f79b"; } +.bi-emoji-grimace::before { content: "\f7a0"; } +.bi-emoji-grin-fill::before { content: "\f7a1"; } +.bi-emoji-grin::before { content: "\f7a6"; } +.bi-emoji-surprise-fill::before { content: "\f7a7"; } +.bi-emoji-surprise::before { content: "\f7ac"; } +.bi-emoji-tear-fill::before { content: "\f7ad"; } +.bi-emoji-tear::before { content: "\f7b2"; } +.bi-envelope-arrow-down-fill::before { content: "\f7b3"; } +.bi-envelope-arrow-down::before { content: "\f7b8"; } +.bi-envelope-arrow-up-fill::before { content: "\f7b9"; } +.bi-envelope-arrow-up::before { content: "\f7be"; } +.bi-feather::before { content: "\f7bf"; } +.bi-feather2::before { content: "\f7c4"; } +.bi-floppy-fill::before { content: "\f7c5"; } +.bi-floppy::before { content: "\f7d8"; } +.bi-floppy2-fill::before { content: "\f7d9"; } +.bi-floppy2::before { content: "\f7e4"; } +.bi-gitlab::before { content: "\f7e5"; } +.bi-highlighter::before { content: "\f7f8"; } +.bi-marker-tip::before { content: "\f802"; } +.bi-nvme-fill::before { content: "\f803"; } +.bi-nvme::before { content: "\f80c"; } +.bi-opencollective::before { content: "\f80d"; } +.bi-pci-card-network::before { content: "\f8cd"; } +.bi-pci-card-sound::before { content: "\f8ce"; } +.bi-radar::before { content: "\f8cf"; } +.bi-send-arrow-down-fill::before { content: "\f8d0"; } +.bi-send-arrow-down::before { content: "\f8d1"; } +.bi-send-arrow-up-fill::before { content: "\f8d2"; } +.bi-send-arrow-up::before { content: "\f8d3"; } +.bi-sim-slash-fill::before { content: "\f8d4"; } +.bi-sim-slash::before { content: "\f8d5"; } +.bi-sourceforge::before { content: "\f8d6"; } +.bi-substack::before { content: "\f8d7"; } +.bi-threads-fill::before { content: "\f8d8"; } +.bi-threads::before { content: "\f8d9"; } +.bi-transparency::before { content: "\f8da"; } +.bi-twitter-x::before { content: "\f8db"; } +.bi-type-h4::before { content: "\f8dc"; } +.bi-type-h5::before { content: "\f8dd"; } +.bi-type-h6::before { content: "\f8de"; } +.bi-backpack-fill::before { content: "\f8df"; } +.bi-backpack::before { content: "\f8e0"; } +.bi-backpack2-fill::before { content: "\f8e1"; } +.bi-backpack2::before { content: "\f8e2"; } +.bi-backpack3-fill::before { content: "\f8e3"; } +.bi-backpack3::before { content: "\f8e4"; } +.bi-backpack4-fill::before { content: "\f8e5"; } +.bi-backpack4::before { content: "\f8e6"; } +.bi-brilliance::before { content: "\f8e7"; } +.bi-cake-fill::before { content: "\f8e8"; } +.bi-cake2-fill::before { content: "\f8e9"; } +.bi-duffle-fill::before { content: "\f8ea"; } +.bi-duffle::before { content: "\f8eb"; } +.bi-exposure::before { content: "\f8ec"; } +.bi-gender-neuter::before { content: "\f8ed"; } +.bi-highlights::before { content: "\f8ee"; } +.bi-luggage-fill::before { content: "\f8ef"; } +.bi-luggage::before { content: "\f8f0"; } +.bi-mailbox-flag::before { content: "\f8f1"; } +.bi-mailbox2-flag::before { content: "\f8f2"; } +.bi-noise-reduction::before { content: "\f8f3"; } +.bi-passport-fill::before { content: "\f8f4"; } +.bi-passport::before { content: "\f8f5"; } +.bi-person-arms-up::before { content: "\f8f6"; } +.bi-person-raised-hand::before { content: "\f8f7"; } +.bi-person-standing-dress::before { content: "\f8f8"; } +.bi-person-standing::before { content: "\f8f9"; } +.bi-person-walking::before { content: "\f8fa"; } +.bi-person-wheelchair::before { content: "\f8fb"; } +.bi-shadows::before { content: "\f8fc"; } +.bi-suitcase-fill::before { content: "\f8fd"; } +.bi-suitcase-lg-fill::before { content: "\f8fe"; } +.bi-suitcase-lg::before { content: "\f8ff"; } +.bi-suitcase::before { content: "\f900"; } +.bi-suitcase2-fill::before { content: "\f901"; } +.bi-suitcase2::before { content: "\f902"; } +.bi-vignette::before { content: "\f903"; } +.bi-bluesky::before { content: "\f7f9"; } +.bi-tux::before { content: "\f904"; } +.bi-beaker-fill::before { content: "\f905"; } +.bi-beaker::before { content: "\f906"; } +.bi-flask-fill::before { content: "\f907"; } +.bi-flask-florence-fill::before { content: "\f908"; } +.bi-flask-florence::before { content: "\f909"; } +.bi-flask::before { content: "\f90a"; } +.bi-leaf-fill::before { content: "\f90b"; } +.bi-leaf::before { content: "\f90c"; } +.bi-measuring-cup-fill::before { content: "\f90d"; } +.bi-measuring-cup::before { content: "\f90e"; } +.bi-unlock2-fill::before { content: "\f90f"; } +.bi-unlock2::before { content: "\f910"; } +.bi-battery-low::before { content: "\f911"; } +.bi-anthropic::before { content: "\f912"; } +.bi-apple-music::before { content: "\f913"; } +.bi-claude::before { content: "\f914"; } +.bi-openai::before { content: "\f915"; } +.bi-perplexity::before { content: "\f916"; } +.bi-css::before { content: "\f917"; } +.bi-javascript::before { content: "\f918"; } +.bi-typescript::before { content: "\f919"; } +.bi-fork-knife::before { content: "\f91a"; } +.bi-globe-americas-fill::before { content: "\f91b"; } +.bi-globe-asia-australia-fill::before { content: "\f91c"; } +.bi-globe-central-south-asia-fill::before { content: "\f91d"; } +.bi-globe-europe-africa-fill::before { content: "\f91e"; } diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.woff b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap-icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..a4fa4f024c2171080ebaf3112fccbf90cdb98479 GIT binary patch literal 180288 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 DSDONf literal 0 HcmV?d00001 diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap.min.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap.min.js new file mode 100644 index 0000000..e8f21f7 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/bootstrap/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.3.1 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); +//# sourceMappingURL=bootstrap.bundle.min.js.map \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/clipboard/clipboard.min.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/clipboard/clipboard.min.js new file mode 100644 index 0000000..1103f81 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/clipboard/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); +// @license-end \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/axe/axe-check.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/axe/axe-check.js new file mode 100644 index 0000000..8808085 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/axe/axe-check.js @@ -0,0 +1,145 @@ +class QuartoAxeReporter { + constructor(axeResult, options) { + this.axeResult = axeResult; + this.options = options; + } + + report() { + throw new Error("report() is an abstract method"); + } +} + +class QuartoAxeJsonReporter extends QuartoAxeReporter { + constructor(axeResult, options) { + super(axeResult, options); + } + + report() { + console.log(JSON.stringify(this.axeResult, null, 2)); + } +} + +class QuartoAxeConsoleReporter extends QuartoAxeReporter { + constructor(axeResult, options) { + super(axeResult, options); + } + + report() { + for (const violation of this.axeResult.violations) { + console.log(violation.description); + for (const node of violation.nodes) { + for (const target of node.target) { + console.log(target); + console.log(document.querySelector(target)); + } + } + } + } +} + +class QuartoAxeDocumentReporter extends QuartoAxeReporter { + constructor(axeResult, options) { + super(axeResult, options); + } + + createViolationElement(violation) { + const violationElement = document.createElement("div"); + + const descriptionElement = document.createElement("div"); + descriptionElement.className = "quarto-axe-violation-description"; + descriptionElement.innerText = `${violation.impact.replace(/^[a-z]/, match => match.toLocaleUpperCase())}: ${violation.description}`; + violationElement.appendChild(descriptionElement); + + const helpElement = document.createElement("div"); + helpElement.className = "quarto-axe-violation-help"; + helpElement.innerText = violation.help; + violationElement.appendChild(helpElement); + + const nodesElement = document.createElement("div"); + nodesElement.className = "quarto-axe-violation-nodes"; + violationElement.appendChild(nodesElement); + const nodeElement = document.createElement("div"); + nodeElement.className = "quarto-axe-violation-selector"; + for (const node of violation.nodes) { + for (const target of node.target) { + const targetElement = document.createElement("span"); + targetElement.className = "quarto-axe-violation-target"; + targetElement.innerText = target; + nodeElement.appendChild(targetElement); + nodeElement.addEventListener("mouseenter", () => { + const element = document.querySelector(target); + if (element) { + element.scrollIntoView({ behavior: "smooth", block: "center" }); + element.classList.add("quarto-axe-hover-highlight"); + setTimeout(() => { + element.style.border = ""; + }, 2000); + } + }); + nodeElement.addEventListener("mouseleave", () => { + const element = document.querySelector(target); + if (element) { + element.classList.remove("quarto-axe-hover-highlight"); + } + }); + nodeElement.addEventListener("click", () => { + console.log(document.querySelector(target)); + }); + nodeElement.appendChild(targetElement); + } + nodesElement.appendChild(nodeElement); + } + return violationElement; + } + + report() { + const violations = this.axeResult.violations; + const reportElement = document.createElement("div"); + reportElement.className = "quarto-axe-report"; + if (violations.length === 0) { + const noViolationsElement = document.createElement("div"); + noViolationsElement.className = "quarto-axe-no-violations"; + noViolationsElement.innerText = "No axe-core violations found."; + reportElement.appendChild(noViolationsElement); + } + violations.forEach((violation) => { + reportElement.appendChild(this.createViolationElement(violation)); + }); + document.querySelector("main").appendChild(reportElement); + } +} + +const reporters = { + json: QuartoAxeJsonReporter, + console: QuartoAxeConsoleReporter, + document: QuartoAxeDocumentReporter, +}; + +class QuartoAxeChecker { + constructor(opts) { + this.options = opts; + } + async init() { + const axe = (await import("https://cdn.skypack.dev/pin/axe-core@v4.10.3-aVOFXWsJaCpVrtv89pCa/mode=imports,min/optimized/axe-core.js")).default; + const result = await axe.run({ + exclude: [ + // https://github.com/microsoft/tabster/issues/288 + // MS has claimed they won't fix this, so we need to add an exclusion to + // all tabster elements + "[data-tabster-dummy]" + ], + preload: { assets: ['cssom'], timeout: 50000 } + }); + const reporter = this.options === true ? new QuartoAxeConsoleReporter(result) : new reporters[this.options.output](result, this.options); + reporter.report(); + } +} + +export async function init() { + const opts = document.querySelector("#quarto-axe-checker-options"); + if (opts) { + const jsonOptions = JSON.parse(atob(opts.textContent)); + const checker = new QuartoAxeChecker(jsonOptions); + await checker.init(); + } +} \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/popper.min.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/popper.min.js new file mode 100644 index 0000000..e3726d7 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/popper.min.js @@ -0,0 +1,6 @@ +/** + * @popperjs/core v2.11.7 - MIT License + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); + diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css new file mode 100644 index 0000000..7bb4f73 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css @@ -0,0 +1,236 @@ +/* quarto syntax highlight colors */ +:root { + --quarto-hl-ot-color: #003B4F; + --quarto-hl-at-color: #657422; + --quarto-hl-ss-color: #20794D; + --quarto-hl-an-color: #5E5E5E; + --quarto-hl-fu-color: #4758AB; + --quarto-hl-st-color: #20794D; + --quarto-hl-cf-color: #003B4F; + --quarto-hl-op-color: #5E5E5E; + --quarto-hl-er-color: #AD0000; + --quarto-hl-bn-color: #AD0000; + --quarto-hl-al-color: #AD0000; + --quarto-hl-va-color: #111111; + --quarto-hl-bu-color: inherit; + --quarto-hl-ex-color: inherit; + --quarto-hl-pp-color: #AD0000; + --quarto-hl-in-color: #5E5E5E; + --quarto-hl-vs-color: #20794D; + --quarto-hl-wa-color: #5E5E5E; + --quarto-hl-do-color: #5E5E5E; + --quarto-hl-im-color: #00769E; + --quarto-hl-ch-color: #20794D; + --quarto-hl-dt-color: #AD0000; + --quarto-hl-fl-color: #AD0000; + --quarto-hl-co-color: #5E5E5E; + --quarto-hl-cv-color: #5E5E5E; + --quarto-hl-cn-color: #8f5902; + --quarto-hl-sc-color: #5E5E5E; + --quarto-hl-dv-color: #AD0000; + --quarto-hl-kw-color: #003B4F; +} + +/* other quarto variables */ +:root { + --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +/* syntax highlight based on Pandoc's rules */ +pre > code.sourceCode > span { + color: #003B4F; +} + +code.sourceCode > span { + color: #003B4F; +} + +div.sourceCode, +div.sourceCode pre.sourceCode { + color: #003B4F; +} + +/* Normal */ +code span { + color: #003B4F; +} + +/* Alert */ +code span.al { + color: #AD0000; + font-style: inherit; +} + +/* Annotation */ +code span.an { + color: #5E5E5E; + font-style: inherit; +} + +/* Attribute */ +code span.at { + color: #657422; + font-style: inherit; +} + +/* BaseN */ +code span.bn { + color: #AD0000; + font-style: inherit; +} + +/* BuiltIn */ +code span.bu { + font-style: inherit; +} + +/* ControlFlow */ +code span.cf { + color: #003B4F; + font-weight: bold; + font-style: inherit; +} + +/* Char */ +code span.ch { + color: #20794D; + font-style: inherit; +} + +/* Constant */ +code span.cn { + color: #8f5902; + font-style: inherit; +} + +/* Comment */ +code span.co { + color: #5E5E5E; + font-style: inherit; +} + +/* CommentVar */ +code span.cv { + color: #5E5E5E; + font-style: italic; +} + +/* Documentation */ +code span.do { + color: #5E5E5E; + font-style: italic; +} + +/* DataType */ +code span.dt { + color: #AD0000; + font-style: inherit; +} + +/* DecVal */ +code span.dv { + color: #AD0000; + font-style: inherit; +} + +/* Error */ +code span.er { + color: #AD0000; + font-style: inherit; +} + +/* Extension */ +code span.ex { + font-style: inherit; +} + +/* Float */ +code span.fl { + color: #AD0000; + font-style: inherit; +} + +/* Function */ +code span.fu { + color: #4758AB; + font-style: inherit; +} + +/* Import */ +code span.im { + color: #00769E; + font-style: inherit; +} + +/* Information */ +code span.in { + color: #5E5E5E; + font-style: inherit; +} + +/* Keyword */ +code span.kw { + color: #003B4F; + font-weight: bold; + font-style: inherit; +} + +/* Operator */ +code span.op { + color: #5E5E5E; + font-style: inherit; +} + +/* Other */ +code span.ot { + color: #003B4F; + font-style: inherit; +} + +/* Preprocessor */ +code span.pp { + color: #AD0000; + font-style: inherit; +} + +/* SpecialChar */ +code span.sc { + color: #5E5E5E; + font-style: inherit; +} + +/* SpecialString */ +code span.ss { + color: #20794D; + font-style: inherit; +} + +/* String */ +code span.st { + color: #20794D; + font-style: inherit; +} + +/* Variable */ +code span.va { + color: #111111; + font-style: inherit; +} + +/* VerbatimString */ +code span.vs { + color: #20794D; + font-style: inherit; +} + +/* Warning */ +code span.wa { + color: #5E5E5E; + font-style: italic; +} + +.prevent-inlining { + content: " { + // Find any conflicting margin elements and add margins to the + // top to prevent overlap + const marginChildren = window.document.querySelectorAll( + ".column-margin.column-container > *, .margin-caption, .aside" + ); + + let lastBottom = 0; + for (const marginChild of marginChildren) { + if (marginChild.offsetParent !== null) { + // clear the top margin so we recompute it + marginChild.style.marginTop = null; + const top = marginChild.getBoundingClientRect().top + window.scrollY; + if (top < lastBottom) { + const marginChildStyle = window.getComputedStyle(marginChild); + const marginBottom = parseFloat(marginChildStyle["marginBottom"]); + const margin = lastBottom - top + marginBottom; + marginChild.style.marginTop = `${margin}px`; + } + const styles = window.getComputedStyle(marginChild); + const marginTop = parseFloat(styles["marginTop"]); + lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; + } + } +}; + +window.document.addEventListener("DOMContentLoaded", function (_event) { + // Recompute the position of margin elements anytime the body size changes + if (window.ResizeObserver) { + const resizeObserver = new window.ResizeObserver( + throttle(() => { + layoutMarginEls(); + if ( + window.document.body.getBoundingClientRect().width < 990 && + isReaderMode() + ) { + quartoToggleReader(); + } + }, 50) + ); + resizeObserver.observe(window.document.body); + } + + const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); + const sidebarEl = window.document.getElementById("quarto-sidebar"); + const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); + const marginSidebarEl = window.document.getElementById( + "quarto-margin-sidebar" + ); + // function to determine whether the element has a previous sibling that is active + const prevSiblingIsActiveLink = (el) => { + const sibling = el.previousElementSibling; + if (sibling && sibling.tagName === "A") { + return sibling.classList.contains("active"); + } else { + return false; + } + }; + + // dispatch for htmlwidgets + // they use slideenter event to trigger resize + function fireSlideEnter() { + const event = window.document.createEvent("Event"); + event.initEvent("slideenter", true, true); + window.document.dispatchEvent(event); + } + + const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); + tabs.forEach((tab) => { + tab.addEventListener("shown.bs.tab", fireSlideEnter); + }); + + // dispatch for shiny + // they use BS shown and hidden events to trigger rendering + function distpatchShinyEvents(previous, current) { + if (window.jQuery) { + if (previous) { + window.jQuery(previous).trigger("hidden"); + } + if (current) { + window.jQuery(current).trigger("shown"); + } + } + } + + // tabby.js listener: Trigger event for htmlwidget and shiny + document.addEventListener( + "tabby", + function (event) { + fireSlideEnter(); + distpatchShinyEvents(event.detail.previousTab, event.detail.tab); + }, + false + ); + + // Track scrolling and mark TOC links as active + // get table of contents and sidebar (bail if we don't have at least one) + const tocLinks = tocEl + ? [...tocEl.querySelectorAll("a[data-scroll-target]")] + : []; + const makeActive = (link) => tocLinks[link].classList.add("active"); + const removeActive = (link) => tocLinks[link].classList.remove("active"); + const removeAllActive = () => + [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); + + // activate the anchor for a section associated with this TOC entry + tocLinks.forEach((link) => { + link.addEventListener("click", () => { + if (link.href.indexOf("#") !== -1) { + const anchor = link.href.split("#")[1]; + const heading = window.document.querySelector( + `[data-anchor-id="${anchor}"]` + ); + if (heading) { + // Add the class + heading.classList.add("reveal-anchorjs-link"); + + // function to show the anchor + const handleMouseout = () => { + heading.classList.remove("reveal-anchorjs-link"); + heading.removeEventListener("mouseout", handleMouseout); + }; + + // add a function to clear the anchor when the user mouses out of it + heading.addEventListener("mouseout", handleMouseout); + } + } + }); + }); + + const sections = tocLinks.map((link) => { + const target = link.getAttribute("data-scroll-target"); + if (target.startsWith("#")) { + return window.document.getElementById(decodeURI(`${target.slice(1)}`)); + } else { + return window.document.querySelector(decodeURI(`${target}`)); + } + }); + + const sectionMargin = 200; + let currentActive = 0; + // track whether we've initialized state the first time + let init = false; + + const updateActiveLink = () => { + // The index from bottom to top (e.g. reversed list) + let sectionIndex = -1; + if ( + window.innerHeight + window.pageYOffset >= + window.document.body.offsetHeight + ) { + // This is the no-scroll case where last section should be the active one + sectionIndex = 0; + } else { + // This finds the last section visible on screen that should be made active + sectionIndex = [...sections].reverse().findIndex((section) => { + if (section) { + return window.pageYOffset >= section.offsetTop - sectionMargin; + } else { + return false; + } + }); + } + if (sectionIndex > -1) { + const current = sections.length - sectionIndex - 1; + if (current !== currentActive) { + removeAllActive(); + currentActive = current; + makeActive(current); + if (init) { + window.dispatchEvent(sectionChanged); + } + init = true; + } + } + }; + + const inHiddenRegion = (top, bottom, hiddenRegions) => { + for (const region of hiddenRegions) { + if (top <= region.bottom && bottom >= region.top) { + return true; + } + } + return false; + }; + + const categorySelector = "header.quarto-title-block .quarto-category"; + const activateCategories = (href) => { + // Find any categories + // Surround them with a link pointing back to: + // #category=Authoring + try { + const categoryEls = window.document.querySelectorAll(categorySelector); + for (const categoryEl of categoryEls) { + const categoryText = categoryEl.textContent; + if (categoryText) { + const link = `${href}#category=${encodeURIComponent(categoryText)}`; + const linkEl = window.document.createElement("a"); + linkEl.setAttribute("href", link); + for (const child of categoryEl.childNodes) { + linkEl.append(child); + } + categoryEl.appendChild(linkEl); + } + } + } catch { + // Ignore errors + } + }; + function hasTitleCategories() { + return window.document.querySelector(categorySelector) !== null; + } + + function offsetRelativeUrl(url) { + const offset = getMeta("quarto:offset"); + return offset ? offset + url : url; + } + + function offsetAbsoluteUrl(url) { + const offset = getMeta("quarto:offset"); + const baseUrl = new URL(offset, window.location); + + const projRelativeUrl = url.replace(baseUrl, ""); + if (projRelativeUrl.startsWith("/")) { + return projRelativeUrl; + } else { + return "/" + projRelativeUrl; + } + } + + // read a meta tag value + function getMeta(metaName) { + const metas = window.document.getElementsByTagName("meta"); + for (let i = 0; i < metas.length; i++) { + if (metas[i].getAttribute("name") === metaName) { + return metas[i].getAttribute("content"); + } + } + return ""; + } + + async function findAndActivateCategories() { + // Categories search with listing only use path without query + const currentPagePath = offsetAbsoluteUrl( + window.location.origin + window.location.pathname + ); + const response = await fetch(offsetRelativeUrl("listings.json")); + if (response.status == 200) { + return response.json().then(function (listingPaths) { + const listingHrefs = []; + for (const listingPath of listingPaths) { + const pathWithoutLeadingSlash = listingPath.listing.substring(1); + for (const item of listingPath.items) { + const encodedItem = encodeURI(item); + if ( + encodedItem === currentPagePath || + encodedItem === currentPagePath + "index.html" + ) { + // Resolve this path against the offset to be sure + // we already are using the correct path to the listing + // (this adjusts the listing urls to be rooted against + // whatever root the page is actually running against) + const relative = offsetRelativeUrl(pathWithoutLeadingSlash); + const baseUrl = window.location; + const resolvedPath = new URL(relative, baseUrl); + listingHrefs.push(resolvedPath.pathname); + break; + } + } + } + + // Look up the tree for a nearby linting and use that if we find one + const nearestListing = findNearestParentListing( + offsetAbsoluteUrl(window.location.pathname), + listingHrefs + ); + if (nearestListing) { + activateCategories(nearestListing); + } else { + // See if the referrer is a listing page for this item + const referredRelativePath = offsetAbsoluteUrl(document.referrer); + const referrerListing = listingHrefs.find((listingHref) => { + const isListingReferrer = + listingHref === referredRelativePath || + listingHref === referredRelativePath + "index.html"; + return isListingReferrer; + }); + + if (referrerListing) { + // Try to use the referrer if possible + activateCategories(referrerListing); + } else if (listingHrefs.length > 0) { + // Otherwise, just fall back to the first listing + activateCategories(listingHrefs[0]); + } + } + }); + } + } + if (hasTitleCategories()) { + findAndActivateCategories(); + } + + const findNearestParentListing = (href, listingHrefs) => { + if (!href || !listingHrefs) { + return undefined; + } + // Look up the tree for a nearby linting and use that if we find one + const relativeParts = href.substring(1).split("/"); + while (relativeParts.length > 0) { + const path = relativeParts.join("/"); + for (const listingHref of listingHrefs) { + if (listingHref.startsWith(path)) { + return listingHref; + } + } + relativeParts.pop(); + } + + return undefined; + }; + + const manageSidebarVisiblity = (el, placeholderDescriptor) => { + let isVisible = true; + let elRect; + + return (hiddenRegions) => { + if (el === null) { + return; + } + + // Find the last element of the TOC + const lastChildEl = el.lastElementChild; + + if (lastChildEl) { + // Converts the sidebar to a menu + const convertToMenu = () => { + for (const child of el.children) { + child.style.opacity = 0; + child.style.overflow = "hidden"; + child.style.pointerEvents = "none"; + } + + nexttick(() => { + const toggleContainer = window.document.createElement("div"); + toggleContainer.style.width = "100%"; + toggleContainer.classList.add("zindex-over-content"); + toggleContainer.classList.add("quarto-sidebar-toggle"); + toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom + toggleContainer.id = placeholderDescriptor.id; + toggleContainer.style.position = "fixed"; + + const toggleIcon = window.document.createElement("i"); + toggleIcon.classList.add("quarto-sidebar-toggle-icon"); + toggleIcon.classList.add("bi"); + toggleIcon.classList.add("bi-caret-down-fill"); + + const toggleTitle = window.document.createElement("div"); + const titleEl = window.document.body.querySelector( + placeholderDescriptor.titleSelector + ); + if (titleEl) { + toggleTitle.append( + titleEl.textContent || titleEl.innerText, + toggleIcon + ); + } + toggleTitle.classList.add("zindex-over-content"); + toggleTitle.classList.add("quarto-sidebar-toggle-title"); + toggleContainer.append(toggleTitle); + + const toggleContents = window.document.createElement("div"); + toggleContents.classList = el.classList; + toggleContents.classList.add("zindex-over-content"); + toggleContents.classList.add("quarto-sidebar-toggle-contents"); + for (const child of el.children) { + if (child.id === "toc-title") { + continue; + } + + const clone = child.cloneNode(true); + clone.style.opacity = 1; + clone.style.pointerEvents = null; + clone.style.display = null; + toggleContents.append(clone); + } + toggleContents.style.height = "0px"; + const positionToggle = () => { + // position the element (top left of parent, same width as parent) + if (!elRect) { + elRect = el.getBoundingClientRect(); + } + toggleContainer.style.left = `${elRect.left}px`; + toggleContainer.style.top = `${elRect.top}px`; + toggleContainer.style.width = `${elRect.width}px`; + }; + positionToggle(); + + toggleContainer.append(toggleContents); + el.parentElement.prepend(toggleContainer); + + // Process clicks + let tocShowing = false; + // Allow the caller to control whether this is dismissed + // when it is clicked (e.g. sidebar navigation supports + // opening and closing the nav tree, so don't dismiss on click) + const clickEl = placeholderDescriptor.dismissOnClick + ? toggleContainer + : toggleTitle; + + const closeToggle = () => { + if (tocShowing) { + toggleContainer.classList.remove("expanded"); + toggleContents.style.height = "0px"; + tocShowing = false; + } + }; + + // Get rid of any expanded toggle if the user scrolls + window.document.addEventListener( + "scroll", + throttle(() => { + closeToggle(); + }, 50) + ); + + // Handle positioning of the toggle + window.addEventListener( + "resize", + throttle(() => { + elRect = undefined; + positionToggle(); + }, 50) + ); + + window.addEventListener("quarto-hrChanged", () => { + elRect = undefined; + }); + + // Process the click + clickEl.onclick = () => { + if (!tocShowing) { + toggleContainer.classList.add("expanded"); + toggleContents.style.height = null; + tocShowing = true; + } else { + closeToggle(); + } + }; + }); + }; + + // Converts a sidebar from a menu back to a sidebar + const convertToSidebar = () => { + for (const child of el.children) { + child.style.opacity = 1; + child.style.overflow = null; + child.style.pointerEvents = null; + } + + const placeholderEl = window.document.getElementById( + placeholderDescriptor.id + ); + if (placeholderEl) { + placeholderEl.remove(); + } + + el.classList.remove("rollup"); + }; + + if (isReaderMode()) { + convertToMenu(); + isVisible = false; + } else { + // Find the top and bottom o the element that is being managed + const elTop = el.offsetTop; + const elBottom = + elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; + + if (!isVisible) { + // If the element is current not visible reveal if there are + // no conflicts with overlay regions + if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToSidebar(); + isVisible = true; + } + } else { + // If the element is visible, hide it if it conflicts with overlay regions + // and insert a placeholder toggle (or if we're in reader mode) + if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { + convertToMenu(); + isVisible = false; + } + } + } + } + }; + }; + + const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); + for (const tabEl of tabEls) { + const id = tabEl.getAttribute("data-bs-target"); + if (id) { + const columnEl = document.querySelector( + `${id} .column-margin, .tabset-margin-content` + ); + if (columnEl) + tabEl.addEventListener("shown.bs.tab", function (event) { + const el = event.srcElement; + if (el) { + const visibleCls = `${el.id}-margin-content`; + // walk up until we find a parent tabset + let panelTabsetEl = el.parentElement; + while (panelTabsetEl) { + if (panelTabsetEl.classList.contains("panel-tabset")) { + break; + } + panelTabsetEl = panelTabsetEl.parentElement; + } + + if (panelTabsetEl) { + const prevSib = panelTabsetEl.previousElementSibling; + if ( + prevSib && + prevSib.classList.contains("tabset-margin-container") + ) { + const childNodes = prevSib.querySelectorAll( + ".tabset-margin-content" + ); + for (const childEl of childNodes) { + if (childEl.classList.contains(visibleCls)) { + childEl.classList.remove("collapse"); + } else { + childEl.classList.add("collapse"); + } + } + } + } + } + + layoutMarginEls(); + }); + } + } + + // Manage the visibility of the toc and the sidebar + const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { + id: "quarto-toc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { + id: "quarto-sidebarnav-toggle", + titleSelector: ".title", + dismissOnClick: false, + }); + let tocLeftScrollVisibility; + if (leftTocEl) { + tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { + id: "quarto-lefttoc-toggle", + titleSelector: "#toc-title", + dismissOnClick: true, + }); + } + + // Find the first element that uses formatting in special columns + const conflictingEls = window.document.body.querySelectorAll( + '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' + ); + + // Filter all the possibly conflicting elements into ones + // the do conflict on the left or ride side + const arrConflictingEls = Array.from(conflictingEls); + const leftSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return false; + } + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + className.startsWith("column-") && + !className.endsWith("right") && + !className.endsWith("container") && + className !== "column-margin" + ); + }); + }); + const rightSideConflictEls = arrConflictingEls.filter((el) => { + if (el.tagName === "ASIDE") { + return true; + } + + const hasMarginCaption = Array.from(el.classList).find((className) => { + return className == "margin-caption"; + }); + if (hasMarginCaption) { + return true; + } + + return Array.from(el.classList).find((className) => { + return ( + className !== "column-body" && + !className.endsWith("container") && + className.startsWith("column-") && + !className.endsWith("left") + ); + }); + }); + + const kOverlapPaddingSize = 10; + function toRegions(els) { + return els.map((el) => { + const boundRect = el.getBoundingClientRect(); + const top = + boundRect.top + + document.documentElement.scrollTop - + kOverlapPaddingSize; + return { + top, + bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, + }; + }); + } + + let hasObserved = false; + const visibleItemObserver = (els) => { + let visibleElements = [...els]; + const intersectionObserver = new IntersectionObserver( + (entries, _observer) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + if (visibleElements.indexOf(entry.target) === -1) { + visibleElements.push(entry.target); + } + } else { + visibleElements = visibleElements.filter((visibleEntry) => { + return visibleEntry !== entry; + }); + } + }); + + if (!hasObserved) { + hideOverlappedSidebars(); + } + hasObserved = true; + }, + {} + ); + els.forEach((el) => { + intersectionObserver.observe(el); + }); + + return { + getVisibleEntries: () => { + return visibleElements; + }, + }; + }; + + const rightElementObserver = visibleItemObserver(rightSideConflictEls); + const leftElementObserver = visibleItemObserver(leftSideConflictEls); + + const hideOverlappedSidebars = () => { + marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); + sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); + if (tocLeftScrollVisibility) { + tocLeftScrollVisibility( + toRegions(leftElementObserver.getVisibleEntries()) + ); + } + }; + + window.quartoToggleReader = () => { + // Applies a slow class (or removes it) + // to update the transition speed + const slowTransition = (slow) => { + const manageTransition = (id, slow) => { + const el = document.getElementById(id); + if (el) { + if (slow) { + el.classList.add("slow"); + } else { + el.classList.remove("slow"); + } + } + }; + + manageTransition("TOC", slow); + manageTransition("quarto-sidebar", slow); + }; + const readerMode = !isReaderMode(); + setReaderModeValue(readerMode); + + // If we're entering reader mode, slow the transition + if (readerMode) { + slowTransition(readerMode); + } + highlightReaderToggle(readerMode); + hideOverlappedSidebars(); + + // If we're exiting reader mode, restore the non-slow transition + if (!readerMode) { + slowTransition(!readerMode); + } + }; + + const highlightReaderToggle = (readerMode) => { + const els = document.querySelectorAll(".quarto-reader-toggle"); + if (els) { + els.forEach((el) => { + if (readerMode) { + el.classList.add("reader"); + } else { + el.classList.remove("reader"); + } + }); + } + }; + + const setReaderModeValue = (val) => { + if (window.location.protocol !== "file:") { + window.localStorage.setItem("quarto-reader-mode", val); + } else { + localReaderMode = val; + } + }; + + const isReaderMode = () => { + if (window.location.protocol !== "file:") { + return window.localStorage.getItem("quarto-reader-mode") === "true"; + } else { + return localReaderMode; + } + }; + let localReaderMode = null; + + const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); + const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; + + // Walk the TOC and collapse/expand nodes + // Nodes are expanded if: + // - they are top level + // - they have children that are 'active' links + // - they are directly below an link that is 'active' + const walk = (el, depth) => { + // Tick depth when we enter a UL + if (el.tagName === "UL") { + depth = depth + 1; + } + + // It this is active link + let isActiveNode = false; + if (el.tagName === "A" && el.classList.contains("active")) { + isActiveNode = true; + } + + // See if there is an active child to this element + let hasActiveChild = false; + for (const child of el.children) { + hasActiveChild = walk(child, depth) || hasActiveChild; + } + + // Process the collapse state if this is an UL + if (el.tagName === "UL") { + if (tocOpenDepth === -1 && depth > 1) { + // toc-expand: false + el.classList.add("collapse"); + } else if ( + depth <= tocOpenDepth || + hasActiveChild || + prevSiblingIsActiveLink(el) + ) { + el.classList.remove("collapse"); + } else { + el.classList.add("collapse"); + } + + // untick depth when we leave a UL + depth = depth - 1; + } + return hasActiveChild || isActiveNode; + }; + + // walk the TOC and expand / collapse any items that should be shown + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + + // Throttle the scroll event and walk peridiocally + window.document.addEventListener( + "scroll", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 5) + ); + window.addEventListener( + "resize", + throttle(() => { + if (tocEl) { + updateActiveLink(); + walk(tocEl, 0); + } + if (!isReaderMode()) { + hideOverlappedSidebars(); + } + }, 10) + ); + hideOverlappedSidebars(); + highlightReaderToggle(isReaderMode()); +}); + +tabsets.init(); +axe.init(); + +function throttle(func, wait) { + let waiting = false; + return function () { + if (!waiting) { + func.apply(this, arguments); + waiting = true; + setTimeout(function () { + waiting = false; + }, wait); + } + }; +} + +function nexttick(func) { + return setTimeout(func, 0); +} diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tabsets/tabsets.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tabsets/tabsets.js new file mode 100644 index 0000000..51345d0 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tabsets/tabsets.js @@ -0,0 +1,95 @@ +// grouped tabsets + +export function init() { + window.addEventListener("pageshow", (_event) => { + function getTabSettings() { + const data = localStorage.getItem("quarto-persistent-tabsets-data"); + if (!data) { + localStorage.setItem("quarto-persistent-tabsets-data", "{}"); + return {}; + } + if (data) { + return JSON.parse(data); + } + } + + function setTabSettings(data) { + localStorage.setItem( + "quarto-persistent-tabsets-data", + JSON.stringify(data) + ); + } + + function setTabState(groupName, groupValue) { + const data = getTabSettings(); + data[groupName] = groupValue; + setTabSettings(data); + } + + function toggleTab(tab, active) { + const tabPanelId = tab.getAttribute("aria-controls"); + const tabPanel = document.getElementById(tabPanelId); + if (active) { + tab.classList.add("active"); + tabPanel.classList.add("active"); + } else { + tab.classList.remove("active"); + tabPanel.classList.remove("active"); + } + } + + function toggleAll(selectedGroup, selectorsToSync) { + for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { + const active = selectedGroup === thisGroup; + for (const tab of tabs) { + toggleTab(tab, active); + } + } + } + + function findSelectorsToSyncByLanguage() { + const result = {}; + const tabs = Array.from( + document.querySelectorAll(`div[data-group] a[id^='tabset-']`) + ); + for (const item of tabs) { + const div = item.parentElement.parentElement.parentElement; + const group = div.getAttribute("data-group"); + if (!result[group]) { + result[group] = {}; + } + const selectorsToSync = result[group]; + const value = item.innerHTML; + if (!selectorsToSync[value]) { + selectorsToSync[value] = []; + } + selectorsToSync[value].push(item); + } + return result; + } + + function setupSelectorSync() { + const selectorsToSync = findSelectorsToSyncByLanguage(); + Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { + Object.entries(tabSetsByValue).forEach(([value, items]) => { + items.forEach((item) => { + item.addEventListener("click", (_event) => { + setTabState(group, value); + toggleAll(value, selectorsToSync[group]); + }); + }); + }); + }); + return selectorsToSync; + } + + const selectorsToSync = setupSelectorSync(); + for (const [group, selectedName] of Object.entries(getTabSettings())) { + const selectors = selectorsToSync[group]; + // it's possible that stale state gives us empty selections, so we explicitly check here. + if (selectors) { + toggleAll(selectedName, selectors); + } + } + }); +} diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.css b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.css new file mode 100644 index 0000000..e6ae635 --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.css @@ -0,0 +1 @@ +.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.umd.min.js b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.umd.min.js new file mode 100644 index 0000000..ca292be --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/Homework_files/libs/quarto-html/tippy.umd.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); + diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/README b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/README new file mode 100644 index 0000000..01cd9bd --- /dev/null +++ b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/README @@ -0,0 +1,21 @@ +## Preview error + +I keep getting an error when I try to preview the doc, but everything works when I run the code chucks individually as well as the "run above" option: + +```{r} +Error in `file()`: +! cannot open the connection +Backtrace: + ▆ + 1. └─utils::read.csv(PathToData, check.names = FALSE) + 2. └─utils::read.table(...) + 3. └─base::file(file, "rt") + +Quitting from Homework.qmd:27-29 [unnamed-chunk-4] +Execution halted +``` + +## side note +I tried to pull in my own .fcs file to use instead of the Dataset.csv file. +Everytime i tried, it wasn't reading. It kept bringing back FALSE when I called is.fcsfile from the flowcore package. +We'll probably get into next week- I'm probably missing something crucial. \ No newline at end of file diff --git a/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/.DS_Store b/course/04_IntroToTidyverse/homeworks/A-hedgecock-FlowCore/data/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 Date: Tue, 3 Mar 2026 12:36:56 -0500 Subject: [PATCH 2/8] Setup for Windows/MacOS test --- course/05_GatingSets/index.qmd | 11 +- course/05_GatingSets/slides.qmd | 1401 +++++++ docs/course/03_InsideFCSFile/index.html | 8 +- docs/course/03_InsideFCSFile/slides.html | 8 +- docs/course/05_GatingSets/index.html | 25 +- docs/course/05_GatingSets/slides.html | 3313 +++++++++++++++++ .../figure-revealjs/unnamed-chunk-52-1.png | Bin 0 -> 58839 bytes .../figure-revealjs/unnamed-chunk-65-1.png | Bin 0 -> 73679 bytes .../figure-revealjs/unnamed-chunk-66-1.png | Bin 0 -> 65982 bytes .../figure-revealjs/unnamed-chunk-67-1.png | Bin 0 -> 59275 bytes .../figure-revealjs/unnamed-chunk-68-1.png | Bin 0 -> 71697 bytes docs/search.json | 2868 +++++++------- 12 files changed, 6226 insertions(+), 1408 deletions(-) create mode 100644 course/05_GatingSets/slides.qmd create mode 100644 docs/course/05_GatingSets/slides.html create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-52-1.png create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-66-1.png create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-67-1.png create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-68-1.png diff --git a/course/05_GatingSets/index.qmd b/course/05_GatingSets/index.qmd index 42f682a..9381538 100644 --- a/course/05_GatingSets/index.qmd +++ b/course/05_GatingSets/index.qmd @@ -15,7 +15,7 @@ toc-depth: 5 For the YouTube livestream schedule, see [here](https://www.youtube.com/@cytometryinr) -For screen-shot slides, click [here]() +For screen-shot slides, click [here](/course/05_GatingSets/slides.qmd)
@@ -75,7 +75,8 @@ library(flowCore) ``` ```{r} -flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE, transformation = FALSE) +flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE, + transformation = FALSE) flowFrame ``` @@ -107,14 +108,16 @@ str(fcs_files) Consequently, we will need to use another function if we want to read in multiple .fcs files at once. For `flowCore`, this function is the `read.flowSet()` function. ```{r} -flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE, transformation = FALSE) +flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE, + transformation = FALSE) flowSet ``` Alternatively, we can designate specific files within "fcs_files" we want to read in using the [] and c() notation style we have encountered previously. ```{r} -read.flowSet(files=fcs_files[c(1, 3:4)], truncate_max_range = FALSE, transformation = FALSE) +read.flowSet(files=fcs_files[c(1, 3:4)], + truncate_max_range = FALSE, transformation = FALSE) ``` On follow-up, we can see that `read.flowSet()` has created a "flowSet" class object. diff --git a/course/05_GatingSets/slides.qmd b/course/05_GatingSets/slides.qmd new file mode 100644 index 0000000..ba70aa3 --- /dev/null +++ b/course/05_GatingSets/slides.qmd @@ -0,0 +1,1401 @@ +--- +title: "05 - Gating Sets" +author: "David Rach" +date: 03-03-2026 +format: + revealjs: + theme: default + slide-number: true + incremental: true +page-layout: full +execute: + echo: true + warning: false + message: false +--- + +![](/images/WebsiteBanner.png) + +::: {style="text-align: right;"} +[![AGPL-3.0](https://img.shields.io/badge/license-AGPLv3-blue)](https://www.gnu.org/licenses/agpl-3.0.en.html) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](http://creativecommons.org/licenses/by-sa/4.0/) +::: + +--- + +# Background + + +::: {.fragment} +::: {.callout-tip title="."} +Welcome to the fifth week of the Cytometry in R course!!! At this point, we are through a significant portion of the "Intro to R" material, and will start encountering more "Cytometry-focused" material moving forward. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +If we think of a typical flow cytometry experiment, there is more to the analysis than simply acquiring the .fcs file. While there is [substantial information](/course/03_InsideFCSFile/) present within an .fcs file, in the context of analyzing them with commercial software, we rely on additional infrastructural elements to organize the various files, transform (scale), compensate (for conventional flow), visualize, derrive statistics, etc. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +This infrastructural requirement within the R context is primarily handled by the `flowCore` and `flowWorkspace` R packages from [Bioconductor](https://www.bioconductor.org/). Today, we will build on what we learned during [Week 03](/course/03_InsideFCSFile/index.qmd) but in the context of working and interacting with multiple .fcs files. This will provide a solid foundation to explore in greater depth how individual components of our typical workflow are represented within the R context. +::: +::: + +--- + +# Walk Through + +:::{.callout-important title="Housekeeping"} +As we do [every week](/course/02_FilePaths/index.qmd), on GitHub, [sync](/course/00_Homeworks/index.qmd#sync-your-fork) your forked version of the CytometryInR course to bring in the most recent updates. Then within Positron, [pull](/course/00_Homeworks/index.qmd#pull-to-local) in those changes to your local computer. + +After [setting up](/course/00_Git/index.qmd#new-folder-from-template) a "Week05" project folder, copy over the contents of "course/05_GatingSets/data" to that folder. This will hopefully prevent merge issues next week when attempting to pull in new course material. Once you have your new project folder organized, remember to [commit](/course/00_Git/index.qmd#push) and push your changes to GitHub to maintain remote version control. + +If you encounter issues syncing due to the Take-Home Problem merge conflict, see this [walkthrough](https://umgcccfcsr.github.io/CytometryInR/course/00_BonusContent/PullConflicts/). The updated homework submission protocol can be found [here](https://umgcccfcsr.github.io/CytometryInR/course/00_BonusContent/PullConflicts/UpdatedPullRequest) +::: + +
+ +--- + +## flowFrame + + +::: {.fragment} +::: {.callout-tip title="."} +Let's start off by recalling the approach we first saw during [Week 03](/course/03_InsideFCSFile/index.qmd), where using the `flowCore` package we loaded the contents of our .fcs file into R as a "flowFrame" object. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To do this, we first identified the .fcs files we were interested using `file.path()` to specify the folder, and `list.files()` to find contents containing ".fcs". +::: +::: + +::: {.fragment} +```{r} +# Folder <- file.path("course", "05_GatingSets", "data") # For Testing + + Folder <- file.path("data") # For Quarto Rendering + +fcs_files <- list.files(Folder, pattern=".fcs", full.names=TRUE) + +fcs_files +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +We then identified an individual .fcs file of interest using the [] method of indexing. +::: +::: + +::: {.fragment} +```{r} +fcs_files[1] +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Then, after making sure flowCore was attached to our local environment (via the `library()` function), we could use `read.FCS()` to read in our .fcs files contents to R. +::: +::: + +::: {.fragment} +```{r} +# BiocManager::install("flowCore") #Bioconductor +library(flowCore) +``` + +::: + +::: {.fragment} +```{r} +flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE, + transformation = FALSE) +flowFrame +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +As we start to think about the wider infrastructural handling of our .fcs files, what would have occurred if we had provided multiple .fcs file paths to `read.FCS()`? Let's go ahead and check by not providing an index number. +::: +::: + +::: {.fragment} +```{r} +#| error: TRUE +read.FCS(filename=fcs_files, truncate_max_range = FALSE, transformation = FALSE) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +As you can tell, this error message is not particularly interpretable. It however arises from type of object we are passing to the function, whereby an individual file.path (fcs_files[1]) appears as class "character" with a **single value** (ie. a [scalar](https://nathanieldphillips-yarrr.share.connect.posit.cloud/scalars.html)), but the combined vector (fcs_files) contains **multiple** values. +::: +::: + +::: {.fragment} +```{r} +fcs_files[1] + +str(fcs_files[1]) +``` + +::: + +::: {.fragment} +```{r} +fcs_files + +str(fcs_files) +``` + +::: + +--- + +## flowSet + +::: {.fragment} +::: {.callout-tip title="."} +Consequently, we will need to use another function if we want to read in multiple .fcs files at once. For `flowCore`, this function is the `read.flowSet()` function. +::: +::: + +::: {.fragment} +```{r} +flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE, + transformation = FALSE) +flowSet +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Alternatively, we can designate specific files within "fcs_files" we want to read in using the [] and c() notation style we have encountered previously. +::: +::: + +::: {.fragment} +```{r} +read.flowSet(files=fcs_files[c(1, 3:4)], + truncate_max_range = FALSE, transformation = FALSE) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +On follow-up, we can see that `read.flowSet()` has created a "flowSet" class object. +::: +::: + +::: {.fragment} +```{r} +class(flowSet) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Which we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from [Week 3](/course/03_InsideFCSFile/index.qmd), we surmise that "flowSet" is another Bioconductor style S4-type object that within its frame slot contains individual "flowFrames". +::: +::: + +::: {.fragment} +![](images/00_FlowSet.png) +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +If instead of `class()` we had used `str()`, we would have seen a similar output ton what we see in the Variables panel. +::: +::: + +::: {.fragment} +```{r} +str(flowSet) +``` + +::: + +--- + +:::{.callout-tip title="Reminder"} +While not today's focus, remember we could access individual components inside the flowSet using the @ accessors covered during [Week 3](/course/03_InsideFCSFile/index.qmd) +::: + +--- + +## Memory Usage + +::: {.fragment} +::: {.callout-tip title="."} +Both "flowFrame" and "flowSet" objects were implemented in the `flowCore` package, which is the [oldest](/course/03_InsideFCSFile/#flowcore) extant flow cytometry R package on [Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/flowCore.html). Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as "flowFrame" and "flowSet" objects. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +One consideration of this method is the contents of your .fcs files are read into your computer's random access memory [(RAM)](https://en.wikipedia.org/wiki/Random-access_memory). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To build some contextual understanding of the problem, let's learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the `lobstr` R packages `obj_size()` function, as it better handles evaluating complicated objects than base R's `object.size()` function. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +We can check and see the memory usage by our flowFrame object +::: +::: + +::: {.fragment} +```{r} +# Base R +object.size(flowFrame) + +# install.packages("lobstr") # CRAN +library(lobstr) +obj_size(flowFrame) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +And contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames) +::: +::: + +::: {.fragment} +```{r} +obj_size(flowSet) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +If we were curious how much memory total we are using within R at the current moment, we can check using the `mem_used()` function: +::: +::: + +::: {.fragment} +```{r} +mem_used() +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer's operating system. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To simplify the process, here is an additional example of where a [conditional](/course/02_FilePaths/index.qmd#conditionals) can prove useful, allowing us to check in an operating system specific manner. It takes the output of the `Sys.info()` function, namely the "sysname" argument and then retrieves the relavent function. +::: +::: + +::: {.fragment} +```{r} + +OperatingSystem <- Sys.info()[["sysname"]] + +if (OperatingSystem == "Windows") { # Windows + memory.limit() + + } else if (OperatingSystem == "Darwin") { # MacOS + system("top -l 1 | grep PhysMem") + + } else if (OperatingSystem == "Linux") { # Linux + system("free -h") + + } else {message("A wild FreeBSD-User appears")} +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +When evaluating the returned outputs, primarily consider the total, used and free outputs. +::: +::: + +--- + +## cytoframe + +::: {.fragment} +::: {.callout-tip title="."} +In addition to the `flowCore` R package, additional flow cytometry infrastructure support is provided by the `flowWorkspace` package. Instead of the reading all the .fcs files contents into active RAM, `flowWorkspace` reduces the memory overhead by using ["pointers"](https://www.geeksforgeeks.org/c/c-pointers/) to interact with the object in it's current storage location (either on your harddrive, SSD, etc.), only reading in components to RAM as needed. +::: +::: + +::: {.fragment} +```{r} +# BiocManager::install("flowWorkspace") #Bioconductor +library(flowWorkspace) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Because of these differences in how data is interracted with, we end up with parallel equivalents to the traditional flowFrame and flowSet type objects. These include "cytoframe" for single .fcs files +::: +::: + +::: {.fragment} +```{r} +cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE) + +cytoframe +``` + +::: + +--- + +::: {.fragment} +```{r} +class(cytoframe) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Which also still errors out when not given a scalar object +::: +::: + +::: {.fragment} +```{r} +#| error: TRUE + +load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE) +``` + +::: + +--- + +## cytoset + +::: {.fragment} +::: {.callout-tip title="."} +As well as "cytoset" to handle multiple .fcs files. +::: +::: + +::: {.fragment} +```{r} +cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE) + +cytoset +``` + +::: + +::: {.fragment} +```{r} +class(cytoset) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Unlike "flowFrame" and "flowSet", when we run `str()`, for "cytoframe" and "cytoset" objects we don't get back quite as much information. +::: +::: + +::: {.fragment} +```{r} +str(cytoframe) +``` + +::: + +--- + +::: {.fragment} +```{r} +str(cytoset) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +This is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values. +::: +::: + +::: {.fragment} +![](images/01_LookMaNoData.png) +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Due to `flowWorkspace` use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let's double check the differences in memory utilization for flowFrame/cytoframe: +::: +::: + +::: {.fragment} +```{r} +obj_size(flowFrame) +``` + +::: + +::: {.fragment} +```{r} +obj_size(cytoframe) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +And similarly the case for flowSet and cytoset: +::: +::: + +::: {.fragment} +```{r} +obj_size(flowSet) +``` + +::: + +::: {.fragment} +```{r} +obj_size(cytoset) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Additionally, with computer hardware increasingly switching from spinning disk hard-drives to faster [solid state](https://unihost.com/help/nvme-vs-ssd-vs-hdd-overview-and-comparison/) drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years. +::: +::: + +--- + +## Interconverting + +::: {.fragment} +::: {.callout-tip title="."} +Despite both R packages having been around for a while, many [Bioconductor](https://www.bioconductor.org/packages/release/BiocViews.html#___FlowCytometry) and [GitHub](https://github.com/stars/DavidRach/lists/cytometry-r-packages) often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To go from a flowFrame to a cytoframe, we can use the `flowFrame_to_cytoframe()` function +::: +::: + +::: {.fragment} +```{r} +ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame) +ConvertedToCytoframe +``` + +::: + +::: {.fragment} +```{r} +obj_size(ConvertedToCytoframe) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To go from a cytoframe to a flowFrame, we can use the `cytoframe_to_flowFrame()` function +::: +::: + +::: {.fragment} +```{r} +ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe) +ConvertedToFlowframe +``` + +::: + +::: {.fragment} +```{r} +obj_size(ConvertedToFlowframe) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To go from a flowSet to a cytoSet, we can use the `flowSet_to_cytoset()` funciton +::: +::: + +::: {.fragment} +```{r} +ConvertedToCytoset <- flowSet_to_cytoset(flowSet) +ConvertedToCytoset +``` + +::: + +::: {.fragment} +```{r} +obj_size(ConvertedToCytoset) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To go from a cytoSet to a flowSet, we can use the `cytoset_to_flowSet()` function. +::: +::: + +::: {.fragment} +```{r} +ConvertedToFlowset <- cytoset_to_flowSet(flowSet) +ConvertedToFlowset +``` + +::: + +::: {.fragment} +```{r} +obj_size(ConvertedToFlowset) +``` + +::: + +--- + +## Gating Sets + +::: {.fragment} +::: {.callout-tip title="."} +Fortunately, regardless of whether we are using flowFrame/flowSet (RAM) and cytoframe/cytoset (memory pointers), both routes end up converging at the next step, where the underlying .fcs files are passed off to the `GatingSet()` function. +::: +::: + +::: {.fragment} +```{r} +GatingSet1 <- GatingSet(flowSet) +GatingSet1 +``` + +::: + +::: {.fragment} +```{r} +class(GatingSet1) +``` + +::: + +--- + +::: {.fragment} +```{r} +GatingSet2 <- GatingSet(cytoset) +GatingSet2 +``` + +::: + +::: {.fragment} +```{r} +class(GatingSet1) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +As we prefaced in the [background](/course/05_GatingSets/index.qmd#background), beyond the .fcs files themselves, we need infrastructural elements with which to interact with the underlying data, which allows us to organize the various files, transform (scale), compensate (for conventional flow), visualize, derrive statistics, etc. A GatingSet serves as the infrastructural framework that allows us to do this in R. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +If we investigate our current GatingSet objects, we won't see much +::: +::: + +::: {.fragment} +![](images/03_GatingSetConvergence.png) +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +This will change as we start layering on additional elements. However, rather than try to cram everything into a single week, we will explore in greater depth the individual components over the next [three weeks](/Schedule.qmd#applying-transformations-and-compensation). Instead, for the rest of today, we will work backward, by exploring a GatingSet objecct and what it is capable of doing once fully assembled. +::: +::: + +--- + +## CytoML + +::: {.fragment} +::: {.callout-tip title="."} +The `CytoML` R package (also maintained by [Mike Jiang](https://github.com/mikejiang)) is a sister package to the `flowWorkspace`. It's main purpose is to permit bringing in existing FlowJo, Diva and Cytobank Workspaces, with all their gates, transformations, etc. into R as fully assembled GatingSet objects. For those who already use one of these commercial softwares, it can be quite useful tool. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +Since our goal is to examine a fully assembled GatingSet object, we will be using it today to bring in a [FlowJo](https://www.flowjo.com/flowjo10/overview) workspace to R. However, since this is a free Cytometry in R course, and not about to have everyone pay for a license for a one-off topic, in the [pre-course Floreada](/course/00_Floreada/index.qmd) walkthrough I documented how to convert a free [Floreada.io](https://floreada.io/) workspae into a FlowJo.wsp that can also be used (please note that as of early 2026, some scaling bugs may be present and require troubleshooting). +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +To get started, let's first attach `CytoML` to our local environment via the `library()` call. +::: +::: + +::: {.fragment} +```{r} +# BiocManager::install("CytoML") #Bioconductor +library(CytoML) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +The .wsp files within this week's data where created via [Floreada.io](/course/00_Floreada/index.qmd). The main difference between the two files is one is a copy of the original that was opened within FlowJo, and subsequently swtiched from [logicle](https://pubmed.ncbi.nlm.nih.gov/16604519/) to [bi-exponential](https://docs.flowjo.com/flowjo/graphs-and-gating/gw-transform-overview/gw-transform-benefits/) transformation. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +We will need to provide the appropiate file path for our desired .wsp file. We can start by identifying which are present using `list.files()` +::: +::: + +::: {.fragment} +```{r} +Folder # Defined Above +FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE) +FlowJoWsp +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +In our case, we will proceed by using `str_detect()` to select the .wsp that contains the pattern "Opened" +::: +::: + +::: {.fragment} +```{r} +ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")] +ThisWorkspace +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +With our single .wsp filepath now identified, we can now proceed to set up the intermediate object using `open_flowjo_xml()` +::: +::: + +::: {.fragment} +```{r} +ws <- open_flowjo_xml(ThisWorkspace) +ws +``` + +::: + +::: {.fragment} +```{r} +class(ws) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Having set up the intermediate flowjo_workspace object, we can attempt to read in the actual data from the .wsp into a GatingSet using the `flowjo_to_gatingset()` function. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +However, due to how I named the original .fcs files ("GROUPNAME" being individual specimens, "TUBENAME" being either Ctrl or SEB), and downsampled to the same number of cells, we will encounter the following error +::: +::: + +::: {.fragment} +```{r} +#| error: TRUE +gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder) +gs +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +As with any error, my first move is to check the help documentation. In this case, my initial response is to see if I can identify an argument that will help differentiate between the names for each specimen. +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +?flowjo_to_gatingset +``` + +::: + +--- + +![](images/CytoMLArguments.png) + + +--- + +::: {.fragment} +::: {.callout-tip title="."} +In this case, I find that the "additional.keys" argument would likely work for this troubleshooting +::: +::: + +--- + +![](images/AdditionalKeys.png) + +--- + +::: {.fragment} +```{r} +gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME") +gs +``` + +::: + +::: {.fragment} +```{r} +class(gs) +``` + +::: + +--- + +## System Time + +::: {.fragment} +::: {.callout-tip title="."} +Especially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +One, using the `system.time()` function from base R, in which we surround whatever line of code we wish to evaluate in {} +::: +::: + +::: {.fragment} +```{r} +system.time({ + +flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME") + +}) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Alternatively, if we install the `bench` package, we can use the `mark` function to evaluate how long it takes on average across numerous iterations. +::: +::: + +::: {.fragment} +```{r} +# install.packages("bench") # CRAN +library(bench) +``` + +::: + +::: {.fragment} +```{r} +mark( + Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"), + iterations= 5 + ) +``` + +::: + +--- + +## Gates + +::: {.fragment} +::: {.callout-tip title="."} +Now that we have loaded the contents of the FlowJo/Floreada workspace, we can start exploring the various infrastructural capabilities of a GatingSet object. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Let's start by evaluating whether the manually-drawn gates I drew survived the journey. To do this, I can generate a visual gating treee using the `plot()` function. +::: +::: + +::: {.fragment} +```{r} +plot(gs) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +We can also retrieve the individual gates and their gaing paths using the `gs_get_pop_paths()` function. +::: +::: + +::: {.fragment} +```{r} +gs_get_pop_paths(gs) +``` + +::: + +--- + +## Counts + +::: {.fragment} +::: {.callout-tip title="."} +If we wanted to retrieve counts of cells found within the individual gates, we could do so with `gs_pop_get_count_fast()` +::: +::: + +::: {.fragment} +```{r} +Data <- gs_pop_get_count_fast(gs) +head(Data, 5) +``` + +::: + +--- + +## Metadata + +::: {.fragment} +::: {.callout-tip title="."} +Since GatingSets contain multiple .fcs files, we may want to be able to subset them based on metadata for a particular variable. We can check to see current metadata using the `pData()` function. +::: +::: + +::: {.fragment} +```{r} +pData(gs) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +It currently doesn't have much, but we will explore how to change this more over the next few weeks. For now, just know that we could add additional metadata via either a .csv file, or by retrieving additional description keywords from within the .fcs files themselves (as shown below) +::: +::: + +::: {.fragment} +```{r} +AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, + additional.keys="GROUPNAME", + keywords=c("$DATE", "$CYT", "GROUPNAME")) +pData(AlternateGS) +``` + +::: + +--- + +## ggcyto + +::: {.fragment} +::: {.callout-tip title="."} +As you can surmise, a lot of the infrastructural style handling done by commercial softwares is being orchestrated/mediated through our GatingSet object. Since it's able to create and retain gating information, how would we go about visualizing the underlying data contained within each? +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Within R, most plots are generated using the `ggplot2` package from the tidyverse (which we will explore [next week](/Schedule.qmd#visualizing-with-ggplot2)), which builds of the ["Grammar of Graphics"](https://vita.had.co.nz/papers/layered-grammar.html) concept, combining [layers](https://friendly.github.io/6135/lectures/ggplot-intro.pdf) together to create the final plots. The Bioconductor `ggcyto` R package extends this concept to enable flow cytometry data contained within a GatingSet to be plotted. +::: +::: + +--- + +:::{.callout-important} + +As is the case with most free open-source software ([FOSS](https://en.wikipedia.org/wiki/Free_and_open-source_software)), R packages will change over time as their developers add new features, make improvements, or alter internal functions to speed things up. + +::: + + +:::{.callout-important} + +ggplot2 recently had a major [version](/course/01_InstallingRPackages/index.qmd#installing-specific-package-versions) change, with [significant](https://tidyverse.org/blog/2025/09/ggplot2-4-0-0/) internal changes occuring. As a consequence of these changes, `ggcyto` functions that relied on the old `ggplot2` functions [broke](https://github.com/RGLab/ggcyto/pull/103) and had to be [updated](https://github.com/RGLab/ggcyto/pull/110). + +::: + +--- + +:::{.callout-important} + +Any updates to CRAN packages are reflected immediately. By contrast, Bioconductor is on a twice yearly [release cycle](https://www.bioconductor.org/developers/release-schedule/), so to take advantage of the `ggcyto` "fixes" that allow it to interact with the new version of `ggplot2`, we will need to make sure we have the "developmental" version installed. + +::: + +--- + +### packageVersion + +::: {.fragment} +::: {.callout-tip title="."} +Let's start off by checking what version of both the `ggplot2` and `ggcyto` packages you currently have installed on your computer. +::: +::: + +::: {.fragment} +```{r} +packageVersion("ggplot2") +``` + +::: + +::: {.fragment} +```{r} +packageVersion("ggcyto") +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +If you were able to retrieve the following package versions (or greater") for `ggplot2` and `ggcyto`, you should be all set and can skip the subsequent reinstallation steps. +::: +::: + +--- + +![](images/20_PackageVersion.png) + +--- + +::: {.fragment} +::: {.callout-tip title="."} +If you however found you have the older package versions (ex. ggplot2 3.5.2 or ggcyto 1.37.1) currently installed, you will likely encounter errors when trying to run the functions to plot your data below (since the changes are not fully [backward-compatible](https://en.wikipedia.org/wiki/Backward_compatibility) with older versions). +::: +::: + +--- + +### remove.packages + +::: {.fragment} +::: {.callout-tip title="."} +Since `ggcyto` has a hard-coded dependency on ggplot2, if you have the older versions, I would recommend uninstaling both first, using the `remove.packages()` function. +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +remove.packages("ggplot2") +remove.packages("ggcyto") +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Once this is done, I recommend exiting and then reopening Positron. This will ensure all currently-loaded R packages are unattached from the environment. However, you will loose all your environmental variables, so will need to reload them to get back to this point. If you are working with code chunks inside a Quarto Markdown File (.qmd), you can quickly accomplish this by scrolling down to the point of the document where you left off, and selecting the "Run Above" option showin on the code chunk. +::: +::: + +--- + +![](images/RunAbove.png) + +--- + +### Installing correct versions + +::: {.fragment} +::: {.callout-tip title="."} +To reinstall `ggplot2`, you just need to install again from CRAN (as with it's [rolling-release](https://cran.r-project.org/web/packages/policies.html) model any changes the developers make become immediately available to everyone) +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +install.packages("ggplot2") +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +If you need to reinstall `ggcyto`, because of Bioconductor's twice yearly [release cycle](https://www.bioconductor.org/developers/release-schedule/), you will need to install the "developmental" version to take advantage of the fixes. Since this is for a one-off package, the easiest installation approach if to go via the [GitHub](/course/01_InstallingRPackages/index.qmd#install-from-github) using the `remotes` package's `install_github()` +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +remotes::install_github("RGLab/ggcyto") +``` + +::: + +--- + +## Plotting + +::: {.fragment} +::: {.callout-tip title="."} +Once you have the current versions of both `ggplot2` and `ggcyto`, we can proceed to attach them to your local environment via the `library()` function. +::: +::: + +::: {.fragment} +```{r} +library(ggplot2) +library(ggcyto) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +As was mentioned, `ggcyto` follows the `ggplot2` grammar of graphics syntax, which we will learn more extensively [next week](/Schedule.qmd#visualizing-with-ggplot2). For now, lets look at a simple example +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) +``` + +::: + +--- + + +::: {.fragment} +::: {.callout-tip title="."} +The function responsible for plotting is the `ggcyto()` function. The first argument ("gs[1]") is designating which .fcs file in our GatingSet we are trying to visualize. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +The second argument ("subset") corresponds to which gating node we want to visualize. In this case, when set to "root", we are seeing all cells present in the .fcs file. If we however wanted to visualize the cells within the CD4+ gate, we would swap the value provided to this argument. +::: +::: + +::: {.fragment} +```{r} +#| eval: FALSE +ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +The next argument "aes" stands for aesthetics (more on this [next week](/Schedule.qmd#visualizing-with-ggplot2)). You will notice it has its own set of parenthesis, in which we designate the markers/fluorophores we want to visualize on the x and y axis. +::: +::: + +::: {.fragment} +::: {.callout-tip title="."} +The final argument ("+ geom_hex(bins=100)") specifies we want to generate a flow cytometry style plot, with it's bin arguments value setting the resolution. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Now that we have walked through the arguments, let's visualize the data +::: +::: + +::: {.fragment} +```{r} +#| eval: TRUE +ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Alternatively, if we switched things around +::: +::: + +::: {.fragment} +```{r} +ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) +``` + +::: + + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Briefly, if we didn't remember the marker, we could specify the fluorophore +::: +::: + +::: {.fragment} +```{r} +ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) +``` + +::: + +--- + +::: {.fragment} +```{r} +ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100) +``` + +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +This is all we will cover for `ggcyto` for now, we will circle back over the [next couple weeks](/Schedule.qmd#applying-transformations-and-compensation) as we gain more familiarity with how to build our own GatingSet objects. If you want to jump ahead, please see the additional resources section and happy exploring! +::: +::: + +--- + +# Take Away + +::: {.fragment} +::: {.callout-tip title="."} +Today, we looked at the two main representations of flow cytometry data in R, the older `flowCore` implemented flowFrame/flowSet objects that are stored in RAM, and the `flowWorkspace` cytoFrame/cytoSet objects that operate through memory pointers. We started our learning journey to understand GatingSet objects, and how to use them to mediate/orchestrate in R many of the infrastructural steps that would normally be performed by commercial software. And finally, we briefly covered how to use the `ggcyto` to visualize data contained within our GatingSets. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Similar to our utilization of [tidyverse](/course/04_IntroToTidyverse/) functions last week, we will be using GatingSets continously throughout the rest of the course. Over the next few weeks we will instead of retrieving already assembled GatingSets via `CytoML` assemble them from scratch within R. +::: +::: + +--- + +::: {.fragment} +::: {.callout-tip title="."} +Next week, we will dive further into the `ggplot2` package from the tidyverse and how it implements the ["Grammar of Graphics"](https://vita.had.co.nz/papers/layered-grammar.html) concept. In the process, we will see how by combining [layers](https://friendly.github.io/6135/lectures/ggplot-intro.pdf) and changing various elements being added on to the base layers of the plot, we can end up with many different plots we normally encounter as cytometrist. +::: +::: + +--- + +![](images/SunsetSatzi.jpg) + +--- + +# Additional Resources + +[flowWorkspace Bioconductor Vignette](https://www.bioconductor.org/packages/release/bioc/vignettes/flowWorkspace/inst/doc/flowWorkspace-Introduction.html) The Bioconductor vignettes are always a good place to start with any of the Cytoverse packages, the vignette for `flowWorkspace` is no exception. If you want to understand more about how to subset cytosets, or the various functions and arguments in a GatingSet, this should be your first stop. + +[CytoML Bioconductor Vignette](https://www.bioconductor.org/packages/release/bioc/vignettes/CytoML/inst/doc/flowjo_to_gatingset.html) If you use FlowJo, Diva, or CytoBank routinely, and want to understand more about how to bring in your own experiments to R, the `CytoML` vignettes should be your next stop. + +--- + +[ggcyto Bioconductor Vignette](https://www.bioconductor.org/packages/release/bioc/vignettes/ggcyto/inst/doc/Top_features_of_ggcyto.html). There are several vignettes that can be found on the `ggcyto` Bioconductor [website](https://www.bioconductor.org/packages/release/bioc/html/ggcyto.html) on how to plot your flow cytometry data, this one surmize many of the points we will be covering over the next few weeks. + +[Bioc2023 Workshop: Reproducible and programmatic analysis of flow cytometry experiments with the cytoverse](https://youtu.be/_8x-prIxJgw?si=MhVVUJJdYEDI4JzV) Ozette hosted a workshop covering many of the cytoverse R packages at the Bioconductor conference (BioC) back in 2023. Some of the contents we will cover in greater depth over the next few weeks. + +--- + +# Take-home Problems + +:::{.callout-tip title="Problem 1"} + +Using what you learned last week in [Introduction to Tidyverse](/course/04_IntroToTidyverse/), for the imported GatingSet, retrieve the data.frame from cell counts per gate and attempt to mutate a new column showing percent of the parent gate. Remember, this is intentionally tricky at this point, we will go over how to efficiently do this in a [few weeks](/Schedule.qmd#retrieving-data-for-statistics) + +::: + +--- + +:::{.callout-tip title="Problem 2"} + +As we saw, `CytoML` can be finicky when names are repeated, or .fcs files are not present. Try removing a couple of the .fcs files from the data folder, and re-run the code. Document what kind of errors result. + +::: + +--- + +:::{.callout-tip title="Problem 3"} + +For `ggcyto`, attempt to generate plots to visualize TNFa and IFNg for the various cell populations, across both Ctrl and SEB samples. In the process, change the bins argument until you end up with a resolution that you would be happy with for your own plots, and write it down. + +::: + +--- + +![](images/SunsetSatzi.jpg) + +--- + +::: {style="text-align: right;"} +[![AGPL-3.0](https://www.gnu.org/graphics/agplv3-with-text-162x68.png)](https://www.gnu.org/licenses/agpl-3.0.en.html) [![CC BY-SA 4.0](https://licensebuttons.net/l/by-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-sa/4.0/) +::: \ No newline at end of file diff --git a/docs/course/03_InsideFCSFile/index.html b/docs/course/03_InsideFCSFile/index.html index c5e9108..3f937ea 100644 --- a/docs/course/03_InsideFCSFile/index.html +++ b/docs/course/03_InsideFCSFile/index.html @@ -546,8 +546,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+
@@ -593,8 +593,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+

flowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:

diff --git a/docs/course/03_InsideFCSFile/slides.html b/docs/course/03_InsideFCSFile/slides.html index 9d2593e..174333a 100644 --- a/docs/course/03_InsideFCSFile/slides.html +++ b/docs/course/03_InsideFCSFile/slides.html @@ -485,8 +485,8 @@

flowCore


-
- +
+
@@ -497,8 +497,8 @@

flowCore


-
- +
+
diff --git a/docs/course/05_GatingSets/index.html b/docs/course/05_GatingSets/index.html index 297a1c8..e860126 100644 --- a/docs/course/05_GatingSets/index.html +++ b/docs/course/05_GatingSets/index.html @@ -378,7 +378,7 @@

05 - Gating Sets

AGPL-3.0 CC BY-SA 4.0

For the YouTube livestream schedule, see here

-

For screen-shot slides, click here

+

For screen-shot slides, click here



@@ -440,8 +440,9 @@

flowFrame

library(flowCore)
-
flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
-flowFrame
+
flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE,
+ transformation = FALSE)
+flowFrame
flowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
 with 10000 cells and 43 observables:
@@ -499,8 +500,9 @@ 

flowFrame

flowSet

Consequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.

-
flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE, transformation = FALSE)
-flowSet
+
flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,
+ transformation = FALSE)
+flowSet
A flowSet with 6 experiments.
 
@@ -509,7 +511,8 @@ 

flowSet

Alternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.

-
read.flowSet(files=fcs_files[c(1, 3:4)], truncate_max_range = FALSE, transformation = FALSE)
+
read.flowSet(files=fcs_files[c(1, 3:4)],
+ truncate_max_range = FALSE, transformation = FALSE)
A flowSet with 3 experiments.
 
@@ -532,7 +535,7 @@ 

flowSet

str(flowSet)
Formal class 'flowSet' [package "flowCore"] with 2 slots
-  ..@ frames   :<environment: 0x55d40ab8dbe8> 
+  ..@ frames   :<environment: 0x562242979388> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr "Name"
@@ -722,7 +725,7 @@ 

cytoset

Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
   ..@ pointer  :<externalptr> 
-  ..@ frames   :<environment: 0x55d414e7fdf0> 
+  ..@ frames   :<environment: 0x56224cc6eed0> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr(0) 
@@ -772,7 +775,7 @@ 

Interconverting

ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
 ConvertedToCytoframe
-
cytoframe object 'file806b23cd6a2e'
+
cytoframe object 'file5caf7fc9092c'
 with 10000 cells and 43 observables:
                name      desc       range  minRange    maxRange
 $P1            Time        NA     878.809         0     878.809
@@ -1000,7 +1003,7 @@ 

System Time

})
   user  system elapsed 
-  0.501   0.008   0.509 
+ 0.491 0.016 0.507

Alternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.

@@ -1017,7 +1020,7 @@

System Time

# A tibble: 1 × 6
   expression                             min median `itr/sec` mem_alloc `gc/sec`
   <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
-1 Test <- flowjo_to_gatingset(ws = ws… 505ms  527ms      1.92    13.3KB        0
+1 Test <- flowjo_to_gatingset(ws = ws… 497ms 511ms 1.97 13.3KB 0
diff --git a/docs/course/05_GatingSets/slides.html b/docs/course/05_GatingSets/slides.html new file mode 100644 index 0000000..46c3511 --- /dev/null +++ b/docs/course/05_GatingSets/slides.html @@ -0,0 +1,3313 @@ + + + + + + + + + + + + + + Cytometry in R – 05 - Gating Sets + + + + + + + + + + + + + + + + + +
+
+ +
+

05 - Gating Sets

+ +
+
+
+David Rach +
+
+
+ +

2026-03-03

+
+
+ +

+
+

AGPL-3.0 CC BY-SA 4.0

+
+
+
+ +
+
+
+

Background

+
+
+
+
+
+
+ +
+

.

+
+
+

Welcome to the fifth week of the Cytometry in R course!!! At this point, we are through a significant portion of the “Intro to R” material, and will start encountering more “Cytometry-focused” material moving forward.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

If we think of a typical flow cytometry experiment, there is more to the analysis than simply acquiring the .fcs file. While there is substantial information present within an .fcs file, in the context of analyzing them with commercial software, we rely on additional infrastructural elements to organize the various files, transform (scale), compensate (for conventional flow), visualize, derrive statistics, etc.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

This infrastructural requirement within the R context is primarily handled by the flowCore and flowWorkspace R packages from Bioconductor. Today, we will build on what we learned during Week 03 but in the context of working and interacting with multiple .fcs files. This will provide a solid foundation to explore in greater depth how individual components of our typical workflow are represented within the R context.

+
+
+
+
+
+
+
+ +
+
+
+

Walk Through

+
+
+
+
+
+ +
+

Housekeeping

+
+
+

As we do every week, on GitHub, sync your forked version of the CytometryInR course to bring in the most recent updates. Then within Positron, pull in those changes to your local computer.

+

After setting up a “Week05” project folder, copy over the contents of “course/05_GatingSets/data” to that folder. This will hopefully prevent merge issues next week when attempting to pull in new course material. Once you have your new project folder organized, remember to commit and push your changes to GitHub to maintain remote version control.

+

If you encounter issues syncing due to the Take-Home Problem merge conflict, see this walkthrough. The updated homework submission protocol can be found here

+
+
+
+
+


+
+
+

flowFrame

+
+
+
+
+
+
+ +
+

.

+
+
+

Let’s start off by recalling the approach we first saw during Week 03, where using the flowCore package we loaded the contents of our .fcs file into R as a “flowFrame” object.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To do this, we first identified the .fcs files we were interested using file.path() to specify the folder, and list.files() to find contents containing “.fcs”.

+
+
+
+
+
+
+
+
# Folder <- file.path("course", "05_GatingSets", "data") # For Testing
+
+ Folder <- file.path("data") # For Quarto Rendering
+
+fcs_files <- list.files(Folder, pattern=".fcs", full.names=TRUE)
+
+fcs_files
+
+
[1] "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs"
+[2] "data/2025_07_26_AB_02_INF052_00_SEB.fcs" 
+[3] "data/2025_07_26_AB_02_INF100_00_Ctrl.fcs"
+[4] "data/2025_07_26_AB_02_INF100_00_SEB.fcs" 
+[5] "data/2025_07_26_AB_02_INF179_00_Ctrl.fcs"
+[6] "data/2025_07_26_AB_02_INF179_00_SEB.fcs" 
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

We then identified an individual .fcs file of interest using the [] method of indexing.

+
+
+
+
+
+
+
+
fcs_files[1]
+
+
[1] "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Then, after making sure flowCore was attached to our local environment (via the library() function), we could use read.FCS() to read in our .fcs files contents to R.

+
+
+
+
+
+
+
+
# BiocManager::install("flowCore") #Bioconductor
+library(flowCore)
+
+
+
+
+
flowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE,
+ transformation = FALSE)
+flowFrame
+
+
flowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
+with 10000 cells and 43 observables:
+               name      desc     range  minRange    maxRange
+$P1            Time        NA    896745         0     878.809
+$P2           SSC-W        NA   4194304         0 4194303.000
+$P3           SSC-H        NA   4194304         0 4194303.000
+$P4           SSC-A        NA   4194304         0 4194303.000
+$P5           FSC-W        NA   4194304         0 4194303.000
+...             ...       ...       ...       ...         ...
+$P39     APC-R700-A    CD107a   4194304      -111     4192506
+$P40   Zombie NIR-A Viability   4194304      -111     4192506
+$P41 APC-Fire 750-A      CD27   4194304      -111     4192506
+$P42 APC-Fire 810-A      CCR7   4194304      -111     4192506
+$P43           AF-A        NA   4194304      -111     4194303
+472 keywords are stored in the 'description' slot
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

As we start to think about the wider infrastructural handling of our .fcs files, what would have occurred if we had provided multiple .fcs file paths to read.FCS()? Let’s go ahead and check by not providing an index number.

+
+
+
+
+
+
+
+
read.FCS(filename=fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
+
Error in `read.FCS()`:
+! 'filename' must be character scalar
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

As you can tell, this error message is not particularly interpretable. It however arises from type of object we are passing to the function, whereby an individual file.path (fcs_files[1]) appears as class “character” with a single value (ie. a scalar), but the combined vector (fcs_files) contains multiple values.

+
+
+
+
+
+
+
+
fcs_files[1]
+
+
[1] "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs"
+
+
str(fcs_files[1])
+
+
 chr "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs"
+
+
+
+
+
+
fcs_files
+
+
[1] "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs"
+[2] "data/2025_07_26_AB_02_INF052_00_SEB.fcs" 
+[3] "data/2025_07_26_AB_02_INF100_00_Ctrl.fcs"
+[4] "data/2025_07_26_AB_02_INF100_00_SEB.fcs" 
+[5] "data/2025_07_26_AB_02_INF179_00_Ctrl.fcs"
+[6] "data/2025_07_26_AB_02_INF179_00_SEB.fcs" 
+
+
str(fcs_files)
+
+
 chr [1:6] "data/2025_07_26_AB_02_INF052_00_Ctrl.fcs" ...
+
+
+
+
+
+

flowSet

+
+
+
+
+
+
+ +
+

.

+
+
+

Consequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.

+
+
+
+
+
+
+
+
flowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,
+ transformation = FALSE)
+flowSet
+
+
A flowSet with 6 experiments.
+
+column names(43): Time SSC-W ... APC-Fire 810-A AF-A
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Alternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.

+
+
+
+
+
+
+
+
read.flowSet(files=fcs_files[c(1, 3:4)],
+ truncate_max_range = FALSE, transformation = FALSE)
+
+
A flowSet with 3 experiments.
+
+column names(43): Time SSC-W ... APC-Fire 810-A AF-A
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

On follow-up, we can see that read.flowSet() has created a “flowSet” class object.

+
+
+
+
+
+
+
+
class(flowSet)
+
+
[1] "flowSet"
+attr(,"package")
+[1] "flowCore"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Which we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.

+
+
+
+
+
+
+

+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

If instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.

+
+
+
+
+
+
+
+
str(flowSet)
+
+
Formal class 'flowSet' [package "flowCore"] with 2 slots
+  ..@ frames   :<environment: 0x56470dcf2cc0> 
+  ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
+  .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
+  .. .. .. ..$ labelDescription: chr "Name"
+  .. .. ..@ data             :'data.frame': 6 obs. of  1 variable:
+  .. .. .. ..$ name: 'AsIs' chr [1:6] "2025_07_26_AB_02_INF052_00_Ctrl.fcs" "2025_07_26_AB_02_INF052_00_SEB.fcs" "2025_07_26_AB_02_INF100_00_Ctrl.fcs" "2025_07_26_AB_02_INF100_00_SEB.fcs" ...
+  .. .. ..@ dimLabels        : chr [1:2] "rowNames" "columnNames"
+  .. .. ..@ .__classVersion__:Formal class 'Versions' [package "Biobase"] with 1 slot
+  .. .. .. .. ..@ .Data:List of 1
+  .. .. .. .. .. ..$ : int [1:3] 1 1 0
+  .. .. .. .. ..$ names: chr "AnnotatedDataFrame"
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Reminder

+
+
+

While not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3

+
+
+
+
+
+
+

Memory Usage

+
+
+
+
+
+
+ +
+

.

+
+
+

Both “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

One consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To build some contextual understanding of the problem, let’s learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the lobstr R packages obj_size() function, as it better handles evaluating complicated objects than base R’s object.size() function.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

We can check and see the memory usage by our flowFrame object

+
+
+
+
+
+
+
+
# Base R
+object.size(flowFrame)
+
+
3570896 bytes
+
+
# install.packages("lobstr") # CRAN
+library(lobstr)
+obj_size(flowFrame)
+
+
3.53 MB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

And contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames)

+
+
+
+
+
+
+
+
obj_size(flowSet)
+
+
20.99 MB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

If we were curious how much memory total we are using within R at the current moment, we can check using the mem_used() function:

+
+
+
+
+
+
+
+
mem_used()
+
+
146.81 MB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer’s operating system.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.

+
+
+
+
+
+
+
+
OperatingSystem <- Sys.info()[["sysname"]]
+
+if (OperatingSystem == "Windows") { # Windows
+    memory.limit()
+
+  } else if (OperatingSystem == "Darwin") { # MacOS
+    system("top -l 1 | grep PhysMem")
+
+  } else if (OperatingSystem == "Linux") { # Linux
+    system("free -h")
+
+  } else {message("A wild FreeBSD-User appears")}
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

When evaluating the returned outputs, primarily consider the total, used and free outputs.

+
+
+
+
+
+
+
+

cytoframe

+
+
+
+
+
+
+ +
+

.

+
+
+

In addition to the flowCore R package, additional flow cytometry infrastructure support is provided by the flowWorkspace package. Instead of the reading all the .fcs files contents into active RAM, flowWorkspace reduces the memory overhead by using “pointers” to interact with the object in it’s current storage location (either on your harddrive, SSD, etc.), only reading in components to RAM as needed.

+
+
+
+
+
+
+
+
# BiocManager::install("flowWorkspace") #Bioconductor
+library(flowWorkspace)
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Because of these differences in how data is interracted with, we end up with parallel equivalents to the traditional flowFrame and flowSet type objects. These include “cytoframe” for single .fcs files

+
+
+
+
+
+
+
+
cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
+
+cytoframe
+
+
cytoframe object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
+with 10000 cells and 43 observables:
+               name      desc       range  minRange    maxRange
+$P1            Time        NA     878.809         0     878.809
+$P2           SSC-W        NA 4194303.000         0 4194303.000
+$P3           SSC-H        NA 4194303.000         0 4194303.000
+$P4           SSC-A        NA 4194303.000         0 4194303.000
+$P5           FSC-W        NA 4194303.000         0 4194303.000
+...             ...       ...         ...       ...         ...
+$P39     APC-R700-A    CD107a     4192506      -111     4192506
+$P40   Zombie NIR-A Viability     4192506      -111     4192506
+$P41 APC-Fire 750-A      CD27     4192506      -111     4192506
+$P42 APC-Fire 810-A      CCR7     4192506      -111     4192506
+$P43           AF-A        NA     4194303      -111     4194303
+472 keywords are stored in the 'description' slot
+row names(0):
+
+
+
+
+
+ +
+
+
class(cytoframe)
+
+
[1] "cytoframe"
+attr(,"package")
+[1] "flowWorkspace"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Which also still errors out when not given a scalar object

+
+
+
+
+
+
+
+
load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
+
Error:
+! Expected string vector of length 1
+
+
+
+
+
+

cytoset

+
+
+
+
+
+
+ +
+

.

+
+
+

As well as “cytoset” to handle multiple .fcs files.

+
+
+
+
+
+
+
+
cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
+cytoset
+
+
A cytoset with 6 samples.
+
+  column names:
+    Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A
+
+
+
+
+
+
class(cytoset)
+
+
[1] "cytoset"
+attr(,"package")
+[1] "flowWorkspace"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Unlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.

+
+
+
+
+
+
+
+
str(cytoframe)
+
+
Formal class 'cytoframe' [package "flowWorkspace"] with 5 slots
+  ..@ pointer    :<externalptr> 
+  ..@ use.exprs  : logi TRUE
+  ..@ exprs      : num[0 , 0 ] 
+  ..@ parameters :Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
+  .. .. ..@ varMetadata      :'data.frame': 5 obs. of  1 variable:
+  .. .. .. ..$ labelDescription: chr [1:5] "Name of Parameter" "Description of Parameter" "Range of Parameter" "Minimum Parameter Value after Transformation" ...
+  .. .. ..@ data             :'data.frame': 0 obs. of  5 variables:
+  .. .. .. ..$ name       : chr(0) 
+  .. .. .. ..$ description: chr(0) 
+  .. .. .. ..$ range      : num(0) 
+  .. .. .. ..$ minRange   : num(0) 
+  .. .. .. ..$ maxRange   : num(0) 
+  .. .. ..@ dimLabels        : chr [1:2] "rowNames" "columnNames"
+  .. .. ..@ .__classVersion__:Formal class 'Versions' [package "Biobase"] with 1 slot
+  .. .. .. .. ..@ .Data:List of 1
+  .. .. .. .. .. ..$ : int [1:3] 1 1 0
+  .. .. .. .. ..$ names: chr "AnnotatedDataFrame"
+  ..@ description:List of 1
+  .. ..$ note: chr "empty"
+
+
+
+
+
+ +
+
+
str(cytoset)
+
+
Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
+  ..@ pointer  :<externalptr> 
+  ..@ frames   :<environment: 0x5647187d67c8> 
+  ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
+  .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
+  .. .. .. ..$ labelDescription: chr(0) 
+  .. .. ..@ data             :'data.frame': 0 obs. of  0 variables
+  .. .. ..@ dimLabels        : chr [1:2] "rowNames" "columnNames"
+  .. .. ..@ .__classVersion__:Formal class 'Versions' [package "Biobase"] with 1 slot
+  .. .. .. .. ..@ .Data:List of 1
+  .. .. .. .. .. ..$ : int [1:3] 1 1 0
+  .. .. .. .. ..$ names: chr "AnnotatedDataFrame"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

This is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.

+
+
+
+
+
+
+

+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Due to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:

+
+
+
+
+
+
+
+
obj_size(flowFrame)
+
+
3.53 MB
+
+
+
+
+
+
obj_size(cytoframe)
+
+
5.40 kB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

And similarly the case for flowSet and cytoset:

+
+
+
+
+
+
+
+
obj_size(flowSet)
+
+
20.99 MB
+
+
+
+
+
+
obj_size(cytoset)
+
+
3.88 kB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Additionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.

+
+
+
+
+
+
+
+

Interconverting

+
+
+
+
+
+
+ +
+

.

+
+
+

Despite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function

+
+
+
+
+
+
+
+
ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
+ConvertedToCytoframe
+
+
cytoframe object 'file5bfe2ae750aa'
+with 10000 cells and 43 observables:
+               name      desc       range  minRange    maxRange
+$P1            Time        NA     878.809         0     878.809
+$P2           SSC-W        NA 4194303.000         0 4194303.000
+$P3           SSC-H        NA 4194303.000         0 4194303.000
+$P4           SSC-A        NA 4194303.000         0 4194303.000
+$P5           FSC-W        NA 4194303.000         0 4194303.000
+...             ...       ...         ...       ...         ...
+$P39     APC-R700-A    CD107a     4192506      -111     4192506
+$P40   Zombie NIR-A Viability     4192506      -111     4192506
+$P41 APC-Fire 750-A      CD27     4192506      -111     4192506
+$P42 APC-Fire 810-A      CCR7     4192506      -111     4192506
+$P43           AF-A        NA     4194303      -111     4194303
+472 keywords are stored in the 'description' slot
+row names(0):
+
+
+
+
+
+
obj_size(ConvertedToCytoframe)
+
+
5.40 kB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function

+
+
+
+
+
+
+
+
ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)
+ConvertedToFlowframe
+
+
flowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
+with 10000 cells and 43 observables:
+               name      desc       range  minRange    maxRange
+$P1            Time        NA     878.809         0     878.809
+$P2           SSC-W        NA 4194303.000         0 4194303.000
+$P3           SSC-H        NA 4194303.000         0 4194303.000
+$P4           SSC-A        NA 4194303.000         0 4194303.000
+$P5           FSC-W        NA 4194303.000         0 4194303.000
+...             ...       ...         ...       ...         ...
+$P39     APC-R700-A    CD107a     4192506      -111     4192506
+$P40   Zombie NIR-A Viability     4192506      -111     4192506
+$P41 APC-Fire 750-A      CD27     4192506      -111     4192506
+$P42 APC-Fire 810-A      CCR7     4192506      -111     4192506
+$P43           AF-A        NA     4194303      -111     4194303
+472 keywords are stored in the 'description' slot
+
+
+
+
+
+
obj_size(ConvertedToFlowframe)
+
+
3.53 MB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton

+
+
+
+
+
+
+
+
ConvertedToCytoset <- flowSet_to_cytoset(flowSet)
+ConvertedToCytoset
+
+
A cytoset with 6 samples.
+
+  column names:
+    Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A
+
+
+
+
+
+
obj_size(ConvertedToCytoset)
+
+
3.88 kB
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.

+
+
+
+
+
+
+
+
ConvertedToFlowset <- cytoset_to_flowSet(flowSet)
+ConvertedToFlowset
+
+
A flowSet with 6 experiments.
+
+column names(43): Time SSC-W ... APC-Fire 810-A AF-A
+
+
+
+
+
+
obj_size(ConvertedToFlowset)
+
+
20.99 MB
+
+
+
+
+
+

Gating Sets

+
+
+
+
+
+
+ +
+

.

+
+
+

Fortunately, regardless of whether we are using flowFrame/flowSet (RAM) and cytoframe/cytoset (memory pointers), both routes end up converging at the next step, where the underlying .fcs files are passed off to the GatingSet() function.

+
+
+
+
+
+
+
+
GatingSet1 <- GatingSet(flowSet)
+GatingSet1 
+
+
A GatingSet with 6 samples
+
+
+
+
+
+
class(GatingSet1)
+
+
[1] "GatingSet"
+attr(,"package")
+[1] "flowWorkspace"
+
+
+
+
+
+ +
+
+
GatingSet2 <- GatingSet(cytoset)
+GatingSet2
+
+
A GatingSet with 6 samples
+
+
+
+
+
+
class(GatingSet1)
+
+
[1] "GatingSet"
+attr(,"package")
+[1] "flowWorkspace"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

As we prefaced in the background, beyond the .fcs files themselves, we need infrastructural elements with which to interact with the underlying data, which allows us to organize the various files, transform (scale), compensate (for conventional flow), visualize, derrive statistics, etc. A GatingSet serves as the infrastructural framework that allows us to do this in R.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

If we investigate our current GatingSet objects, we won’t see much

+
+
+
+
+
+
+

+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

This will change as we start layering on additional elements. However, rather than try to cram everything into a single week, we will explore in greater depth the individual components over the next three weeks. Instead, for the rest of today, we will work backward, by exploring a GatingSet objecct and what it is capable of doing once fully assembled.

+
+
+
+
+
+
+
+

CytoML

+
+
+
+
+
+
+ +
+

.

+
+
+

The CytoML R package (also maintained by Mike Jiang) is a sister package to the flowWorkspace. It’s main purpose is to permit bringing in existing FlowJo, Diva and Cytobank Workspaces, with all their gates, transformations, etc. into R as fully assembled GatingSet objects. For those who already use one of these commercial softwares, it can be quite useful tool.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

Since our goal is to examine a fully assembled GatingSet object, we will be using it today to bring in a FlowJo workspace to R. However, since this is a free Cytometry in R course, and not about to have everyone pay for a license for a one-off topic, in the pre-course Floreada walkthrough I documented how to convert a free Floreada.io workspae into a FlowJo.wsp that can also be used (please note that as of early 2026, some scaling bugs may be present and require troubleshooting).

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

To get started, let’s first attach CytoML to our local environment via the library() call.

+
+
+
+
+
+
+
+
# BiocManager::install("CytoML") #Bioconductor
+library(CytoML)
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

The .wsp files within this week’s data where created via Floreada.io. The main difference between the two files is one is a copy of the original that was opened within FlowJo, and subsequently swtiched from logicle to bi-exponential transformation.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

We will need to provide the appropiate file path for our desired .wsp file. We can start by identifying which are present using list.files()

+
+
+
+
+
+
+
+
Folder # Defined Above
+
+
[1] "data"
+
+
FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE)
+FlowJoWsp
+
+
[1] "data/FlowJoWSP_OpenedCopy.wsp" "data/FlowJoWSP_Unopened.wsp"  
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

In our case, we will proceed by using str_detect() to select the .wsp that contains the pattern “Opened”

+
+
+
+
+
+
+
+
ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")]
+ThisWorkspace
+
+
[1] "data/FlowJoWSP_OpenedCopy.wsp"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

With our single .wsp filepath now identified, we can now proceed to set up the intermediate object using open_flowjo_xml()

+
+
+
+
+
+
+
+
ws <- open_flowjo_xml(ThisWorkspace)
+ws
+
+
File location:  data/FlowJoWSP_OpenedCopy.wsp 
+
+Groups in Workspace
+         Name Num.Samples
+1 All Samples           6
+
+
+
+
+
+
class(ws)
+
+
[1] "flowjo_workspace"
+attr(,"package")
+[1] "CytoML"
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Having set up the intermediate flowjo_workspace object, we can attempt to read in the actual data from the .wsp into a GatingSet using the flowjo_to_gatingset() function.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

However, due to how I named the original .fcs files (“GROUPNAME” being individual specimens, “TUBENAME” being either Ctrl or SEB), and downsampled to the same number of cells, we will encounter the following error

+
+
+
+
+
+
+
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder)
+
+
Error:
+! Multiple FCS files match sample 00_Ctrl.fcs by filename, event count, and keywords.
+Candidates are: 
+/home/david/Documents/CytometryInR/course/05_GatingSets/data/2025_07_26_AB_02_INF052_00_Ctrl.fcs
+/home/david/Documents/CytometryInR/course/05_GatingSets/data/2025_07_26_AB_02_INF100_00_Ctrl.fcs
+/home/david/Documents/CytometryInR/course/05_GatingSets/data/2025_07_26_AB_02_INF179_00_Ctrl.fcs
+Please move incorrect files out of this directory or its subdirectories.
+
+
gs
+
+
Error:
+! object 'gs' not found
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

As with any error, my first move is to check the help documentation. In this case, my initial response is to see if I can identify an argument that will help differentiate between the names for each specimen.

+
+
+
+
+
+
+
+
?flowjo_to_gatingset
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

In this case, I find that the “additional.keys” argument would likely work for this troubleshooting

+
+
+
+
+
+
+
+ + +
+
+ +
+
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+gs
+
+
A GatingSet with 6 samples
+
+
+
+
+
+
class(gs)
+
+
[1] "GatingSet"
+attr(,"package")
+[1] "flowWorkspace"
+
+
+
+
+
+

System Time

+
+
+
+
+
+
+ +
+

.

+
+
+

Especially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

One, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}

+
+
+
+
+
+
+
+
system.time({
+
+flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+
+})
+
+
   user  system elapsed 
+  0.499   0.008   0.506 
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Alternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.

+
+
+
+
+
+
+
+
# install.packages("bench") # CRAN
+library(bench)
+
+
+
+
+
mark(
+  Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"),
+  iterations= 5
+  )
+
+
# A tibble: 1 × 6
+  expression                             min median `itr/sec` mem_alloc `gc/sec`
+  <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
+1 Test <- flowjo_to_gatingset(ws = ws… 490ms  498ms      2.01    13.3KB        0
+
+
+
+
+
+

Gates

+
+
+
+
+
+
+ +
+

.

+
+
+

Now that we have loaded the contents of the FlowJo/Floreada workspace, we can start exploring the various infrastructural capabilities of a GatingSet object.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Let’s start by evaluating whether the manually-drawn gates I drew survived the journey. To do this, I can generate a visual gating treee using the plot() function.

+
+
+
+
+
+
+
+
plot(gs)
+
+
+
+

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

We can also retrieve the individual gates and their gaing paths using the gs_get_pop_paths() function.

+
+
+
+
+
+
+
+
gs_get_pop_paths(gs)
+
+
 [1] "root"                                             
+ [2] "/Scatter"                                         
+ [3] "/Scatter/Singlets"                                
+ [4] "/Scatter/Singlets/Live"                           
+ [5] "/Scatter/Singlets/Live/Tcells"                    
+ [6] "/Scatter/Singlets/Live/Tcells/CD4+"               
+ [7] "/Scatter/Singlets/Live/Tcells/CD4+/TNFa+IFNg+"    
+ [8] "/Scatter/Singlets/Live/Tcells/CD4+/TNFa+IFNg-"    
+ [9] "/Scatter/Singlets/Live/Tcells/CD4+/TNFa-IFNg+"    
+[10] "/Scatter/Singlets/Live/Tcells/CD4+/TNFa-IFNg-"    
+[11] "/Scatter/Singlets/Live/Tcells/CD4-CD8-"           
+[12] "/Scatter/Singlets/Live/Tcells/CD4-CD8-/TNFa+IFNg+"
+[13] "/Scatter/Singlets/Live/Tcells/CD4-CD8-/TNFa+IFNg-"
+[14] "/Scatter/Singlets/Live/Tcells/CD4-CD8-/TNFa-IFNg+"
+[15] "/Scatter/Singlets/Live/Tcells/CD4-CD8-/TNFa-IFNg-"
+[16] "/Scatter/Singlets/Live/Tcells/CD8+"               
+[17] "/Scatter/Singlets/Live/Tcells/CD8+/TNFa+IFNg+"    
+[18] "/Scatter/Singlets/Live/Tcells/CD8+/TNFa+IFNg-"    
+[19] "/Scatter/Singlets/Live/Tcells/CD8+/TNFa-IFNg+"    
+[20] "/Scatter/Singlets/Live/Tcells/CD8+/TNFa-IFNg-"    
+
+
+
+
+
+

Counts

+
+
+
+
+
+
+ +
+

.

+
+
+

If we wanted to retrieve counts of cells found within the individual gates, we could do so with gs_pop_get_count_fast()

+
+
+
+
+
+
+
+
Data <- gs_pop_get_count_fast(gs)
+head(Data, 5)
+
+
                 name                         Population
+               <char>                             <char>
+1: 00_Ctrl.fcs_INF052                           /Scatter
+2: 00_Ctrl.fcs_INF052                  /Scatter/Singlets
+3: 00_Ctrl.fcs_INF052             /Scatter/Singlets/Live
+4: 00_Ctrl.fcs_INF052      /Scatter/Singlets/Live/Tcells
+5: 00_Ctrl.fcs_INF052 /Scatter/Singlets/Live/Tcells/CD4+
+                          Parent Count ParentCount
+                          <char> <int>       <int>
+1:                          root 10000       10000
+2:                      /Scatter  9986       10000
+3:             /Scatter/Singlets  9708        9986
+4:        /Scatter/Singlets/Live  9708        9708
+5: /Scatter/Singlets/Live/Tcells  6151        9708
+
+
+
+
+
+

Metadata

+
+
+
+
+
+
+ +
+

.

+
+
+

Since GatingSets contain multiple .fcs files, we may want to be able to subset them based on metadata for a particular variable. We can check to see current metadata using the pData() function.

+
+
+
+
+
+
+
+
pData(gs)
+
+
                          name
+00_Ctrl.fcs_INF052 00_Ctrl.fcs
+00_Ctrl.fcs_INF100 00_Ctrl.fcs
+00_Ctrl.fcs_INF179 00_Ctrl.fcs
+00_SEB.fcs_INF052   00_SEB.fcs
+00_SEB.fcs_INF100   00_SEB.fcs
+00_SEB.fcs_INF179   00_SEB.fcs
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

It currently doesn’t have much, but we will explore how to change this more over the next few weeks. For now, just know that we could add additional metadata via either a .csv file, or by retrieving additional description keywords from within the .fcs files themselves (as shown below)

+
+
+
+
+
+
+
+
AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder,
+ additional.keys="GROUPNAME",
+ keywords=c("$DATE", "$CYT", "GROUPNAME"))
+pData(AlternateGS)
+
+
                   GROUPNAME   $CYT       $DATE        name
+00_Ctrl.fcs_INF052    INF052 Aurora 26-Jul-2025 00_Ctrl.fcs
+00_Ctrl.fcs_INF100    INF100 Aurora 26-Jul-2025 00_Ctrl.fcs
+00_Ctrl.fcs_INF179    INF179 Aurora 26-Jul-2025 00_Ctrl.fcs
+00_SEB.fcs_INF052     INF052 Aurora 26-Jul-2025  00_SEB.fcs
+00_SEB.fcs_INF100     INF100 Aurora 26-Jul-2025  00_SEB.fcs
+00_SEB.fcs_INF179     INF179 Aurora 26-Jul-2025  00_SEB.fcs
+
+
+
+
+
+

ggcyto

+
+
+
+
+
+
+ +
+

.

+
+
+

As you can surmise, a lot of the infrastructural style handling done by commercial softwares is being orchestrated/mediated through our GatingSet object. Since it’s able to create and retain gating information, how would we go about visualizing the underlying data contained within each?

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Within R, most plots are generated using the ggplot2 package from the tidyverse (which we will explore next week), which builds of the “Grammar of Graphics” concept, combining layers together to create the final plots. The Bioconductor ggcyto R package extends this concept to enable flow cytometry data contained within a GatingSet to be plotted.

+
+
+
+
+
+
+
+ +
+
+
+
+ +
+

Important

+
+
+

As is the case with most free open-source software (FOSS), R packages will change over time as their developers add new features, make improvements, or alter internal functions to speed things up.

+
+
+
+
+
+
+
+ +
+

Important

+
+
+

ggplot2 recently had a major version change, with significant internal changes occuring. As a consequence of these changes, ggcyto functions that relied on the old ggplot2 functions broke and had to be updated.

+
+
+
+
+
+ +
+
+
+
+ +
+

Important

+
+
+

Any updates to CRAN packages are reflected immediately. By contrast, Bioconductor is on a twice yearly release cycle, so to take advantage of the ggcyto “fixes” that allow it to interact with the new version of ggplot2, we will need to make sure we have the “developmental” version installed.

+
+
+
+
+
+ +

packageVersion

+
+
+
+
+
+
+ +
+

.

+
+
+

Let’s start off by checking what version of both the ggplot2 and ggcyto packages you currently have installed on your computer.

+
+
+
+
+
+
+
+
packageVersion("ggplot2")
+
+
[1] '4.0.2'
+
+
+
+
+
+
packageVersion("ggcyto")
+
+
[1] '1.39.1'
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

If you were able to retrieve the following package versions (or greater”) for ggplot2 and ggcyto, you should be all set and can skip the subsequent reinstallation steps.

+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

If you however found you have the older package versions (ex. ggplot2 3.5.2 or ggcyto 1.37.1) currently installed, you will likely encounter errors when trying to run the functions to plot your data below (since the changes are not fully backward-compatible with older versions).

+
+
+
+
+
+
+
+ +

remove.packages

+
+
+
+
+
+
+ +
+

.

+
+
+

Since ggcyto has a hard-coded dependency on ggplot2, if you have the older versions, I would recommend uninstaling both first, using the remove.packages() function.

+
+
+
+
+
+
+
+
remove.packages("ggplot2")
+remove.packages("ggcyto")
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Once this is done, I recommend exiting and then reopening Positron. This will ensure all currently-loaded R packages are unattached from the environment. However, you will loose all your environmental variables, so will need to reload them to get back to this point. If you are working with code chunks inside a Quarto Markdown File (.qmd), you can quickly accomplish this by scrolling down to the point of the document where you left off, and selecting the “Run Above” option showin on the code chunk.

+
+
+
+
+
+
+
+ + +
+
+ +

Installing correct versions

+
+
+
+
+
+
+ +
+

.

+
+
+

To reinstall ggplot2, you just need to install again from CRAN (as with it’s rolling-release model any changes the developers make become immediately available to everyone)

+
+
+
+
+
+
+
+
install.packages("ggplot2")
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

If you need to reinstall ggcyto, because of Bioconductor’s twice yearly release cycle, you will need to install the “developmental” version to take advantage of the fixes. Since this is for a one-off package, the easiest installation approach if to go via the GitHub using the remotes package’s install_github()

+
+
+
+
+
+
+
+
remotes::install_github("RGLab/ggcyto")
+
+
+
+
+

Plotting

+
+
+
+
+
+
+ +
+

.

+
+
+

Once you have the current versions of both ggplot2 and ggcyto, we can proceed to attach them to your local environment via the library() function.

+
+
+
+
+
+
+
+
library(ggplot2)
+library(ggcyto)
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

As was mentioned, ggcyto follows the ggplot2 grammar of graphics syntax, which we will learn more extensively next week. For now, lets look at a simple example

+
+
+
+
+
+
+
+
ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

The function responsible for plotting is the ggcyto() function. The first argument (“gs[1]”) is designating which .fcs file in our GatingSet we are trying to visualize.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

The second argument (“subset”) corresponds to which gating node we want to visualize. In this case, when set to “root”, we are seeing all cells present in the .fcs file. If we however wanted to visualize the cells within the CD4+ gate, we would swap the value provided to this argument.

+
+
+
+
+
+
+
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

The next argument “aes” stands for aesthetics (more on this next week). You will notice it has its own set of parenthesis, in which we designate the markers/fluorophores we want to visualize on the x and y axis.

+
+
+
+
+
+
+
+
+
+
+
+ +
+

.

+
+
+

The final argument (“+ geom_hex(bins=100)”) specifies we want to generate a flow cytometry style plot, with it’s bin arguments value setting the resolution.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Now that we have walked through the arguments, let’s visualize the data

+
+
+
+
+
+
+
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
+
+
+

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Alternatively, if we switched things around

+
+
+
+
+
+
+
+
ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) 
+
+
+
+

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Briefly, if we didn’t remember the marker, we could specify the fluorophore

+
+
+
+
+
+
+
+
ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) 
+
+
+
+

+
+
+
+
+
+
+
+ +
+
+
ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100)
+
+
+
+

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

This is all we will cover for ggcyto for now, we will circle back over the next couple weeks as we gain more familiarity with how to build our own GatingSet objects. If you want to jump ahead, please see the additional resources section and happy exploring!

+
+
+
+
+
+
+
+ +
+
+
+

Take Away

+
+
+
+
+
+
+ +
+

.

+
+
+

Today, we looked at the two main representations of flow cytometry data in R, the older flowCore implemented flowFrame/flowSet objects that are stored in RAM, and the flowWorkspace cytoFrame/cytoSet objects that operate through memory pointers. We started our learning journey to understand GatingSet objects, and how to use them to mediate/orchestrate in R many of the infrastructural steps that would normally be performed by commercial software. And finally, we briefly covered how to use the ggcyto to visualize data contained within our GatingSets.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Similar to our utilization of tidyverse functions last week, we will be using GatingSets continously throughout the rest of the course. Over the next few weeks we will instead of retrieving already assembled GatingSets via CytoML assemble them from scratch within R.

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+

.

+
+
+

Next week, we will dive further into the ggplot2 package from the tidyverse and how it implements the “Grammar of Graphics” concept. In the process, we will see how by combining layers and changing various elements being added on to the base layers of the plot, we can end up with many different plots we normally encounter as cytometrist.

+
+
+
+
+
+
+
+ + +
+
+ +
+
+
+

Additional Resources

+

flowWorkspace Bioconductor Vignette The Bioconductor vignettes are always a good place to start with any of the Cytoverse packages, the vignette for flowWorkspace is no exception. If you want to understand more about how to subset cytosets, or the various functions and arguments in a GatingSet, this should be your first stop.

+

CytoML Bioconductor Vignette If you use FlowJo, Diva, or CytoBank routinely, and want to understand more about how to bring in your own experiments to R, the CytoML vignettes should be your next stop.

+
+
+ +

ggcyto Bioconductor Vignette. There are several vignettes that can be found on the ggcyto Bioconductor website on how to plot your flow cytometry data, this one surmize many of the points we will be covering over the next few weeks.

+

Bioc2023 Workshop: Reproducible and programmatic analysis of flow cytometry experiments with the cytoverse Ozette hosted a workshop covering many of the cytoverse R packages at the Bioconductor conference (BioC) back in 2023. Some of the contents we will cover in greater depth over the next few weeks.

+
+
+ +
+
+
+

Take-home Problems

+
+
+
+
+
+ +
+

Problem 1

+
+
+

Using what you learned last week in Introduction to Tidyverse, for the imported GatingSet, retrieve the data.frame from cell counts per gate and attempt to mutate a new column showing percent of the parent gate. Remember, this is intentionally tricky at this point, we will go over how to efficiently do this in a few weeks

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Problem 2

+
+
+

As we saw, CytoML can be finicky when names are repeated, or .fcs files are not present. Try removing a couple of the .fcs files from the data folder, and re-run the code. Document what kind of errors result.

+
+
+
+
+
+
+ +
+
+
+
+
+ +
+

Problem 3

+
+
+

For ggcyto, attempt to generate plots to visualize TNFa and IFNg for the various cell populations, across both Ctrl and SEB samples. In the process, change the bins argument until you end up with a resolution that you would be happy with for your own plots, and write it down.

+
+
+
+
+
+
+ + +
+
+ +
+

AGPL-3.0 CC BY-SA 4.0

+
+ + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-52-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-52-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c20e31aaa32dee8019bfbed7d45d72bd1184f6a GIT binary patch literal 58839 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

4hx>LUqZ)an7?*0PLD^g7$=wDJtxgRU7KdPlp4| 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 literal 0 HcmV?d00001 diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fde63f2b07b171ed277cb4f5968171aa616d5a4a GIT binary patch literal 73679 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 Tsm2iuayg;aG9a@YGVhjavl zcpCgS7L;LJkKA#7NW9VUWvc6RgF&;r&ZaTQoIJNg#jT%~x-s*C; z{2k{Hp@9giwiuAEH4ulUt<%_IeDa+PaAS3@OUW6I_w*dlQ<-&!xuYWT6_}GxauGTL zQ^{YR+V#U_5sUBRL=5r*vPl{P+j?GU*5;cwbvI;MBJ$-_1h`eVQ$~}QOO%a1sl+2P zB&^Ax{0D5a86}>OJuj168Hbr)TPBAfbje7COg$rp; z$G%0ac&&DQOlaK$DA!Fb@DVgur#JRB1go*%4a`F zi9;bOC|(taxxLzNub7$Le!kZD6*BM)VX%YZ|0)}cp&7wHYd{Pq*Mg;WJ?Rfq@v$ZM zl1VI)P`06_A|dipLu>)RJbp)1d3xVyzo5Nnqyw2EB!Wqx?N2zU39!#GnuE&H+>U1s zjk(!xH3tyKH?3nJqHzP6@W=})htQ&Q)KF!0dBss!HpOLf!3(M6Cd_6rttI!{aR5XZ z!2j}%>6ZefROQEd4@&`K&7fE=utF6?z=<9yG#}yKuSdthjxKD5mjW1WFkZtB3^T)> z%US~JkN%09x_j$S7_54za^dq?NtfQ0^y2ado;@w@TyOwh#xG1Xca77Yn~tQQ8vhqW ztnijj4mbnny!}6A3IFopurmOleBamXYo;w(7gQng89u4Ia5h5w?LQqXtD26$R;(M` zr&V`UZ@2uCe87kyS^MnzCS1jP5faR$tAQF`C!zPrqXA z3*a%bZ~fJ`q1+?B>gEQIxF*Qd{U5Tef6@+Y_bK(W#`X8YWs#MthB7vdvCJNm65N$3 zL7T~B0dDDOEtBL)$0pIOQM%qL@+K!h*GTh+WHY4_OgJkhGrVpYskZC=YOlu|4n!=C z#xVISpxP&B^M41?bOljl%(Jj|D_TX##_zV}vg3!y&mu7dlW}WHDVL4Kn%Ea)eqr`2 zwWdDIU9erw7uR=x?(lzu_A0v_6vFch5SNvEfZDeqI0mNsDKNziX<9gO^ry6Q2FII` zpmP%iO+&tHn8uo{(xFR^K>!vHn+*>Cs63pJLbs(V-n2DcIG0+D7`~qxAmr@ght066 zGz5+}T#9%qyP_dH?n{9pc$z)|JaTKDCp7kHzm2My7y@+_dqrhMXPr&m~F(yE2MO7pqh(QqTf{o8J# z;x|Pc2T7AG!r5;Q_`~r+pVrwdcEwD$JM!NNKj#{X@O%S2mO&IZ$V_B&a&sB%0L=U< zw&m9G+AsDtEiG=!(0054)66igWQh+fnXN$Cf3f=zYHXqt?iDSI28hTg-vEon-JVVWN+C1{0x^%AYNcI ze6@@V&lx;V61BC%oKuuv9G0+na~s%s^D6J#lLsu3!u$L)Mu93jS+4IK222_TkPDA< zrJr@|sou%vy0dk8Ah7?4`^~0`gBQ;GGfN!LI>aBISRtPaR1Z4aq=AvZmnl7HKbA+} zBoVKJhmyzgU_`81(8IKfByxD|&FeTN#xYj47(w{(v!{}p|7Y0oqNkN(65L}g1A3;q zn$61NnJKmsHw+Cwgp-&mpDtPz1a}~r3u|_fyR8QG3!Bva1Pl$Dfvk}Ux(AilGEI&8 zR!k5tV2m5Kh@V{VomhJM|f5uUqJI-X4T&%9I9J#NCv(z3CsDb=Kb8j6=JN7@=p+wO4lYo{H= z0~8W=1!Q>?%anUA#i2NPPaZvOekns`?(mB^mi%db(Kig~_P>7W?^HPs%sc^Pts+m6 z8vaKb1B^*_&?@w}Fpu`)VYsEqD;^zJN-VKT%Vx-*1(Gv>K}~70H+n!19ED@~(=lhj z13Shi7#Fh~CoXocRKEn@v_6LX>q$g@U55g8R=N{|X>&q(=j2YoY=RNhcF=Zp@ZEJq z`S?*!2A@5yQGSl5*|V?<6RHtXq?S4cm%T(~Q<2}991U)pRW1J{c)N5~mNABT8tdWo z;zA^QiD|9dO7{*DTto^k)|^-B`IO|T-q7Gn+UL(V1XzZ0c*qVP8C*_CDqmD4J46kA ze^tHlV&My;KuFLe`Sa68I73!5ytA?*M!Yal9on$G*xb|crWt7bu_~>uy ziK_?fwOMuvy$?@LhOeor>}>yNMTw-V1a7vs7ko8cnqnPx0$6)H?w4_|`{-OnL=J$D<`+&;WPp1BoBPwWn*uET z$#baXo{kV;$2Y^dR^tCaW_O;8l#c6&ca124P5r%S=U)sB{b@)tE|Flv$0PnlGzLNb^jWD7L8+{}d_lvU;(a}_j z0Pyt+-{Aa7Lk+dNy>$L`P^h+=^q$+|uFB<%2QjZLK)s}cd}>DX(K*XTeGuk_xm$_$ zvrd6*t9O*d<-G^z4kmI5AwI1znH+}DZ@Nw!bDLP2a=kqApl$NOQ?f%V1HLRVNqE5I zAi-ECP` zHbTY*i^nEA^kVPNG%e>izbTIJ=}Ez_N}?*nmy?%>`?it;KmEPb`ttb8@-Q}}+Z@1CYC+^m1<`|912%6@|_zWT3+ z$%L5GcLH#2eh1i86KnZ9V%)7;jZt|tA0%%UHcg7SF4#16PcIoE-!vQ5=!?|xi<~c2 zZXhWPNO1?)k3P=+#N776X?hcVr|oIw&)uB+M`Akwji(e)+%bT1Ozpp40WT|oyq$}H zgO|lZtW4vGRrTGq8OT0aY$r+jz!`d#y%;(hacTUTS0l`th~2eP1kL37fyg%}z{JGI zN6z;-$%~{3@!6dp*|D%6uY@YrvS)4l3Z35)j0(ihSgSYq$lnm0)*7E1AhA!pywylP zM?7!syBD$fOiAc?=p(bjLZelodpyM2>#tV1!VjjS<26=?99GXYPg-pbmDUC=n69t~ zsKckfuHG&7IEc~g>G!mLgtn*&NgYk9a3FWqmSlN3_VL!X)>Vv&?$Jg!D`bnphU?# z%;k&A!1glb(@S&MpBOwE^W_ur&I-^JOPhZ>Zs0G{H%?e}E2-&q*p#T>iJIiYO7E5& zjDI~SS&qIEei0DT0X9%xg$HLII+Eh~uXON8E3LYDZ5kEiBKP9ecb{gH0=vT$>l;*+ z3hExv4TTR1HG7p6R#ZqKhJctLg&F#*4X0XRb8{%D$zHeCbXp#(T3K0vlu%Y8W?RGS z&5pE7??`NFQdu(q(lJ*Tms6{?Y9X-CwtTyirsY<=yONJx-$^~QMvK6i%xg`5aQU3g zXlqE#n7rSB%`Ib!w>jx-@a(v9#480?EL$F7(n!S^71DLN2qHGnz5po!+;0i&0A<1B z9DSc=NtnXkOxk_pbbOkjbfhvH_Z5m5>i0_dSP#k4)Gt4UPPUhKIk9peE2JM}_d*4K zCxVF80K{pe4{1{5eZPRG9kZ9nm6}+dGejvstMbN$XO%s|1VT|kZ*OLd81I8eFJ1>} z_G3`wIONji8=$u1{xX~;E4h0Ha@b2_G#$OG1ea857k*}=XX~7hqR!WvF~5n z{;^olPj1ct5}fXHN?&-h-5+t*J=k0!vz|7N1rim?rl$ zQ+uUtXC)iooGg}*mW-D!w+roGV8)9S;^NhV_Kd$U>+D*bX?Ad-8ZeD%`6G!jG?@W> z?s*J$Ld1;??=v@4v7rsvy+5FD$?A;Kl077nLCU%FJDfujTU$=}x%){Fpd6s{YT@wCBd>`liVqZAQcmeA5qU>z;n%EvU#)NAp)4V?FS3 z@rZ{lACu^;_^_=c)8=9G(PL(c9sCn0i*T2o%khNqY~HD->vS5nLpI*zp%mqN5HTIy z&^e1bM_XuQAJgPVxEyk~qfvcjxps(DIBsh()jD`jT4Ek`S=L6MFLyoK16wWKsNsPZ zxxd+7N}Y?u&O%g~3IZgKB~HI%jP8pM&mijZa&x~9EO$LqibVQ?lL$7BzCWm>KXcg= zOw3_B#1IsXB{0Q*Z0q~oZ6KZA6@CF&BLxgfN=i;oPeV$8MpLAx>+xNyY+^$$TCau} ze4jQ6_d0Z=w@`9ENd;c?Et`FGO63f^J)owoiYaZwywbp+LZ&11sYR%wg^Ed8#44)KD z5Pgl8SdpELFpcc+zb=$ynwU9y8BzlQVK5dIL`>`BAqicB59;&JoGBlWDDMzgK2++| zXj$WE@O?(&H4JgyV7M(2VPWBkYge_*k_r-PiP>#6+(aI+tJ zS2@3hk`Qz`{Fz}Z8fo<`XvmUa# z(G}L@E7EtQ0<-7b5Ps{zebIOcJ#Jwz2_^XC;^wi8p%uujGzoN?u<{|#aoRbXFtKCA zg194mxxN4$jB`%s`l4iC1;g%7Uf`gI^O61cxdS|X3pNVMeZV^pVDO*6#TM2ZQHrqHWD9@e zTkf!LT={)ed+R5%1Lk<`uUP<2j(~6O%XXA&9HT`D)Cxl7!Y~c0Z5lB};|Z-aYdBrq zIR1D{21jRTAwhVsnW1X2p`(1s!aE4F?F{}b8d|hl-5mqY^F5Z`EfHd}-YnTOiUx{BV+-e)cU|ufLn7K*R@U^aIV!iiNCQMvTJ7 zlAQq)+P8oA9mLxHs_p(G@%dZdfyP-)?bhJVjN_3~)0Q``uNSb=%AtA>GX)OV0SO3PewrVt+VcrZ0eR4PYf_bqnEDZPt-6oJsoI_~+2Rh?Z zJ*tUzi)ay_VHp2zE5!J#YM;GP-fbJ1Y@ul_kT?CSx(wP3LJGfu2-W}8W}u4OzE#fD z@Y*IJEtX@3QWQpDEF(?mVEm1RzBt$S@i1>~%tjgq>5l(E0>V#qnp9iO+k7e}3d*U+ zBgx@xFHA}XDFzt6aH_4Ls;QY+>t6fxED*w^CXSHG+N;YWP!LL7+Nz05t-V93@)4Iu z3m-{HX@#H{IHQ7s3<pE`W)XHeH3Cg4ACR~gQFu}J6@rm3#B-5_7tbkF%{li zBmt+O?&Og3Wo!o2%9Uq_NUOlW()+oahS{C3I)l`qgAgBgX<>~{-RTJSJS9_-Yw_Am ztCm(YtTDMyabj7H@#qGx<%i>(Op$%@+1f2g!22Xk!A~Ch`m{!|Fs~^@{2|nqg$At} zfGX}>zypGYw&vzX@IF02S|#85po#p`gZD~{cQPNcPoa$$8|Sq`51$Se>$EAVjstHiV)gFpWq-q3HwsDLh z8pU_H_-@gjKAaYoDk&r;<-L=e4TW`-K@Q%m(~_1DUIJ&2aTml~2Ocb;S56Hl5{@WH zXoFm?r9oOYc7bA#R~3nV{Ha*zY4X3iwPOO-ElH}cngDDBrr4ybC|qTgz_?_GFgjGW$b1sx6Pe~%vgOZfPI8a)6YrZN5P8*6r5 zCeauv^qq*BcU4ff=jH3X1qh$%=2OT5*|NB4`W_)kS)TNKy37|)PWCYymuvULbn?{& zT{dPIlThI@sQ12!BTyIz_^WBNTYf5!K-Zn3Pu6T?z|i#OcIpSX(CT_UE3n3^&qCR8 zXSgkgU9anVX9KeRv+8W`Avp}WEZoR*>fzbmk?%VmAU~ijxU)ELFYko}=;(U5f13-O zb@Sx^1j450^RI=#6gphvN%wizbZ>be^(Q`ew~cj6Ku1-;O}~Dcuj$jvTwrQeC%)6e zM~`yBggvg}?z)#R=-xu;eS08#4*Ir|!0R13gs~L^X(C@kI0bk}D{dk$UiCXyfMI&E z!u@Sb3)7d`VJpkq@V2TbPf!yUFYmLAG2z~2uTNA|zlWWl@LqJ-zh@EFT?T`}R##Wu z#dA$O8-bY<7bm~EQkmQ5e>CBcHSzL{1;c~iwAj=&!G;(5NjmEZ(CMbGxrK}x$klKX z3g@!ey;lX@IYyuV$N3)*>Y&Mp0;6_4{uWr0O1@=;jP}%kyfvj?WZFMV;G|c&i4A>wB!SABhEi(Y2rj93jZZkeg=@B{`OM;)mp4+8Kq)48r2cE=z91d zOL-NRdvXJTF4vq~O2!#4flx(ny{<@<3e5=*MbC>rbeW)$g=@hiSV!J)B$={#QaJ=% zI|3fPvFeidRj2uUY3AuhDkwF^;`}tC<8+3QRO@4P+t`ADlNh5A7it{i>n{d?p;~Pi z4ayJB>gEY1L9HocwNo7sn*^PJaVhffoKP&R@PJLAdPY3F@E>C)XDFBh zBoiMVc0>naw)>AO>hC>21s(=$2!O(?INVFux55fiptj(spcvord?7k`6a8@ScyyhA zWM9X)2~gMOqjO==oAeQ`<9FI)!%Fx8E4BvaXBMD*&ay@3C|^Z%WW3t|NF(#=F31T$ zq2{t-?-l>Vw6+qgiaIBMa;xeIT9TiD#Ww-~U1x#CIBOcvGk_W`Rii{MzYQ!b{6R?6 z5r!r0+a{q^ctwa|o$s;{N$fcPP_wP(|yAKc<_fp}IV^w~Wf^2{>1v zjaeih7_Z_b;Or)tbGI7x5u+yf^#hDZ8dKuJPt0O3h=D<-iasHN_$aNe1k2&~&iLAa zb*#d%992KE5u)^7Pp1dup*b;s+LMs>a8kr|DKK3%P*_ap5 zr7#V>tl)NObHqy>0}o`ViUqQg^xD7Nh8?|Nt$-b_;}4F#bmP1 z-l|xe4m;q@OXDElK$D9sZ-7Z^RLQE>c%+vv!OOi~3hG~4J*(sU#>6uF z$_aDqwgyWDGS2q$#yRW~Q<(iha&1wsd`rul>9<|_(sKOVF4${$VWke9e!}6%K8%Lf z9{#-?k4MvxKTQRQS(_uE(sFU{8z^tOV_7^VGeZZCD^_NSxiPu8={jflO(rDD2GsI# zPuAWFYBPp02sgh0z6$H^9ogqtOOFb@IsoBD@X;m9W^4d`=^%L<%}r~s=1XnRnJF0f6#y>Z%~nbcfbHcJaRM{;R9KEZwE z+Zz*w>T`lFkHz8ynaqDBRY$Uulr5$}s}%H^JMZ)Sco2YF9PD9)dlWc5!WPlz!*2Gr z$}8xGKS+umFu`1~+%0%OTY8v6amX@I#%I0H6BJQ;4 z{j(+gFRAK(jJo}8t`nGy_8Awt>n80{HJd;n57ZrimMyb5-Sf&vK}`8KlIZ`=-lj#+l- zG`!dn<~(_Sz=r~LxW6e7JUq@-nh!~Fd$}DIT`6(SP)BW438kWLY!}BFaoO5}Ac?wt zsU?bnYu>~oZwC=MQ5n)_V)-wxF;3FyOa!7)ypy>vC?yP}H^-IxwM2(c{yN4Z@Q9V< zY5#KZH!27jB2Py}kR#t?J76hKM#8xO0RC^zBdGqC0&(CCO@Czcj24E~H2qyP zb3R`~YaFp^uo^VLT(~?yC%B+VH(gVF#~2npKxeA=fvZqy%wChn>aDZG9w|o?(|HSF zS3^8<*-F9FLEo^)vZZ?QryPKN&8&KQ(swY(cbm!2{~+!V(F{36YzN2V(GsxW-PE)P zbU4UOAD7f6S~+shcZ1|C5O@)jLum998fS{=T6kRPC((5`a>Dp31agDl{q+9XATlD65oy@Cn$) zaB*2+&&XW&$Xhqi6vZx~R;tU3^4+qlSY8T3QO!~1<3o2BEy4F;&Zzmx#?RxH?c>#_ zCx0>#@5@yCk$ofkP!`rBmC~r&)xdf1U9zgwovc9i=B3VF46w1heAg!I(TFc<{A{xv z#Hbh@cf@1Kq3O*SbCpLhlg#NFu~LCtk4=bD+QeAlGY_*dsXM5H#&`|)xBl$(B_3YZ zIZ>5Q$^~+32zMVTCD$0(lJY%t!4y9W?yQFDO+0;6TtQo;P!6MU;|vHLb{GTL0o2$O=Zt>?4{_~jY-_Cvxs7T7#vAw4`X71jb z@6MOl?TY8n7v!AWRhke#WtDg(-BTIeI%H;*pG9c$O^A((24V4 z9QU8@jECEYOph!tfjQTX(bVR;ukkJTj!_TEY4?mX%5J7%{>g+5#B91<$h5yd<#Qk1 zP-*JjZuD@~bE-`Ws6$qjCwZ71^{gdR-91x2Dr*rSZI$NM)#BAAOl zpigQ4<6Z(x_`1~9HsH~&UcTO3(t@)ZR&Vf^NCB7Lf1c6*`|$;l**Qr#vKF$O<+Q9h zhx>M-k&sh9n^u0!-eUSQ-=u71=Z~Ao`6X%IY22JiZ`i-q^3_rf3<>R?aVIA{9VBNP z@HqCnd zKb;GWek*p#l@j0hUqe+30WDQbB?q)%O0uSD%^*+ zpyQY;eKHSu{dT48H#El3%HA1@Z|5lxCF9+P6ypIVM;kZj+ z!1~ve8dKyzo`vO^=brDkjcU@m8Ef@V?g=D^Wwu3AaT7q*;`abS$``c|^%#g?gbZh? zWy%#AUEew(Ce&fedp#c$%b@|30D9)^GTB?yTG0yI){dp5vgb4tRSD4Kg+lfFv8>YI5=LDCb-M zgMa@EQ1F#K*ol*$2?QhrF*bU?y-IP}OBx(y-<(JUeYYIywOSwoQd-gYy1^%?#&?5Y|@$aX>eItSq|}6w5{HcRXOk=U;lo(8wLY1 z0{g?2VH-wdq7k5kSzcQU2fxKxbEwk`Z~y>4t#xc?0(mr?G)jE92q?bDE3*eHp#Nu9 zW=??By%l;$c+4b)TUuILS@G~n8x9_pdC2zOvfVuWO<7V1idi3}*n2$8_>v~F z*F-1#BGye#1ua{OCY)GvY#Gj=I=GEkBG1h@P{zflbo!L2YWCDhxl$uCW+dHct5Z2W2zI3ggU zsMQLxtE%el*i}m72)4a#Q))MPetgCZGa;stJJrNZf>TqoKXm(`TfW2C}MqpzhdTKvyL;c ziK4auIA@Bog1#@RY&A@bw*H8czDoGOmc2hG(yxF$iWmY6&45{KY; znkc5WgW}d0P}jS)cgtK4rMGjKjeWhfsw8Sw5rfv%SMk*48gF&wszq%R*_|?ds z1Vwz5I#HXB`Oz(0!ezV_t9Fd`KM>S4=1b2HcCyJ2!NybC9Unb2vo!B_H;t4xUiF78 z#Hj9nz1)A*cg!wkWvmMO=*a2%uSS04r)YVm@-V58B^Jr=UkiqxUiqDL*KWGF)8{I#zK-$mF9j) z3Q-dV%8I*JX+UO|q9VR0_*pKmrt!*gx&_A2TrTREyIf>(AX*wRrgeih2=J5xy6meY z;-J&#mxND(3HOdH1DzwD+3gNMb>6SCw+ytwMclI#j7%DPX^iB!G?YB*hF14cE9eFOkO%0F0C>cQIpR29wZ@U^RZ z%g6-f&9Pm%zt#`(%r>Zkz;A=|x)raoivxTPXt@QTBC)!(q_i<~Gfl!G=`ChtWD}6- z?E@8`hP9TxkqT>yglp^!6!3OHN@{j}T>)POq(nJ*ri|v*AvAbfpkL@0I;S7bfkUnUXu6R4Vc$!ND&GF=US0y~)R_w2dCo${&)Qj7_J_<{-2;DYTw|kG zj!l06GxbO=MX5L+zMbKB+ba7oePb6KUfr3^R>e=JBBc{OGGgj4n|B$A`M_Wtg;IHg z7);W>hLe+%Ni6LTGdxw0vvYA#(IQ~WOSASL2R_TAok9kdvWwGEeci0$)R#$-%K$`! zi7jh@V?D)$k1wd|@!TPO@#%Ba#BBmrb^TR8;8V{pFZTfNG+@fRlS0olXdurA^q4yN zisT^^bzZi+RDR`vxv3U~f{e0llume7PVAo1&UG?o>%+YE@EIOC(wpOotZ-c#q`D^m zaH#lf?NfVI#*jPlT+6PS&q`tg*}?g40@AT~e^%4E-m=_eAhz&|e@WHJ+I+Pl zkOADs?<^fP)9Unb=LL-nN!}j$KE}?J3sT+2vlfc_2$A}@70GTzCeK%7GgP>vQnwsv z84*}dzC_54Xgt8F#z{{as^O*lGGEfAKYj+Y&C$3IBTC%(S@P|rpLRUk3c#w>(hw&& z)?K!xmbmP{%s*L?ICEueM!m7rBQ{B@=$){cfrY#mW459D4R%QE-Zk7pE6k(!*C*aaRm91zCfV_B4mXuvjUsPHwCmwrti;gqNlS{b)N<*|gdS&htK2^&lU+0;q8IS;#+FC?^BRw_KG+RaRD3 zAIZD;SWZeB9jFWy+&Hp38r#v2Pgfdi7zy8>Uuuf8NOE}V9NL%J5@0xbhfJX0pqh0n z;8z`# zW_^vVPf1zZ801~hJudKQE8t`t5D>kfuVJeX;1L3}7v|G|*VpZ*5n7X|+fT8``*q2S zP}GaQ#w_-tSd})!%~ec{ysmr$wWf}N75P^g*i%P(&(+fhA@c=GtKD@OEahqdiAvs8 zKk9pmN=o2U+XG@{%v;Z>E&+B-eMVY^RbKS1>fUwU*H(`mfHML@2tcB_2gJ6T@C`sW zBf<`&e0JD)CC~Sf3|@eI2p%vqKC&>83G@h-fy8`eC_p+k55Z?VNLB)3mggc=mfy6e zn2h)TF}G0Iq$KiM>3ea0lBy~ccf<1R5$4>cX9*Erba_Mz1`Wi$x1xWvIQe#F-aOQ^ zX5rl^Bf@BqBFxDpeXJaS(t+291oWR8g{NtyTj_--Cwl$_jov;2>G+M3Cz32cO4}btuz#GjH;sZnx zfW&BbB78}-?IK{Bvn72uqmUXUUsa@hPU47}oxXtch|T43UovScfm`-_K0m1#c1fh) z!U(RIN<8%^WK+9b>Pe;S&;cfm?mJ5h3n|P1?>{mUaR4k63zVnItm;;g*(CRsFO!~4 zE0pjFJW>+X#H^kOyaxDl;7|aHllBO!2c$|sV+N>I+y~c$l*Gr!&&8y+7oNdbW272uaOaRtiM zUC9Fw1^L;czh(hS9zA+w1!w_*5^KfJaZEyhAjW*3}R3(HizjTPNlI-TAJO&7eQ_L-`b>A^OoP1n| zm+*)sRiw%y8r+t$QD@nqA0$Kney=|($MFlri08(>S!p;rvA_6e?Nv!p6))pxM5Z~ zL#Y6cs{kd-^f9{kI1@^uDq$VgE#ZK3N9KD4;b0lyDIaKVb`bI`%?Rvl`cm?>G5}RFaB}w=>kic=}%(SK2;Q z$|kaURFb{9=eIX55l26s;188Op_RkLcqq2PcP6|FKYX%x%44B)DBpx+d z!w@mNMDu)EyB1cfRZm6@CpJojvEU=hA7xjGFdg1wFoo=9Ji@*T&1aku(2Z)z|1tEL z8mh%i%_#WqYim*yb-_OI?~_n`=0CT+im9y`3`}SnVfhm7V(fSI%Lbk9+}?sfW~ax# zeI8)!H)kF;ULP{A7#jFcmh!VCp1Y(2r3)qp`1E^Fn&J_IW!RWKxdY?9J_j{zQaNQu7v@Ge=r^mCzdgUeytX( zI$h(v28vYk?Jvrq9qVsQ8HTn#|GlIZ#6e&yt@acHLW!|zv*_d81>p#A ztN@u|#<@MVUPin`Qr0Js8m09q;w{*A-_NTmgfii?x9`}10H~y>m}0V6*`zO18Uyo( zfdETMmWof^t-4?-6AP|yMwDWIt3hAh1}CT=LgyJ2F9;NWu@s2?cVPl_Q_r#~MxOuS z{^AoF)0cxsCKbixMXEDsRM8Z~)KeCcwrOI_8)MbiOpG7r&n*e|PRqITh(NNLif@6) zv?K`0PBrmuT!1)5LEjQZW3s^11BS^O$CQ?&TliS`4hB-c(G{` zW9gv-#=^tq)FZ~x!(;DDKX^u#jF9td-^`_H>3&>nziavytP=J zOtB&kgZXUIu^~-(kGP((EM=2fu5>47xeR;xW1t$JQ>pjTuMvosS{-5n(^{V6e4@(t zF!N1OEgBc3UQa>Vj;$)cWE_aRaQmA8RrP>UBvC_J*t?`i`Lh>4vJ0g z$rO&t@%uLYqQ*8?Yib5T;(L-FurebJPTbsGY|vA~@@ESj(GN<|im6xQl4N`V3<4~} z4G8GIcP7)qmqY&aI*mA1O6FaB%K8xjJYV5OyBetJll%DU*s!Y-;K?3=+jb{7c}Ey> zi|Jl?o^LA{HyjXfwr;Q@di#TlnC8vAcTy%v&F3g@OGJHE;K@jld8Xo>T;K8>u%S#7 zL-pWqegUl651ym05e+r{>dPX>bPECx4;WiJn)lAS zi^Us9)d;#!tfU3wyF05#Dq=pCi3Mw7HEd(mV{QnkAidavOk?`W3u4Ydb1LWX9?rQ= zF6?>c2FdO|?KI9g(0|rk5C3}|{y$sVza5f-4=qI1sUh~7{t}H-+Cs&Z;GJF1l~f<5 z*W64xigFf~TjRhxO&3+TBC?a2let}vnd%^{vAYVJNbj^pC#_9Uqwh1zT-nNp=KYmq zU@)m0QBxg(rVyvvCLTMK@ZJy8v&`1J;|gE-m|hsZq(Lh7G_zGJ-B6tARd^IG=$XxII{(O$#=>XyJQ#t1=CdY8&} zDW2ka9|%4lK~cnP1VDWX(mrPgJxRHr7c6U3DD(moh_139s@-~AE8+Cdq6YH9qUpfH zEyUo%lquTpG!ri`1c3n5`CcFF)PM&ZFqA+;)Mbp$Z0kGqDaP8 z2*$a3s`Cf3fVze#FCdgXY?9jj@zxjOmE*hW$Ad=nQnx?17(9B)2X>{LWPp+zWd`wY zZ7$b;5%c{|Z7yzfDmqg(CoW2uZ}=Pn4ANV94_iM~fa0AT8gA>nGIRJi=9BTWy{FG?StMEuZ3#OClr#yugB>C)a&1+` z?RnfGzKlEFW&WkD7w(pI0A$jtIbRw`OMF&tXoR= zM{R@bjQiMZ6-!g`qVk2u3gd{=Jgo;mG>Cre3jNjj~nW~ z**j$wmn*k>tnbQ9e(Y0jF*mERT;;Csm{&UZ08V)5P_@#9ra@OneUT=&xA!|^Dhifu zvO#akx$;g`v2{&|P&NXC&|`U(K`iTv59r5$awWHF*gkF`e-IK+*S*Z4aGdwMG-OHY zuyt)?d&i1jfM5zNtnd8R`=s*Yww}tXjNq%+mKW!Jq%{R2h?d-d^Y6Iy?^FI4C(9t1 zF)E+Scv&1{UUjldRYA9-$syiSuRik_d>XsN0{2LQi&-9koZOfL26h40K6mvI*GAJK zTMw{2Y}!u1A-uPP)}yR38m4<@2X5a~RbC+`$_8n0_HKF2T3Cw1V2C>lyvKVS#e3Lu za*#U;KEB6^0s#8@W79{eUoUM!_fL2F*ZeQw!^*zToRfO>DAFp}8o`54OCus5N{VnLdRFiE$W(>A`lV)E^L>RF;ia`W|u($Ab@ zjmsae5X+d9XQp@Ln*8Q%>KPOJTp_AvH)L5({fC>S0my_G_*P%$o8m6W>piR%s5UsE zy_Znw&b88N|IuDH;KVKQE+{uY#U;xV5sgh=*Wa}eY<|Fg20k3wcf6!e;CGDuYcBEEB5j%w zG@56($$t0}j;5gLlj6q36xzMh&dKPHl9d zG=04y7^TUf8wiZ{ioOWQ&kVY}z{%fT-k1g)2l zxMDu>vlFn$^Qbv>a+(W~`G#L!P@Ix7`171VjduIL+ZPp(r5Kw-!vE~<1Mn@r)0)*( z{G;qJ1Z>Jvg4ACu5`dz`tgz(5%zke0gbqZ;(eZ>{=|JOcZa*4bma zDe6w>IF^sR)X^e;nx$NZ>@!!D?Hx}iIsUm+eNoHlPU4=wTI7!3k zYelm~7B#dW=BOagKOGE+OfghJ1wUC*Phfa88~14_xsl9_YN%mkUk(D?fY(78tU;j# z$Xn@IoHyV&BkS&ZCxgV6J=vP+wB8&fhw^|J#-DV}+?$-c4qAy6yzm zj6|y+w}NA*s^3m*PpL#=F#Q&*+$9^FE4|k0xbOYzK?mWg+rzD$Q|HZn= zo!(IVifOsXy+<3~*)PZ0Y=i6eU=0Md9MK9V^(JIn9v_*x9ACN_Uc zdGz(f<$*X=CSK|q*G~e>d>Wl$cE-b#k-DW&i@_*+_qlh z7?CBp^2K@S2++6#^CpKURBQD|PH1Py=%vJOr9=;~cVVkX9Zc*m5E9pne)u^nm<1CDK!}V^2X5oEZBR``5?alwM_!&r!)=fPwxBNJa z5tnvjl9-ZwljZm0YcX|sxrXNvIhW&Bfg_%KtwzX zHPjg}YQ8?(pvJ8x{i@Y+w+>_Q<9hbZURL#7!*(t;+Kplnz)7JxPObURL-+ak9j8G9GDIlqP-Zrw zfyyQcO@_=;nKLJ|W|2yhW8M@QGmjZ6Dl)T?IVEIB8AI{=Jk^Rmr{kfcQ|p`?&ifiXEbS)ZM8Tdc_Ym*GoS zZt{6@8T15er?yi?h*E=H%EhAxvobTC&h@T$$zD;of~AELm!4+&Iy*c2b4!L9(Wi_2 zH|m6@_l_=Iy7bbeOMAQgt+u_n-!4lw9-xcil=mt)N_673%Wje*lJ2|R$eT&g4P~K* zikpA-HiHP@;WA|!Jw5$Zcb0nzqCRVW-Ul~9ZBblvU3gPdQx6a3Tp5`$zt9icB%tlk zXZP;elDYl5iu}{{?)|l!MQ-@2TUlA@>2V%otJ?tTWhMp3J|A@aQdRxVT#Z}C1^$!l z>ImDM#R#uOz9zv8;Rj0ld9T?7ezg1iad|Jx&Qo^ALD60Td6TT~roWbE5+pb4(Cwi` zr?#9kB|njHIAZXDK|tn;ZlvE)7s%z<++@^vxy~8ktY)>*N*)PXg3Z1%5y}sa zbHmAxSD0vZTS*-z{cIcg3%>VYH{g5g6xOm?FmMUv3m?+saluh&Ja?p#DVXkBu4U+9 zE)|kzcT0}S{B47kYL`+9KhoDK@clH_e_{8lr)&CtwYUiYzVkDq`Csjxi=*{8la@HU z4{o#3&*h7JNIxF4);8`(F(9#9bqm`y6Ec?D`U0?3VXYAGuJ-AH{59eaC{Jwm#U-Sv zCjK$GzukCq$T|*}oquyD{~qCAgVV5`TW(fJ(xre^!3qYkTTJfooTf%8D{q+ydcq}& zg7yok#IPzfTlR<~hXgwLUJD$5!ONlXmm2*q^|5~y<7yd)>4|0;y{SH$tl zKl}Gq#_c@I*%`J2*wP6yCCThQ-HO6JEG?ZT7N=!zgk;k@@xHBWbC5>wf+hnc-gy6f`H9)Qzug z45~gFE3ohzA9;P~4;Qu8woJ;Y@LUbDe;`3wcmV;d7G`opo3$N~*h7x!6Z)98*r79^ z{C}J&i&q!8o2mQ6yULs@G?$TS_VUyE#hE}}B`PxXx+F@$;=%QYUt3k&5O;)W2yHB46|l?m)@u*j=`T_cA_3U9s7RK0e@n zR>b8kXvZclJ|?`BiNgEEC9P!;_!nKei+@S_U)z#?e*BLumA^_n|Fp&b`#kI4GWwaT zr&jiGva^4iuJJB%9qVm2bRYKRyZI+dpUQhi1FNg6=?f+R@ALlgo~`(8mQ{16MMLNO z+*G99ixsUt*SOvKQFxV{8wL%GG|KZ|1{dX)L}JmLAkCnFUpzCA2>L0*+4rdIyOwVa z3UjJg>F#s^_Q`1Oqfxz`EBI^Vzdc`DE!!9N(w{9SGxJdikZ$p)K63`8+IAJ$CH|sg zYb2mQ2*0!qoEs}di+7<;4o1zQslt&CSZxEBjtP(qPL7Xzpq9J`umHNk2^YZXfCaJz zt!L!7QhoxDNjs*|0m9b#xsmxj;En_O>BFbgAVW8mZ4)xyV=|yUYkE-I(ZOZj@pJVz zt-Qa6Dr5cj3s~lO0Nnwv(1gh~uGo8WqX2iw&wWer_$UbWAp*v*XSSv0>iI7GoCRQD z0Pz@of6s;zr%nt_{Pjjh;C{TOD~yUj83f?o4UAsc$_GkVN(^nNC4>LapX*Ml{ko|k zZVDKneGJXwarlErHSv?+yGL0bBwp9XA5@3sasL zKC+feZX8P^suIcUJ<9JrI+;`a1N-3(%qh@w#}~)6xPH8kX9(Q$bB=<7R?O0V(7Fl4 z#HxoU6nd31DhtG%``jK}G)jPu07xP*2@To{aDtmVKYtqyD)y)pf6dM|2WYB#*p9ky zwvlcF+hS+{AY?WJhc*3utY#i`SSob=fN`8QHy6IWWB z^B@W(}C$6SDA0;3D)#E-$^Ijg$a&#hUi+oZg{pC6vM&deV>ul2)-1meN@ znLuUkc&>AJFM<-2Kg@35xpHqjfL4lOxaW^!ku%4Ym9Lp^y+HI{_VDQH>18mp$K`@) z7{CwU%K9_23SDIyJ3IHlIqf#sK=r}0oIE|~WAZwD=}8*=$@=;i7!zY@>z3!}a~yk` zMBqu9jl4aLjJmKjd%kzChbQ zfAGoBP6AG`iyXidfT!MY<$$;|qiDUEq9q0bc?2jvf-j%zsPO2|d|x(~H3FMLNHYXo zZznd~-{||kZBp)&L&dXCi&a1Lf(vw83_9iOj)xJ?iX4X zxMe>%&|kozIG}QeZ{*@? z+z>r;K`z%~?r`ZJbW4{~9#N?Z!XBYK z4$jU}YC+Q4y1H+2dAuV&jh!KLOe;oJ*gH8LUw`G6NdCr#vPWrYfosL`S)F@~#n``r z`s`$n&y%v}&oAJA^ERY&GPv0@C*_lp1>U%i6b3~^aBtjLU|z>7FJH`Rx@XTGfHKF& z#;m?ZUHM}btB{y*mk=*-TdP*D2AB8M_?HzGsvTb@Cs_j{z31{&(saUULxY2YyaYJb zV>(?carN@$=A-+vva$v!A;%+s>XUcb^-cG>)m;FnrO}Q92LtNTY%NdLz}vUiG0K8G z`0iv+PY=X3$*9<{V;F#8V@a?Of)+`__Q+s0FB3Pn2rs`z1i3h*&K%3yY)%IDo{f=m zDzK%l?3OZKOPJ9%mu`0P3Vh3Z=wB304Sk{9q644hfI!)OJ- zNj+m(Sy9ne2M4$1*fv{c)z#H`k30W-$7c_8MwmAGMdL+$%h3KX`MINQ*Sqd+Mm9EnUN0{% zP~vsrw%~QWbnzmj_pp}MB*^|YFkA(Q3Uim`XX>HJ#`$o-e0!cF?>u2DdsEDKa@u zRbI0HrP{aROX`Bhb#*zInH!XzH8;C}n>e-uT@YKgY+293691H&o0}j)vxbI77l6_xCQ550>d$LP?W{~pO!yi!#($&>fULHT(j1Cy$@@cy~!AcDe3!`7l{av}n;oLcHF=GYyJD2EJTWVA`6IaeK zL2-x!+~x=}pM@*eQ)goTf0*42*nV5|`SEjy{q(zM7s5NZNV&rL`A+eLBX6N(ovUD~~S_s*v~`%en|r*JKF@vjLctb3RI$}|`=uBZMKZqk2!JQ?1xu)Qlz>KF5i2Ft#2%eGefoY- zko)=b%a$!uq)@UYzNiw#8xj=e~V1C}a z_d>J)@S8ZxxBUDZ92_K0vyZ=6X%Qr9)Y;-mvOWg(NDwy<4Gr-^QS(&2d83IwWU4W9QD&FeAV~t34b@esNm;3tqnmhF4SeKWV3rDc9v+saD zYdGuRFnW#0>-@(zEbi{J`T6+;1qJu+t>@v1gqQ_Ko~{xnrDl#4&(EP1s;r_SF*$i+ zd|XIS@Tt?MdiW|(&S1Phlm>T7*dTu#9S2fUQsB8QtEs60t$KAeB9EtN=(O2}6^d;h zL_>oE_?heLk0xsk4h?w#EQ+_eckdq3Y!m%;`vb)LuSgvw={$qteIR0x(C`V0B!nk9 zAt3}>UHx$zC^6O40_w~w%gPY{B&a_oz|7Y8b*^n7B?Uw1Q}xIGw{F>bktHRMJ#I+W zNsE56q0rFQ@AT=@pPcfcx*t7yM3$D8CX?aKD?e@kve6Xl`KE8gdyu7@$wASMWVZ(yA=Hvu%`oh$GNlR9@p9D{6IiS|P z)#0ImfpxmQ2pXWxK?fcI^es5ol^$-8wtkDA0e)W4ucyYalbn1)LPB7T-9NYI+1uOW zIc$Wr^!0@Z<*i=jG}u(NzAex3u`hU^Jz>ZoX3w8*mXL5jctwB71c+t>UTnrBeD_Zi zGpVVmZ{O;;xVSLZS!NM2(5X|8q6KEBMzl?3Wo5x_E+Qi0&nAk1Z9O9_FPwdgtX2p} z16Lb8A-rydb6>hkc+)|O8px-dkVu-IofSQi{s=%`{4s3w@w*IeCRcEVbKW9d3yNd| zef>kl-WH#Mspge1d9iFPX1mfY?%{Xu4(scCbiep5^!gHo-)jdaT3T9QopGYbM)OZr zI17Cq9`1M*V`*ur9=S)D7noi#TWuGx*RoL3Mu|mfZ`Wr$GDz1u49u_u*ZnT#8+^() zo#2O@E+{N4dGTUBMMX_5E0~?6qkH7Y5k!4(l$CF=n{;Au3P8=<&rBH-o3fsIK~D(o zg*b72MNnfQ4)=sMGlbWyYUA3t5n5D;x34BLCjfV4kdetL?b?ktqU4vfwA@>_G&qCu z?Yb{MH~s>4?uiL0TOPCt-o1Mad#a*x{r+nbbt$CJ&CP9Qc2>qhyRRuY!XxJ93Ml%} zQW|T6Z{5PG;@jx<6W()0qi~8NK*>31uV~V3Pcs)%?l8^@I|F@y(ueNux}MvuM|E_} zIU%~+2XqS3(?^qYI^R@PH4aW7uwAuwEzu~WCi#ul78Deueb+Hdmw0J^fB#i0S7K3; zWzXI9mLq*pE|{Ac6wZ#^VZTpt-@bh`gNau$PxMXHZNNdBN-S6_^b<1^Q%FuTjTR>B zs6=SzMpk0ADt+kXba5bkL1+G_sA1Gm?-p%6J*%Hjv$QMhq}Se~ezvS_VyND`EK5ciHRA+4nC-?tON!0K1FUs)L9fRatQH*wx?qmAFeJXQIGXc z%z*V6{KR`$9pN6^+2J^U{PBXZ#e|xh*VO0ACrM{ZSQSN~#qHbF(25ANBS1K0ZFvV|~}IUX`u^bG4pszJ0v^ z?GSD=8?16a`}OPB3ALD!;eYdHgtScvj@oR^=~{pF(*4UXsMn%FjIq43l5C5J3JT@q z?-HN;JCK$t@|<;WbPVOmKQ|mgtcb5K-1G2o16bi!a|bBb{CqhX85w5(DR7h)7InS4BXxK)XPl%!~4(v93#QwkAIy1K(tfx^U*MKW!{ zm#U@itsk0;oqOg1O+FyHk?=aW-jxONVF#h=5XZBD=DSJv5SKWzFSmNv-bhGFs(kat z!OkuheS_A2Kjjmq$&Zd)y8>-cfuI3@920}6#>i%yh=?KL zJl{hRyILMV&u@Jdz}Yu2;D%Mf0Sb9A`W<-ytt6eO=D~;2(TC(8-t_Zh3M?%xB^uj= zEi5dc|FbeO+|d)H#+KPj=#cJ`Ym}a}*W8lX`vO*T@A{VF{ln_Si56uZ&r@RTijShA zOd1n35uUNbg}%kTd*N} zOV-UwfNPrA2(7H8sTp5WchlGR{Pf45Dzh&(odtv$RD^5H$-&|0?@#FoHjAkH9+s!ZZCeItgNh88Rf~H9^byeIYF?lU+h(g zge#Ja{@1Tt9L>*Kcq?L-Gnz97aK02374PncPl$sE*CQz@Nk~|D7{W;1dkMWdQl_sM zlC`WN7}l3txq*LpW>mutG~5;;M^LHN+$kmL$2-MDchvhq=c6NgisY=DDmjkO(Y zP7xIqwRJEryS*7(?SV9K+bq3q4!kaiMq(R!_Xt6VEG8yiSu-reUR1vGuCDOOr0IIc zLWl%7lDV7#N{n^pWLRIw!SwVr+zGcrudX6b<(nH@;6aaVXyA1ipvB|tWu~Sc?r1b8 zBZZL=7k79)MKL`+-AS$k>4&>_?vOdEB3+e{M3Au|qW!H~x55leOR_CP7&vUQQ2n9u zg~1PxQ$yq6vAa0cR1x^z4TBSid4Ol}4G2KeONt9SQp_)dC z!Rnlyu_QKJb8*83kLv2qz-aoFArIhFT4>UCXVN5yn z+sE6tZ%dzyZFPc?%CCF-mYs)3loxpvbSztbXve8k2wzr+U@Ua-l%?eW0z%3uKpv39 zkdxC@yrJ|#&1fBdDf`zC!U=2)ur2^)L$IuTKVr^<~{DC6Orh}*O32_dG~Gu&u~Fd|8 zJ3EWA-tr?XL-8T_oc#RvF|$a|?1Y3jyFT>xN&~inDuFtN5=^hGgWM23?073kEo|>O z!LE||5f}(!2#8|O_vx|c&!1bGA}%vFrbY|!Dcv~C6HN%~@`a=OEc(!I{n^mX{1OuN z1u?O)XOLZh-%0qVf`WooYc0qjxS7a_^iu%K#J<|R|0=xiS8Z*2;StuGVJeZ|6cH5k z_x0W3^*whw3Te_QMBu!4LPOgonb#vFVmE8uE&b2KdbU-0TQ^ zjO)Hi4^>oEIb|Il`6?S1xL)U_LTe34&O3)2B@ z$H<6u@sR~;Q4DMrOb_8(p${DM21ZSUsbknW3<3ZW0>Af}B> z`g<)XEkK3n*KB;d%MMoi-8Bk}* z;Xe0$TGp{Qt}Uf-Qg?P|He5+$gc&hFL67nq~1I`F)$6ef{#~ z^#gFBQR+kSDGLJK=#+^#2C*y3iCTTi%1TPrkawp{1d1>lS9IZ~Of@P}6R;^k^*#edMxFM_9GhR9;{<#&NyAc z%9w{d7N!-{Rc8=2DZ)WM2OS4*Nz=f<0O7DDw3xA_C5)QYUB_cbk48UyhWv#WvP)2vH#>7C))%gXLr+=Yum^Gf zw_DCEWJa~j;MT#iU-$K`H7E1d*VZ0Bdh}$%p4pih5rcfPuyC^L#0kYe4*hvMICz@a z30c{AVK|C1nvp=u;a`fq=jSH1BPpk#e&{dlRg8s^l`lzpLF81K7w^G(FDxuceZ$Rw z0Gl+!_H6ivNNcmOu^}3q`qaQLws39PQd<4lTVrc{V&YEJQ_r6LJTcgejLELuyGKxK zOidNbiu-X58s-C1Z@dx+tx;jgE(sDbn1KeOlp=kPQ|UdPh5H(-{@mbzGJ0w(SCxP+}n>B_g6At%P(4ND4@Ulvs2lNTVX4gh5J!bR#7opfo5A(jeX4 zedmjxd+)Q)+4r7%?mhRPyMDiK<6f}V`@T=iIp!E+KCkX5ND-W(JcUA`2xO!slu;-g z4-^XPD=sFyqusr>2tV+wq_u2OC~9xyKa4jME00j9izpe1o2pME=La3{1$C8){0e+2 zT3?xj*~p}GM<;gC$GPjZda7)CL7|$2d8SU{=YpTFhf2=+Y8Pacz3fX%IcuVO$5&2G zf>AS<3GbTTbG|3xUQnnM z(_RAIeM%*N?U%&1vH1AJUNq&ZfQ)t?qm6eW-++K>aR<347 zoTAVdL%sY4x9!V;n(;n3 z_{moc939t$G<}x{31lN4o%TtoPv@OdvK7D7C zb2z?7kIr7toI~dg+^`n_xLyso6ie5*#&=V z5jooT<7`f$cMa&a+L;JF8XW8bL6_JjUAJnklh#YSFvXxBdR1umE zm%GZyH0&)^xc8eEsmVkV!TnKiKE52zt5J-}&%@&YPt&mWAh$<~#&!MI3!)+079mnn z(pM{yk&zC=t_~Fkn{s~Vo#%72%Xdvib7EtE1*s^^bftH{CS}%h+nG3d`rPG3la8dO z_*=d(@!DgdM93}OA;7R}Qd3o3pY1YT8LfHsE+ZpjZ?SY~)R%q8ZMFU#-O`t}=J9uR z7o6wk^I8Ii4;xYZBgjaO`EkDIoIcI|W%(Npjo)xIkELFWutxeTWv|B}U_*Obb9GCTO{&th4TSvM^ zc6B|BpZ<&E{f1J8rB%!%6y)pcE9FmFkk`P+#}}$&BePncp_OM+xY(tk9~E^lK~-c> z<<+g{%<3kv(>OgaFyMButLA8CZ@+oCw-m$sI zPL91Sf7h+iFxqkQXQnoZH+(<0c8N-|0u~P8Z9Uh%eBZ_$-ejhvYP6Di{Ew!e9>H7xS5{%v>{K5{`Wam;B-r=x={ z5`Xs5a*jyz!IBNwd3PAnX<&>SFxLGjI7fMQx0c*{47}xIgoWIA&3ba+c9LwTnpdh= zwF~#xlSOntTN&)9=hg-Aj{3ZR{~lcl=rU$4%iI zV>CzG?Cv{qxCUdj{)$2ys=?k%c`d?3BKuas^2Eo%ayCRB*VJgRwnu&GB>kk##I{?- zi8khY*9=AWwDzrFSHa_@e`;+EW+o|$ahgr#vz@#=+z&%dbGYpNWHSx9sz=f-m;~Jt zyHt)(Pgh0{Hv6;P)MH>%tr{RZi6^V#a2KAcdV9(JXfICOyVkPEsBILs_)hlGZZoR5DbhU!sPggdvz--7SYdfWy}Filoq=0O0TB&-+m{EifK19e68X79H zzg*Qohh&AOpJfY${qOh8@+}5;r$4?Sq`hp(NiMbxYtdnQ8P@7})j8I?)s}YCts@b` z`;UVgvcIf0dJ#~K7FBE(WH02_U1-?)sr{W8xoqt9GosxC4i$TYrdh?0VQ;*8cXYUP zwAhi{GU836_vkUpxzg1}=3&RFsPS*M&3wt&zQPd2AO}eWPr-th$Bl!$R$N^CDm`ba zIco2xwxwF}ZRd^It`^}vvsLM(p|UZa%|VCZih~79wUB=2r7{vKB0WfyhEY${3I5tH z46M8+Z0zhyA=(x)7Z{nD1>m{ZEB03*owK{WTWwF2i*a5o7AF!~Zx&d(9bF6&E6Qzm z#+a4I{ct}$t7JC6LqX1B{as)n=lyD*?S=UG_-yxsxmTt4b9;IXW1?LAH|uEJ1tGeO zSAT&-DRsf|;a$K;@JgsBZ7r}Fa-0&{8n9Iq-g$UG;meo(tkT7jxvWwf8=Jd@X2n(J z*tWK|G*5p$`|{;Wl#scjqhoiLE{S)prdd-sw}49;bJpkk5ULcmD{(}c*?JxZ>4WMx{9)tV1{&Xv{oMT_0K zRYOQOHa|Zva=7wFiu#G_hTe98XBi zKX29SwzmM;cguBq#9QBS!FJ&`QFgbdpPtF zGFi;g{uHv6XT?p9@Ahuv>zexny5fP#N=hp*#Vk6Xt$IH_f+%e=HF#s2JorCZ;8+fvn zJNMD|5D1)JSxB*fy7^UO_B$^A-+ki}Km}OaxAWoZ4nvN~2?+_1 zf)92#5S(Y8l=ujO>QdR((CWl@X4vcwivtCw-4}$MI=6de<>VOT!#m4e_f!;x3U)sL zu89_Qbuu=dffZiVZ&BLy6mY3D8fHvXZEdn?uZG<%*JWpQ+dy6YXO2NtGibn(x`o!V5{}qeq%XGZ&?)pri;8Td-El~mx11%SZ%AC1diY*39U=MCA4wmks zoJJ~NLMH3UF%ZX%lX`Oj(+Gu{J)XP6D%dnG0BS9VzU)Aj6B>Uj4rPKKg!$p4!z~!} zy#__M_lx{2KuoHk~I!zus{ zB+7+`gobv1GbJu=QUL5Rg zi9lRtW@6HFnn}!0N?dGlKeUDL(-JMTRKB;!w7~w_*VlbBFXqW~s{w3Z%ZdYgT!ZFF zzOlMDZ;B3|?#?9Fy`iaqXWp3WenTU2SkSF^nl>mnSO{93PWbg~OhWA%! zJsDM!{AfhV6A~_4FU@wPC(B1{jt43>hh6`ekzuyyZ3&yd){i2PLD6kCH5sa{LdUg9 zJADBZN$6H7?>8o?bkMp8T-CCuIV4`cB3nI zreb0uN?(Y?7n$|0!bPBB2!%}SPGen7Y&-dbg2zHj_JE5mGH|%Qu3n_1i0B4{|m4hoD}eIhdA$ zDp6k09zZf|k1428&d@FN6_k#?W+sF@->EN*JOolGm*-oJRHDUT+ob!|NrkXzo$;;t z^y!mwWXNbdvV&^EAohb(`t!nIw7fg0|-Ti0PQlFt?fsUy#@#eSg= zKrxGF4rFcp{ZTTgCx>^M9RSltHO_id+xG-23iCbw5e8+~fK?R%JQFh;8zHS9wZLZa zRJ1A7PDpJ6TZH{?zEOLE46H3nfQMh+L$n=&`V(LPwcyib4-71*5s=B+oy#7!>yQWd z*Z-tjSH)!qK)nI7o3@p|klIAtFi-QV1OHuhqTF(cb9l*``ek|%Q^_a6_Y zL3NsWw#*ksII-t0QZAhKP*DtU$ArK%hc??ACY8>9Gaaz#}dZzNY>hV1vY;N z?4<1<2vk`8&h8F7rG;-Q627JkRz4&<3XX^M6QTMSVys}0bnSZ|!N|C64LT?au2i3e zpcRXEywyT)nD?C(yUN6r#-XRF85SH&>RSVEsouHs7Iqk!Zr)=6K9F1rGKD?Sl`qNk zH23^ZG29Njqou_MC_`fRyjYJrAcB6&3Mf5Uv_2&$#t6gHoa#?p*3f;@1yepdTL5so z2k&^PLiHqYUUB_qfPO+GTtH1-J!$W4R6|qKLPxUVLX06GT3XKq?dJn9lCSy!^S2-c zJ7A08&`=sEd&`_QAoukF*4TtM`^X?^cU<&<$iZGo+-xDN27MQ?9!fqOK-$L%~d&MB(l?ONC#^or5@05OGO-@knM5(3EZ zJHSpquGfuEO?8(;trPCSzn#YjGfP3uZ-+}86cVCN@y4(TuHdh~hdc@(L1xdKhYjyd zCS9OdW{7cFeM>72d0V|H|0(m-T}b?}atLTuha2gbnN6YAg=j$|?6M8mq6qQ_0&;$Y zU7w0^KYV`jw23}kQ{LlvYXtQ?&u-j?FFYgG1H;l09ukj5BzTR1!4R&Q4fEYR`6HYg z7Op&CN5h3Z0r$kG4F2d!$U5l*1&}iUIb`XU-nb6%GIYsx$r*t%Fsx8Vgh9lH%`y+c z`b~*63PpJmg9{>}@mCKFT2F*;fXve{22(>sd;UqMlCiv;62yfDhM4nWPp9L&3(a~z z9eBdZMyfMfPvovL4YP9LVqWMWcrKN;L-~2j0YmcF1{OpIM@u$ zu;#k6^>GcLa$_%BZ~x9-5xM_0m|4RMJui-n5{;C{h1e>hgIq%2Z71e%J=vd%=YmZ= zZ44lCh#|$0NomEss<$rOHof~A?#I1Do(Gn^8temdm{;Mwc^J4D*iFbCW>*|SayM2` zXl`-a%!698T6{EuK;Z)iOg$?yZ?mTUfD9&oe89Qz^w)ITM~54RFbe?coYtCn+@XSt zvF|e;EOpTT^soW0uBD`84OLg&7CCHa62s=m9mxDF0KMTuP>_cM*cd+CEJ9ZrCr5=W zDgsKOmq8%VkpWEp!34WI5&~b5FepUwUKi$ly8MfnPO|gf-C2kp*+8!x6+s=dKGR_c zQQ!1uMzt;uFg{Rq_LVtrjql)`xB3cG#A6KMF_2yeSUlJ?jBNQ3aUtVb_T{JU8be`P zess8pT)=IAdt2JVViCgYUeuBcgWJ>5R}3(S$w)AQf&ofu_FA0Nr%thb{`K6_bxxb{ z9H5?#5Qs&TC0?~t@VKw0EBG-{Z)tB>4DdpU3Jdw%xpRc%*J5F@6nqE?c{2AC7$PIc zrx5#~x|4&t#i6I|(m7w?Hnn}vu`*q~%Deb^3~~y+LSzrDP$mtU(2x*?aIRF>y-kF| zaTy1s?hNc4kYLvPD|HM>Wl#_z<;_e&Agrmd{biV|Ccsl`Eh0+;#cRl-1fZtI_@FCI z4QiHeu=b#kg4~-A51xGCB^Iicd}F4AVWR;H>k=)5et7+V^2WRVR;YWpa+IoKhTW{@t6t1ioIy4=!ufDX3E)Sif4KMt z1|$XJe_h}8c%o580cRpkspnC}`QyNPG(qA6muUmzTFOYv=_q(-_U*az5HVubDPU1r zAPF2^|ADXp%Q^Ns1^52W0?rdQxc)^>_}hye3)k$1dQTWYLP32H2O6N>NdJQ{Yy#2R zGrw0Z8V?Eh@Ot;x=0M{`pfN=y<;<8gT{(@MiJ+K!`wUihEAM5gA1l}HP6J~q>IJ|> zbd1gkE)=WOiuM0OcKL6qX#d}Q>9JyT^^xJ}MXDIs&}cCQ1qE?3v9VvOaZW4xCz?sp z$d0;5#OfOwWCpwz9vK=MK63znU> zMfT#SNKtOIZ_Pg2F{_sn%^YhQpOJCfYIqvxI(|SnfWioLaVdZXzj{dY1&T)aSiRBC z&JK`hKo1@N4$v?U56>}d)6(i~op@UeG*oYz8uMQfK~GN)7XkYd6B9^8NQbfmf(IKb z>qe-08ZmO?J&<%Dpiq^Z=g@#h19Y;xF$bj^Wyv`XIl$h^F)R?xAdKwj4o!n_rpW@3 z3}TO`U&ywRfLaP%K~F&;V9j&(ir5tV1}`>M(!wH3Byl+yZiS*kNl$OlERJ&JJ7eSb z?+3H+FLyeka^-ENl?pmwEBA^NO~lzB9IxX4N;LYtrCaCyC=Xp$M|!+*cvP>z8c#q% zdZ#y2+*t7FaO_IP}cn675RA~^SVpEYV&qb#u zHWf8^#SgabtS1s%nr?B=tZj0t#K6YR;ry3T-GD?4?(5wBCIpG$Hpmkt@#c8Pb_H`t#y}k55yN%dlxw7Onm~qo%W-6hX-V?Pig{}KY zQS22w1M1EL7>>gi)ew78Da?1R;0HX}zmJ&zE`=S25-|Z7 zt=oqQXo#qsL2j1_`2@WFV}KIdCRY?^i+#i60<5i00WGW#?1yoi#n>pL+Yx9BK+(V_ zI&Uoku8g_@O65)!n-8RxSSwg}# z5sDlbdmRuCk`4A1Z>#51I zIj4W*1nd;TAA;3jcJAac#^E~s!R_Qa&|l?iQA;}TO$fSgp8T@jE=TJLECK&JVQ(}d zk~Z^Ad7^=mJ4f>Y>+!wLLrQm0;EeQpq||2Mcu(EY|#spqO|l0 z)Ny3mvFUi))#~Xw;oZkThB7MT5b{u{*(%>EqYeOtWQ~^5TCd#25jPIfr&>~haR&$n_aS);xU2&52>&T3zFPb4Qu3)T-x%8F!0G+<=TpibLZlrnjt&}>LR7?G zab9L-P7lw!qT~YC>-5MDqNks2dAy;|_;y>?I{J?P*`pxLa^)0~jkBT^P?|vzFAP$p z)8@Pu(RWzMh|&XEvlNsMhzM7Q!*k4Sv9M%t6axscwj_m51XyZl)_@)~mdow00DFnD zMb(P_%6ne*!z&V_AYk)RN@ZsP8?TO8mMMpR_6daxI8Q~-FP z^#q4N%IV`u&`5puq6a{kD2_*sKR$4d356DI0adaO`V;}J+0d8b&F^XtV5b00lHRAQRma&9TyxRjLXx8j7oZi450;g^{TrVKW~w$XYb zvIqiqA|j}c-rN!%Q)OphU|?qcE~581;K%+C`f_DJHo)0NiMT&5H!-;=ARxfNP)8-Z z0fpXZX{ywEuvp*-^Gnt0mOw zMU%*}vs^`#Jz>+e4IEhnBY^4=iD6m zmTJ}%8W#Cs>6W#%^?rq3a7akfszzzjN?Pi({r!Ci7S7_FI{Rb29?p0`85EjyF?m8= zjoo{x%Lu4@B_$;-tq-d2On~PjJA2j>4FtnyxLu?;4UULFbT?o$O1Hh3fIk^Du!*ovw{Z;*kTbNLhNs30#l3FeqilYtoU1Aegkq1r{|q3!PqDcskPgV z$hB|39X+}weS6LLBq~L6Q$w-07$PP6Io|@14}hEYKT6)rVu6uEe5G$ zsQ(?r;p${W`$x=7A*|XKB{NAtfP#pz0V2;)SGF6_N(#a|<4-+~m1$AkRJGFq+e2hP zVKuyfa5;q-!+_$nTN)A)R#sKbhet+~EF?)ms?m!eEkgL(rx7#2)ZOzY;dfY!{5&Tm zvfBn^hA=F7M1}@B#qGl;vDEpM1xxo*i}YhzGFBbK4ipY?T;O;eSMPzGB#sNROvQVu z`*1N=;QnAVQkrZK_7en;vC;+x5RHI~cIy&MgT();ADBIOoCr|N-4V(cG&gXt(C}Kt zPEr9Dsst#P+=I<;1VC9Eu z+Cv|U!$Lu~g~(@+>IOi_NEML*U)1%w^R~c$cP1h59ZxPGxQOWE%VrcR6=r7;0%^36 zGaIPa)2(q}`{@Uk@h9vR02aKS%fQ-$dPRp2+r!bEr$C&lpQh7@mh~oAB#VrX0!soKNcW>gpED;)i#7fp>w|A~Nr%YD*RT#s)rJH;JY{k5qZP&uI@k!L7~B;vN6SsB@O(H52(iH`Q?DC2~P=Z zggo1tp%#jDl%?~yaP8h#@at$q)L`S2--+-(9_&`11Y%JlME-h9+ZKGh??hGJ4K)|EHNxN4qIyByCyG#6INKA}AEH<&L%*_3t z9?6M^icdB+A$k+!LDTQwzf%Fh0ULJy{q8sy<}@A&y&$-7xS3{-1Q68>Hb$SIxEETK zM-tNrJd*Ucngl%*woHCLj<_L7E!zF-(`d@DFFs4E5?VCy6b2XLnLj`BIE_!X8k>pn z0&Z;xWJuO;3H|5Mh3R*gX}>af@+Wu&Atu|=91pJOgHTD75M;e~bW%ye?vUX?#Vm$! zHR=sf3h{Myr2jSpNiqw>Pk}W`V-IYNgHO86hraN6g1vYD9*F3OgHhr;28vtdMN%1; z@UX_ zzCFvmDUX|u7u7*jMxaW5CLzq3`-+KU+`!6{-a6WXI!X;s*}MEIW(nn+7E! zDJE{R8x*1)DR{9mFHzxV|MsKzLq6s-my@W*QWcmO+updXgJ@hwq{utsiKK84RkG5- zkpQn)>(mz)S^bnIqqY;=0dWfw>C^gBR8W4wONPF)-psV8b4Q8l&A1RWI6Qf zQ4MuHNb5lufot;(pHGxWsnR;i`LfG6!|8Cz{)-5&od-_K%s!hUJAUl zWthJMWTZ(?fg?zuV83-QdBeoQa`rdJ%td01s0JpC!OeZ}t*s9qLZxsvSzT2%2y7^i zbHNH685xP}70m(@wOJ7!4haB~NTkb;J5Bo${5ouh+y$`Yyt1z3&9mGvkJipl-0Mi8 zhbb5NItkE+7m9Ds958!8;^KE~cG|wS`=z_$H}=fFTabo)4e1}`2`~hGCOTSGrL~H@BHk24#c$m|*(kOYR z6Rq>Ng>;Hp22Gu2nP6+Lr++I}C6WWDH&-g`=}Uk6ArPpJijpLnMsz%|z%Vc*gW1QJ z?Dv-C420i+=N3G3Lr{?VWgXM$sBnBpB*-lMop6%=2(+Svp`ml^qk28VhDQn7Cfxm{ zkLuIusuFE>ugFCQj`FETa00OtO9?58^0tK1-OgHJ!Oy_)f_ww{nXy@M0AV`t9Z6wZ zp9fkK)%hNnpgZmo&Rnson5KaJN`f~@Tfy+|OU9nndmo0%9Oks?0vHxxrH#F}N0kA> zMjTXTx#0KFcR$$Rc4k3-iSqaTLn>WbV2*|LQn6LG)Mb_nHj3ECL?>cpWVs}=lDIRI z8ge)pEu_Pq(ZoloMLbIs6Iy-+S*9=_YZ|0l!Sz;gr65evyosfrJ9283)A;+h6F;52 zzZ!|}f_KN;UuU^>zak}64&IR_+Yu46*6 zb3h}hr63YI1X>|t9q*&Rt2>=4r~~jlt%2?8DQwX>L%!o-rqs!gKsQGV?SX+M=9)nz zcooEOLF)~$<3q*H^lEjCo7k`QkBHCOZ&lc7^L1AZz1UbzgYRx9l|daqbtoSOpYp^5 zx6!N79Sn~o*5Ic+j?I8v-6zD;e!PiKV7lNmngRY(bS0Rf07rMYK4pq`>w>EnsD@&! zgCZIO`Y|NDAJIakjk@60qJi3n$Zh!rzYZblBHN(d)6V6oj|vZ{X5UZEPJM?5^Keqf z!B~F}ixfVI5Jv#D)fV}Y?h}Mfn{EYnT(=wT?+1Jrj?)SNeFsXXjqR~FP$dEWR4Xph z$kqd&fHDAIQ;iG9f9kK+hp`SW3q<3FXX@5>7b=cG{CTwA=Q-e8q3jTb^#ln!@K4-^ ziM9N)QVTI`8wxQERn^Pbd7nNZW+*5jp~c_>n05(h5ns|1eR`C94Pog|^^VXRgF6XV ztK4&5$(rPB=rbus#8YPI#fVgm7o;(A+YbHQRV6Zf>gDc3$tcq0v;7SdMR3)0Z;?X4 z7HUqv3qt&EP}A>0{{d1YQW!?&0ug2@vJm@%FdWeN;LmVA06f9FE&ljQIyyj=v9g*Y zYA)P2I9c&%GjxhS#hDr_x67`;e&!wQ%sxCir3((B(9j}q^f~Djg|xfU#iu7cHaREB zb8lKlM<+5gluQii0$4qw^1YikXqI!KdD$nVzNN(y>M+QrCU=xcT6-$OXXOnH44~Q< z!v(m2RNETOTQAHDL3+`GV!5Tl$;fVXZ4HPkFD%~7Vj2& z47Itga!jP|i<9;MCtz)W5u6z$b>m>rF4LrWn$!E4^<<1NEhPw6-#PiHa$GBD`1*eK zrcmSv#de&L*O$|bCYZxJDA7QrK$H{oJRsf)=k;lX#zB@@v+3^w4o@0T=MA$Sm_Nj$ zSVt7fqO}SfVhMD7Ag~L}?_chHdv3&Z0$CujN&r$9`wHfODA)p*c{zNfTgO%&8Y4!> zXuyX8EW*k{8!|y*S+z3tADjEQxMAKVNf@zTF5?0rU`ZI3rOTmWe zQ}Vb}-)A(4;)Sc`Hq#lo_T+I%X7_RWs}oA`48%ybn;BSd&|W5m|8Cu&eQ4O;=a~al z>%h^2rRK4Ol;(psF|3GL&6k7%ZsJ3vhKT{V7z=VAqDh&!G$8t(>}=D~5`aIMI6T zCW<<-T6 zMqQvk#(I6H!<@c+{IO|F5vIoL zQOaPqbJ<>orZ77oRKZpRJWIurpb{uy$1fuRS#e!wXdyuwRo0pXEWwQEzVlrlX@9%( zyDoyitCo7p9otW6BFaF_9eY~QensV|K;HGIhka(9Y)x0#a!QD)wO@M#dQzui5N#fK zG{?V;HDV}B&mGIUNY&on66xkuo2?VQ(wNZq3?plJOj8Aml0F54K)e$M&_uKf%^e#T zSVZp`FgZC1XfPfg70ewy+;un@c4vr1$*|XYYS^rDabs`Eps(M#-KqPzXDYXzFqZRY zHt)dW%JS#)0Z;A}QR<@1bGtm74eAvlg?e7Lxkz3Vh2fMy5s>`;5%q~ntY z?d_wZ_X&;G?|*I)N*Z@rznTaE75!)>i+nM$68$Y;qUW3VYzR!2jPc2*R&H_r+aGaW zjh(%qDhs`Lyrfkq4d72@Q#Tj-*V?c|aAVD(!W7WBc&3`~VXC55{z*4N2kGQfhWEbx z3VF|dePHT>itIt*+ubpBuKS-uPl=xp2zh`*G*fi8-0$lPTPKPAwinehQMB-#F1ugh z!j)1)`?%$JBe%$O?EqVJc6Td=U86J#$B$ zY_Odbb}OFiXpGvvJlu&K98*Q^awDo0e>?$JNsPM z)&&jA6@#mNWr9YyhR=hLdp(~j-dyh{@p;_KWMss4yga{XFt~1`VfkTj*-2p7Epx{* zC?1y*Up0<#Bh0b%xm_q#e!s+s)lmn~N|=|DVl-O)iZ+wxuV0{Tzjb@qyR1bFyMS^2 zbO9+XcWj^!WvkVMuJLuRC!~1{=c{Ds-`UmG=3v|DF%japos=Q+>|kfp{Z%%$uVdHM z)de}~qj&R)UIr>_6qisUF8&w0-I*=sQ==~^Ay5$*k;h|m*{u$Ew%$bff2Q@2RA}ZY z(|Qx2EX&QsHSWxR^j$Fe*IbHE3^i3CieKG)F|y&r8U8t5=9XsuCmEcrv26Sd9_q4* z$*7+KOcs}T(dJSx`Hvn=gyk)gmZhVbFOl0UQXSbIxkKHez}VH(^BMF*7sXR6piTeT zJ!q_HXn~ppIqrtmr?|Mdf`WqIqM~#e;?yfC;a?lM?~CGp1#v4rDJdx-L86AyV{+v4 z+wFl|Yuwn=V*_t3ZngECYFjB;9Gw4L zms$y>%XIgNib@CQh>y!%pwS3kyGNu1$8|5vfi#;IN>@W;tCq@A5RCG&siUK#&=%UX zL+4Uhak!D~@9&Rv#R7(ma=Ly{ag0~tV=v{;i8{>vGzT#dJo4qxi0S~y1qv;oQH%5| z+1T+A9(?J%CM?308*}D8z*Ot>u zjl1mhi(0EnV%+hsy$d~pKRpVK1jA?v4SkO?m)WqXrE3h1$aJeANM`xWD>o07vN_`} zVdYxR63zrAXdC2qUH>wbY$BShhqoV1QP1) z9|o3wq&s$(5rb>g3q?usV=bH9?Un;QP1UPg7dx>G%OB7Y#varaT(~6guCo6W0~SF+ zQ`F!svYRM#>sw)4M0WP6JLu+T^@LHj&9Wt==d`KUoZakEQOG;44V7+mVlgC1Y&c1`+tC1T+_Sc*Ub`g5|2w7rm01I>dayN@`6PEJiX3DX4N-DD zl!m1MD#bMb%D_+$O!5DjoReQIQJF!|UiIP}o6b|{_W~pc&emAyum#(9*iqLp7K52T z!|H+RLtL;GFzHYS3`0WwU>IF2I+YLRf!|&LldiPbpT~{1$O?;ZM|D3LepPY1?=kTg8b~{Q=-=S2Nb82b4&;GKElvw9} zduFqq+s}_5pHp9Q&W+sTd+?HP4_%wHo>xN=y%O>@+Xq*|-2$$KdbZZ@+1dqTdIU(H zIWYjbz+rmXmN%xTe}`l95UwMe_;@cbudm%Lq5E%ny)V9P)nag-@RG+R@V@ruwT;4$ zsoS44*aqd|3Wf88e=3id7u4hy9?FG{P^lQ$T@o{-o+&0Sy5Kq^k2_{-anZs^3|Ab& zGaiIzH2C)EOvK1#QM${x5XMj?1fS~3l0>*Z!G5N|X*Cd0_Fvu>wCBSz^6gM;JR;e( zMpyY>@)BTD|KR-a{^za{c}7yvIzw3>h|35x`ujX?sy+XhnmPjtjV{>nk)0V55<)Ft z&s&rO(CGsB#1ZKw&ilfw;Q=xb@bVb{gdZyc+6WSP00|Ej+a}lDhsXo8MlbM%zOP@; zWB-}f%c{9G&W~H7k*yBxOWgvl>ax(#yqXMsq7IW6Q|!_jPgi0)9s;`Z`1~6 z`ygdR4FQQCdNT-N{eTiT2;EfBqbjzwI5^c3qpz;M3Ca$%DLjNuJq4a%5HXN|0XL8T zi0+aU!Sv;LY&-3cyoASTUXSJF{Zp{>YtZ%CsukQ)%~_@;ScW~GcN$v!uQgveQhQX^ zeNlI4gLUYW26+|cw`abGFqOd&OZsz@{j41RAv5EjSlI8x#u|uw4-LHm2L?4y1tiiUMi?M3^;LJ>c?SO0)-w2oRzk zG(^g#A{Y;Pye1#iP#j~cs&~7xOS=n${2n)GFx$S@^V%sJo7`K!(K&*Gx34Mk zE927)B?!%#{MKBF! zV&+7|)8ELL{O~A0Ep0X-P(fK1TrpPA05n_x5ZU;`KT7MSa8L4xkNYlM+DimspTfYuKVhd76 zT9Iq#nnfOq{PMsuoBRX0rDK)b+7({tSE`@M)2VC3b>%Rs}sv&=P})t#ncWx68^QEynDRGe8r@RYpc=tpCG0v1po&S_v}WksqTVAx0Pwq*Ik(e%WC^y2S@qbZY~nsc_wJfdm$s}iIt z7|NZbF3DhskyR?YMIl+2gQLr2*UU&NS=!u)7aOdcs&FUOe}jg9?(Ekm=4GMp)BU+< ze>`>-w}|-nQR*sTtO#U$=oSax$SuYVe@mA!sCzTBvfMxl1xB>cc1j_!6KQp(viST> zYukBvFM92^9gGB$PoSqjic8&$_!ubOJ}Zi%uELQ%Eq;PF)p2+J?IibPoQdp->vr)S zhTe60jfAla)mH4Zn&vk=ym0?b9+WyO`d!xQYGR4~!Y*7M>Bj&haeQQnW%-B04ltM0 zZES3$9?k9F?*z^s>C^zpFfib^wseeONW|)1F+^{JIDP=i?&8nPh&5Tn(?ob43=);V z2tlcr93lu^bims$zj5Dxfw-%WUwxD-B&`9!BEvHR?QYQn-g%gqQoEVak{(hGoskE} zc?JH~;{-`JGy`DUaVTN&3v;~wP@ATn>PRq6ZgETUPd0iI-+W-PBsRLcl!9wfFH=0_e63;^6YnEltif{>r58Ze-#_9= z?xTc&Gk}3+N?fcsa+^{Q{se9`q;Vb8Dhf+*w2jI04074e_dr-!dv-tI80oHEdCnk- zm2f&XQJeT1z4XV1uQA=GW05E)FcV#Oq355fTIv;(y_VT+`E6A6tbZn&m3=U`eIs2u zt0U))?x)2a{w?;M3GA6=Jv#i^vkZvvAlKjNP322FdZX#feY9QAI zDFd782(Si|;%}eA#W>LlfSG65B~N)47O69IdLjzS>({3eRbk)2oE<^7fo`y26E9b0YX#qpsjhT9yY@h$Y9g_cmxsm6Cv1J-TAYBDV+O{;QM~xWf1)Kw?vsdh zqjo`wK7vMSB{emujZ)^g5EmqJg33;ddpY#}{_yr?JtlSnf;+nhKfAVNrl#^8N!cbY zy>3xY7(G*UkwciX>6Vun%c*ZK^rLu_Te<`juOx_ZIM5efG@3Y!(l z&9{d-NgqZtIT4MVXq8P>J$3K8#HQv@LULeGjBV9@pD^j;zvt(q*)e{IVfU1bS`4Z* z@!v%g{Ahi}?@Gmn#ZXWV`GCASdl7g{dD@*Sz<226_P>_!o*Ft-{dPLLt^ccS4l5fhWbsMc2 zkX^KY4~ngLK-5B%M!@aXQ8t*xl7)LD{m8Fd4hc?GAn$^kf$zu_icRD&kV&kX^S=R` zCy6L?A|)kdq(*y1Jj2$Ug9-Dgdn7F67EheWsja6oNFI@!Ur+Rdf}m07$8y;_U0ir( zGJ*)pPYE&gYRLUP=@IwrF6Z##5fU+cDmk4YPOh8sn``_-InrXcW9BUvvBUmVyBAY2A^!kZ;s{mL!4HhU|i+*xE#aRqMbKn_^(u*Ww}M^ zovLY35L83|cJ9MfzkJmaQZM%iPbj15klOy%^d-?5KT;b4?CRq|2i z(UHDwFXq%_8pzt1@~#Yu`Xk$V^i6lw8MJV=DM`CR+zPugOIgH+ApI8J;Yv1snxiNk z>3|4`H^Bw(x~2fR^P zeoz`N9LOPxSa0754P-+nWM39PlhURsvU!qeQ@j-yJ!E9!(q34*WYy$oV z@K9|clJoKF;!T&6t$;~%9z6J{Yyz(CnwmbfgUzA}XhDJ_#TgH-zt0X#SxDDkxljcM3q%&Ih++_b0HKPRsC8e zyW>k^a$bT=a0|J*dvn-(JLcQr=)$JimgZ>d*PC9duX&!&wh$)AXp;xWvi5Px7WI87 z?1*l*;w_~;PhYl_p{Ow>!I64`x@xxNTv7OS!$Ib|!mbT(DODwPTp~x?;6`6IYM=(o zoE;K7p%#JGC}kCukJ@ISi9?HSx$-O+evv!9C^$2`FE56pYl1#%)!L#9%nWnyJvwx7 zB4=%?0O~l%d^(a<==%Bxe93eChH`Jz4?NpA6$PXiugsp9U?5hQs%~XW73{m8J?qu_ zvJE3TYbN=QN3uFO=9ez%2U>&t56Jno=dZx+T-I#^$4$mCbj(k}R{UI0umQ)n#oRCt zUxVdAGI#uf;{kqsu>t3dF39t;sSpxroTlRr8KNA(*0P#6{FV$NnQSU3coWW-dhz#+s7v7F zgU|5H^N+w`$j0C*3}+~vru!4SP+`kz&&3%Lhi?X)fCZ5r9<&dn9er)>{(*svpu5oi z0ESLPw5fp8#AH*Uve*aj%c*gxu5kTEFh@W7F-kj~4 z^PvkM2je)L4?$9oUbzV@$7&Xa{4f>osZYRf%q%3|P9AZtDsOG?&zA8Wq6|N5tp`vP z#!ho{?3+)-o0^0(`7Ia1=-Z3dpB345ODJ^R3<1%|Qwfj%BUheX-Q#smJ5ptmO1lPg zu`mUvTFHG=8FH0XM}t*gtyA2wV~k$IbPy3qekV?GDOD`~92EZ`%z)C}yR)9WCtm>s z|AaM7?lvbrM0y)VtxOp2oZY~6>2r7j#fO)j>iNL@Wn{1zq98Ax@8l=Yh)|%EWOnqp zDir1NSdU&CVqxix;k?ta9Xog*3HC5#9WvIl1%$H?kdQeEJjew&mGbjA1Cj6084QuF z<+q2FX9I--*-x~t5U(u}{~d8Pxc_F$u9AvMy~Uv|K6TN9a7Mtrgj|o9zRecf_)Ju8 z7a!Jim_&=)Ps{5PC$8rQ)jY#pZm>AQ$ftY$fR*%H(CzpsyX$^&$YG1W10CZq37%;G zKKW~G47>By%U+TG|0oIeSrQoinMIx8aCXG<;Rc6!xM2&xp*v8B&KiO_uzpQf{Dy* z#TM7W#i`YEbv$J+hI7h`i<}N09qkQg;joor+nK0)B|A7#kFSs1CMTpF%$>n^Sj}AX zy)_3#IVK;vcXYGi5mczp_T&U8uxul_eBq|!v}GcXd6*YC>D$O$=b3eM+L z?Pt&eehIuv=b;d~(*Ka^$l}4($+C*fD{L?srFVMb#B2Ghc%wKfr&XutZ5RbWXWbtpvwMV6h<2do-uuR4}c*PFo>&ugA> z%1C$U3hV4sYnMD=J@mZzXnXnTYc4PK$8A>p#`vs4RC1mAu46n z!tO_V3XWI|I^$Y$=5KU8&=kHEAODb6_rzK~Ti<{%&IPB3f(t(>i9Y=Isfw^_b|&WV zroj>K0#k+%dEFUWV`bx@t---{+>c%_>xcaLnls-u2&UmYh@aiv$7~xfBtbYMM5Smv zMd{-roWKJZ3kW_2w<}b@AT*u_fI6-}L!*C|EcB70KHwVw4But}3B+Mgd2F%rkpL-^>!4bC#RlXo!1^X50QOs#Ois5(h_)$+d+T$Zt zUOy$lFOD7o;+UP8S?*-(49Dher~47M2aRUwiLcxx$)iq15qQ@Z<25?4Jzm{h@99k7 zjE0zZ{x=@;v)6S$rsO^-H_BkJaI~&p<42Geg=ECK%{qmo6b1iW^)#T!0Oy^Y@7 z;Pa&QMfDL^U8DA5Q4skzun#nuO*O2(Hb{PO?2H?nJ|mk7Cu?jj4IjZ#AFCC2|B5`K z@h8zxtbp&B2OPbSh2UVSc`&UALInsedCL0mKT!w|!uP^wIL`xVBg}T0VAcm_0Xgsl z;i~~dVPyRgTi;$x{Fb!{{wnwX!Pa|#Q{lh={|Zr=l~FiGA{k{A*)t&&vPV|P-g_jW z$jT_$ob0`Kc9C^#vJ=P7-u>^>_Wux{6AbYrgym^KX2qkYr}WG+s#46 zlpD4Sz8sc3zVz=5uV!mVOG^twoz$|blwx_TtZWZ-6+nc^#FzCQx(aU2-hXf5c%bUnd(37Sudq1JewFZRWhz&r zX?4$t)-!HLd3^4@$;CMK6A%Aha^-ecH}!A4Y2Mhyd`*2C7NxhBnEXb#?r;;0OP@`Z z?@_#PD&;KwgC0K;f2g$5Ji6HU@U&?gMrZ=O#} zSug9wZb7HDjWYVlGmp#3dbxdnFvhJOH-XCCp_Ra+6qWY>#KVZYJ{?qZ_5U`Jh>FfQ z_ycnW0;Uuw3qVz196)p~*#B0N!Dk43!Da#us_m6AwenA3q1wiHGyvwa&ixxy0;`km zmB(#*>f6tNL3j7yiNo@+Z374rDLB3r8U{$K{JS}?->Q2iTCVZu+%kDvmZf-8Ry_k3 z4?FV|`*qBy>>E!LoI<#u7&iLe ze;}YQ-3S$OGk#i3QDo4+C6nDrWk($W2HU7m?r$}S@)E3)B@;jBK2dt@wQh1VEE7*& zC-&P%gnVInUXlF22V5*rVI-h&4#6oDIT$E8AOVLwY$dELi+BH=%6&br9Bfl`$eZLl zsO{^9-1b&4t@c505)&1LJZ&0Uo(5N9@U7ABqDIX*nGhXaE!(^Z3-f`1$?Mqg5u~^Y zG1|36rssWOjNQ)DulT9QeqH>~z54iTGOmr^kT>?h7ZXZLyBzKajV1WkhD4A2yAY`I z(UiF-U51`*o+jydJ)B4DZ(J9sQPc)@bSK@kS7~XGkxE1z$;dR%TGQGzXl-)8@M%J5nm zb9G)?Oy8?}rTec%Csq;K8(*RJ={qDu{&htO~t26f|5-43*z z4gd<&)@|_jbj1=mjh}=eA;BGlX=Hyy1<9nuv2_+btH5d1oNsl*Xj2nDzeK}$`10)Ya@I&C;+kBmyDb^ZNhJrx5fr2+ zc1-D)K7>Y%K1$Jbl`>=%XUAU2`DU|;#B3U^fGsPtI<8Zqv7YaSECDl9D1UzO&TapW#zm{&C+AZ;z|dRKOl z-~BUwYU=s;?V|ZGd+Aq=ret1<;!&kq45oLlAFCG*XEz=E7`9Hi#qUnUq(viE!9sS- ztkYGkoS|RRG#_BCByRFYB%trhng;80o+HcJ2TB-E9)WA?%29jOHN%MO=gsKLk__j>@i>-UE! z-Dy+tg(A=jLTjwDtZb+8{LOFB907d-MvZyvj2)j88OR31e!AWJg4@)B!a#+gfAhub z7%*sg86>}y^}eft2GLI76xKz{&9C~|LO>fN2h-J8jvMa?&py^)Mi!Jaysj+~+9FLG zU8tlNA;B$3-Kahbe#^v7T5wMQF2^aqM9kDTK~zuK^kg)d(o(E)QWO z@aZR4E--(>=5<@3M)v1OOXHS`tJ{b8+DqEWlD)p2Q~Jy{P?`Je_SU=Yh3if73W=}w zwIY>7sD4sx%9G@3d?EHb*i{X7oe|r76c_F6AC;uI#38JU`8paNw|SGB9Xmcthe~(E z)Fg2KMzdk=iDx8X2hZ4mSQ+KaM&|o?dLeCLkNl!hIe+C?*U`JOERL~Hc4coe%(ESg zwboN6EOwQu@|1}?NX7**^jA-sjY|s^>e^i3r?OH%J9=Q1>8E9BOB^~Nq<4InVCKTc zW>wHjLW6&8QjQ*w+#S1@A{b-!zRrBKw7R{F5j5cRe0~***!vFW22e&pm?C5|^$9$u zvgHp94QC-e0+~`qWRa=(yH$)t1&;Zm43)JM$Fqu{K zK6txtfX29%VJ^gVcP3~uLh&(m+n=t|&P!^Vx8~hvKBc?ZNx?2HiqHvYs0`-}h`TCl z*t|@p8PLU#!lpl$N^@DiM2g9PwBD@)KgPb*=%i^OPGV1F@UC$jfj-aVTcU8%dwRlx zZC4TG?kt9~dj4H*Bdn3Sl6SkKgXQSvZyVdDF;pDB+AxiBJd5L1&ZCjOOG2*vdMY7N zx%GLVC7e3GhHp%przwgTN;`AUU@`jUV~zGe^$&j93OFC(vmLm`+=QyI4&Z(|2Fw4i z^#BoS=tH9OMW8;0VHO^4FYO*q{+jS8bdZ;q&+9x3c_)(f{+nStgd;#z3tiTXQ)w@< zix>|Qv)>b&^4dSrLt4K-Ni-4o)tFIO*lV;8%{|!n#(OxXRbyv7^h#=43ZscgcXW&B zT1MV-F zL}EXDfN2PC*DC3BCA)w4tNUI>0&gKegy84JypJD$Kr;08B&s$uQ-)ell9)vNHFER2$j*-NltfsAM5DkMi%Aese>}R z=^FDS_plYdpV3kK98-{d7EMNER%WK{jT&Aa9?CqCe)}ek%6%&3x8Whz#?J-ilGEUm znsEJy`lvi-YtAaai)vp9ic0ghd&cGOXs0|7*BKB-?xXN{k1%ySktQhD$th=_DNRA7 ziTln#z%3Iz@g)}HZg%GRE$;l@xY*!nnTRS9f}2Wnvux+qu5vjBBDE~LMnuTd6JG&3 z1LPR;AMU*R$aoz5*(LSvCcTnLcuS|CmBC)M9;}Nv-&}|QkKA2}{oC?Bd6`*%&>|GM zapOjuuna7C2)?B1(qHV|U}ql(zgM}{xa?UXqlIsk#rut3*bBgCz|j5k;tz_BF%afk zPkgr3tFSa#wimPW!Bg~zWgDYY1~~vm)DNy1s0mwx{~uIqvJ@Sds;LKbVvD?C@<3(U z=RmchdW05E5BeyP>TbQDQGU-1JL;}WeuF`_Jt8p9&dTu~BEFbe%jwEoniv1bd$TSa z!K>x%m){x_>(lU4DX^R-*IKDHEas)3N5|N1U^0c}Tbgb;_U#G9yXY8CBm0ndh4c2U z`6K!cQy_i~?TXtyg;q7$B${Ja5TV(`;`ep0b2z^H%i&R&zJspU?p2?%Fx%zP&o@^r z?X&6s^tO9m@%SLXn+;6YNF`_kU?emka{=;)JFsu4AupB9#Hc~{d9p=szY8HXAHhGd%y!NgD2>B9viK+2)}CB<}3Y~ZgLxej1E&rrxuh`{n(AE z_ud=;+;tyAQ-bS7c-{?UA+Tx7b8@~KzK1gn0q65wL*u6ZBnyMkGy~OIxY8o%5VK*| z>9X9ou?Q9uIk^r{u_*`XfZ!0|-sRuy)?bLxOf&$!$jpj*z51CIfMme0!)HuxEYrcjK2Cs<%5dnDTzDI zckpi*u9_V@&+xDmJTJ;R?P&DqlDY%O-440)908uY+0{0M3+qzKL+S^YNgGJuu22yO zJKbYDrAc&`0Fr`uNZ#cV)SlG@sx{b;2a#1(VTB`L=`R-q6Mj;*h*3J{>Nv>-S$!SdIEV345)O~lI?Y7CqMgmkf{&^IA zQ9k~K`A;La>A$+Z@jE^grIQf#gQ#BYqBtc~f*d5}@jc;p?6EEe@{33%Oy(lP9RIz> z1+;aTY#Uah3k(2Kl0(3>6UYl|fYpEr^OmM(Uceb+fDo1L8AmY9ToeV><}0{;#oC|R zO5LZe3ifH?E@nVcYO*+XuoPKeO)+^*)9|Bf1nP{v%A4(rDM3H<=O1dsDJYRL_9{(# z?#W`CmdK}I@%z^ks}r0O_;2F{v?q14Hq=gl)u3^Dr?d!r<~_6n;8KfHg5*0#=^22* z;Wb4R4}+V1;b<4gD$^Kx#h;Mdckf&h^wg~@rq3Yzq0t5g=VO>#z=FgKH3HGK72Ix< zhZDPSEpdZnMOoplF>E0i!*drVh55e!!xVu9u_NnQ=M8WWIJ%+5JO{!5GBZdbG-X_;MOvi9BD;qO30S*F4 z`sIPL1_+ZAyw~8BVt(}1T$ELYrj|0g+a9CpmwEL}R6xqlaKMPgAD32nse9x!M+?h2 z3*E(`Oeu3OI<_p4Zff@rux-2Nt-RO{q{cK=+{21j%Te z6d&#R15fj~dM$B3G7UFLIe@OZFO_$btEUTXBwVOrUw>qHbdiwV-#VP!$El3JKVk-T zx+n7(rVx$2uiqzZKUg(6xrfeWDt-Dk*XEgMV)-6@FNsoSwH|>;<+&-fK>T+@J|Q{$ z_9@<;>;!pgVEfXC=F=@nLemAwA-|qx2o2%p6sKWugWA-kUs(J)IO8kFn9dYNd}XP6`UyJxz{=pik-_o(A;x(&g%$a zQBE!n`E_d)JVQmqC2#qHJ{r;RFYOVh)+(kipH2ULQH^pqkaxT&d+~IKTr05tYt2^J-^$L5ukn7 zz_B$!pii5cK@n+ppAoaL?WPMr3NUgnl*cpV_B9iZIQ^D0Bjs&z^wxLGF0czV$z??c zMyo{xG|-@2RKC15-As3;LD|cEQDhFvB@*oErW?I-vN13Eyo(f2b?epmrgMJw zZFWKBnI6~fc+$)0!aCyvG)~XD=x=dW59|ytSSd(YUa%X6hKGlNy9GB89I#D90zkh( z{rXS!{fjZJC~R>I&ZMMwuY{A=1Dw+X3=T1G0XQ5Ce3>kVN^P-j(rH#hES84TF=y zYZqpE*`KVzC2j+hKN=A4!~K;7m@rrka9v`gUqDe%!5x50h(oUqWM;&~F01C?# z=PG6^%?V9S+&h;XH6wc+R-Rbxaa`>BE_E>|M=9MkSt-3eOR87PzKdf~dp~D-gB&+0 z{+{m-xFMa2%=08cAHQ3a?#nDh4v;@Ca#CPks|!KH zqfmW{DrZK~7G}Eg!<7qcvd8{vXGT-7O6+H3%K7_4>F4dZ>lxzA8&Zh!_d^_aLifw= ziRL8qNH&k6Puea|twCHfp=@Q$$4h<*u=L)T^7rvbeRM_F%S!!R4? zeaUw=l=uam1r;85)d{V5Pdm3=yRSs4_V?mOq}!|S>eA_#V5+{|BZny+a+H=d{2vs* zxMySUQ*NA4Dem~yu2DVr>zxQ-a;K`ra}?5PB8oqsdRMoAc2F1%?X$d#AxsW~ucr0c z2@uZp0JHPzSgs(j1NhVP;BFm$Yn}+T*DQ<9QBSyj<(x`I!=k{ z)1~31q&<6Oy5A8Ha565?pT0qZs=d_UDeC606(>h3_}2Wy`aCr%sDCDb_W9A%@H~Tv zmb8vTJtLj>I6aSU1RLsv;U{e}*sA^YK0!0}{E6`by#0{a=SD6Fa0x2I;2HE^i=<^C1)EGPilx2|ppmQ;f5C#IK?N9g=YTZ^=fJ3bG@c(;1_()#B z>A_&W;(qaM_bW>orbYh(oC}NF)xQs*tHe3wAR+NWDGSnSz!8wV0VW+V-nwM^QXz|mQtX;}_)pfDpx2A{9zJ)T+i5|)E}uAF(vG26 zQ4eCMN3p~YR@RzN3dU^GK9CkL3xpEr*lcr`IIo_$LK2RA7|k(6R6q1Q9YbRYj5 zCWhjH))?y9XL3m@CCJOrxn_`%rL^~B-p)Gu+weu(?2Hc;7c%&54~>GE(Ymka3(xpA zlAXdrK%w)GUU(8Zh|vC5;s1&;w15a@;I|D`>|g?d5&a9jez%AWh8cy1t%F_BG7GgA zh8}(q=x&#rzqXdfBJh}4(4lLBd1Cxantq-+(OhlBG7T#sdF`(&)BMOj{_FJzP`IHBgY zvwgt@uVdNM;OG09+SH<7(R8)p~cy-rll;Mq9-yvYBS7QS@RX zU*IpY{}V%R-9ly^J$GOrn_-}lWY!mdk2maT8KE2;-)r|dL-0|b@s9E@P^7W`XeF$6rradh$29VbLT}3M{@GrQ|O)q}ozU zEu@A^^`Nd!&)&m!JJacjCGttOIV+xAx4K#G@U*g#aVC6G|51plq$ZZ;m-GC34;}p% z9ByQ4+AVpE%W>tKWyeP?pym|yL#5?yUaO|hC;;B32l!U+1q+lMeq2Sh`d zSpt_u9EEZa`;q2Xxz+?(-Lq?VBcwhwFDLksCvQT@dBIDiIEUk~<$PAxy1LemKKwK@ zg-3HuI-?w}eqDJT-8EgTwz}Hm+_PkB7wzutJ|4LlQps(E(~^&zp@xG@?lB#xal4QY7`XS zr%NL?&-RI!!5Yf{W}s&c2WCqS3eM50;K>Ah4?aVXQR9@NL;pC)j_SL3ZW^?4mwANHc;>ENtv=6PAfHT z;=synyg8_$b(hco@k3;(9+J#)UXRHuXv=~9iWaApM&$xK%Fxo5UnZTAeSyvR5timN zNE%&8R(r(;;{|VHWl@A zT1dfb8)btXECGJ_Uht|Y>*yKki>nKtId zs`02$bG|xcNMrGCZuD)>Rfmbu>KKQ>c4(sIH!ON@poyEocjwb1n0o@ z|FcYBY7ldCfi9(xf*cD zp6+1_hYX4S+BIbVyKMK@(d7&GOgULegSZA!K?-hDX&qW&R*iL;0;ka&lsWjq=rr7z zCSBc^^#kO13J1~n&mKtISlvI*uM8}XBNP!9zT&z(J}?G;fZ+4D@4f233*#Qk@aoPZ z6lBy>S6-ZX_X=klm+n(7jaatO(1=^;QtUgIWuc*rj;jt%$I-eG6|zEr!>@=bxi_jpJcPBp5sTry5>>1yML?_n#sy z0)`(>f;t}B&tO&|CKboz;Rk(yv=xD>G)4&BN&WBiIeSU{YzP^vDjQ@N zK!;Gt(9H~fiQVY;*gF3Bx6%f; zOE-tl4Hc+Y)$k6Lx_+aT&5Fk1x@KlTCAP2}zFw8!h4_#pFo>|Wtwjjs<={;aP1Pkg z{$fqqJwQ5h4-sw!nmYWEUCEB zr6m_f%y*&MUPm$Q6Na@!K4WcqbJt)G6E$&E;g|9I>pKkB+u>Blz)5xgl4xot*vv5$ zkigRmpZ>dC!b1McY=Fh{|C}X{3Pzuj>Nfk8+%v+7*JXGYQG!C63sgLjInOWs&{AXQ z(=E}waeN{5ODj>ax65ly2dmdX0q}IY;?L!Hs;*4jupXVICcyg`ea@G)tuXp@@-)(I}TlOGipKF7f+GpBVQlbUKzHlu_d^1y^6^ zS)W}WtFw}gXH6WaZP`xQtcXH`edv{CL1J27dO#bKdtHfVvz^1}M zVHCxG&yg^!QP42w_>I?5Tgu))RYJ=t*o35yVzpJ-d zXS$z~phv;}OY()>GF46=e@B9YYHUWA1WvcPwCKTb{uV*GOOCqRQrHBZ!QNIjF1q+A z&)fV9zo9M;x{Rx;691`&L{9xZMzH)+R1W;1O6UQg+>v|%@3SLi zmLJ*_{~ZOE0en6u;7+J^T>5y31~L~EGI$R^{NunRkv#Op#z(}5Ja<6E&zw{5L}S5`_0|PrADofWl<7-xs!K@r(n~6;Om>10 zcnU+6kE&7y#Z7dah0!f@w#G6y8OGU-=bUyAeWcP>s|FC|TtQU%5YJc*xwS0@;mzkO!@ovC4 zmLGM??dt%?W%Giky38L?u1kma1A1O|@wa$3YvszVIHvXL;t=ah*uCCcG8m=^m!cHP zbV}M{XQ*Nucp>%m#DdvqOYmEalm^jv&aKhgJ|Xjyxk!UOt%oW96QH!M z>Y4t#Y0hE)otXlM!zCp7+CHor5I_|I(-S;~<&c#_uNwnlgNC1`ipr(Eqkl{A>@}~` zZs3i=`2I1|EHsLrVg|%xs&AMD2Q5(ID?HH1<_u;@q3eA|<$9^9@1`#c`oMTDT$-vJ zhmignI~L7zw21DN9TJpN2&v7=JxaEq)1CTMxD3XY9>NvcLAzQB1+hg)VmDy5piA-xb4_XY7Yd+TeAt{4J(ZRSBDj1>s;(AE$pEo$LVkm z(XEPx#Z}F!CC!6EgP)v?NEmq^3l`+M_C9wc5Q!flc8!TT@N*IzRFwe(f7$eB!fh04988QGBpGYNW zO;d9j1-7KUeTg-yjq|1w9XsySy#8g55`}va0rwimyPiTw+he@Z>VCcY#Pn}|u*caH zEGKe4hOFKp5OPKmc5Bjy{>KhkEziU5SzLQ8*KCMic|z9kVr#36PG}I-_xMZVP+0}> zB`mLOGiAFoJujsXsuNpa*EE^_kKC{!<~gjkA(_N(zS&^REDI1v=R-RU_!l}l;~10# z+a}C-4E*s={CZu*7wZ6&`SvHXyY;_3TSFBDR!T-kHGc~LUc~;x3eff9oZ9+LvVcJ# zz@qqaVg}~gNG13Vwhy@h!utDzF_z9}qRz8gY0(FpXc(kkMc&ZQ9QwqBi-mi`w=w6I z{v(!ZtjIXqr*-LA$jDLe&cpo#am4)&b<8tdrvw=pxKDEO^Vd+w4tU3J9Gg8)KATJv z%E2I3+VgYa7ges31y3OD|W%*NeNqm~KW89wAtceruIo@XW^om`>UMaIG!sqL5-`;K+5Yo{bvMf@1wsn6umnbZcIoWE- zp)=D#&2KgCCw_eS&MNXSoOK+{JkE2i-V50_n%b1Mnn&g|+W^1;M50es`NGp{@k$7( z^+TW4l=B5I;v85Rh8GDe;n03a*y=bRe50rJ1$qPJcguIp4WIn~2ahIpc2Vm&p3Xv! zvK9-1VOfyhmuVRmjAX|e^f66c=k`0`X@C-}#KiAnPhiT>sHJ`joh zT^pj;Ws%mVmX;XVUy&Y||BBlbX)x9O%*^nR|L{;4Y_Z0BdU~>B%0!cQ6~PGzK0rDe z(!b9UCOO08=XHkl9ab!ppN!vGG9IgCq z%zxovR-?oWMF=fGDQpQH^Ey}ohw}?N6Si>VJ6Z zfMJd#224Bn=-hj5tjY(_Nw~`IO!j0U=c2<>d?_kLo&M`=mpWnV%VJY%5>yK(w8gzos*Hf(eu=>o`{E z(ob97U*NB@%D<6Kv(#>Q(c#T0$H!TY^Zr(W4P)PkA3o~NU;4O}pZEY4(ST)>j$S$6 z$2`HEh&nsPGYMf{ zIE*Ap(_+#=uwJ1Ml@Jdip2SLLJigUQ0@O@2o0G*u33Y0|@omZ{6g@|()gS-I#_``Y zOq$bz09JJP?&#Qm)iWX@(c_4_S9U4*;IuRrFxg$zNS2KDvOl%z$AyxP5MbWpi zvkpNtMGiNb1JSd<-crVm~ls&(r z%`xR{D$=fesKe)DPjGNR1ljK@jsW^ zGf`}OHG+EXwud;AeKXO*+4ny(zS(3TnM&;x3qQI1$rl=_pXy4j=iJY^(sk-Fkn|US zM~wa$CuTBumrUVbf$Y8!t$Z3QN&fFBLO4zQfb{bBQ2C#H(AQdAT}_SGdG*`R*|wp9 z0o>{zd*C~~KxT7MJdtJ~m73v`?zC&1Qjyz@st~JQ3SG5Am8u#mSvY|mI+k8D$#tA_ z-%_FyZaLnD-#OKVkjl~8pGj6ivbqbZLsmauozaly3$+D1? zkRtc0>YV;8v(&>I<0Mi-^$Eu*(!7nULx`n=gTaYf2W#70!Bsf4oc)(HSI`Q@coTzz z&Q9!`E4?UX=UAEa@3sf%#o{H^YnFl;-Db*Bnd<%2z zQkJh~C|)Q%!ycKq?5=)nFWya1q8KVT|IG5^MLd82{2jmx2_SjrPhs+F!0WL*1-J<^ zbu1dOGn$mS^T?${aQFW6TT_2D5(6{hL8IKthboDxY1Z-%ryMED6;kr*h#z`Q={V%T z1V(xHB_G?ChUW5iO_ZQ6okD`Uyyq2X_BmrnR-dRno`5>-H`R-2eIFMESd^vV^KU< zh=WugO38n5x%`nAr~&XnY*>nQPKIDCyv;_IJPq(Xs%|TU4B6ej_|qv9Ru6f{??pu3p%wT9pHW5ZV>e)MA3o6w)x*f#!S4V; zmI!db;rr-8R~lL7fjWN~qkoLw{W#K7Ku6C(@UoFyW3aKrJD_9|y-zBYveMFw0Q>{MyhQ+AgW(Nh(FOp| z3eX3DTnY2qykH)N`Lk!f?=bTiFduZMj_%M?^Vv*+4>L8Ae?HDW4`!#pEWZl(`tk3-dbMc_dMm@oid9i5xOFO6G#r7Ndt&hV?zi z0}wTqxrdQkx4qlgoHNCgquc9e^hJeU_WECK9PD&Ln)~DYlb)tSw)NEGx%fpTovA2Z#{T%H2q7}0 z=S|19`_4X*KT?Jv+puySqFJ!zKzE%AO?XXQvr^P8v>IJi``xy;a^j_+f`}R-k%in+ z6EcO9;b-910Uu1Obm%I36$^CpPt$vz0tQy0BFR=$Rr{RFw!44XF)3$@^~1rsM6_wBoESQKD4CS?}^Y%YB#W4x&f$F^RbJuWr5R-+=e!)enr)=KxbLWAu++{G z>_iyvSVkx`a5dL{?#i@lm{rRkRl5^3N_aL)?00H~dOh}`<<<|UJVw^Yzoy~WtCT8T zc3)z?uc~8}N--xf^-wN2JGa)|HEky^?U+E#Vwja*2o8MuaXC=Cn(p^X%&Yr#r95I2 zE=zNkL#s;D`4XF>NjT$B@0byhUVE}4ld1dTH&4TxcM9wNbpU9gsm*g3Nbor0~0+Sjt=zQ4;(8bVebY_RY%iB)@nukzTr!=F2^goOZKM)>Y9Ys37qx zqH@?)*F+4F>4`0bcMsgXK*7V)&Ti?+rSS*{anp5N(o(t_kD37i`j@f2KCb%9MjB9CsP+HYGjD|xbcQa3HnO}cM z-hR3M$MG_Sjv}Rbo=I#QT1AVc`VgHr`F_YOKTuwWqtmN*Mpad*RB{(neYLHsB7!pU z&LGb(uH7M_D%`3GN+GL)Jb}R!s^qN~pI|r^Xf-O$`aZ@fZzMb(rj-a(0+|f1hx+E> zlCfY^OpMy&$1vUK{RQgvhyOz#`K&3NB+v5yqYJMC2YY|x%ku%mv~^H*&0bL2h zMA6M2zo{u0DLIgN`XE0KIAIP%_E6;yb=IB~d#eqZ=L{xaoh{QIJ} zE=X!$h%~))yZ6(zSBf~5ZnPX3qI8vk?gUJyZ&Gl)N}WO6TxER}e1(8hm{N+A@jO1I zt%Ml<*r!_rUkf_7Hl?pQ3Ov>sm{%Fd%v(IE`DGBhn5As)?3w;!w<8@(6P<0DQ{ObF zfweN7!1%0sZSic79T~qsW+JaPlaGRP=WE{6m1EAABjoN!K3Z&0MG`JetGB=7tEPOU zM*3v$L+`rKQWTdY@vQB+_;?4tO0CwOkuOD-D;(i&_hKxl-*GxPZJd1L%{m!L=;r)_h^;6aF5S5J7JR{?SwwgcI+ zR67xGu%pNeQ;frv;h%D5ew{0~b=uza&$dz@5Y+UF>ckpt3Ulx#VCkej_}<`LPvW<^ z&2@mEME?ToN(6q=v?L2S<$Vo7go**qV>S+bGiY;!joTxkjx;zhKnP_%7|{R+!VwIu zs{pJheRIPLJn0bXea8<#6YcKCA}M-8+bsHyVNXZ!8M-(CEhX9=i_2I0aI%1Y8GoQ; z2z#LCAqyj!_>o)ghH{uJy4VJ8$X7}S%lf1U|FkOo7oJ;uSCL^V6~aj?lH2&ZHhh^% zvWYL#1Dqc7<}5O(aJx+(l+#_FYb(EEO|0F~5t^$4-)#IQ&dbU{7`3eTDv>uI=rk~B zqOhg{D5wH_GvR0_ZczbG{BMbxZ6& zqIlllqhjfGP22oMp6Qocj4{!A3Ubb9{1{s+4)f$uZ3Vu5lp~A8QMJEk1h?(w2zTB_ zY~JJaj$flXl@%|JTcktWCg<2McO0&M;F~Zzpi(wmzBzGs(w3EdEIK)*5FVbFXrg`) zSamL@e7I6YX~)LG=sW5M=d5ZjtKJM(IpMFL1;;Iyy95|!!$*4T{QI`Dm@_ZNoPXMi zNMF7Ek~^f`xM_8Dvirn9Ytxk@sKCD7@2PeJ7Au8-rDzOMA!3p1gFJqxn)t%0u(35S z(xdk2=c}ck2lPo`v~j^_U;{fg@zZ!M2i1V+;66yN++k}+X5&`pK7zp&h_MVVV_`?mZRzoFfCqm#LIxytnl zRipzOXC_+)Y>m{W*IfQx9NcO&r~>x{0!G*#pC7Gd--#UKwe`U4o%qclcz{AMJOMnL z1SJh%QjGQzwq>aX@l(0sD^DL#=l4eyCeINd->PKH_rgA?ZvN<$HAG0?44V=2keZjh zvb6W;C0&McT$)U{McuLDIpQvHJ?nga^-xD;SM&RhGx3SZ>YIQyuh@GLv|q6f+U4}Z zy<-Bb``?<7B zg^LRRBoocoC~m!<`1Z?p@ONPR+CY_yLBj|)9Fd@Z)r{uAe5?Zu|p?c5||}u zjU zvmb96EtmXIdcteCKjlweKDqrghfZ+SpzX$Rs8D<|XOjEC^0fP)mac7nT3jKUOY2-a zn~oQ07TMQvMW;in*lm%}st0<<%ThZO=3~^M)4|mP5@^>LhULq=fs1Byy7WR}+zjf^ zdD0z4?r?E5&NcNKyX`XhX_(A#40oFkltw4M3W|%#==$O#6obm#5q>xE(~FHe zJKi4eA07KsHyC0+Pd!V|2zjbPWGu-6IMe36PfSp0GMK?T7$2caf($jOXdCINk_h~X z%U2|nGVU4svlG9-ixj4-(vUEvA#@^$e8WD+#c{H6WK~e$;;Fc z!_lS~o95G}co?BCCF62x3nIo)z-f+93PG4DXu{c-1)AIr*AS$qa# zg{f4yO^F4>Z%-(_wtAT^O%ruNH2Iw{)$bL4(%wQ7`EmCaBa-JXb>_Bt0vxceO6Yc6mq z%#Q>Ptb@}Frmug51PbqBUAaXfDskZyPuz9fo@eyFQsAI~3U2|BJ3t-|DEIyMe}TA|JK*a#&amF4-ul@e;QD3JLg*jds zA3xs1$28smMO39I2)<|-DY&Q2@b_VKvr9KJi-<0dJ&{X{2_qt)R=H? z=&JB-i2h8Fyk&on!#uq3b5XDQ*H^WB==ja3CBDkYy3Pv1ao+gaoxA`y{Lri}c%@h} zl42@-t1U^7VUpN{pMh57m)6p3B8G4)$)+Nolr}7WiPZ4TuU-uO*+aN zs>j)yn`hkmqR*7+{UbWEu<;-<6T#?jtXIdnm3QCrkgR@a6vo;`b6dTAQce0)@TCq> zXz+Zhdz5AB@e_XHs2H98ZYo{ia_j2W!A0E7eRjHuf7q?BGE0|cdEWi=q^}Y1m5K%% zUQdO5-ebS+r?j067!V`i#zz21jd}Vuy*3c#ps)Or1QT(S!@7CJn z+sbbG@ z^~*W9Pn1NgUFedFF%gxJtDTo(prND)hOd{_^B&@p2Yb62@Dy?W@bYj=&!H~hiG<4T61?# zm(xM;xTNWRv4JLei~ahlKF=v0qrXeck3tkcI^)25apih{gc+!7+C$g9`HJTB0w06V zJ^pd|fha3Gf-391&g)c z1i=(o73J}P)%+T=KRlj)hIxX3k+4q76JrtI)okV1~SMdkr z^4vL1iHA-d{#+BT_56^b%iba~G@5y)#8W*1nAsHj z;_zD|X~UyRZ&XXwR`IJVJ^X$)Vnmm3C(*;_ACIbu_AcpOY=ooI6NY+VsITC8t=ovo zfAGgTB~5MX*S7_|_?5o&(D@cA7%K&L#8uYW+3$rEZRhAg!5KMmjfFGw0lKyIU8Tn_ z(W}u)2bXxPn!anjcZGAis`j!uef{9QE@VmIm_LE?xGjTLQgj#oklh7-Og<70$%X+n z)z01koa%TNVAVI8?oULuPN(-Tp@xSx%vachRi7bDjjA_RINsdS%)FdLdT&g^g!$h3 zVnT%0H`}gLNE+BMs0kg67~n&zEBjsd-`3@NVO z8CCh?*rtbHQ_BWPsUvLpze{6Ep#0aXZho!=zpM-{LX_3>(W_bHr_lA&3vh;Z#@$u+ zIsmc-%-3%E&laao1$HGs9q!}x(0{uV&{LwrqDZ*=O#^f^mQYgp68zroIoK6W|5HaZX5aQazGI9*VT8%| zt(~iF65-Cf@)Y7|6M@}QqVK79hi8IM>P3v=UiA@Vo+6a#_aRa(i21kxpgMS`2u+pi zbn!gS<%7(wDS){CXDb!-;eSF7Uu8Sn3M|BJFy+HAK{yATxZV>Ok@muPJ87Jrf}WuP z{*qgow;fckybHJb%zUNwE6mWs1T{yRR9Z4DKAYtCs^{y;?;$LSfB&@*EM)>FObRfZ zwh<6O%F)5x*t)gTJn}O9=zut0hw@PKgngpX6p7!>hc3CZuhN+cE83h@#aiD%K^&Ge zWp3oJE9UWDa{$IG#_8EXk9+HcciB_MzlEU3ll4ozTtxZLrNa}tqTJiRqnM@H71Skp zoSraAEX#03SP+dwNy?f1V0^~RGl1CU^GQ8y-guB~fjM%)o+TXEitw}DPp|%9iGR5y zD^4UeKD?aofi5Oz?>oOupecNTi*T}7*X&^Y_>e_@?PS>HURLJY8%Wb(lI6GP=MOuR z9%DNYmz=b>CAsn8ZVXYb3g(pFAU2yE`*8i`z_m0Q9@BhXRT1Oga3E62H z5kgiH$|{i=Sy2>1*;HmJG)O5ck)4r|QIZjvnTceNkWp6L&yRGT=XL+?>-t{z{doNR zaXRI29G}no^M1d^^YwZ?pSqXII3?)*Ow0Mu6;Mn-zGwziEmUk6To(d?73{Y2!u&7v zZl6DQZW_NC&gxtrrO*+DTLx6Te4pNuGmuimoGM6NT|t;bX2W3E1MoF`!F1Rl`~qa= zh@>GF6MGuE*6%P)ZH1v+Dz;~eA+;@WKY5-19G;qv_>~io=itB8CC^p_zd@uRF=Z$= zh2)Yi96m;vn4${b*8|b9|wG=jYxp28rK}-1=U}hj(xOnP@!X`5*XcH{6;X5%I=_&}qEbp8pFh<`2<}@RvWJ+d-Wf?w==o ziX1qZ+GDzJX86)Akws%(drOMg*bKYE+~_m=#>_7iYmVLAXSjR1!BjRS{@!vhst~8f zg40Q8plI!`&)3In@#2DpIGv+&Hr!oK3JgwKNRvwL0JD+Z%0wjVO|)ZmjI-LiX@v^= zLOqamX9SIKpIfVUPQKVqF@IT1W~_4m`R9&;`)}VMKHH;4n~u%Rert)>c~YW43VHaT zJ$Oaw7tajhx)s&Lz$WO1!NGxI#-Kzuq617$;=~LQ1n7TR{51jIjD_BGx)vX4YiXsN zIt{qh%2w%kB~;aWsYpok@9uueY+u@=X5=!xt2vG4N5+6x?MylK^#LzCw~Gfj>hCJw z_m)w$dmA?_Jl)qUkRGocEj-d{>?4{;D1W^&I=7!D>uqLlwT=aWIh( z4}Wl?mjMLDP-A;2lM>~~dgSgh{WayWsg><+A3h}5q!hf%laJ4fOK@_ilk?VcD-oH$ z#pOxD*NsPSLPW# z8Ms|OwdD#Nm*fxIBQyR5=B2ec)e>jx51r*+c|p>oRfTG{BY5)sGwol^5@%=IRC*&O z(oUzC++HT4-+J?q(^P=!udVMzS1lZ-y1J0Oe0XrP{9}`8710oe>U*wU@GD*aNDKtf z`R)uZZXOr1KUNL=8mwUhmWz3$t$WwV1?gAOH7(DpK55%G9h+eg53vbyyBSDdmdU?= zIE;wbL5izlaqCE_%1AcnJ?CQ6uInO8Zszv>w}?7euCvDkW+gP7VvpwJlblh*TNMeZOyR;8XIiWuT z3Iahv!K)R2$mwb1-hi3~l#M=5{upvFz~F`$-N-@15MzYyO4~OOxdW!Q0W{MW9p~_1sCJ#QEF4}Z7``kx zqbGd$@nAup0Xd$=)37>j=VKUf%NHtP854=;`%Rrx(h`ms{i55eap7r@oqSM`qinkv zC!(Hj>Sk$MZe=7yc_%X1_v<*F=!`i1xkbL|fKfwgX%PKcZf5bwN=GsOSN37EI$U-E z-)vI$wNO91Yk9=1G^ZixG2>Kp*;{&Jt&#-q_`I-3R6qojm^ zqdO&qI=RQ{9vP%BAc6@@IQOlvOT_ObHmI0)%~=0^dhPyCDa0;Tc9gx$RghgF@+zij z$9}&`2Kq;S`?T}NpNN<`!RFg+!|-xP_QJ414l;

66XX8kb8qVmM9K`ZE-9!T>E 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 literal 0 HcmV?d00001 diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-67-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-67-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d85179edf4b11e7b0e6c71ed30ca730f8d7de843 GIT binary patch literal 59275 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 z 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±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 AR{#J2 literal 0 HcmV?d00001 diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-68-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-68-1.png new file mode 100644 index 0000000000000000000000000000000000000000..429ba5e5fef07f755112870595c2fbea5209ecdb GIT binary patch literal 71697 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 Dru2lw literal 0 HcmV?d00001 diff --git a/docs/search.json b/docs/search.json index 5382d97..af43198 100644 --- a/docs/search.json +++ b/docs/search.json @@ -16,7 +16,7 @@ "href": "course/05_GatingSets/index.html#flowframe", "title": "05 - Gating Sets", "section": "flowFrame", - "text": "flowFrame\nLet’s start off by recalling the approach we first saw during Week 03, where using the flowCore package we loaded the contents of our .fcs file into R as a “flowFrame” object.\nTo do this, we first identified the .fcs files we were interested using file.path() to specify the folder, and list.files() to find contents containing “.fcs”.\n\n# Folder <- file.path(\"course\", \"05_GatingSets\", \"data\") # For Testing\n\n Folder <- file.path(\"data\") # For Quarto Rendering\n\nfcs_files <- list.files(Folder, pattern=\".fcs\", full.names=TRUE)\n\nfcs_files\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n[2] \"data/2025_07_26_AB_02_INF052_00_SEB.fcs\" \n[3] \"data/2025_07_26_AB_02_INF100_00_Ctrl.fcs\"\n[4] \"data/2025_07_26_AB_02_INF100_00_SEB.fcs\" \n[5] \"data/2025_07_26_AB_02_INF179_00_Ctrl.fcs\"\n[6] \"data/2025_07_26_AB_02_INF179_00_SEB.fcs\" \n\n\nWe then identified an individual .fcs file of interest using the [] method of indexing.\n\nfcs_files[1]\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\n\nThen, after making sure flowCore was attached to our local environment (via the library() function), we could use read.FCS() to read in our .fcs files contents to R.\n\n# BiocManager::install(\"flowCore\") #Bioconductor\nlibrary(flowCore)\n\n\nflowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)\nflowFrame\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 896745 0 878.809\n$P2 SSC-W NA 4194304 0 4194303.000\n$P3 SSC-H NA 4194304 0 4194303.000\n$P4 SSC-A NA 4194304 0 4194303.000\n$P5 FSC-W NA 4194304 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4194304 -111 4192506\n$P40 Zombie NIR-A Viability 4194304 -111 4192506\n$P41 APC-Fire 750-A CD27 4194304 -111 4192506\n$P42 APC-Fire 810-A CCR7 4194304 -111 4192506\n$P43 AF-A NA 4194304 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\nAs we start to think about the wider infrastructural handling of our .fcs files, what would have occurred if we had provided multiple .fcs file paths to read.FCS()? Let’s go ahead and check by not providing an index number.\n\nread.FCS(filename=fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\nError in `read.FCS()`:\n! 'filename' must be character scalar\n\n\nAs you can tell, this error message is not particularly interpretable. It however arises from type of object we are passing to the function, whereby an individual file.path (fcs_files[1]) appears as class “character” with a single value (ie. a scalar), but the combined vector (fcs_files) contains multiple values.\n\nfcs_files[1]\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\nstr(fcs_files[1])\n\n chr \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\n\n\nfcs_files\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n[2] \"data/2025_07_26_AB_02_INF052_00_SEB.fcs\" \n[3] \"data/2025_07_26_AB_02_INF100_00_Ctrl.fcs\"\n[4] \"data/2025_07_26_AB_02_INF100_00_SEB.fcs\" \n[5] \"data/2025_07_26_AB_02_INF179_00_Ctrl.fcs\"\n[6] \"data/2025_07_26_AB_02_INF179_00_SEB.fcs\" \n\nstr(fcs_files)\n\n chr [1:6] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\" ...", + "text": "flowFrame\nLet’s start off by recalling the approach we first saw during Week 03, where using the flowCore package we loaded the contents of our .fcs file into R as a “flowFrame” object.\nTo do this, we first identified the .fcs files we were interested using file.path() to specify the folder, and list.files() to find contents containing “.fcs”.\n\n# Folder <- file.path(\"course\", \"05_GatingSets\", \"data\") # For Testing\n\n Folder <- file.path(\"data\") # For Quarto Rendering\n\nfcs_files <- list.files(Folder, pattern=\".fcs\", full.names=TRUE)\n\nfcs_files\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n[2] \"data/2025_07_26_AB_02_INF052_00_SEB.fcs\" \n[3] \"data/2025_07_26_AB_02_INF100_00_Ctrl.fcs\"\n[4] \"data/2025_07_26_AB_02_INF100_00_SEB.fcs\" \n[5] \"data/2025_07_26_AB_02_INF179_00_Ctrl.fcs\"\n[6] \"data/2025_07_26_AB_02_INF179_00_SEB.fcs\" \n\n\nWe then identified an individual .fcs file of interest using the [] method of indexing.\n\nfcs_files[1]\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\n\nThen, after making sure flowCore was attached to our local environment (via the library() function), we could use read.FCS() to read in our .fcs files contents to R.\n\n# BiocManager::install(\"flowCore\") #Bioconductor\nlibrary(flowCore)\n\n\nflowFrame <- read.FCS(filename=fcs_files[1], truncate_max_range = FALSE,\n transformation = FALSE)\nflowFrame\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 896745 0 878.809\n$P2 SSC-W NA 4194304 0 4194303.000\n$P3 SSC-H NA 4194304 0 4194303.000\n$P4 SSC-A NA 4194304 0 4194303.000\n$P5 FSC-W NA 4194304 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4194304 -111 4192506\n$P40 Zombie NIR-A Viability 4194304 -111 4192506\n$P41 APC-Fire 750-A CD27 4194304 -111 4192506\n$P42 APC-Fire 810-A CCR7 4194304 -111 4192506\n$P43 AF-A NA 4194304 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\nAs we start to think about the wider infrastructural handling of our .fcs files, what would have occurred if we had provided multiple .fcs file paths to read.FCS()? Let’s go ahead and check by not providing an index number.\n\nread.FCS(filename=fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\nError in `read.FCS()`:\n! 'filename' must be character scalar\n\n\nAs you can tell, this error message is not particularly interpretable. It however arises from type of object we are passing to the function, whereby an individual file.path (fcs_files[1]) appears as class “character” with a single value (ie. a scalar), but the combined vector (fcs_files) contains multiple values.\n\nfcs_files[1]\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\nstr(fcs_files[1])\n\n chr \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n\n\n\nfcs_files\n\n[1] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\"\n[2] \"data/2025_07_26_AB_02_INF052_00_SEB.fcs\" \n[3] \"data/2025_07_26_AB_02_INF100_00_Ctrl.fcs\"\n[4] \"data/2025_07_26_AB_02_INF100_00_SEB.fcs\" \n[5] \"data/2025_07_26_AB_02_INF179_00_Ctrl.fcs\"\n[6] \"data/2025_07_26_AB_02_INF179_00_SEB.fcs\" \n\nstr(fcs_files)\n\n chr [1:6] \"data/2025_07_26_AB_02_INF052_00_Ctrl.fcs\" ...", "crumbs": [ "About", "Intro to R", @@ -28,7 +28,7 @@ "href": "course/05_GatingSets/index.html#flowset", "title": "05 - Gating Sets", "section": "flowSet", - "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE, transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)], truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x55d40ab8dbe8> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", + "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)],\n truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x562242979388> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", "crumbs": [ "About", "Intro to R", @@ -64,7 +64,7 @@ "href": "course/05_GatingSets/index.html#cytoset", "title": "05 - Gating Sets", "section": "cytoset", - "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x55d414e7fdf0> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", + "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x56224cc6eed0> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", "crumbs": [ "About", "Intro to R", @@ -76,7 +76,7 @@ "href": "course/05_GatingSets/index.html#interconverting", "title": "05 - Gating Sets", "section": "Interconverting", - "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file806b23cd6a2e'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", + "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file5caf7fc9092c'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", "crumbs": [ "About", "Intro to R", @@ -112,7 +112,7 @@ "href": "course/05_GatingSets/index.html#system-time", "title": "05 - Gating Sets", "section": "System Time", - "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.501 0.008 0.509 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 505ms 527ms 1.92 13.3KB 0", + "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.491 0.016 0.507 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 497ms 511ms 1.97 13.3KB 0", "crumbs": [ "About", "Intro to R", @@ -180,1131 +180,958 @@ ] }, { - "objectID": "course/04_IntroToTidyverse/index.html", - "href": "course/04_IntroToTidyverse/index.html", - "title": "04 - Introduction to Tidyverse", + "objectID": "course/05_GatingSets/slides.html#flowframe", + "href": "course/05_GatingSets/slides.html#flowframe", + "title": "05 - Gating Sets", + "section": "flowFrame", + "text": "flowFrame\n\n\n\n\n\n\n\n\n.\n\n\nLet’s start off by recalling the approach we first saw during Week 03, where using the flowCore package we loaded the contents of our .fcs file into R as a “flowFrame” object." + }, + { + "objectID": "course/05_GatingSets/slides.html#flowset", + "href": "course/05_GatingSets/slides.html#flowset", + "title": "05 - Gating Sets", + "section": "flowSet", + "text": "flowSet\n\n\n\n\n\n\n\n\n.\n\n\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\n\n\n\n\n\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A" + }, + { + "objectID": "course/05_GatingSets/slides.html#memory-usage", + "href": "course/05_GatingSets/slides.html#memory-usage", + "title": "05 - Gating Sets", + "section": "Memory Usage", + "text": "Memory Usage\n\n\n\n\n\n\n\n\n.\n\n\nBoth “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.\n\n\n\n\n\n\n\n\n\n\n\n\n\n.\n\n\nOne consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM." + }, + { + "objectID": "course/05_GatingSets/slides.html#cytoframe", + "href": "course/05_GatingSets/slides.html#cytoframe", + "title": "05 - Gating Sets", + "section": "cytoframe", + "text": "cytoframe\n\n\n\n\n\n\n\n\n.\n\n\nIn addition to the flowCore R package, additional flow cytometry infrastructure support is provided by the flowWorkspace package. Instead of the reading all the .fcs files contents into active RAM, flowWorkspace reduces the memory overhead by using “pointers” to interact with the object in it’s current storage location (either on your harddrive, SSD, etc.), only reading in components to RAM as needed.\n\n\n\n\n\n\n\n# BiocManager::install(\"flowWorkspace\") #Bioconductor\nlibrary(flowWorkspace)" + }, + { + "objectID": "course/05_GatingSets/slides.html#cytoset", + "href": "course/05_GatingSets/slides.html#cytoset", + "title": "05 - Gating Sets", + "section": "cytoset", + "text": "cytoset\n\n\n\n\n\n\n\n\n.\n\n\nAs well as “cytoset” to handle multiple .fcs files.\n\n\n\n\n\n\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"" + }, + { + "objectID": "course/05_GatingSets/slides.html#interconverting", + "href": "course/05_GatingSets/slides.html#interconverting", + "title": "05 - Gating Sets", + "section": "Interconverting", + "text": "Interconverting\n\n\n\n\n\n\n\n\n.\n\n\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed." + }, + { + "objectID": "course/05_GatingSets/slides.html#gating-sets", + "href": "course/05_GatingSets/slides.html#gating-sets", + "title": "05 - Gating Sets", + "section": "Gating Sets", + "text": "Gating Sets\n\n\n\n\n\n\n\n\n.\n\n\nFortunately, regardless of whether we are using flowFrame/flowSet (RAM) and cytoframe/cytoset (memory pointers), both routes end up converging at the next step, where the underlying .fcs files are passed off to the GatingSet() function.\n\n\n\n\n\n\n\nGatingSet1 <- GatingSet(flowSet)\nGatingSet1 \n\nA GatingSet with 6 samples\n\n\n\n\n\nclass(GatingSet1)\n\n[1] \"GatingSet\"\nattr(,\"package\")\n[1] \"flowWorkspace\"" + }, + { + "objectID": "course/05_GatingSets/slides.html#cytoml", + "href": "course/05_GatingSets/slides.html#cytoml", + "title": "05 - Gating Sets", + "section": "CytoML", + "text": "CytoML\n\n\n\n\n\n\n\n\n.\n\n\nThe CytoML R package (also maintained by Mike Jiang) is a sister package to the flowWorkspace. It’s main purpose is to permit bringing in existing FlowJo, Diva and Cytobank Workspaces, with all their gates, transformations, etc. into R as fully assembled GatingSet objects. For those who already use one of these commercial softwares, it can be quite useful tool.\n\n\n\n\n\n\n\n\n\n\n\n\n\n.\n\n\nSince our goal is to examine a fully assembled GatingSet object, we will be using it today to bring in a FlowJo workspace to R. However, since this is a free Cytometry in R course, and not about to have everyone pay for a license for a one-off topic, in the pre-course Floreada walkthrough I documented how to convert a free Floreada.io workspae into a FlowJo.wsp that can also be used (please note that as of early 2026, some scaling bugs may be present and require troubleshooting)." + }, + { + "objectID": "course/05_GatingSets/slides.html#system-time", + "href": "course/05_GatingSets/slides.html#system-time", + "title": "05 - Gating Sets", + "section": "System Time", + "text": "System Time\n\n\n\n\n\n\n\n\n.\n\n\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so." + }, + { + "objectID": "course/05_GatingSets/slides.html#gates", + "href": "course/05_GatingSets/slides.html#gates", + "title": "05 - Gating Sets", + "section": "Gates", + "text": "Gates\n\n\n\n\n\n\n\n\n.\n\n\nNow that we have loaded the contents of the FlowJo/Floreada workspace, we can start exploring the various infrastructural capabilities of a GatingSet object." + }, + { + "objectID": "course/05_GatingSets/slides.html#counts", + "href": "course/05_GatingSets/slides.html#counts", + "title": "05 - Gating Sets", + "section": "Counts", + "text": "Counts\n\n\n\n\n\n\n\n\n.\n\n\nIf we wanted to retrieve counts of cells found within the individual gates, we could do so with gs_pop_get_count_fast()\n\n\n\n\n\n\n\nData <- gs_pop_get_count_fast(gs)\nhead(Data, 5)\n\n name Population\n <char> <char>\n1: 00_Ctrl.fcs_INF052 /Scatter\n2: 00_Ctrl.fcs_INF052 /Scatter/Singlets\n3: 00_Ctrl.fcs_INF052 /Scatter/Singlets/Live\n4: 00_Ctrl.fcs_INF052 /Scatter/Singlets/Live/Tcells\n5: 00_Ctrl.fcs_INF052 /Scatter/Singlets/Live/Tcells/CD4+\n Parent Count ParentCount\n <char> <int> <int>\n1: root 10000 10000\n2: /Scatter 9986 10000\n3: /Scatter/Singlets 9708 9986\n4: /Scatter/Singlets/Live 9708 9708\n5: /Scatter/Singlets/Live/Tcells 6151 9708" + }, + { + "objectID": "course/05_GatingSets/slides.html#metadata", + "href": "course/05_GatingSets/slides.html#metadata", + "title": "05 - Gating Sets", + "section": "Metadata", + "text": "Metadata\n\n\n\n\n\n\n\n\n.\n\n\nSince GatingSets contain multiple .fcs files, we may want to be able to subset them based on metadata for a particular variable. We can check to see current metadata using the pData() function.\n\n\n\n\n\n\n\npData(gs)\n\n name\n00_Ctrl.fcs_INF052 00_Ctrl.fcs\n00_Ctrl.fcs_INF100 00_Ctrl.fcs\n00_Ctrl.fcs_INF179 00_Ctrl.fcs\n00_SEB.fcs_INF052 00_SEB.fcs\n00_SEB.fcs_INF100 00_SEB.fcs\n00_SEB.fcs_INF179 00_SEB.fcs" + }, + { + "objectID": "course/05_GatingSets/slides.html#ggcyto", + "href": "course/05_GatingSets/slides.html#ggcyto", + "title": "05 - Gating Sets", + "section": "ggcyto", + "text": "ggcyto\n\n\n\n\n\n\n\n\n.\n\n\nAs you can surmise, a lot of the infrastructural style handling done by commercial softwares is being orchestrated/mediated through our GatingSet object. Since it’s able to create and retain gating information, how would we go about visualizing the underlying data contained within each?" + }, + { + "objectID": "course/05_GatingSets/slides.html#plotting", + "href": "course/05_GatingSets/slides.html#plotting", + "title": "05 - Gating Sets", + "section": "Plotting", + "text": "Plotting\n\n\n\n\n\n\n\n\n.\n\n\nOnce you have the current versions of both ggplot2 and ggcyto, we can proceed to attach them to your local environment via the library() function.\n\n\n\n\n\n\n\nlibrary(ggplot2)\nlibrary(ggcyto)" + }, + { + "objectID": "course/04_IntroToTidyverse/BonusContent.html", + "href": "course/04_IntroToTidyverse/BonusContent.html", + "title": "Bonus Content", + "section": "", + "text": "thefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"\nData <- read.csv(file=thefilepath, check.names=FALSE)\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\"" + }, + { + "objectID": "course/04_IntroToTidyverse/BonusContent.html#pull", + "href": "course/04_IntroToTidyverse/BonusContent.html#pull", + "title": "Bonus Content", + "section": "Pull", + "text": "Pull" + }, + { + "objectID": "course/04_IntroToTidyverse/BonusContent.html#case-when", + "href": "course/04_IntroToTidyverse/BonusContent.html#case-when", + "title": "Bonus Content", + "section": "Case-When", + "text": "Case-When\nCase-when is an useful function, but may be a bit much to try to teach in the main segment. Basically, when the condition on the left side of the ~ is fulfilled, it will execute what is being specified on the right hand side.\nIn turn, we can combine these together by adding a “,”. I tend to use this mutate str_detect case_when combination when encountering messy data out in the while where I need to selectively change particular cell values in a consistent reproducible manner" + }, + { + "objectID": "course/04_IntroToTidyverse/BonusContent.html#selecting-columns-base-r", + "href": "course/04_IntroToTidyverse/BonusContent.html#selecting-columns-base-r", + "title": "Bonus Content", + "section": "Selecting Columns (Base R)", + "text": "Selecting Columns (Base R)\nAs we saw last week, there are multiple ways to select values from particular columns in base R. If we had wanted to retrieve the “Date” column, why not first identify its index position, and use [,] to extract the underlying data?\n\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\n\ncolnames(Data)[4]\n\n[1] \"Date\"\n\n\n\nDataColumn <- Data[,4] # Column specified after the ,\nDataColumn\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [11] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [16] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [21] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [26] \"2025-07-26\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [31] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [36] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [41] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [46] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-31\" \"2025-07-31\"\n [51] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [56] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [61] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [66] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [71] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [76] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [81] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [86] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [91] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [96] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-07\" \"2025-08-07\"\n[101] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[106] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[111] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[116] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[121] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-22\"\n[126] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[131] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[136] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[141] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[146] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[151] \"2025-08-22\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[156] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[161] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[166] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[171] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[176] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-30\" \"2025-08-30\"\n[181] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[186] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[191] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[196] \"2025-08-30\"\n\n\nHowever, looking at the output, we see this looks like the values, not a column. Our suspicions are confirmed when running DataColumn\n\nstr(DataColumn)\n\n chr [1:196] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n\n\nThis is similarly the case when we use the $ accessor.\n\nDataColumn <- Data$Date\nstr(DataColumn)\n\n chr [1:196] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n\n\n\nhead(DataColumn, 3)\n\n[1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nBy contrast, when selecting two columns, the structure is maintained.\n\nTwoColumns <- Data[,4:5]\n\nWhy is the data.frame column structure lost in base R when isolating a single data.frame column? And who thought to make it that convoluted? If we were an R course in early 2010s, we might go into an explanation, but fortunately, we don’t need to understand why, we have the dplyr R package to rescue us." + }, + { + "objectID": "course/03_InsideFCSFile/index.html", + "href": "course/03_InsideFCSFile/index.html", + "title": "03 - Inside an FCS File", "section": "", "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#read.csv", - "href": "course/04_IntroToTidyverse/index.html#read.csv", - "title": "04 - Introduction to Tidyverse", - "section": "read.csv", - "text": "read.csv\nWe will start by first loading in our copied over dataset (Dataset.csv) from it’s location in the project folder. If you are following the organization scheme we have been using throughout the course, your file path will look something like this:\n\nthefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWe encourage using the file.path function to build our file paths, as this keeps our code reproducible and replicable when a project folder is copied to other people’s computers that differ on whether the operating system uses forward or backward slash separation between folders.\n\n\nAbove, we directly specified the name (Dataset) and filetype (.csv) of the file we wanted in the last argument of the file.path (“Dataset.csv”). This allows us to skip the list.files() step we used last week as we have provided the full file path. While this approach can be faster, if we accidentally mistype the file name, we could end up with an error at the next step due to no files being found with the mistyped name.\nSince our dataset is stored as a .csv file, we will be using the read.csv() function from the utils package (included in our base R software installation) to read it into R. We will also use the colnames() function from last week to get a read-out of the column names.\n\nData <- read.csv(file=thefilepath, check.names=FALSE)\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\nAs we look at the line of code, we now have enough context to decipher that the “file” argument is where we provide a file path to an individual file, but what does the “check.names” argument do?\nLet’s see what happens to the column names when we set “check.names” argument to TRUE:\n\nData_Alternative <- read.csv(thefilepath, check.names=TRUE)\ncolnames(Data_Alternative)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump.\" \"Dump..1\" \"Tcells\" \n[19] \"Vd2.\" \"Vd2..1\" \"Va7.2.\" \n[22] \"Va7.2..1\" \"CD4.\" \"CD4..1\" \n[25] \"CD8.\" \"CD8..1\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\nAs we can see, any column name that contained a special character or a space was automatically converted over to R-approved syntax. However, this resulted in the loss of both +” and “-”, leaving us unable to determine whether we are looking at cells within or outside a particular gate.\n\nBecause of this, it is often better to rename columns individually after import, which we will learn how to do later today.\nFollowing up with what we practiced last week, lets use the head() function to visualize the first few rows of data.\n\nhead(Data, 3)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 Ctrl 2025-07-26 Male HEU-hi 2098368 1894070\n2 INF0100 0 Ctrl 2025-07-26 Male HEU-lo 2020184 1791890\n3 INF0100 4 Ctrl 2025-07-26 Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n\nWhen working in Positron, we could have alternatively clicked on the little grid icon next to our created variable “Data” in the right secondary sidebar, which would have opened the data in our Editor window. From this same window, we can see it is stored as a “data.frame” object type.\n\nWe could also achieve the same window to open using the View() function:\n\nView(Data)\n\nWrapping up our brief recap of last week functions, we can check an objects type using both the class() and str() functions.\n\nclass(Data)\n\n[1] \"data.frame\"\n\n\n\nstr(Data)\n\n'data.frame': 196 obs. of 31 variables:\n $ bid : chr \"INF0052\" \"INF0100\" \"INF0100\" \"INF0100\" ...\n $ timepoint : int 0 0 4 9 0 4 9 4 9 0 ...\n $ Condition : chr \"Ctrl\" \"Ctrl\" \"Ctrl\" \"Ctrl\" ...\n $ Date : chr \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n $ infant_sex : chr \"Male\" \"Male\" \"Male\" \"Male\" ...\n $ ptype : chr \"HEU-hi\" \"HEU-lo\" \"HEU-lo\" \"HEU-lo\" ...\n $ root : int 2098368 2020184 1155040 358624 1362216 1044808 1434840 972056 1521928 2363512 ...\n $ singletsFSC : int 1894070 1791890 1033320 328624 1206309 917398 1265022 875707 1359574 2136616 ...\n $ singletsSSC : int 1666179 1697083 875465 289327 1032946 735579 988445 767323 1175755 1875394 ...\n $ singletsSSCB : int 1537396 1579098 845446 276289 982736 685592 940454 718000 1097478 1732620 ...\n $ CD45 : num 0.595 0.911 0.971 0.982 0.957 ...\n $ NotMonocytes : num 0.882 0.905 0.985 0.986 0.956 ...\n $ nonDebris : num 0.863 0.86 0.958 0.941 0.841 ...\n $ lymphocytes : num 0.642 0.215 0.74 0.651 0.705 ...\n $ live : num 0.902 0.891 0.876 0.915 0.895 ...\n $ Dump+ : num 0.2109 0.0625 0.2002 0.2147 0.3383 ...\n $ Dump- : num 0.691 0.828 0.676 0.701 0.557 ...\n $ Tcells : num 0.28 0.675 0.612 0.631 0.44 ...\n $ Vd2+ : num 0.00812 0.00727 0.00465 0.01135 0.00475 ...\n $ Vd2- : num 0.992 0.993 0.995 0.989 0.995 ...\n $ Va7.2+ : num 0.0145 0.0158 0.0158 0.017 0.0133 ...\n $ Va7.2- : num 0.977 0.977 0.98 0.972 0.982 ...\n $ CD4+ : num 0.634 0.612 0.664 0.438 0.739 ...\n $ CD4- : num 0.343 0.365 0.316 0.534 0.243 ...\n $ CD8+ : num 0.273 0.336 0.286 0.486 0.195 ...\n $ CD8- : num 0.0698 0.0293 0.0294 0.0476 0.0476 ...\n $ Tcells_count : int 164771 208241 371723 111552 291777 271870 487937 220634 415867 184930 ...\n $ lymphocytes_count: int 587573 308583 607477 176662 663667 510730 726238 451047 710964 652155 ...\n $ Monocytes : num 0.118 0.0948 0.0155 0.0145 0.0444 ...\n $ Debris : num 0.1372 0.1397 0.0421 0.0587 0.1592 ...\n $ CD45_count : int 915203 1438047 820570 271304 940733 675857 921660 701657 1066884 1017713 ...", + "objectID": "course/03_InsideFCSFile/index.html#getting-set-up", + "href": "course/03_InsideFCSFile/index.html#getting-set-up", + "title": "03 - Inside an FCS File", + "section": "Getting Set Up", + "text": "Getting Set Up\n\n\nSet up File Paths\nHaving copied over the new data to your working project folder (Week 3 or whatever your chosen name), let’s identify the file paths between our working directory and the fcs files. If you retained the same project organization structure we had during Week #2, it may look similar to the following:\n\nPathToDataFolder <- file.path(\"data\")\n\n\nPathToDataFolder\n\n[1] \"data\"\n\n\n\n\n\n\nLocate .fcs files\nWe will now locate our .fcs files. As we saw last week, our computer will need the full file.paths to these individual files, so we will set the list.files() “full.names” argument to TRUE.\n\nfcs_files <- list.files(PathToDataFolder, pattern=\".fcs\", full.names=TRUE)\nfcs_files\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n\nBy contrast, if the “full.names” argument was set to FALSE, we would have retrieved just the file names\n\nlist.files(PathToDataFolder, pattern=\".fcs\", full.names=FALSE)\n\n[1] \"CellCounts4L_AB_05_ND050_05.fcs\"\n\n\nThis would have been the equivalent of running the basename function on the “full.names=TRUE” output.\n\nbasename(fcs_files)\n\n[1] \"CellCounts4L_AB_05_ND050_05.fcs\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#data.frame", - "href": "course/04_IntroToTidyverse/index.html#data.frame", - "title": "04 - Introduction to Tidyverse", - "section": "data.frame", - "text": "data.frame\nOr alternatively using the new-to-us glimpse() function\n\nglimpse(Data)\n\nError in `glimpse()`:\n! could not find function \"glimpse\"\n\n\n\n\n\n\n\n\nCheckpoint 1\n\n\n\nThis however returns an error. Any idea why this might be occuring?\n\n\n\n\nCode\n# We haven't attached/loaded the package in which the function glimpse is within\n\n\n\n\n\n\n\n\nCheckpoint 2\n\n\n\nHow would we locate a package a not-yet-loaded function is within?\n\n\n\n\nCode\n# We can use double ? to search all installed packages for a function, regardless\n# if the package is attached to the environment or not\n\n??glimpse\n\n\n\nFrom the list of search matches (in the right secondary sidebar), it looks likely that the glimpse() function in the dplyr package was the one we were looking for. This is one the main tidyverse packages we will be using throughout the course. Let’s attach it to our environment via the library() call first and try running glimpse() again.\n\nlibrary(dplyr)\nglimpse(Data)\n\nRows: 196\nColumns: 31\n$ bid <chr> \"INF0052\", \"INF0100\", \"INF0100\", \"INF0100\", \"INF0179…\n$ timepoint <int> 0, 0, 4, 9, 0, 4, 9, 4, 9, 0, 0, 4, 9, 0, 4, 9, 4, 9…\n$ Condition <chr> \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctr…\n$ Date <chr> \"2025-07-26\", \"2025-07-26\", \"2025-07-26\", \"2025-07-2…\n$ infant_sex <chr> \"Male\", \"Male\", \"Male\", \"Male\", \"Male\", \"Male\", \"Mal…\n$ ptype <chr> \"HEU-hi\", \"HEU-lo\", \"HEU-lo\", \"HEU-lo\", \"HU\", \"HU\", …\n$ root <int> 2098368, 2020184, 1155040, 358624, 1362216, 1044808,…\n$ singletsFSC <int> 1894070, 1791890, 1033320, 328624, 1206309, 917398, …\n$ singletsSSC <int> 1666179, 1697083, 875465, 289327, 1032946, 735579, 9…\n$ singletsSSCB <int> 1537396, 1579098, 845446, 276289, 982736, 685592, 94…\n$ CD45 <dbl> 0.5952943, 0.9106762, 0.9705765, 0.9819573, 0.957259…\n$ NotMonocytes <dbl> 0.8820349, 0.9052256, 0.9845400, 0.9855070, 0.955627…\n$ nonDebris <dbl> 0.8627649, 0.8602660, 0.9578793, 0.9412615, 0.840783…\n$ lymphocytes <dbl> 0.6420138, 0.2145848, 0.7403110, 0.6511588, 0.705478…\n$ live <dbl> 0.9020581, 0.8908981, 0.8757665, 0.9153242, 0.895214…\n$ `Dump+` <dbl> 0.21090996, 0.06252775, 0.20023803, 0.21469246, 0.33…\n$ `Dump-` <dbl> 0.6911482, 0.8283703, 0.6755285, 0.7006317, 0.556895…\n$ Tcells <dbl> 0.2804264, 0.6748298, 0.6119129, 0.6314431, 0.439643…\n$ `Vd2+` <dbl> 0.008120361, 0.007265620, 0.004651313, 0.011348967, …\n$ `Vd2-` <dbl> 0.9918796, 0.9927344, 0.9953487, 0.9886510, 0.995246…\n$ `Va7.2+` <dbl> 0.014480704, 0.015774991, 0.015794019, 0.017023451, …\n$ `Va7.2-` <dbl> 0.9773989, 0.9769594, 0.9795547, 0.9716276, 0.981924…\n$ `CD4+` <dbl> 0.6341164, 0.6119112, 0.6639621, 0.4378944, 0.739256…\n$ `CD4-` <dbl> 0.3432825, 0.3650482, 0.3155925, 0.5337331, 0.242668…\n$ `CD8+` <dbl> 0.2734826, 0.3357696, 0.2862104, 0.4861231, 0.195063…\n$ `CD8-` <dbl> 0.06979990, 0.02927858, 0.02938209, 0.04761008, 0.04…\n$ Tcells_count <int> 164771, 208241, 371723, 111552, 291777, 271870, 4879…\n$ lymphocytes_count <int> 587573, 308583, 607477, 176662, 663667, 510730, 7262…\n$ Monocytes <dbl> 0.11796509, 0.09477437, 0.01545999, 0.01449297, 0.04…\n$ Debris <dbl> 0.13723513, 0.13973396, 0.04212072, 0.05873854, 0.15…\n$ CD45_count <int> 915203, 1438047, 820570, 271304, 940733, 675857, 921…\n\n\nWe notice that while similar to the str() output, glimpse() handles spacing a little differently, and includes the dimensions at the top. However, we can also retrieve the dimensions directly using the dim() function (which maintains the row followed by column position convention of base R (ex. [196,31]))\n\ndim(Data)\n\n[1] 196 31", + "objectID": "course/03_InsideFCSFile/index.html#flowcore", + "href": "course/03_InsideFCSFile/index.html#flowcore", + "title": "03 - Inside an FCS File", + "section": "flowCore", + "text": "flowCore\nWe will be using the flowCore package, which is the oldest and most-frequently downloaded flow cytometry package on Bioconductor.\n\n\nCode\n# I have attached this code for anyone that is interested in seeing how these plots were made. The content is not part of today's lesson, so if you are just starting off, we will cover the details of data-tidying and creating ggplot objects over the next several weeks. Best, David\n\n# Load required packages via a library call\n\nlibrary(dplyr) # CRAN\nlibrary(stringr) # CRAN\nlibrary(ggplot2) # CRAN\n#library(plotly) # Using the :: to access \n\n# Loading in the dataset contained within the .csv file\nBioconductorFlow_path <- file.path(PathToDataFolder, \"BioconductorFlow.csv\")\nBioconductorFlowPackages <- read.csv(BioconductorFlow_path, check.names=FALSE)\nBioconductorFlowPackages <- BioconductorFlowPackages |>\n arrange(desc(since)) |> mutate(package = factor(package, levels = package))\n\n# Newer Base R Pipe : |> \n# Older mostly equivalent Magrittr Pipe %>% \n\n\n\n\nCode\n# Notice the code-chunk eval arguments above dictate the shape of the final rendered plot. \n\n# Taking the imported dataset and passing it to ggplot2 to create the first plot. \n\nplot <- ggplot(BioconductorFlowPackages,\n aes(x = 0, xend = since, y = package, yend = package)) +\n geom_segment(linewidth = 2, color = \"steelblue\") +\n scale_x_continuous(trans = \"reverse\", \n breaks = seq(0, max(BioconductorFlowPackages$since), by = 5)) +\n labs(\n x = \"Years in Bioconductor\",\n y = NULL,\n title = \"Bioconductor Flow Cytometry R packages\"\n ) +\n theme_bw()\n\n# Taking the static plot and making it interactive using the plotly package\n\nplotly::ggplotly(plot)\n\n\n\n\n\n\n\n\nCode\n# Retrieving the names of Bioconductor flow cytometry R packages in correct release order. \n\nHistoricalOrder <- BioconductorFlowPackages |> pull(package)\n\n# Bringing in 2025 package usage dataset from a .csv file\nBioconductorUsage_path <- file.path(PathToDataFolder, \"BioconductorDownloads.csv\")\nBioconductorUsage <- read.csv(BioconductorUsage_path, check.names=FALSE)\nBioconductorUsage <- BioconductorUsage |> dplyr::filter(Month %in% \"all\")\n\n# Note, dplyr::filter is used due to flowCore also having a filter function, which causes conflicts once it is attached to the local environment. \n\n# Combining both data.frames for use in the plot\n\nDataset <- left_join(BioconductorFlowPackages, BioconductorUsage, by=\"package\")\n\n# Rearranging the order in which packages are displayed\n\nDataset$package <- factor(Dataset$package, levels=HistoricalOrder)\n\n\n\n\nCode\n# Generating the 2nd plot with ggplot2\n\nplot <- ggplot(Dataset, aes(x = since, y = Nb_of_distinct_IPs)) +\n geom_point(aes(color = package), size = 3, alpha = 0.7) + \n labs(\n x = \"Years in Bioconductor\",\n y = \"Number of Yearly Downloads\",\n title = \"\",\n color = \"Package\"\n ) +\n theme_bw()\n\n# Making it interactive with plotly\n\nplotly::ggplotly(plot)\n\n\n\n\n\n\nflowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:\n\nAs with all our R packages, we first need to make sure flowCore is attached to our local environment via the library call.\n\nlibrary(flowCore)\n\nThe function we will be using today is the read.FCS() function. Do you remember how to access the help documentation?\n\n\nCode\n# Or when in Positron, hovering over the highlighted function name within the code-chunk\n\n?flowCore::read.FCS\n\n\nTo start, lets select just the first .fcs file. We will do this by indexing the first item within fcs_files via the square brackets [].\n\nfirstfile <- fcs_files[1]\nfirstfile\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#column-value-type", - "href": "course/04_IntroToTidyverse/index.html#column-value-type", - "title": "04 - Introduction to Tidyverse", - "section": "Column value type", - "text": "Column value type\nAs we saw last week, functions often need values that match a certain type (the paintbrush needing paint analogy). As we inspect the columns of Data, we can notice some of the columns contain values within that are character (ie. “char”) values. Others appear to contain numeric values (which are subtyped as either double (“ie. dbl”) or integer (ie. “int”)). At first glance, we do not appear to have any logical (ie. TRUE or FALSE) columns in this dataset.\n\nIf we were trying to verify type of values contained within a data.frame column, we could employ several similarly-named functions (is.character(), is.numeric() or is.logical()) to check\n\n# colnames(Data) # To recheck the column names\n\nis.character(Data$bid)\n\n[1] TRUE\n\n\n\nis.numeric(Data$bid)\n\n[1] FALSE\n\n\n\n# colnames(Data) # To recheck the column names\n\nis.character(Data$Tcells_count)\n\n[1] FALSE\n\n\nFor numeric columns using the is.numeric() function, we can also be subtype specific using either is.integer() or is.double().\n\n# colnames(Data) # To recheck the column names\n\nis.numeric(Data$Tcells_count)\n\n[1] TRUE\n\nis.integer(Data$Tcells_count)\n\n[1] TRUE\n\nis.double(Data$Tcells_count)\n\n[1] FALSE\n\n\n\n\n\n\n\n\nReminder\n\n\n\nAs we observed last week with keywords, column names that contain special characters like $ or spaces will need to be surrounded with tick marks in order for the function to be able to run.\n\n\n\n# colnames(Data) # To recheck the column names\nis.numeric(Data$CD8-)\n\nError in parse(text = input): <text>:2:21: unexpected ')'\n1: # colnames(Data) # To recheck the column names\n2: is.numeric(Data$CD8-)\n ^\n\n\n\n# colnames(Data) # To recheck the column names\nis.numeric(Data$`CD8-`)\n\n[1] TRUE", + "objectID": "course/03_InsideFCSFile/index.html#flowframe", + "href": "course/03_InsideFCSFile/index.html#flowframe", + "title": "03 - Inside an FCS File", + "section": "flowFrame", + "text": "flowFrame\nFor read.FCS(), it accepts several arguments. The argument “filename” is where we provide our file.path to .fcs file that we wish to load into R. Let’s go ahead and do so\n\nread.FCS(filename=firstfile)\n\nPlease note, if you are doing this with your own .fcs files, you will need to provide two additional arguments, “transformation” = FALSE, and “truncate_max_range” = FALSE for the files to be read in correctly. We will revisit the reasons why in Week #5.\n\nread.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot\n\n\nIn this case, we can see the .fcs file has been read into R as a “flowFrame” object. We can also see the file name, as well as details about the number of cells, and number of columns (whether detectors (for raw spectral flow data) or fluorophores (for unmixed spectral flow data)).\n\nDirectly below we see what resembles a table. At first glance, the only column with an immediately discernable purpose is the one with the name column, which is listing the detectors present on a Cytek Aurora.\n\nAnd finally, at the bottom we reach a line that tells us that for this .fcs files, 599 keyword can be found in a description slot.\n\n\n\nSo let’s get our bearings, we have loaded in an .fcs file to R, but let’s use some of the concepts we covered last week to try to understand a bit about what type or class of object we are working with. From the output, we saw the words flowFrame object, so let’s read it back in again, but assign it to an variable/object called flowFrame so that we can use the type-discerning functions we worked with last week on.\n\nflowFrame <- read.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)\n\nAs we create this variable, if we have the session tab selected on our right secondary side bar, we see it appear:\n\nIf we were to use the type-determining functions we learned last week\n\nclass(flowFrame)\n\n[1] \"flowFrame\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nflowFrames are a class of object with a structure defined within the flowCore package. They are used to work with the data contained within individual .fcs files. Looking again at the right secondary side bar, we can see that it shows up as a ““S4 class flowFrame package flowCore”“” with 3 slots, with the words flowFrame adjacent to it.\nA perfectly valid first reaction to first reading this is “well how should I know what any of this means?”. Powering through this initial discomfort, let’s go ahead and click on the dropdown arrow next to the variables name and see if we get any additional clarity on the issue.\n\nWhen we do so, three additional drop-downs appear. Based on the previous line that mentioned 3 slots, we could infer that each line corresponds to one of those slots.\nWhat we are encountering with flowFrame is our first example of an S4 object type. These more-complicated object types are quite common for the various Bioconductor affilitated R packages.\nThese objects will usually appear with either S4 or S3 in their metadata, and are made up of various simpler object types that are cobbled together within the larger object, usually occupying individual slots.\nWhat advantage this bundling provides will be something we revisit throughout the course as you encounter more of these S4/S3 objects.\n\n\n\nexprs\nThe first slot within the flowFrame object shows up with the name “exprs”. For the exprs object, glancing at it’s middle column, we can based on the 100 rows and 61 columns, that it is likely a matrix-style object. We might also recall we saw similar numbers in the printed output when we ran read.FCS()earlier.\n\nWhich likely means that “exprs” slot is where the MFI data for the individual acquired cells within our .fcs file is being stored. Within Positron, for a matrix object, we can click on the little grid symbol on the far right to open up the table within editor.\n\nIf we utilize the scroll bars, we can see that the individual detectors (in the case of uploading a raw spectral fcs file, they would appear as fluorophores for unmixed spectral or conventional fcs files) occupy the individual columns, which are named. The rows are not named, but number 100, matching the number of cells present in the .fcs file. Additionally, on the far left there is a little summary table about the overall data.\n\nLet’s go ahead and assign this matrix to a new variable/object so that we can explore it later. Since flowFrame is an S4 object, it’s slots can be individually accessed by adding the @ symbol and the respective slot name.\n\nMFI_Matrix <- flowFrame@exprs\n\nAlternatively, we can use the Bioconductor helper function exprs() to get data held in that slot\n\nMFI_Matrix_Alternate <- exprs(flowFrame)\n\nIn the case of the above, this displayed text output to the console would be unwiedly to display all at once. If we wanted to only see the first five rows, we could use the head() function, and provide a value of 5.\n\nhead(MFI_Matrix, 5)\n\n Time UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A\n[1,] 38823 37.79983 -184.479996 353.87714 1106.22998 1145.18140 2130.21899\n[2,] 39780 234.23021 -98.456429 26.43876 70.65833 -89.93541 -29.14263\n[3,] 267292 -117.96355 40.732426 473.94574 1177.86975 1516.70935 1985.46130\n[4,] 128101 289.87671 -2.723389 -54.11960 -163.71489 32.62989 -134.90411\n[5,] 255221 -104.50541 -71.163338 567.57562 610.23627 1416.61328 2868.16040\n UV7-A UV8-A UV9-A UV10-A UV11-A UV12-A UV13-A\n[1,] 4376.34277 3246.7952 32050.65039 8123.2637 1992.5785 1070.3323 956.43573\n[2,] -26.34649 -162.6675 17.98848 271.9152 154.8575 163.5411 -32.81524\n[3,] 3658.87671 4140.1724 59792.16406 14013.7969 3427.4324 1668.7588 1071.14636\n[4,] 739.71960 402.9025 427.37534 315.6364 -223.0423 145.7121 127.03777\n[5,] 4034.58789 3234.6626 40126.46484 10325.0371 1974.0907 1033.8450 -21.57245\n UV14-A UV15-A UV16-A SSC-H SSC-A V1-A V2-A\n[1,] 290.8685 385.49921 670.97687 657613 750760.12 1171.1390 154.5628\n[2,] -104.9198 103.41382 71.41528 83481 81552.85 266.2424 705.2527\n[3,] 730.1430 214.93053 252.75406 890845 1183519.00 1196.0931 1183.1105\n[4,] -207.8978 -55.37944 -45.10131 75103 72457.33 227.9926 556.9189\n[5,] 273.6271 960.16290 341.20633 415791 501690.97 717.2498 929.9780\n V3-A V4-A V5-A V6-A V7-A V8-A\n[1,] 1346.4488525 1706.9260 1923.50940 898.2527 3162.55371 83596.5078\n[2,] 244.3218689 341.0508 381.15939 87.1600 151.68785 119.5544\n[3,] 2087.0092773 824.6352 1635.27258 1613.9069 4653.16260 176981.6094\n[4,] -0.8137281 205.4732 18.12125 179.6371 -69.50061 -132.4348\n[5,] 1358.4512939 788.6506 1208.81006 1156.7040 3118.42627 104951.2578\n V9-A V10-A V11-A V12-A V13-A V14-A\n[1,] 32506.7617 27161.5137 6236.072754 2220.303223 2023.39966 753.589355\n[2,] -79.7691 -109.1783 -73.991196 114.375542 -11.53453 124.986206\n[3,] 69236.4297 57626.8984 13175.838867 4534.874023 3434.38989 1995.172363\n[4,] 129.2739 231.8918 -5.473321 8.792875 -24.62049 -8.212234\n[5,] 42090.0781 34104.3164 7620.552734 3103.544189 2426.43359 650.836304\n V15-A V16-A FSC-H FSC-A SSC-B-H SSC-B-A B1-A\n[1,] 510.9540 228.34962 1055905 1217097.50 716733 815959.06 606.6683\n[2,] -207.3494 -28.96272 79696 83439.11 104575 103132.83 195.2795\n[3,] 1321.8030 615.05560 1092481 1453969.38 757351 982038.31 2010.5110\n[4,] -133.7503 -34.32619 64760 60415.23 67955 66806.13 -146.8936\n[5,] 290.2892 473.32599 1038362 1184479.00 425296 522873.12 1015.5981\n B2-A B3-A B4-A B5-A B6-A B7-A\n[1,] 416.98294 4172.4712 192400.0938 93929.9375 54236.3320 19342.6445\n[2,] 333.25662 332.1675 -230.9639 196.7810 292.8945 -187.2845\n[3,] 2150.21826 10106.9551 437801.5625 212176.1562 124294.3594 45068.3008\n[4,] -34.90987 165.7988 675.0156 136.3076 482.8665 133.0948\n[5,] 639.77527 6034.0200 244022.6094 118871.4609 68616.9688 24067.7949\n B8-A B9-A B10-A B11-A B12-A B13-A\n[1,] 10507.24219 9498.1270 4465.50928 1668.048096 2199.9475 1581.7345\n[2,] 70.90886 -334.3563 188.05545 -663.359619 -163.2331 27.9856\n[3,] 24289.59180 22500.1914 10624.99219 4684.497559 3471.7749 2727.3904\n[4,] 432.28091 246.8794 -94.44906 2.905877 106.8489 283.3633\n[5,] 14182.12793 13019.7100 5577.33984 2753.355957 1279.3009 1423.0276\n B14-A R1-A R2-A R3-A R4-A R5-A\n[1,] 1487.56860 147.1335 129.867630 35.90353 267.23999 49.79849\n[2,] 205.82298 -142.9224 66.516052 113.63218 -94.41375 98.13978\n[3,] 2371.95850 -128.3749 -105.482544 726.48547 18.87000 95.47879\n[4,] 33.24665 127.5455 122.607941 37.83584 -82.87500 -343.83768\n[5,] 1565.72742 -266.4482 -3.350622 -178.39566 -117.10875 -100.10384\n R6-A R7-A R8-A\n[1,] -732.7097 42.83144 248.56728\n[2,] 143.4497 -263.28741 -85.83299\n[3,] -194.4526 -84.08820 -301.46066\n[4,] 82.3745 60.27896 -94.38461\n[5,] -182.0066 184.36417 186.17207\n\n\nThis is much more workable, especially on a small laptop screen. We can see that there are names for each column corresponding to detector/fluorophore/metal depending on the .fcs file we are accessing. Lets retrieve these column names using the colnames() function.\n\nColumnNames <- colnames(MFI_Matrix)\nColumnNames\n\n $P1N $P2N $P3N $P4N $P5N $P6N $P7N $P8N \n \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \"UV7-A\" \n $P9N $P10N $P11N $P12N $P13N $P14N $P15N $P16N \n \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \"UV14-A\" \"UV15-A\" \n $P17N $P18N $P19N $P20N $P21N $P22N $P23N $P24N \n \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \"V3-A\" \"V4-A\" \"V5-A\" \n $P25N $P26N $P27N $P28N $P29N $P30N $P31N $P32N \n \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \n $P33N $P34N $P35N $P36N $P37N $P38N $P39N $P40N \n \"V14-A\" \"V15-A\" \"V16-A\" \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \n $P41N $P42N $P43N $P44N $P45N $P46N $P47N $P48N \n \"B2-A\" \"B3-A\" \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \n $P49N $P50N $P51N $P52N $P53N $P54N $P55N $P56N \n \"B10-A\" \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n $P57N $P58N $P59N $P60N $P61N \n \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\nSomething interesting occurred when this occurred, we can see in addition to the detector names directly above each a “$P#N” pattern appear, with # standing for increasing numbers. If we recall, we saw something similar in the first output column when we first ran read.FCS().\n\nLets break out the str() and class() functions from last week and see what we can find out about why this is occuring.\n\nstr(ColumnNames)\n\n Named chr [1:61] \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" ...\n - attr(*, \"names\")= chr [1:61] \"$P1N\" \"$P2N\" \"$P3N\" \"$P4N\" ...\n\n\nIn this case we can see that we don’t just have a vector (list) similar to what we saw with Fluorophores object last week, because instead of a chr [1:61] we get back a Named chr [1:61] designation. What we see is that in this case, each value has a corresponding index name as well. (ex. $P1N, $P2N, etc.) Let’s double check with class() function.\n\nclass(ColumnNames)\n\n[1] \"character\"\n\n\nWe can see that everything is character, but it doesn’t inform us that each index was named. This is one of the reasons it is best when trying to see what type of an object something is, to use multiple functions, to avoid missing some important details.\nIf we were trying to remove the names, being left with just the values (similar to what we saw with the vector-style list last week), we could use the unname() function:\n\nunname(ColumnNames)\n\n [1] \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \n [8] \"UV7-A\" \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \n[15] \"UV14-A\" \"UV15-A\" \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \n[22] \"V3-A\" \"V4-A\" \"V5-A\" \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \n[29] \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \"V14-A\" \"V15-A\" \"V16-A\" \n[36] \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \"B2-A\" \"B3-A\" \n[43] \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \"B10-A\" \n[50] \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n[57] \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\n\n\nLet’s return to the right sidebar to continue our exploration, by clicking on the dropdown arrow for exprs in the side-bar\n\nThe output is less user-friendly than what we saw when clicking on the little grid. If we scroll down far enough, we get down as far as [,61], which corresponds to the total number of columns.\n\nIn base R, column order can be defined by placing the corresponding column index number after a comma “,”. So for this case, the first column would be designated would be [,1] while the last column would be designated [,61].\n\nMFI_Matrix[,1]\n\n [1] 38823 39780 267292 128101 255221 79210 196643 83855 109315 26128\n [11] 114423 120001 71831 70551 197021 239994 252611 223012 152780 171822\n [21] 172611 168464 191503 253015 73885 82221 176641 128533 4117 191632\n [31] 191229 58093 141776 265894 55593 227555 233212 248578 95165 171934\n [41] 1360 251847 195764 147503 118723 1060 90033 253553 268268 74610\n [51] 23531 150119 226391 201568 179264 79944 196686 252667 117309 3903\n [61] 77690 195142 229873 254472 179943 236618 68193 87154 28541 78622\n [71] 155664 50115 40866 70753 260118 12033 96149 20740 37461 73998\n [81] 231939 192329 88649 197664 86006 142486 159539 251298 104864 164090\n [91] 102380 218968 145182 239323 261272 118979 17202 194277 229284 258723\n\n\n\nMFI_Matrix[,61]\n\n [1] 248.567276 -85.832993 -301.460663 -94.384613 186.172073 -461.407745\n [7] 843.507080 277.516113 -106.166855 281.633545 195.927261 818.865723\n [13] 734.996460 209.356476 206.442596 279.859894 518.165222 56.947498\n [19] 285.751007 857.126343 -94.384613 -213.030518 62.585236 138.409653\n [25] 118.012444 328.255768 -61.635056 185.285233 464.384979 5.637739\n [31] -66.385956 31.229273 1198.241211 185.475266 873.279419 457.607025\n [37] -73.353951 37.880539 729.168640 221.772171 -169.512238 348.272888\n [43] -338.391022 845.534119 -4.434176 620.024597 610.269409 -193.900208\n [49] 230.830566 -23.754517 607.102112 14.949510 -34.333195 -169.132172\n [55] -96.158287 220.631958 125.297165 -15.202891 -126.057304 193.393448\n [61] 90.203819 -277.706146 590.505615 911.096619 -92.230873 347.259369\n [67] 135.559113 369.430267 -62.015125 -180.597672 -146.517868 810.440796\n [73] 134.038818 -165.268097 727.711731 -88.746880 62.901962 203.275330\n [79] 436.196289 -242.676147 -40.857769 222.278946 -170.272385 525.513245\n [85] -41.491222 176.670258 201.501648 175.530045 329.839386 474.140167\n [91] -48.142490 -174.833252 46.052090 357.584656 -26.541714 191.493088\n [97] 211.320190 124.790398 -113.324883 343.268616\n\n\nWhat would happen if used a column index number that didn’t exist? Let’s check.\n\nMFI_Matrix[,350]\n\nError in `MFI_Matrix[, 350]`:\n! subscript out of bounds\n\n\nWe get back an error message telling us the subscript is out of bounds.\nSo if columns are specified by a number after the comma (ex. [,1]), how are rows specified? In R, rows would be specified by a number before the comma [1,]\n\nMFI_Matrix[1,]\n\n Time UV1-A UV2-A UV3-A UV4-A \n 38823.00000 37.79983 -184.48000 353.87714 1106.22998 \n UV5-A UV6-A UV7-A UV8-A UV9-A \n 1145.18140 2130.21899 4376.34277 3246.79517 32050.65039 \n UV10-A UV11-A UV12-A UV13-A UV14-A \n 8123.26367 1992.57849 1070.33228 956.43573 290.86853 \n UV15-A UV16-A SSC-H SSC-A V1-A \n 385.49921 670.97687 657613.00000 750760.12500 1171.13904 \n V2-A V3-A V4-A V5-A V6-A \n 154.56281 1346.44885 1706.92603 1923.50940 898.25269 \n V7-A V8-A V9-A V10-A V11-A \n 3162.55371 83596.50781 32506.76172 27161.51367 6236.07275 \n V12-A V13-A V14-A V15-A V16-A \n 2220.30322 2023.39966 753.58936 510.95404 228.34962 \n FSC-H FSC-A SSC-B-H SSC-B-A B1-A \n1055905.00000 1217097.50000 716733.00000 815959.06250 606.66833 \n B2-A B3-A B4-A B5-A B6-A \n 416.98294 4172.47119 192400.09375 93929.93750 54236.33203 \n B7-A B8-A B9-A B10-A B11-A \n 19342.64453 10507.24219 9498.12695 4465.50928 1668.04810 \n B12-A B13-A B14-A R1-A R2-A \n 2199.94751 1581.73450 1487.56860 147.13348 129.86763 \n R3-A R4-A R5-A R6-A R7-A \n 35.90353 267.23999 49.79849 -732.70966 42.83144 \n R8-A \n 248.56728 \n\n\nAnd while not the focus of today, we could retrieve individual values from a matrix by specifying both a row and a column index number. So for example, if we wanted the MFI value for the UV1-A detector for the first acquired cell (knowing that UV1-A is the 2nd column):\n\nMFI_Matrix[1,2]\n\n UV1-A \n37.79983 \n\n\nFrom our exploration, this looks to be all the information contained within the “exprs” slot, so let’s back up and check on the next slot.\n\n\n\n\nparameters\nAs we look at the next slot in the flowFrame object, we can see that parameters looks like it is going to be another more complex object, as it is showing up as an AnnotatedDataFrame object (defined by the Biobase R package, and itself contains 4 slots).\n\n\nHaving carved our way this far into the heart of an .fcs file, we are not about to call it quits now, so CHARGE my fellow cytometrist!!! Click that drop-down arrow!\n\nHaving survived our charge into the unknown, the four parameter slots appear to be “varMetadata”, “data”, “dimLabels” and “._classVersion_”.\n\n\nvarMetadata\nFortunately for us, both “varMetadata” and “data” at least appear to be table-like objects of a type known as a “data.frame”, so lets click on the grid to open in our editor window.\nIn the case of varMetadata, we seem to have retrieved a column of metadata names.\n\nThese look reminiscent of what we saw at the top of the read.FCS() column outputs previously\n\n\n\ndata\nClicking on the grid for parameters’s data slot will end opening the actual content that was displayed.\n\nLet’s try to retrieve the data contained within this slot and save it as it’s own variable/object within our R session. First, we need to open flowFrame object, then use @ to get inside its parameters slot. Since parameters is also a complex object (AnnotatedDataFrame specifically), we will need to use another @ to get inside its data slot:\n\nParameterData <- flowFrame@parameters@data\n\nhead(ParameterData, 10)\n\n name desc range minRange maxRange\n$P1 Time <NA> 272140 0.00000 272139\n$P2 UV1-A <NA> 4194304 -111.00000 4194303\n$P3 UV2-A <NA> 4194304 -111.00000 4194303\n$P4 UV3-A <NA> 4194304 -111.00000 4194303\n$P5 UV4-A <NA> 4194304 -111.00000 4194303\n$P6 UV5-A <NA> 4194304 -111.00000 4194303\n$P7 UV6-A <NA> 4194304 -111.00000 4194303\n$P8 UV7-A <NA> 4194304 -26.34649 4194303\n$P9 UV8-A <NA> 4194304 -111.00000 4194303\n$P10 UV9-A <NA> 4194304 0.00000 4194303\n\n\nAnd similarly, we could access with the Bioconductor helper function parameters(), but we would need to specify the accessor for data outside the parenthesis.\n\nParameterData_Alternate <- parameters(flowFrame)@data\n\nIf we ran the str() function, we get the following insight into ParameterData’s object type\n\nstr(ParameterData)\n\n'data.frame': 61 obs. of 5 variables:\n $ name : 'AsIs' Named chr \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" ...\n ..- attr(*, \"names\")= chr [1:61] \"$P1N\" \"$P2N\" \"$P3N\" \"$P4N\" ...\n $ desc : 'AsIs' Named chr NA NA NA NA ...\n ..- attr(*, \"names\")= chr [1:61] NA NA NA NA ...\n $ range : num 272140 4194304 4194304 4194304 4194304 ...\n $ minRange: num 0 -111 -111 -111 -111 ...\n $ maxRange: num 272139 4194303 4194303 4194303 4194303 ...\n\n\nWe can see this class of object is a “data.frame”. This is one of the more common object types in R, and we will be seeing these extensively throughout the course. We see that each of the columns appears to be designated by a $ followed by the column name, and then type of column (numeric, character, etc).\n\nIf we are trying to see these columns in R, we notice that data.frame is not like the previous S4 class objets we interacted with, as the @ symbol after doesn’t bring up any suggestions\n\nParameterData@\n\nBy contrast, adding the $ we saw when using the str() function does retrieve the underlying information\n\nParameterData$\n\n\nAs you become more familiar with R, remembering to check what kind of object you are working with, and how to access the contents will with practice become more familiar to you.\nSimilar to what we saw with a matrix, we can subset a data.frame based on the column or row index using square brackets [].\n\nParameterData[,1]\n\n $P1N $P2N $P3N $P4N $P5N $P6N $P7N $P8N \n \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \"UV7-A\" \n $P9N $P10N $P11N $P12N $P13N $P14N $P15N $P16N \n \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \"UV14-A\" \"UV15-A\" \n $P17N $P18N $P19N $P20N $P21N $P22N $P23N $P24N \n \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \"V3-A\" \"V4-A\" \"V5-A\" \n $P25N $P26N $P27N $P28N $P29N $P30N $P31N $P32N \n \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \n $P33N $P34N $P35N $P36N $P37N $P38N $P39N $P40N \n \"V14-A\" \"V15-A\" \"V16-A\" \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \n $P41N $P42N $P43N $P44N $P45N $P46N $P47N $P48N \n \"B2-A\" \"B3-A\" \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \n $P49N $P50N $P51N $P52N $P53N $P54N $P55N $P56N \n \"B10-A\" \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n $P57N $P58N $P59N $P60N $P61N \n \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\nThe individual detectors or fluorophore appear under “name”. For now, based on what we know, the $P# appears to be some sort of name being used as an internal consistent reference to the respective.\n“desc” is appearing empty for this raw spectral fcs file, but if you were to checked an unmixed file, this would be occupied the marker/ligand name assigned to it during the experiment setup.\n“range”, “minRange” and “maxRange” are beyond the scope of today, but are used by both instrument manufacturers and software vendors when setting appropiate scaling for a plot. For the actual details, see the Flow Cytometry Standard documentation.\nHaving exhausted our options under parameters “varMetadata” and “data” slots, let’s continue to the next slot.\n\n\ndimLabels\n\nIn this case, not much is returned. Yey!\n\nflowFrame@parameters@dimLabels\n\n[1] \"rowNames\" \"columnNames\"\n\n\n\n\nclassVersion\nContinuing on to the last slot “.__classVersion__”\n\nflowFrame@parameters@.__classVersion__\n\nAnnotatedDataFrame \n \"1.1.0\" \n\n\nAlso mercifully short, both of these seem to be more involved in defining the S4 class object, and don’t contain anything we need to retrieve today.\n\n\n\n\nDescription\nAt this point, we have explored both “exprs” and “parameter” slots for the flowFrame object we created. Let’s tackle the final slot, named description.\n\nWhen doing so, a very large list is opened within the Positron variables window. While we could scroll through it, it might be easier to retrieve certain number of rows via the console to make interpreting this more structured.\n\nTo retrieve the list itself, we would need to access the description slot of the flowFrame object. Since it is a slot, we will need to use the @ accessor.\n\n\nDescriptionList <- flowFrame@description\n\n\nDescriptionList \n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n$`$CYT`\n[1] \"Aurora\"\n\n$`$CYTOLIB_VERSION`\n[1] \"2.22.0\"\n\n$`$CYTSN`\n[1] \"V0333\"\n\n$`$DATATYPE`\n[1] \"F\"\n\n$`$DATE`\n[1] \"04-Aug-2025\"\n\n$`$ENDANALYSIS`\n[1] \"0\"\n\n$`$ENDDATA`\n[1] \"57711\"\n\n$`$ENDSTEXT`\n[1] \"0\"\n\n$`$ETIM`\n[1] \"13:55:57.02\"\n\n$`$FIL`\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$`$INST`\n[1] \"UMBC\"\n\n$`$MODE`\n[1] \"L\"\n\n$`$NEXTDATA`\n[1] \"0\"\n\n$`$OP`\n[1] \"David Rach\"\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"\n\n$ORIGINALGUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"\n\n$THRESHOLD\n[1] \"(FSC,50000)\"\n\n$TUBENAME\n[1] \"05\"\n\n$USERSETTINGNAME\n[1] \"DTR_CellCounts\"\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n\nThe returned list is a little too large to reasonably explore. We can attempt to subset using the head() function as shown below\n\nhead(DescriptionList, 5)\n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n\nAlternatively, it might be better to subset based on position index\n\nDescriptionList[1:10]\n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n$`$CYT`\n[1] \"Aurora\"\n\n$`$CYTOLIB_VERSION`\n[1] \"2.22.0\"\n\n$`$CYTSN`\n[1] \"V0333\"\n\n$`$DATATYPE`\n[1] \"F\"\n\n$`$DATE`\n[1] \"04-Aug-2025\"\n\n\nAnd just as we saw for exprs and parameters, there is also a Bioconductor helper keyword() function to access this same information directly from the flowFrame.\n\nDescriptionList_Alternate <- keyword(flowFrame)\n\nIf we run the class() function, we can see that DescriptionList is an actual “list”.\n\nclass(DescriptionList)\n\n[1] \"list\"\n\n\nThis is in contrast to the vectors we have previously generated. While these are also list like, they are what are known as as atomic list, which contain values that are all either characters, numerics or logicals.\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nclass(Fluorophores)\n\n[1] \"character\"\n\n\n\nPanelAntibodyCounts <- c(5, 12, 19, 26, 34, 46, 51)\nclass(PanelAntibodyCounts)\n\n[1] \"numeric\"\n\n\n\nSpecimenIndexToKeep <- c(TRUE, TRUE, FALSE, TRUE)\nclass(SpecimenIndexToKeep)\n\n[1] \"logical\"\n\n\nA list on the other hand is not restricted to contain objects composed entirely of a certain atomic type. For example, I could include the three previous vectors into a list using the list() function.\n\nMyListofVectors <- list(Fluorophores, PanelAntibodyCounts, SpecimenIndexToKeep)\nstr(MyListofVectors)\n\nList of 3\n $ : chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n $ : num [1:7] 5 12 19 26 34 46 51\n $ : logi [1:4] TRUE TRUE FALSE TRUE\n\n\nWe can see that with the Description/Keyword list we retrieved from our flowFrame shares a somewhat similar format.\n\nstr(DescriptionList[1:10])\n\nList of 10\n $ $BEGINANALYSIS : chr \"0\"\n $ $BEGINDATA : chr \"33312\"\n $ $BEGINSTEXT : chr \"0\"\n $ $BTIM : chr \"13:55:29.85\"\n $ $BYTEORD : chr \"4,3,2,1\"\n $ $CYT : chr \"Aurora\"\n $ $CYTOLIB_VERSION: chr \"2.22.0\"\n $ $CYTSN : chr \"V0333\"\n $ $DATATYPE : chr \"F\"\n $ $DATE : chr \"04-Aug-2025\"\n\n\nBut in this case, there are also names present ($BEGINANALYSIS, $BEGINDATA, etc). What if we had tried to provide names to our List of Vectors? Would the format match?\nWhen we assigned a name to each of the vectors (by providing an equal to = ), we get the same kind of structure format to what we see in Description.\n\nMyNamedListofVectors <- list(FluorophoresNamed=Fluorophores,\n PanelAntibodyCountsNamed=PanelAntibodyCounts,\n SpecimenIndexToKeepNamed=SpecimenIndexToKeep)\n\nstr(MyNamedListofVectors)\n\nList of 3\n $ FluorophoresNamed : chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n $ PanelAntibodyCountsNamed: num [1:7] 5 12 19 26 34 46 51\n $ SpecimenIndexToKeepNamed: logi [1:4] TRUE TRUE FALSE TRUE\n\n\nWe could then subsequently be able to isolate items from that list using the $ operator.\n\nMyNamedListofVectors$\n\n\nAlternatively, we could also access by list index position\n\nMyNamedListofVectors[1]\n\n$FluorophoresNamed\n[1] \"BV421\" \"FITC\" \"PE\" \"APC\" \n\n\nRemembering back to the original output from read.FCS() we remember that it mentioned 599 keywords being in the description slot, so now we know that this is what was being referenced.", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#select-columns", - "href": "course/04_IntroToTidyverse/index.html#select-columns", - "title": "04 - Introduction to Tidyverse", - "section": "select (Columns)", - "text": "select (Columns)\nNow that we have read in our data, and have a general picture of the structure and contents, lets start learning the main dplyr functions we will be using throughout the course. To do this, lets go ahead and attach dplyr to our local environment via the library() call.\n\nlibrary(dplyr)\n\nWe will start with the select() function. It is used to “select” a column from a data.frame type object. In the simplest usage, we provide the name of our data.frame variable/object as the first argument after the opening parenthesis. This is then followed by the name of the column we want to select as the second argument (let’s place around the “” around the column name for now)\n\nDateColumn <- select(Data, \"Date\")\nDateColumn[1:10,]\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nThis results in the column being selected, resulting in the new object containing only that subsetted out column from the original Data object.\n\nPipe Operators\nWhile the above line of code works to select a column, when you encounter select() out in the wild, it will more often be in a line of code that looks like this:\n\nDateColumn <- Data |> select(\"Date\")\nDateColumn[1:10,]\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\n… “What in the world is that thing |> ?” …\nGlad you asked! An useful feature of the tidyverse packages is their use of pipes (either the original magrittr package’s “%>%” or base R version >4.1.0's “|>”“), usually appearing like this:\n\n# magrittr %>% pipe\n\nDateColumn <- Data %>% select(\"Date\")\n\n# base R |> pipe\nDateColumn <- Data |> select(\"Date\")\n\n… “How do we interpret/read that line of code?” …\nLet’s break it down, starting off just to the right of the assignment arrow (<-) with our data.frame “Data”.\n\nData\n\nWe then proceed to read to the right, adding in our pipe operator. The pipe essentially serves as an intermediate passing the contents of data onward to the subsequent function.\n\nData |> \n\nIn our case, this subsequent function is the select() function, which will select a particular column from the available data. When using the pipe, the first argument slot we saw for “select(Data,”Date”)” is occupied by the contents Data that are being passed by the pipe.\n\nData |> select()\n\nTo complete the transfer, we provide the desired column name to select() to act on (“Date” in this case)\n\nData |> select(\"Date\")\n\nIn summary, contents of Data are passed to the pipe, and select runs on those contents to select the Date column\n\nData |> select(\"Date\")\n\nOne of the main advantages for using pipes, is they can be linked together, passing resulting objects of one operation on to the next pipe and subsequent function. We can see this in operation in the example below where we hand off the isolated “Date” column to the nrow() function to determine number of rows. We will use pipes throughout the course, so you will gradually gain familiarity as you encounter them.\n\nData |> select(\"Date\") |> nrow()\n\n[1] 196\n\n\nFor those with prior R experience, you will be more familiar with the older magrittr %>% pipe. The base R |> pipe operator was introduced starting with R version 4.1.0. While mostly interchangeable, they have a few nuances that come into play for more advance use cases. You are welcome to use whichever you prefer (my current preference is |> as it’s one less key to press).\n\n\nR Quirks\n\n\n\n\n\n\nOdd R Behavior # 1\n\n\n\nWhile we used “” around the column name in our previous example, unlike what we encountered with install.packages() when we forget to include quotation marks, select() still retrieves the correct column despite Date not being an environment variable:\n\n\n\nData |> select(Date) |> head(3)\n\n Date\n1 2025-07-26\n2 2025-07-26\n3 2025-07-26\n\n\n\n\n\n\n\n\n.\n\n\n\nThe reasons for this Odd R behaviour are nuanced and for another day. For now, think of it as dplyr R package is picking up the slack, and using context to infer it’s a column name and not an environmental variable/object.\n\n\n\n\nSelecting multiple columns\nSince we are able to select one column, can we select multiple (similar to a [Data[,2:5]] approach in base R)? We can, and they can be positioned anywhere within the data.frame:\n\nSubset <- Data |> select(bid, timepoint, Condition, Tcells, `CD8+`, `CD4+`)\n\nhead(Subset, 3)\n\n bid timepoint Condition Tcells CD8+ CD4+\n1 INF0052 0 Ctrl 0.2804264 0.2734826 0.6341164\n2 INF0100 0 Ctrl 0.6748298 0.3357696 0.6119112\n3 INF0100 4 Ctrl 0.6119129 0.2862104 0.6639621\n\n\nYou will notice that the order in which we selected the columns will dictate their position in the subsetted data.frame object:\n\nSubset <- Data |> select(bid, Tcells, `CD8+`, `CD4+`, timepoint, Condition, )\n\nhead(Subset, 3)\n\n bid Tcells CD8+ CD4+ timepoint Condition\n1 INF0052 0.2804264 0.2734826 0.6341164 0 Ctrl\n2 INF0100 0.6748298 0.3357696 0.6119112 0 Ctrl\n3 INF0100 0.6119129 0.2862104 0.6639621 4 Ctrl", + "objectID": "course/03_InsideFCSFile/index.html#early-metadata", + "href": "course/03_InsideFCSFile/index.html#early-metadata", + "title": "03 - Inside an FCS File", + "section": "Early Metadata", + "text": "Early Metadata\nWithin the initial portion, we are getting back metadata keywords related to where and how the particular file was acquired. Keywords of potential interest include:\n\n\n\n\n\n\nStart Time\n\n\n\nWhat time was the .fcs file acquired\n\n\n\n\nDescriptionList$`$BTIM`\n\n[1] \"13:55:29.85\"\n\n\n\n\n\n\n\n\n\nCytometer\n\n\n\nWhat type of cytometer was the .fcs file acquired on\n\n\n\n\nDescriptionList$`$CYT`\n\n[1] \"Aurora\"\n\n\n\n\n\n\n\n\n\n\n\nCytometer Serial Number\n\n\n\nManufacturer Serial Number of the Cytometer\n\n\n\n\nDescriptionList$`$CYTSN`\n\n[1] \"V0333\"\n\n\n\n\n\n\n\n\n\nFCS File Acquisition Date\n\n\n\nWhat was the date of acquisition\n\n\n\n\nDescriptionList$`$DATE`\n\n[1] \"04-Aug-2025\"\n\n\n\n\n\n\n\n\n\n\n\nAcquisition End Time\n\n\n\nWhat time was acquisition stopped\n\n\n\n\nDescriptionList$`$ETIM`\n\n[1] \"13:55:57.02\"\n\n\n\n\n\n\n\n\n\nFile Name\n\n\n\nName of the .fcs file\n\n\n\n\nDescriptionList$`$FIL`\n\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\n\n\n\n\n\n\n\n\n\nOperator\n\n\n\nWho acquired the .fcs file\n\n\n\n\nDescriptionList$`$OP`\n\n[1] \"David Rach\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#relocate", - "href": "course/04_IntroToTidyverse/index.html#relocate", - "title": "04 - Introduction to Tidyverse", - "section": "relocate", - "text": "relocate\nAlternatively, we occasionally want to move one column. While we could respecify the location using select(), specifying the names of all the other columns out in a line of code to just to rearrange one does not sound like a good use of time. For this reason, the second dplyr function we will be learning is the relocate() function.\nLooking at our Data object, let’s say we wanted to move the Tcells column from its current location to the second column position (right after the bid column). The line of code to do so would look like:\n\nData |> relocate(Tcells, .after=bid) |> head(3)\n\n bid Tcells timepoint Condition Date infant_sex ptype root\n1 INF0052 0.2804264 0 Ctrl 2025-07-26 Male HEU-hi 2098368\n2 INF0100 0.6748298 0 Ctrl 2025-07-26 Male HEU-lo 2020184\n3 INF0100 0.6119129 4 Ctrl 2025-07-26 Male HEU-lo 1155040\n singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nSimilar to what we saw with select(), this approach can also be used for more than 1 column:\n\nData |> relocate(Tcells, Monocytes, .after=bid) |> head(3)\n\n bid Tcells Monocytes timepoint Condition Date infant_sex ptype\n1 INF0052 0.2804264 0.11796509 0 Ctrl 2025-07-26 Male HEU-hi\n2 INF0100 0.6748298 0.09477437 0 Ctrl 2025-07-26 Male HEU-lo\n3 INF0100 0.6119129 0.01545999 4 Ctrl 2025-07-26 Male HEU-lo\n root singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 2098368 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 2020184 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1155040 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Debris CD45_count\n1 587573 0.13723513 915203\n2 308583 0.13973396 1438047\n3 607477 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nWe can also modify the argument so that columns are placed before a certain column\n\nData |> relocate(Tcells, .before=Date) |> head(3)\n\n bid timepoint Condition Tcells Date infant_sex ptype root\n1 INF0052 0 Ctrl 0.2804264 2025-07-26 Male HEU-hi 2098368\n2 INF0100 0 Ctrl 0.6748298 2025-07-26 Male HEU-lo 2020184\n3 INF0100 4 Ctrl 0.6119129 2025-07-26 Male HEU-lo 1155040\n singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nAnd as we might suspect, we could specify a column index location rather than using a column name.\n\nData |> relocate(Date, .before=1) |> head(3)\n\n Date bid timepoint Condition infant_sex ptype root singletsFSC\n1 2025-07-26 INF0052 0 Ctrl Male HEU-hi 2098368 1894070\n2 2025-07-26 INF0100 0 Ctrl Male HEU-lo 2020184 1791890\n3 2025-07-26 INF0100 4 Ctrl Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D", + "objectID": "course/03_InsideFCSFile/index.html#detector-values", + "href": "course/03_InsideFCSFile/index.html#detector-values", + "title": "03 - Inside an FCS File", + "section": "Detector Values", + "text": "Detector Values\nThe next major stretch of keywords encode parameter values associated with the individual detectors for at the time of acquisition.\n\nDetectors <- DescriptionList[20:384]\nDetectors\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"\n\n\nFortunately for all involved, there is a consistently repeating pattern for the keywords corresponding to each detector. We can see that here for $P7B, $P7E, $P7N, $P7R, $P7TYPE, $P7V\n\nWhen referencing to the Flow Cytometry Standard documentation, here are what the particular keyword letters mean:\n\n\n\n\n\n\nB\n\n\n\nNumber of bits reserved for parameter number n\n\n\n\n\nDescriptionList$`$P7B`\n\n[1] \"32\"\n\n\n\n\n\n\n\n\n\nE\n\n\n\nAmplification type for parameter n. \n\n\n\n\nDescriptionList$`$P7E`\n\n[1] \"0,0\"\n\n\n\n\n\n\n\n\n\n\n\nN\n\n\n\nShort Name for parameter n. \n\n\n\n\nDescriptionList$`$P7N`\n\n[1] \"UV6-A\"\n\n\n\n\n\n\n\n\n\nR\n\n\n\nRange for parameter number n. \n\n\n\n\nDescriptionList$`$P7R`\n\n[1] \"4194304\"\n\n\n\n\n\n\n\n\n\n\n\nTYPE\n\n\n\nDetector type for parameter n. \n\n\n\n\nDescriptionList$`$P7TYPE`\n\n[1] \"Raw_Fluorescence\"\n\n\n\n\n\n\n\n\n\nV\n\n\n\nDetector voltage for parameter n. \n\n\n\n\nDescriptionList$`$P7V`\n\n[1] \"506\"\n\n\n\n\n\nWhile not immediately obvious, understanding what these keywords encoded has proven useful for our core. In our case, we have built an automated InstrumentQC dashboard for all the instruments at our core.\n\n\n\nBy extracting out from our daily QC bead .fcs files the stored N (Detector Name) and V (Gain/Voltage) values for all the individual detectors, it allows us to plot Levey-Jennings Plots for our individual instruments, giving us usually around a months warning before an individual laser begins to fail. This helps with scheduling the Field-Service Engineer visit before it starts impacting the actual data.\n\n\n\nWhile most of the detectors keywords are similar (only changing there individual name and voltage) there are a couple exceptions.\nFor the FSC/SSC parameters, instead of Raw_Fluorescence value for Type, we see the corresponding Scatter value get return. This in term is what is used by various commercial softwares to show those axis as linear instead of biexponential when selected.\n\n\n\nThis is similarly the case for the Time parameter, where in addition to Type being set to Time, the range also appears different to Raw/Scatters value.", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#rename", - "href": "course/04_IntroToTidyverse/index.html#rename", - "title": "04 - Introduction to Tidyverse", - "section": "rename", - "text": "rename\nAt this point, we are able to both move and select particular columns, allowing us to rearrange and subset a larger data.frame object however we want it to appear. However, as we encountered, some of the names contain special characters and spaces, requiring use of tick marks (``) to avoid issues. How can we change a column name?\nIn base R, we could change individual column names by assigning a new value with the assignment arrow to the corresponding column name index. For example, looking at our Subset object, wen could rename CD8+ as follows:\n\ncolnames(Subset)\n\n[1] \"bid\" \"Tcells\" \"CD8+\" \"CD4+\" \"timepoint\" \"Condition\"\n\ncolnames(Subset)[3]\n\n[1] \"CD8+\"\n\n\n\ncolnames(Subset)[3] <- \"CD8Positive\"\ncolnames(Subset)\n\n[1] \"bid\" \"Tcells\" \"CD8Positive\" \"CD4+\" \"timepoint\" \n[6] \"Condition\" \n\n\nWith the tidyverse, we can use the rename() function which removes the need to look up the column index number. The way we write the argument is placing within the parenthesis the old name to the right of the equals sign, with the new name to the left\n\nRenamed <- Subset |> rename(CD4_Positive = `CD4+`)\ncolnames(Renamed)\n\n[1] \"bid\" \"Tcells\" \"CD8Positive\" \"CD4_Positive\" \"timepoint\" \n[6] \"Condition\" \n\n\nIf we wanted to rename multiple column names at once, we would just need to include a comma between the individual rename arguments within the parenthesis.\n\nRenamed_Multiple <- Subset |> rename(specimen = bid, timepoint_months = timepoint, stimulation = Condition, CD4Positive=`CD4+`)\ncolnames(Renamed_Multiple)\n\n[1] \"specimen\" \"Tcells\" \"CD8Positive\" \"CD4Positive\" \n[5] \"timepoint_months\" \"stimulation\"", + "objectID": "course/03_InsideFCSFile/index.html#middle-metadata", + "href": "course/03_InsideFCSFile/index.html#middle-metadata", + "title": "03 - Inside an FCS File", + "section": "Middle Metadata", + "text": "Middle Metadata\nOnce we are out of the detector keywords, we find the last of the $Metadata associated keywords.\n\nDetectors <- DescriptionList[385:398]\nDetectors\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\nAmong those of potential interest\n\n\n\n\n\n\nProj\n\n\n\nOften corresponding to the experiment file name\n\n\n\n\nDescriptionList$`$PROJ`\n\n[1] \"CellCounts4L_AB_05\"\n\n\n\n\n\n\n\n\n\nSpillover\n\n\n\nWhere the internal spillover matrix is stored (we will revisit during compensation)\n\n\n\n\nDescriptionList$`$SPILLOVER`\n\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n\n\n\n\n\n\n\n\nTOT\n\n\n\nTotal events (in this case my downsampled 100 cells)\n\n\n\n\nDescriptionList$`$TOT`\n\n[1] \"100\"\n\n\n\n\n\n\n\n\n\nVolume\n\n\n\nVolume amount acquired during acquisition.\n\n\n\n\nDescriptionList$`$VOL`\n\n[1] \"30.31\"\n\n\n\n\n\n\n\n\n\nSoftware\n\n\n\nSoftware used and version\n\n\n\n\nDescriptionList$CREATOR\n\n[1] \"SpectroFlo 3.3.0\"\n\n\n\nYou will notice at this point, the keyword names including a “$” symbol have stopped, so tick marks are no longer required (except when there is a space in the name). The only $ remaining is being used as a selector for a particular item in the list.\n\nDetectors <- DescriptionList[390:398]\nDetectors\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\n\n\n\n\n\n\nFILENAME\n\n\n\nBasically the full file.path to the .fcs file of interest.\n\n\n\n\nDescriptionList$FILENAME\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n\n\n\n\n\n\n\n\nGROUPNAME\n\n\n\nThe Name assigned to the acquisition Group.\n\n\n\n\nDescriptionList$GROUPNAME\n\n[1] \"ND050\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#pull", - "href": "course/04_IntroToTidyverse/index.html#pull", - "title": "04 - Introduction to Tidyverse", - "section": "pull", - "text": "pull\nSometimes, we may want to retrieve individual values present in a column, to use within either a vector or a list. We can do this using the pull() function, which will retrieve the column contents and strip the column formatting\n\nData |> pull(Date) |> head(5)\n\n[1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nThis can be useful when we are doing data exploration, and trying to determine how many unique variants might be present. For example, if we wanted to see what days individual samples were acquired, we could pull() the data and pass it to the unique() function:\n\nData |> pull(Date) |> unique()\n\n[1] \"2025-07-26\" \"2025-07-29\" \"2025-07-31\" \"2025-08-05\" \"2025-08-07\"\n[6] \"2025-08-22\" \"2025-08-28\" \"2025-08-30\"", + "objectID": "course/03_InsideFCSFile/index.html#laser-metadata", + "href": "course/03_InsideFCSFile/index.html#laser-metadata", + "title": "03 - Inside an FCS File", + "section": "Laser Metadata", + "text": "Laser Metadata\nNext up, there is a small stretch of keywords containing the values associated with the individual lasers as far as delays and area scaling factors for a particular day (also useful when plotted).\n\nDetectors <- DescriptionList[399:410]\nDetectors\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#filter-rows", - "href": "course/04_IntroToTidyverse/index.html#filter-rows", - "title": "04 - Introduction to Tidyverse", - "section": "filter (Rows)", - "text": "filter (Rows)\nSo far, we have been working with dplyr functions primarily used when working with and subsetting columns (including select(), pull(), rename() and relocate()). What if we wanted to work with rows of a data.frame? This is where the filter() function is used.\nThe Condition column in this Dataset appears to be indicating whether the samples were stimulated. Let’s see how many unique values are contained within that column\n\nData |> pull(Condition) |> unique() \n\n[1] \"Ctrl\" \"PPD\" \"SEB\" \n\n\nIn the case of this dataset, looks like the .fcs files where treated with either left alone, treated with PPD (Purified Protein Derrivative) or SEB. What if we wanted to subset only those treated with PPD?\nWithin filter(), we would specify the column name as the first argument, and ask that only values equal to (==) “PPD” be returned. Notice in this case, “” are needed, as we are asking for a matching character value.\n\nPPDOnly <- Data |> filter(Condition == \"PPD\")\nhead(PPDOnly, 5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nWhile this works, using “==” to match can glitch, especially with character values. Using the %in% operator is a better way of identifying and extracting only the rows whose Condition column contains “PPD”\n\nData |> filter(Condition %in% \"PPD\") |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nSimilar to what we saw for select(), we can grab rows that contain various values at once. We would just need to modify the second part of the argument. If we wanted to grab rows whose Condition column contained either PPD or SEB, we would need to provide that argument as a vector, placing both within c()/\n\nData |> filter(Condition %in% c(\"PPD\", \"SEB\")) |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nAlternatively, we could have set up the vector externally, and then provided it to filter()\n\nTheseConditions <- c(\"PPD\", \"SEB\")\nData |> filter(Condition %in% TheseConditions) |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nWhile this works when we have a limited number of variant condition values, what if had many more but only wanted to exclude one value? As we saw when learning about Conditionals, when we add a ! in front of a logical value, we get the opposite logical value returned\n\nIsThisASpectralInstrument <- TRUE\n\n!IsThisASpectralInstrument\n\n[1] FALSE\n\n\nIn the context of the dplyr package, we can use ! within the filter() to remove rows that contain a certain value\n\nSubset <- Data |> filter(!Condition %in% \"SEB\")\nSubset |> pull(Condition) |> unique()\n\n[1] \"Ctrl\" \"PPD\" \n\n\nLikewise, we can also use it with the select() to exclude columns we don’t want to include\n\nSubset <- Data |> select(!timepoint)\nSubset[1:3,]\n\n bid Condition Date infant_sex ptype root singletsFSC\n1 INF0052 Ctrl 2025-07-26 Male HEU-hi 2098368 1894070\n2 INF0100 Ctrl 2025-07-26 Male HEU-lo 2020184 1791890\n3 INF0100 Ctrl 2025-07-26 Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570", + "objectID": "course/03_InsideFCSFile/index.html#display", + "href": "course/03_InsideFCSFile/index.html#display", + "title": "03 - Inside an FCS File", + "section": "Display", + "text": "Display\nThen there is a stretch matching whether a particular detector needs to be displayed as linear (in the case of time and scatter) or as log (for individual detectors).\n\nDetectors <- DescriptionList[412:472]\nDetectors\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"\n\n\nAnd a few final keywords with threshold, window scaling and other user selected settings.\n\nDetectors <- DescriptionList[473:476]\nDetectors\n\n$THRESHOLD\n[1] \"(FSC,50000)\"\n\n$TUBENAME\n[1] \"05\"\n\n$USERSETTINGNAME\n[1] \"DTR_CellCounts\"\n\n$`WINDOW EXTENSION`\n[1] \"3\"", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#mutate", - "href": "course/04_IntroToTidyverse/index.html#mutate", - "title": "04 - Introduction to Tidyverse", - "section": "mutate", - "text": "mutate\nAs we can see, with just these handful of functions, we have the building blocks to rearrange and subset a larger data.frame into a format that we prefer. But what if we wanted to alter the content of a column, or add new columns to an existing data.frame? This is where the mutate() function can be used.\nLet’s start by slimming down our current Data to a smaller workable example, highlighting the functions and pipes we learned about today\n\nTidyData <- Data |> filter(Condition %in% \"Ctrl\") |> filter(timepoint %in% \"0\") |>\n select(bid, timepoint, Condition, Date, Tcells_count, CD45_count) |>\n rename(specimen=bid, condition=Condition) |> relocate(Date, .after=specimen)\n\n\nTidyData\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n\n\nThe mutate() function can be used to modify existing columns, as well as to create new ones. For example, let’s derrive the proportion of T cells from the overall CD45 gate. To do so, within the parenthesis, we would specify a new column name, and then divide the original columns:\n\nTidyData <- TidyData |> mutate(Tcells_ProportionCD45 = Tcells_count / CD45_count)\nTidyData\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n Tcells_ProportionCD45\n1 0.18003765\n2 0.14480820\n3 0.31015921\n4 0.18540010\n5 0.23110302\n6 0.07796568\n7 0.10221747\n8 0.12578030\n9 0.08839285\n10 0.23815220\n11 0.47942008\n12 0.27147570\n13 0.26442564\n14 0.22484948\n15 0.38022498\n16 0.21845195\n17 0.22564783\n18 0.11678076\n19 0.30514067\n20 0.15261613\n21 0.04313730\n22 0.14301785\n23 0.17238666\n\n\nWe can see that we have many significant digits being returned. Let’s round this new column to 2 significant digits by applying the round() function\n\nTidyData <- TidyData |> mutate(TcellsRounded = round(Tcells_ProportionCD45, 2))\nTidyData \n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n Tcells_ProportionCD45 TcellsRounded\n1 0.18003765 0.18\n2 0.14480820 0.14\n3 0.31015921 0.31\n4 0.18540010 0.19\n5 0.23110302 0.23\n6 0.07796568 0.08\n7 0.10221747 0.10\n8 0.12578030 0.13\n9 0.08839285 0.09\n10 0.23815220 0.24\n11 0.47942008 0.48\n12 0.27147570 0.27\n13 0.26442564 0.26\n14 0.22484948 0.22\n15 0.38022498 0.38\n16 0.21845195 0.22\n17 0.22564783 0.23\n18 0.11678076 0.12\n19 0.30514067 0.31\n20 0.15261613 0.15\n21 0.04313730 0.04\n22 0.14301785 0.14\n23 0.17238666 0.17", + "objectID": "course/03_InsideFCSFile/index.html#flowcore-parameters", + "href": "course/03_InsideFCSFile/index.html#flowcore-parameters", + "title": "03 - Inside an FCS File", + "section": "flowCore Parameters", + "text": "flowCore Parameters\nDepending on the arguments selected during read.FCS(), we might also encounter additional keywords that are added in by flowCore. For example, we do not see these keywords when “transformation” is set to FALSE.\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = FALSE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot\n\n\n\nNoChange <- keyword(flowCoreCheck)\nDetectors <- NoChange [476:500]\nDetectors\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n\nBy contrast, if we had set “transformation” to TRUE:\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = TRUE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n599 keywords are stored in the 'description' slot\n\n\n\nYesChange <- keyword(flowCoreCheck)\nDetectors <- YesChange [476:500]\nDetectors\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n$transformation\n[1] \"applied\"\n\n$`flowCore_$P1Rmax`\n[1] \"272140\"\n\n$`flowCore_$P1Rmin`\n[1] \"0\"\n\n$`flowCore_$P2Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P2Rmin`\n[1] \"-111\"\n\n$`flowCore_$P3Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P3Rmin`\n[1] \"-111\"\n\n$`flowCore_$P4Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P4Rmin`\n[1] \"-111\"\n\n$`flowCore_$P5Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P5Rmin`\n[1] \"-111\"\n\n$`flowCore_$P6Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P6Rmin`\n[1] \"-111\"\n\n$`flowCore_$P7Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P7Rmin`\n[1] \"-111\"\n\n$`flowCore_$P8Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P8Rmin`\n[1] \"-26.3464946746826\"\n\n$`flowCore_$P9Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P9Rmin`\n[1] \"-111\"\n\n$`flowCore_$P10Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P10Rmin`\n[1] \"0\"\n\n$`flowCore_$P11Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P11Rmin`\n[1] \"-111\"\n\n$`flowCore_$P12Rmax`\n[1] \"4194304\"\n\n\n\n\nFor some flow cytometry R packages, you will notice when opening their exported .fcs outputs in commercial software that these flowCore keywords have ended up integrated. It is likely somewhere in the package code the author forgot to add set transformation to FALSE, which is why we are seeing these flowCore keywords after the fact.", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "03 - Inside a .FCS file" ] }, { - "objectID": "course/04_IntroToTidyverse/index.html#arrange", - "href": "course/04_IntroToTidyverse/index.html#arrange", - "title": "04 - Introduction to Tidyverse", - "section": "arrange", - "text": "arrange\nAnd while we are here, let’s rearrange the rows so that they are descending based on the Tcell proportion. We can use this by using the desc() and arrange() functions from dplyr:\n\nTidyData <- TidyData |> arrange(desc(TcellsRounded))\n\nAnd let’s go ahead and filter() and identify the specimens that had more than 30% T cells as part of the overall CD45 gate (context, these samples were Cord Blood):\n\nTidyData |> filter(TcellsRounded > 0.3)\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0032 2025-08-05 0 Ctrl 361034 753064\n2 INF0159 2025-08-07 0 Ctrl 452551 1190219\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0166 2025-08-28 0 Ctrl 225650 739495\n Tcells_ProportionCD45 TcellsRounded\n1 0.4794201 0.48\n2 0.3802250 0.38\n3 0.3101592 0.31\n4 0.3051407 0.31\n\n\nWhich is we had wanted to just retrieve the specimen IDs, we could add pull() after a new pipe argument.\n\nTidyData |> filter(TcellsRounded > 0.3) |> pull(specimen)\n\n[1] \"INF0032\" \"INF0159\" \"INF0179\" \"INF0166\"\n\n\nAnd finally, since I may want to send the data to a supervisor, let’s go ahead and export this “tidyed” version of our data.frame out to it’s own .csv file. Working within our project folder, this would look like this:\n\nNewName <- paste0(\"MyNewDataset\", \".csv\")\nStorageLocation <- file.path(\"data\", NewName)\nStorageLocation\n\n[1] \"data/MyNewDataset.csv\"\n\n\n\nwrite.csv(TidyData, StorageLocation, row.names=FALSE)", + "objectID": "course/02_FilePaths/index.html", + "href": "course/02_FilePaths/index.html", + "title": "02 - File Paths", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nWelcome to the second week of Cytometry in R! This week we will learn about file.path, namely, how to communicate to our computer (and R) where various files are stored.", "crumbs": [ "About", "Intro to R", - "04 - Intro to Tidyverse" + "02 - File Paths" ] }, { - "objectID": "course/04_IntroToTidyverse/slides.html#read.csv", - "href": "course/04_IntroToTidyverse/slides.html#read.csv", - "title": "04 - Introduction to Tidyverse", - "section": "read.csv", - "text": "read.csv\n\n\n\n\n\n\n\n\n.\n\n\nWe will start by first loading in our copied over dataset (Dataset.csv) from it’s location in the project folder. If you are following the organization scheme we have been using throughout the course, your file path will look something like this:\n\n\n\n\n\n\n\n\n\n\nthefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"" - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#data.frame", - "href": "course/04_IntroToTidyverse/slides.html#data.frame", - "title": "04 - Introduction to Tidyverse", - "section": "data.frame", - "text": "data.frame\n\n\n\n\n\n\n\n\n.\n\n\nOr alternatively using the new-to-us glimpse() function\n\n\n\n\n\n\n\nglimpse(Data)\n\nError in `glimpse()`:\n! could not find function \"glimpse\"" - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#column-value-type", - "href": "course/04_IntroToTidyverse/slides.html#column-value-type", - "title": "04 - Introduction to Tidyverse", - "section": "Column value type", - "text": "Column value type\n\n\n\n\n\n\n\n\n.\n\n\nAs we saw last week, functions often need values that match a certain type (the paintbrush needing paint analogy). As we inspect the columns of Data, we can notice some of the columns contain values within that are character (ie. “char”) values. Others appear to contain numeric values (which are subtyped as either double (“ie. dbl”) or integer (ie. “int”)). At first glance, we do not appear to have any logical (ie. TRUE or FALSE) columns in this dataset." + "objectID": "course/02_FilePaths/index.html#set-up", + "href": "course/02_FilePaths/index.html#set-up", + "title": "02 - File Paths", + "section": "Set Up", + "text": "Set Up\nBefore we begin, let’s make sure you get the data needed for today transferred to your local computer, and then get the .fcs files copied over from there to your own working project folder. This is the process you will repeat each week throughout the course.\n\nNew Repository\nFirst off, login to your GitHub account. Once there, you will select the options to create a new repository (similar to what you did during Using GitHub)\n\n\n\nFor this week, let’s set this new repository up as a private repository, and call it Week2. This will keep things consistent with the file.paths we will be showing in the examples.\n\n\n\nOnce the new repository has been created, copy the URL.\n\n\n\nNext, open up Positron, set the interpreter to use R, and then select the option to bring in a “New Folder from Git”.\n\n\n\nPaste in your new repository’s url. Additionally, if you want to match file.paths shown in the examples, set your storage location to your local Documents folder (please note the start of the file.path will look differently depending on whether you are on Windows, MacOS, or Linux).\n\n\n\nYour new repository will then be imported from GitHub. Once this is done, create two subfolders (data and images) and a new .qmd file (naming it filepaths.qmd).\n\n\n\n\n\nSync\nWith this done, return to GitHub and open your forked version of the CytometryInR course folder. If you haven’t yet done so, click on sync to bring in this week’s code and datasets.\n\n\n\nReturning to Positron, you will need to switch Project Folders, switching from Week2 over to CytometryInR.\n\n\n\n\n\nPull\nOnce CytometryInR project folder has opened, you will need to pull in the new data from GitHub to your local computer.\n\n\n\n\n\nCopy Files to Week2\nOnce this is done, you will see within the course folder, containing this weeks folder (02_FilePaths). Within it there is a data folder with .fcs files. To avoid causing conflicts when bringing in next week’s materials, you will want to manually copy over these .fcs files (via your File Explorer) to the data folder within your “Week2” Project Folder.\n\n\n\n\n\nCommit and Push\nWhen you reopen your Week2 project folder in Positron, you should now be able to see the .fcs files within the data folder. Next, from the action bar on the far left, select the Source Control tab. Stage all the changes (as was done in Using Git), and write a short commit message.\n\n\n\nWith these files now being tracked by version control, push (ie. send) your changes to GitHub so that they are remotely backed up.\n\n\n\nAnd with this setup complete, you are now ready to proceed. Remember, run code and write notes in your working project folder (Week2 or otherwise named) to avoid conflicts next week in the CytometryInR folder when you are trying to bring in the Week #3 code and datasets.", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] }, { - "objectID": "course/04_IntroToTidyverse/slides.html#select-columns", - "href": "course/04_IntroToTidyverse/slides.html#select-columns", - "title": "04 - Introduction to Tidyverse", - "section": "select (Columns)", - "text": "select (Columns)\n\n\n\n\n\n\n\n\n.\n\n\nNow that we have read in our data, and have a general picture of the structure and contents, lets start learning the main dplyr functions we will be using throughout the course. To do this, lets go ahead and attach dplyr to our local environment via the library() call.\n\n\n\n\n\n\n\nlibrary(dplyr)" + "objectID": "course/02_FilePaths/index.html#working-directory", + "href": "course/02_FilePaths/index.html#working-directory", + "title": "02 - File Paths", + "section": "Working Directory", + "text": "Working Directory\nNow that we are back in our Week2 folder, let’s start by seeing our current location similarly to how our computer perceives it.\nWe will use getwd() function (ie. get working directory) to return the location of the folder we are currently inside of. For example, when getwd() is run within my Week2 project folder, I see the following location\n\ngetwd()\n\n\nThis returns a file path. The final location (Week2 in this case) is the Working Directory. Your computer when working in R will be descern other locations in relation to this directory.", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] }, { - "objectID": "course/04_IntroToTidyverse/slides.html#relocate", - "href": "course/04_IntroToTidyverse/slides.html#relocate", - "title": "04 - Introduction to Tidyverse", - "section": "relocate", - "text": "relocate\n\n\n\n\n\n\n\n\n.\n\n\nAlternatively, we occasionally want to move one column. While we could respecify the location using select(), specifying the names of all the other columns out in a line of code to just to rearrange one does not sound like a good use of time. For this reason, the second dplyr function we will be learning is the relocate() function." - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#rename", - "href": "course/04_IntroToTidyverse/slides.html#rename", - "title": "04 - Introduction to Tidyverse", - "section": "rename", - "text": "rename\n\n\n\n\n\n\n\n\n.\n\n\nAt this point, we are able to both move and select particular columns, allowing us to rearrange and subset a larger data.frame object however we want it to appear. However, as we encountered, some of the names contain special characters and spaces, requiring use of tick marks (``) to avoid issues. How can we change a column name?" - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#pull", - "href": "course/04_IntroToTidyverse/slides.html#pull", - "title": "04 - Introduction to Tidyverse", - "section": "pull", - "text": "pull\n\n\n\n\n\n\n\n\n.\n\n\nSometimes, we may want to retrieve individual values present in a column, to use within either a vector or a list. We can do this using the pull() function, which will retrieve the column contents and strip the column formatting\n\n\n\n\n\n\n\nData |> pull(Date) |> head(10)\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"" - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#filter-rows", - "href": "course/04_IntroToTidyverse/slides.html#filter-rows", - "title": "04 - Introduction to Tidyverse", - "section": "filter (Rows)", - "text": "filter (Rows)\n\n\n\n\n\n\n\n\n.\n\n\nSo far, we have been working with dplyr functions primarily used when working with and subsetting columns (including select(), pull(), rename() and relocate()). What if we wanted to work with rows of a data.frame? This is where the filter() function is used." - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#mutate", - "href": "course/04_IntroToTidyverse/slides.html#mutate", - "title": "04 - Introduction to Tidyverse", - "section": "mutate", - "text": "mutate\n\n\n\n\n\n\n\n\n.\n\n\nAs we can see, with just these handful of functions, we have the building blocks to rearrange and subset a larger data.frame into a format that we prefer. But what if we wanted to alter the content of a column, or add new columns to an existing data.frame? This is where the mutate() function can be used." - }, - { - "objectID": "course/04_IntroToTidyverse/slides.html#arrange", - "href": "course/04_IntroToTidyverse/slides.html#arrange", - "title": "04 - Introduction to Tidyverse", - "section": "arrange", - "text": "arrange\n\n\n\n\n\n\n\n\n.\n\n\nAnd while we are here, let’s rearrange the rows so that they are descending based on the Tcell proportion. We can use this by using the desc() and arrange() functions from dplyr:\n\n\n\n\n\n\n\nTidyData <- TidyData |> arrange(desc(TcellsRounded))" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#getting-set-up", - "href": "course/03_InsideFCSFile/slides.html#getting-set-up", - "title": "03 - Inside an FCS File", - "section": "Getting Set Up", - "text": "Getting Set Up" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#flowcore", - "href": "course/03_InsideFCSFile/slides.html#flowcore", - "title": "03 - Inside an FCS File", - "section": "flowCore", - "text": "flowCore\n\n\n\n\n\n\n\n\n.\n\n\nWe will be using the flowCore package, which is the oldest and most-frequently downloaded flow cytometry package on Bioconductor." - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#flowframe", - "href": "course/03_InsideFCSFile/slides.html#flowframe", - "title": "03 - Inside an FCS File", - "section": "flowFrame", - "text": "flowFrame\n\n\n\n\n\n\n\n\n.\n\n\nFor read.FCS(), it accepts several arguments. The argument “filename” is where we provide our file.path to .fcs file that we wish to load into R. Let’s go ahead and do so\n\n\n\n\n\n\n\nread.FCS(filename=firstfile)" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#early-metadata", - "href": "course/03_InsideFCSFile/slides.html#early-metadata", - "title": "03 - Inside an FCS File", - "section": "Early Metadata", - "text": "Early Metadata\n\n\n\n\n\n\n\n\n.\n\n\nWithin the initial portion, we are getting back metadata keywords related to where and how the particular file was acquired. Keywords of potential interest include:\n\n\n\n\n\n\n\n\n\n\n\n\n\nStart Time\n\n\nWhat time was the .fcs file acquired\n\n\n\n\n\n\n\nDescriptionList$`$BTIM`\n\n[1] \"13:55:29.85\"" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#detector-values", - "href": "course/03_InsideFCSFile/slides.html#detector-values", - "title": "03 - Inside an FCS File", - "section": "Detector Values", - "text": "Detector Values\n\n\n\n\n\n\n\n\n.\n\n\nThe next major stretch of keywords encode parameter values associated with the individual detectors for at the time of acquisition.\n\n\n\n\n\n\n\nDetectors <- DescriptionList[20:384]\nDetectors\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#middle-metadata", - "href": "course/03_InsideFCSFile/slides.html#middle-metadata", - "title": "03 - Inside an FCS File", - "section": "Middle Metadata", - "text": "Middle Metadata\n\n\n\n\n\n\n\n\n.\n\n\nOnce we are out of the detector keywords, we find the last of the $Metadata associated keywords.\n\n\n\n\n\n\n\nDetectors <- DescriptionList[385:398]\nDetectors\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#laser-metadata", - "href": "course/03_InsideFCSFile/slides.html#laser-metadata", - "title": "03 - Inside an FCS File", - "section": "Laser Metadata", - "text": "Laser Metadata\n\n\n\n\n\n\n\n\n.\n\n\nNext up, there is a small stretch of keywords containing the values associated with the individual lasers as far as delays and area scaling factors for a particular day (also useful when plotted).\n\n\n\n\n\n\n\nDetectors <- DescriptionList[399:410]\nDetectors\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#display", - "href": "course/03_InsideFCSFile/slides.html#display", - "title": "03 - Inside an FCS File", - "section": "Display", - "text": "Display\n\n\n\n\n\n\n\n\n.\n\n\nThen there is a stretch matching whether a particular detector needs to be displayed as linear (in the case of time and scatter) or as log (for individual detectors).\n\n\n\n\n\n\n\nDetectors <- DescriptionList[412:472]\nDetectors\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"" - }, - { - "objectID": "course/03_InsideFCSFile/slides.html#flowcore-parameters", - "href": "course/03_InsideFCSFile/slides.html#flowcore-parameters", - "title": "03 - Inside an FCS File", - "section": "flowCore Parameters", - "text": "flowCore Parameters\n\n\n\n\n\n\n\n\n.\n\n\nDepending on the arguments selected during read.FCS(), we might also encounter additional keywords that are added in by flowCore. For example, we do not see these keywords when “transformation” is set to FALSE.\n\n\n\n\n\n\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = FALSE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot" - }, - { - "objectID": "course/02_FilePaths/Downsampler.html", - "href": "course/02_FilePaths/Downsampler.html", - "title": "Downsampling", - "section": "", - "text": "Due to trying to keep the overall file size down, I am downsampling to 100 events. For anyone interested in how I did this, this Quarto Markdown Document contains the code needed to repeat the process." - }, - { - "objectID": "course/02_FilePaths/Downsampler.html#specify-file.path-and-identify-files", - "href": "course/02_FilePaths/Downsampler.html#specify-file.path-and-identify-files", - "title": "Downsampling", - "section": "Specify file.path and identify files", - "text": "Specify file.path and identify files\nDue to the counts being conducter on two separate instruments, the number of columns differs, so they will need to be loaded into separate GatingSet objects.\n\nStorageLocation <- file.path(\"course\", \"02_FilePaths\", \"data\")\nExisting <- list.files(StorageLocation, pattern=\".fcs\", full.names=TRUE)\nList1 <- Existing[1:2] # 3L Aurora\nList2 <- Existing[3:8] # 4L Aurora" - }, - { - "objectID": "course/02_FilePaths/Downsampler.html#load-.fcs-files-into-a-gatingset", - "href": "course/02_FilePaths/Downsampler.html#load-.fcs-files-into-a-gatingset", - "title": "Downsampling", - "section": "Load .fcs files into a GatingSet", - "text": "Load .fcs files into a GatingSet\nLoad in files to their respective GatingSet objects\n\ncs1 <- load_cytoset_from_fcs(List1, truncate_max_range = FALSE, transformation = FALSE)\ngs1 <- GatingSet(cs1)\n\ncs2 <- load_cytoset_from_fcs(List2, truncate_max_range = FALSE, transformation = FALSE)\ngs2 <- GatingSet(cs2)" + "objectID": "course/02_FilePaths/index.html#directories", + "href": "course/02_FilePaths/index.html#directories", + "title": "02 - File Paths", + "section": "Directories", + "text": "Directories\nWithin this working directory, we have a variety of project folders and files related to the course. We can see the folders that are present using the list.dirs() function.\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)\n\n\nWithin this list.dirs() function, we are specifying two arguments with which we will be working with later today, full.names and recursive. For now, lets set their arguments to FALSE, which means they conditions they implement are inactive (turned off).\n\n\nThe path argument is currently set to “.”, which is a stand-in for the present directory. In R, if an argument is not specified directly, it is inferred based on an order of expected arguments. Thus, if not present, we could still get the same output as seen before.\n\nlist.dirs(full.names=FALSE, recursive=FALSE)\n\n\n\n\nWithin Positron, in addition to visible folders, we also have hidden folders (denoted by the “.” in front of the folder name when using list.dirs()). In the case of one of our course website folders, we can see a “.quarto” folder shown in a lighter gray . The “.git” folder we saw from list.dirs() is typically hidden when viewing from Positron.\n\nIn the case of Week2, the two not-hidden folders we created are listed. We will see how to navigate these in a second.", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] }, { - "objectID": "course/01_InstallingRPackages/index.html", - "href": "course/01_InstallingRPackages/index.html", - "title": "01 - Installing R Packages", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nWelcome to the first week of Cytometry in R! This week we will be diving into how R packages work, and the how to go about installing them.\nBefore getting started, please make sure you have completed the creating a GitHub and Workstation Setup walk-throughs, since we will begin where they left off once the required software was successfully installed.", + "objectID": "course/02_FilePaths/index.html#variables", + "href": "course/02_FilePaths/index.html#variables", + "title": "02 - File Paths", + "section": "Variables", + "text": "Variables\nBefore exploring file paths, we need to have some basic R code knowledge that we can use to work with them. Within R, we have the ability to assign particular values (be they character strings, numbers or logicals) to objects (ie. variables) that can be used when called upon later.\nFor example:\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\nIn this case, the variable name is what the assignment arrow (“<-”) is pointing at. In this case, WhatDayDidIWriteThis\n\n\nWhen we run this, we create a variable, that will appear within the right-sidebar.\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\n\n\n\nThese variables can subsequently be retrieved by printing (ie. running) the name of the variable\n\nWhatDayDidIWriteThis \n\n[1] \"Saturday\"\n\n\n\n\nYou can create variables with almost any name you can think of\n\nTopSecretMeetingDay <- \"Saturday\"\n\n\n\nWith a few exceptions. R doesn’t play well with spaces:\n\nTop Secret Meeting Day <- \"Saturday\"\n\nError in parse(text = input): <text>:1:5: unexpected symbol\n1: Top Secret\n ^\n\n\n\n\nBut does play well with underscores:\n\nTop_Secret_Meeting_Day <- \"Saturday\"\n\n\n\nThe above (with individual words separated by _) is collectively known as snake case. The alternate way to help delineate variable names is “camelCase”, with first letter of each word being capitalized (seen in the previous example).\n\n\n\n\nTopSecretMeetingDay\n\n[1] \"Saturday\"\n\n\n\n\nYou can overwrite a Variable name by assigning a different value to it:\n\nTopSecretMeetingDay <- \"Monday\"\n\n\nTopSecretMeetingDay\n\n[1] \"Monday\"\n\n\n\n\nYou can also remove individual variables via the rm function\n\nrm(Top_Secret_Meeting_Day)\n\n\n\nOr if trying to remove all, via the right sidebar\n\n\n\nIn the prior case, we are creating a variable that is a “string” of character values, due to our use of “” around the word. We can see this when we use the str() function.\n\nFluorophores <- \"FITC\"\nstr(Fluorophores)\n\n chr \"FITC\"\n\n\nThe “chr” in front denotating that Fluorophores contains a character string.\n\n\nThis could also be retrieved using the class() function.\n\nclass(Fluorophores)\n\n[1] \"character\"\n\n\n\n\nAlternatively, we could assign a numeric value to a variable\n\nFluorophores <- 29\nstr(Fluorophores)\n\n num 29\n\n\nWhich returns “num”, ie. numeric.\n\n\nWe can also specify a logical (ie. True or FALSE) to a particular object\n\nIsPerCPCy5AGoodFluorophore <- FALSE\nstr(IsPerCPCy5AGoodFluorophore)\n\n logi FALSE\n\n\nWhich returns logi in front, denoting this variable contains a logical value.\n\n\nLast week, when we were installing dplyr, the reason that installation failed was install.packages() expects a character string. However, when we left off the ““, it looked within our local environments created variables for the dplyr variable, couldn’t find it, and thus failed.\nWe could of course, have assigned a character value to a variable name, and then used that variable name, which would have worked.\n\nPackageToInstall <- \"dplyr\"\n\ninstall.packages(PackageToInstall)", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#set-up", - "href": "course/01_InstallingRPackages/index.html#set-up", - "title": "01 - Installing R Packages", - "section": "Set Up", - "text": "Set Up\nAlright, with the background out of the way, let’s get started!\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure to sync your forked version of the CytometryInR repository, and pull any changes to your local computer’s CytometryInR project folder so that you have the most recent version of the code and data available.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nPlease remember to always copy over the new material from your local CytometryInR folder to a separate Project Folder that you created and named (ex. “Week_01” or “MyLearningFolder”, etc.). This will ensure any edits you make to the files do not affect your ability to bring in next week’s materials to the CytometryInR folder\n\n\n\n\nAfter pulling the new data and code locally, open CytometryInR, open the course folder, and open the 01_InstallingRPackages folder. From here, copy the index.qmd file to your own working Project Folder (ex. Week_01) where you can work on it without causing any conflicts. Then return to Positron and open up your working project folder (ex. Week_01).\n\n\n\nNext up, within Positron, let’s make sure to select R as the coding language being used for this session.\n\n\n\nNow that R is running within Positron, the console (lower portion of the screenn) is now able to run (ie. execute) any R code that is sent to it.", + "objectID": "course/02_FilePaths/index.html#indexing", + "href": "course/02_FilePaths/index.html#indexing", + "title": "02 - File Paths", + "section": "Indexing", + "text": "Indexing\nNot all variables contain single objects.\nFor example, we can modify Fluorophores and add additional entries:\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nstr(Fluorophores)\n\n chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n\n\nThe c stands for concatenate. It concatenates the objects into a larger object, known as a vector.\nIn this case, you notice in addition to the specification the values are characters, we get a [1:4], denoting four objects are present.\n\n\nWe can similarly retrieve this information using the length() function\n\nlength(Fluorophores)\n\n[1] 4\n\n\n\n\nWhen multiple objects are present, we can specify them individidually by providing their index number within square brackets [].\n\nFluorophores[1]\n\n[1] \"BV421\"\n\n\n\n\n\nFluorophores[3]\n\n[1] \"PE\"\n\n\n\n\nOr specify in sequence using a colon (:)\n\nFluorophores[3:4]\n\n[1] \"PE\" \"APC\"\n\n\n\n\nOr if not adjacent, reusing c within the square brackets\n\nFluorophores[c(1,4)]\n\n[1] \"BV421\" \"APC\" \n\n\n\n\nWe will revisit these concepts throughout the course, with what we have covered today, this will help us create file.paths and select fcs files that we want to work with via index number.", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#checking-for-loaded-packages", - "href": "course/01_InstallingRPackages/index.html#checking-for-loaded-packages", - "title": "01 - Installing R Packages", - "section": "Checking for Loaded Packages", - "text": "Checking for Loaded Packages\nFor the contents (ie. the functions) of an R package to be available for your computer to use, they must first be activated (ie. loaded) into your local environment. We will first learn how to check what R packages are currently active.\n\n\n\nAccessing Help Documentation\nWithin your own index.qmd (or a new .qmd file that you created), type out/copy-paste the following sessionInfo() function:\n\nsessionInfo()\n\n\n\nIf you hover over the line of code within Positron, you will glimpse the help file for the particular function you are hovering over.\n\n\n\nIn this case, we can see the help documentation corresponding for sessionInfo(). Beyond hovering over the function, this can also be accessed by adding a ? directly in front of the function, and then running that line of code.\n\n?sessionInfo()\n\n\n\n\nWhen executed, the function’s help file documentation will open up within the Help tab in the secondary side bar on the right-side of the screen. Glancing at the top of the page we can see the name of the package that contains the sessionInfo() function ({utils}). Scrolling down the help page past all the documentation, we can see a link to the index page.\n\n\n\nAfter clicking, the Help tab switches from viewing the documentation for the sessionInfo() function, to showing all the functions within the utils package. Most R packages contain help documentation, so this process can be adapted to find out additional information about what a function does, and what arguments are needed to produce customized outputs.\n\n\n\n\n\nsessionInfo()\nWithin your .qmd file, let’s go ahead and run the following code-block:\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] htmlwidgets_1.6.4 BiocManager_1.30.27 compiler_4.5.2 \n [4] fastmap_1.2.0 cli_3.6.5 tools_4.5.2 \n [7] htmltools_0.5.9 otel_0.2.0 yaml_2.3.12 \n[10] rmarkdown_2.30 knitr_1.51 jsonlite_2.0.0 \n[13] xfun_0.56 digest_0.6.39 rlang_1.1.7 \n[16] evaluate_1.0.5 \n\n\n\n\nThe outputs that get returned by sessionInfo() will vary a bit depending on your computer’s operating system, and the version of R you have installed.\nFor today, let’s focus on the last two elements of the output:\n\n\n\nThe R software itself is made up of several base R packages, that are loaded automatically. These contain everything you need to read, write and run R code on your computer. You can see these packages are the stats, graphics, grDevices, utils, datasets, methods and base packages.\nAs we install additional R packages and load them using the library() function throughout this session, sporadically re-run sessionInfo() to see how this list of R packages changes.", + "objectID": "course/02_FilePaths/index.html#listing-files", + "href": "course/02_FilePaths/index.html#listing-files", + "title": "02 - File Paths", + "section": "Listing Files", + "text": "Listing Files\nAfter this detour into variables and indexing, let’s return our focus to how to use these in context of file paths. Working from within our Week2 project folder, let’s see what directories (folders) are present\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)\n\n\n\n\nWe can also list any files that are present within our working directory using the list.files() function.\n\nlist.files()\n\n\nIn this case, in addition to our filepaths.qmd file, we can see the LICENSE and README files created when we set up the repository.\n\n\nWe can also specify a particular folder we want to show items present within by changing the path argument. For example, if we wanted to see the contents of the “data” folder\n\nlist.files(path=\"data\", full.names=FALSE, recursive=FALSE)\n\n\nWhich in this case returns the fcs files we copied over at the start of this lesson.\n\n\nIn this case, there are no folders under “data”. Let’s go ahead and create a new one, calling it target.", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#installing-from-cran", - "href": "course/01_InstallingRPackages/index.html#installing-from-cran", - "title": "01 - Installing R Packages", - "section": "Installing from CRAN", - "text": "Installing from CRAN\nWe will start by installing R packages that are part of the CRAN repository. This is the main R package repository, being part of the broader R software project. In the context of this course, R packages that work primarily with general data structure (rows, columns, matrices, etc.) or visualizations will predominantly be found within this repository.\nThese include the tidyverse packages. These packages have collectively made R easier to use by smoothing out some of the rough edges of base R, which is why R has seen major growth within the last decade. We will be installing several of these R packages today.\n\n\n\ndplyr\nOur first R package we will install during this session is the dplyr package. Since it is hosted on the CRAN repository, to install it, we will need to use the CRAN-specific installation function install.packages().\n\n?install.packages()\n\n\n\n\nFor the install.packages() function, we place within the () the name of the R package from CRAN that we wish to install.\n\ninstall.packages(\"dplyr\")\n\n\n\n\n\n\n\n\n\nTip\n\n\n\nA usual struggle point for beginners is that install.packages() requires ” ” to be placed around the package name. Forgetting them results in the error that we see below.\n\n\n\ninstall.packages(dplyr)\n\nError:\n! object 'dplyr' not found\n\n\n\n\n\ninstall.packages(\"dplyr\")\n\nGo ahead and click on “Run Cell” next to your code-block, to install the dplyr R package.\n\n\nWhen a package starts to install, you will see your console start to display text resembling that seen in the image below (varying a bit depending on your computers operating system).\n\n\n\nWithin this opening scrawl, you will see the location on your computer the R package is being installed to, as well as the file location for the R package being retrieved on CRAN.\nIf the package is successfully located, your computer will proceed to first download, then unpack (ie. unzip) it, before attempting to install to the target folder.\n\n\n\nThe final steps of the installation process involved various steps to verify everything was copied successfully, the help documentation assembled, and that the R package is capable of being loaded. If this is the case, you will see the “Done” line appear, as well as a mention where the original downloaded source package files has been stashed (usually a temp folder).\n\n\n\n\nAttaching packages via library()\nIf an R package has been installed successfully, we are now able to load it (ie. make it’s functions available) to our local environment using the library() function.\n\n?library()\n\n\n\nUnlike install.packages(), where we needed “” around the package name, the library() function does not require “” around the package name. Let’s go ahead and load in dplyr, making its respective functions to our local environment.\n\nlibrary(dplyr)\n\n\nAttaching package: 'dplyr'\n\n\nThe following objects are masked from 'package:stats':\n\n filter, lag\n\n\nThe following objects are masked from 'package:base':\n\n intersect, setdiff, setequal, union\n\n\n\n\nFrom the output, we can see that dplyr has been attached. There are also a couple functions within dplyr that have identical names to functions within the stats and base packages. To avoid confusion, these 6 functions are masked, which is why we get the additional messages.\nWith dplyr now loaded via the library() call, let’s check sessionInfo() to see what has changed.\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] dplyr_1.2.0 BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 \n [4] tidyselect_1.2.1 xfun_0.56 magrittr_2.0.4 \n [7] glue_1.8.0 tibble_3.3.1 knitr_1.51 \n[10] pkgconfig_2.0.3 htmltools_0.5.9 generics_0.1.4 \n[13] rmarkdown_2.30 lifecycle_1.0.5 cli_3.6.5 \n[16] vctrs_0.7.1 compiler_4.5.2 tools_4.5.2 \n[19] evaluate_1.0.5 pillar_1.11.1 yaml_2.3.12 \n[22] otel_0.2.0 BiocManager_1.30.27 rlang_1.1.7 \n[25] jsonlite_2.0.0 htmlwidgets_1.6.4 \n\n\n\n\nSimilar to what was seen for the base R packages, dplyr is now attached. This means we should theoretically now have access to all its functions. We can verify this by seeing if we can look up the dplyr packages select() function and it’s respective help page.\n\n?select\n\n\n\n\nSince its parent package has been attached to our local environment (via the library() call), we can see dplyr functions appear as suggestions as we begin to type.\nBy contrast, is we check for the ggplot() function from the ggplot2 package (which we haven’t yet installed or attached via library()), no suggestions will pop up.\n\n?ggplot\n\nNo documentation for 'ggplot' in specified packages and libraries:\nyou could try '??ggplot'\n\n\n\n\nBeyond individual functions, some R packages also have help landing pages, that can be similarly accessed by adding a ? in front of the package name:\n\n\n\n\n\nUnattaching\nSo far, we have installed an R package, and then attached it (via library()). How would we reverse these steps?\nWell, to unload it from the local environment, there are a couple options. You could of course simply shut down Positron. The local environment only exist in context of when you open and close the session, which closing the program will do. All previously loaded R packages will be unattached, which is why when you start a new session you will need to load in all packages you plan on using via library().\nAlternatively, although less used, you could detach() it via your console:\n\ndetach(\"package:dplyr\", unload=TRUE)\n\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 \n [4] tidyselect_1.2.1 xfun_0.56 magrittr_2.0.4 \n [7] glue_1.8.0 tibble_3.3.1 knitr_1.51 \n[10] pkgconfig_2.0.3 htmltools_0.5.9 generics_0.1.4 \n[13] rmarkdown_2.30 lifecycle_1.0.5 cli_3.6.5 \n[16] vctrs_0.7.1 compiler_4.5.2 tools_4.5.2 \n[19] evaluate_1.0.5 pillar_1.11.1 yaml_2.3.12 \n[22] otel_0.2.0 BiocManager_1.30.27 rlang_1.1.7 \n[25] jsonlite_2.0.0 htmlwidgets_1.6.4 \n\n\n\n\nLooking at the sessionInfo() output, dplyr is no longer attached to the local environment. Consequently, if we try to once again look for the documentation, no information will be retrieved.\n\n?dplyr\n\nNo documentation for 'dplyr' in specified packages and libraries:\nyou could try '??dplyr'\n\n\n\n\nThere is a workaround however, if we want to access functions from an unloaded R package. We can specify the R package’s name, followed by two :, and then the function name. The :: conveys the context to your computer that the package is present, but may not be attached.\n\n?dplyr::select()\n\nThis particular use case can be useful if we want to run a particular function, but not load in all a packages functions (which may have identical function names to other R packages we are using and cause some conflicts).\n\n\n\n\nRemoving Packages\nJust as we can install an R package, we can also uninstall an R package (although doing so is rare, most often when encountering package dependency conflict). To do so, we would use the remove.packages() function.\n\n?remove.packages()\n\n\nremove.packages(\"dplyr\")\n\nThis results in the package being removed entirely from our computer. We would then need to reinstall it if needed in the future.\n\n\n\n\nCommon Issues\nAs previously mentioned, CRAN is the main repository for R packages. But what if we tried to install an R package that is only found on Bioconductor or via GitHub using the install.packages() function?\nTo see what occurs, let’s try installing the PeacoQC package (which is found on Bioconductor).\n\ninstall.packages(\"PeacoQC\")\n\nInstalling package into '/home/david/R/x86_64-pc-linux-gnu-library/4.5'\n(as 'lib' is unspecified)\n\n\nWarning: package 'PeacoQC' is not available for this version of R\n\nA version of this package for your version of R might be available elsewhere,\nsee the ideas at\nhttps://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages\n\n\n\n\nAs you can see, the initial warning message suggest that PeacoQC is not available for your version of R. When I first started trying to learn R on my own during COVID, this particular message was the bane of my existence and I couldn’t figure out what was going on.\nThis is just a default warning message, that would apply for both a package having a version mismatch, but also shown when trying to install packages that are not found on CRAN.", + "objectID": "course/02_FilePaths/index.html#creating-directories", + "href": "course/02_FilePaths/index.html#creating-directories", + "title": "02 - File Paths", + "section": "Creating directories", + "text": "Creating directories\nAlternatively, we can also create a folder via R using the dir.create() function. Since we want it within data, we would modify the path accordingly\n\nNewFolderLocation <- file.path(\"data\", \"target2\")\n\ndir.create(path=NewFolderLocation)\n\n\n\n\nBefore continuing, let’s copy the first two .fcs files into both target and target2.\n\n\n\nGiven our working directory is set the top-level of the Week2 project folder, we can’t just check inside nested target folders directly. If we attempt to:\n\nlist.files(path=\"target\", full.names=FALSE, recursive=FALSE)\n\ncharacter(0)\n\n\n\n\nNo files are returned (ie, character(0)), since from our computers perspective, “target” doesn’t exist within the active working directory.\n\nfile.exists(\"target\")\n\n[1] FALSE\n\n\n\n\nOn the other hand, within it’s view, it knows that the data folder exist\n\nfile.exists(\"data\")\n\n\nSo here we encounter the first challenge when communicating to our computer where to search for and find files. We need to provide a file.path that incorporates the path of folders between where the computer is currently at (ie. the working directory) and the target file itself.", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#installing-from-bioconductor", - "href": "course/01_InstallingRPackages/index.html#installing-from-bioconductor", - "title": "01 - Installing R Packages", - "section": "Installing from Bioconductor", - "text": "Installing from Bioconductor\nBioconductor is the second R package repository we will be working with throughout the course. While it contains far fewer packages than CRAN, it contains packages that are primarily used by the biomedical sciences. Following this link you can find it’s current flow and mass cytometry R packages.\nBioconductor R packages differ from CRAN R packages in a couple of ways. Bioconductor has different standards for acceptance than CRAN. They usually contain interoperable object-types, put more effort into documentation and continous testing to ensure that the R package remains functional across operating systems.\n\n\nTo install an R package that is located on Bioconductor, we first need to install the BiocManager package from CRAN. This package will allow us to install Bioconductor packages from their respective repository.\n\ninstall.packages(\"BiocManager\")\n\n\n\nOnce BiocManager is installed, we can attach it to our local environment using the library() function\n\nlibrary(BiocManager)\n\n\n\nWhen loaded, you will see an output showing the current Bioconductor and R versions.\nWe can then use BiocManager’s install() function to go back and install PeacoQC().\n\n\n\n\n\n\nTip\n\n\n\nAs always, don’t forget the “” when running an install() command.\n\n\n\n?install()\n\n\ninstall(\"PeacoQC\")\n\n\n\nWe see a similar opening sequence of installation steps as what we saw when installing the dplyr package from CRAN. However, in this case, several package dependencies (rjson, GlobalOptions, etc.) are present. Consequently, you can see these packages are also being downloaded from their respective repositories (either CRAN or Bioconductor), then unzipped and assembled before PeacoQC undergoes installation.\n\n\n\n\n\n\nNote\n\n\n\nBehind the scenes, within an R package, what package dependencies need to be installed are specified through the Description and Namespace files. If a package name is removed from these files, it will not be installed during the installation process\n\n\n\n\n\nWithin the scrawl of installation outputs, we can see individual dependencies undergoing installation similar to what we saw with dplyr, with a “Done (packagename)” being printed upon successful installation.\n\n\n\nThis process continues for each dependency being installed.\n\n\n\nAnd finally, once all the dependencies are installed, PeacoQC starts to install.\n\n\n\nOccasionally, during installation, you will see a pop-up windown like this one in the console. This let’s you know that some of the package dependencies have newer updated versions that are available to download. We are prompted to select between updating all, some or none. You will need to specify via the console how you want to proceed, by typing and entering one of the suggested options [a/s/n].\n\n\n\nAlternatively you may encounter a pop-up that resembles this one. Unlike the a/s/n output, we would need to provide a number for our intended choice. In this case, I went ahead and skipped all updates by typing 3 into the console, then hitting enter.\n\n\n\nGenerally, it’s okay to update if you have the time. Updates generally consist of minor improvements or bug fixes, that shouldn’t cause major issues. If you are short on time, you can go ahead and select skip the update by entering the value (n) for the none option.\n\n\n\nWith PeacoQC has been installed, we can load it via the library() call\n\n\n\n\n\n\nTip\n\n\n\nRemeber, library() doesn’t require ” ”\n\n\n\nlibrary(PeacoQC)\n\n\n\nAnd we can check to see if it has been attached to the local environment\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27 BiocStyle_2.38.0 \n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] htmlwidgets_1.6.4 IRanges_2.44.0 clue_0.3-66 \n[49] cluster_2.1.8.1 pkgconfig_2.0.3 pillar_1.11.1 \n[52] gtable_0.3.6 data.table_1.18.2.1 glue_1.8.0 \n[55] xfun_0.56 tibble_3.3.1 tidyselect_1.2.1 \n[58] knitr_1.51 farver_2.1.2 rjson_0.2.23 \n[61] htmltools_0.5.9 rmarkdown_2.30 compiler_4.5.2 \n[64] S7_0.2.1 \n\n\n\n\nAs you may have noticed, the section of loaded via namespace (but not attached) packages has grown larger. These packages are dependencies for the attached packages (dplyr, BiocManager and PeacoQC). Since the functions within these dependencies are only used selectively by the attached packages, they do not need to be active within the local environment.\n\n\n\nTo see what packages are installed (but not yet loaded), we can use the installed.packages() function to return a list of R packages for your computer.\n\ninstalled.packages()", + "objectID": "course/02_FilePaths/index.html#file-paths", + "href": "course/02_FilePaths/index.html#file-paths", + "title": "02 - File Paths", + "section": "File Paths", + "text": "File Paths\nOne way we can do this is through a file.path argument. We could potentially provide this by adding either a / or a  into the path argument, depending on your computers operating system.\n\nlist.files(path=\"data/target\", full.names=FALSE, recursive=FALSE)\n\n\n\nWhile this works in your particular context, if you are sharing the code with others who have a different operating system, these hard-coded “/” or “\" will cause the code for them to error out at these particular steps.\n\nFor that reason, it is better to assemble a file.path using the file.path() function. This function takes into account the operating system, removing your need to have to worry about this particular computing nuance, and write code that is reproducible and replicable for everyone.\n\nFolderLocation <- file.path(\"data\", \"target\")\nFolderLocation\n\n[1] \"data/target\"\n\n\n\nlist.files(path=FolderLocation, full.names=FALSE, recursive=FALSE)\n\n\n\n\nWe can also append additional locations to existing file paths, by including the variable name within the file.path() we are creating.\n\nFolderLocation <- \"data\"\nScreenshotFolder <- file.path(FolderLocation, \"target\")\nScreenshotFolder\n\n[1] \"data/target\"\n\n\n\nlist.files(path=ScreenshotFolder, full.names=FALSE, recursive=FALSE)\n\n\n\n\nAdditionally, list.files() has the ability to filter for files that contain a particular character string. This can be useful is we are searching for “.fcs” or “.csv” files, but also for files that contain a particular word. In the case of the ScreenshotFolders\n\nlist.files(path=ScreenshotFolder, pattern=\"ND050\", full.names=FALSE, recursive=FALSE)\n\n\nYou will notice, the index numbers are in the context of what is filtered, not all the folder contents.", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#install-from-github", - "href": "course/01_InstallingRPackages/index.html#install-from-github", - "title": "01 - Installing R Packages", - "section": "Install from GitHub", - "text": "Install from GitHub\nIn addition to the CRAN and Bioconductor repositories, individual R packages can also be found on GitHub hosted on their respective developers GitHub accounts. Newer packages that are still being worked on (often in the process of submission to CRAN or Bioconductor) can be found here, as well as those where the author decided not to bother with a review process, and just made the packages immediately available, warts and all.\n\n\nWhile many gems of R packages can be found on GitHub, there are also a bunch of R packages that due to deprecation since when they were published and released have stopped working. This is often the case for R packages that are not maintained, which is why it’s useful to check the commits and issues pages to see when the last contribution occurred. We will take a closer look at how to do so later on.\n\n\nTo install packages from GitHub, you will need the remotes package, which can be found on CRAN.\n\n\n\n\n\n\nSpot Check #1\n\n\n\nTo install a package from CRAN, what function would you use? Click on the code-fold arrow below to reveal the answer.\n\n\n\n\nCode\ninstall.packages(\"remotes\")\n\n\n\n\nWith the remotes package now installed, we can attach it to our local environment.\n\n\n\n\n\n\nSpot Check #2\n\n\n\nWhat function would be used to do so?\n\n\n\n\nCode\nlibrary(remotes)\n\n\n\n\nAnd finally, we can use the install_github() function to download R packages from the invidual developers GitHub account.\n\n\n\n\n\n\nSpot Check #3\n\n\n\nHow would you look up the help documentation for this function?\n\n\n\n\nCode\n# Either by hovering over it within Positron or via\n\n?install_github()\n\n\n\n\nWe will be installing a small R package flowSpectrum for this example. It’s one of the packages created by Christopher Hall, whose small series of Flow Cytometry Data Analysis in R tutorials were immensely useful when I was first getting started learning R. flowSpectrum can be used to generate spectrum-style plots for spectral flow cytometry data.\n\n\n\nTo install an R package from GitHub, we first need the GitHub username (so hally166 in this case), which is followed by a “/”, and then the name of the package repository (so flowSpectrum in this case). Our code should consequently be:\n\ninstall_github(\"hally166/flowSpectrum\")\n\n\n\nWhen installing from GitHub, the opening installation scrawl will look different. Unlike R packages from CRAN or Bioconductor, which are usually shipped in an assembled binary format, R packages from GitHub start off as source code. So the first steps shown in the scrawl are the process of converting them to binary before proceeding.\nThis process of building R packages from source code is one of the reasons we needed to install Rtools (for Windows users) or Xcode Developer Tools (for MacOS) for this course. We will look at this topic in greater depth later in the course when we talk about creating R packages.", + "objectID": "course/02_FilePaths/index.html#selecting-for-patterns", + "href": "course/02_FilePaths/index.html#selecting-for-patterns", + "title": "02 - File Paths", + "section": "Selecting for Patterns", + "text": "Selecting for Patterns\nIf we currently listed the files within data, we get a return that looks like this:\n\nlist.files(\"data\", full.names=FALSE, recursive=FALSE)\n\n\n\n\nAs you can see, we are getting back both folders and individual .fcs files. We could consequently change the pattern to provide a character string that will only return the .fcs files. We will go ahead and assign this list to a variable named files, for later retrieval.\n\nfiles <- list.files(\"data\", pattern=\".fcs\", full.names=FALSE, recursive=FALSE)\nfiles\n\n\n\n\nOne of the R packages we will be using througout the course is the stringr package. It contains two functions that can be useful when identifying more complicated character strings. In this case, if we run the str_detect() function to identify which of the .fcs files within the files variable contains the “INF” character string, we get a vector of logical (ie. True or FALSE) outputs corresponding to each file.\n\n# install.packages(\"stringr\") # CRAN\nlibrary(stringr)\n\n\nstr_detect(files, \"INF\")\n\n\n\n\nSimilar to how we indexed the Fluorophore list (ex. Fluorophore[1:2]) which returned a subset, we can similarly use this logical vector to subset files that returned as TRUE for containing the pattern “INF”\n\nfiles[str_detect(files, \"INF\")]\n\n\n\n\nLet’s go ahead and save these subsetted file names to a new variable, called Infants.\n\nInfants <- files[str_detect(files, \"INF\")]", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#troubleshooting-install-errors", - "href": "course/01_InstallingRPackages/index.html#troubleshooting-install-errors", - "title": "01 - Installing R Packages", - "section": "Troubleshooting Install Errors", - "text": "Troubleshooting Install Errors\nWe have now installed three R packages, dplyr, PeacoQC, and flowSpectrum. In my case, I did not encounter any errors during the installation. However, sometimes a package installation will fail due to an error encountered during the installation process. This can be due to a number of reasons, ranging from a missing dependency, or an update that caused a conflict. While these can occur for CRAN or Bioconductor packages, they are more frequently seen for GitHub packages where the Description/Namespace files may not have been fully updated yet to install all the required dependencies.\nWhen encountering an error, start of by first reading through the message to see if you can parse any useful information about what package failed to install, and if it list the missing dependency packages name. The later was the case in the error message example shown below.\n\n\n\nIf you encounter an installation error this week, please take screenshots of the error message and post them to this Discussion. This will help us troubleshoot your installation, as well as provide additional examples of installation errors that will be used to update this section in the future.", + "objectID": "course/02_FilePaths/index.html#conditionals", + "href": "course/02_FilePaths/index.html#conditionals", + "title": "02 - File Paths", + "section": "Conditionals", + "text": "Conditionals\nOne useful thing is that within R, we can set conditions on whether something is carried out. The most typical conditional you will encounter are the “If” statements. They typically take a form that resembles the following.\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n\n\nIn this case of the above, if the variable within the () is equal to true, the code within the {} will be executed.\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n[1] \"Take a break\"\n\n\n\n\nBy contrast, when the variable within the () is equal to false, the code within the {} will not be executed.\n\nNeedCoffee <- FALSE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n\n\nThese “If” statements will trigger as long as the specified condition within the () is TRUE. For a different example:\n\nRowNumber <- 299\n2 + RowNumber > 300\n\n[1] TRUE\n\n\n\nif (2 + RowNumber > 3){\n print(\"Stop Iterating\")\n}\n\n[1] \"Stop Iterating\"\n\n\n\n\nWhen you add an ! in front a conditional, it flips the expected outcome.\n\nItsRaining <- TRUE\n\nif (ItsRaining){print(\"Bring an Umbrella\")}\n\n[1] \"Bring an Umbrella\"\n\n\n\n!ItsRaining\n\n[1] FALSE\n\n\n\nif (!ItsRaining){print(\"Bring an Umbrella\")}\n\n\nItsRaining <- TRUE\n\nif (!ItsRaining){print(\"Bring Sunglasses\")}\n\n\n\nWe will explore more complicated conditionals throughout the course, but for now, let’s implement a couple simple ones in the context of copying over the .fcs files in Infants over to a new target3 folder.", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#installing-specific-package-versions", - "href": "course/01_InstallingRPackages/index.html#installing-specific-package-versions", - "title": "01 - Installing R Packages", - "section": "Installing Specific-Package Versions", - "text": "Installing Specific-Package Versions\nWhile we may be tempted to think of R packages as static, they change quite often, as their develipers add new features, fix bugs, etc. To help keep track of these changes (essential for reproducibility and replicability), R packages have version numbers.\nWhen we run sessionInfo(), we can see an example of this, with the version number appearing after the package name.\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27 BiocStyle_2.38.0 \n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] htmlwidgets_1.6.4 IRanges_2.44.0 clue_0.3-66 \n[49] cluster_2.1.8.1 pkgconfig_2.0.3 pillar_1.11.1 \n[52] gtable_0.3.6 data.table_1.18.2.1 glue_1.8.0 \n[55] xfun_0.56 tibble_3.3.1 tidyselect_1.2.1 \n[58] knitr_1.51 farver_2.1.2 rjson_0.2.23 \n[61] htmltools_0.5.9 rmarkdown_2.30 compiler_4.5.2 \n[64] S7_0.2.1 \n\n\n\n\nAlternatively, we can retrieve the same information for the individual packages via the packageVersion() function\n\npackageVersion(\"PeacoQC\")\n\n[1] '1.20.0'\n\n\n\n\nAs well as from the citation() function.\n\ncitation(\"PeacoQC\")\n\nTo cite package 'PeacoQC' in publications use:\n\n Emmaneel A (2025). _PeacoQC: Peak-based selection of high quality\n cytometry data_. doi:10.18129/B9.bioc.PeacoQC\n <https://doi.org/10.18129/B9.bioc.PeacoQC>, R package version 1.20.0,\n <https://bioconductor.org/packages/PeacoQC>.\n\nA BibTeX entry for LaTeX users is\n\n @Manual{,\n title = {PeacoQC: Peak-based selection of high quality cytometry data},\n author = {Annelies Emmaneel},\n year = {2025},\n note = {R package version 1.20.0},\n url = {https://bioconductor.org/packages/PeacoQC},\n doi = {10.18129/B9.bioc.PeacoQC},\n }\n\n\n\n\nHow does a version number work? Lets say we have the following version number: 1.20.0\nThe first number of the version (1. in this case) denotes major changes, primarily those where after the version change the package may not be compatible with the code used in the prior version. As a consequence, this number changes rarely.\nThe second number (.20. in this case) is the minor version. Minor changes typically consist of new features that are added, that don’t affect the overall package function. These will change more frequently, especially for Bioconductor packages with fixed release cycles.\nThe final number (.0 in this case) is often used to denote small changes occuring within a minor release period, often bug-fixes or fixing typos within the documentation.\n\n\nWe may in the future need to install specific package versions (but wont be doing so today). As expected, which repository contains the R package influences how we would go about doing this.\nFor CRAN packages, we can use the remotes packages install_version() function. This allows us to provide the version number, and designate the repository location (the CRAN url in this case).\n\nremotes::install_version(\"ggplot2\", version = \"3.5.2\", repos = \"https://cloud.r-project.org\")\n\nFor GitHub-based R packages, the package versioning schema is not as strict as that of CRAN or Bioconductor. Typically, changes in R packagaes are put out by their developers as releases. When trying to install a particular release, we can add an additional argument to the install_github() function, specifying the release version’s tag number. For example:\n\nremotes::install_github(\"DavidRach/Luciernaga\", ref = \"v0.99.7\")\n\nAlternatively, if the developer doesn’t implement releases, you can provide the hash number of a particular commit.\n\nremotes::install_github(\"DavidRach/Luciernaga\", ref = \"8d1d694\")", + "objectID": "course/02_FilePaths/index.html#conditionals-in-practice", + "href": "course/02_FilePaths/index.html#conditionals-in-practice", + "title": "02 - File Paths", + "section": "Conditionals in practice", + "text": "Conditionals in practice\nFirst off, let’s write a conditional to check if there is a target3 folder within data.\n\nfiles_present <- list.files(\"data\", full.names=FALSE, recursive=FALSE)\nfiles_present\n\n\n\n\n\nFolderTarget3 <- file.path(\"data\", \"target3\")\ndir.exists(FolderTarget3)\n\n\n\n\nWe can write a conditional to create a folder if one does not yet exist.\n\nif (!dir.exists(FolderTarget3)){\n dir.create(FolderTarget3)\n}", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/index.html#documentation-and-websites", - "href": "course/01_InstallingRPackages/index.html#documentation-and-websites", - "title": "01 - Installing R Packages", - "section": "Documentation and Websites", - "text": "Documentation and Websites\nWe have already seen a couple ways to access the help documentation contained within an R package via Positron. Beyond internal documentation, R packages often have external websites that contain additional walk-through articles (ie. vignettes) to better document how to use the package.\nFor CRAN-based packages, we can start off by searching for the package name. So, in the case of dplyr:\n\n\n\nTwo main suggestions pop up. One is the package’s CRAN page. Unfortunately, this one is not particularly user-friendly, although some text-based vignettes are accessible.\n\n\n\nBecause of this, many CRAN-based R packages (especially those part of the tidyverse) use pkgdown-generated websites hosted via a GitHub page (similar to the one used by this course. The second option on the search is dplyr’s pkgdown-style website\n\n\n\nWe can usually find the list of functions under the Reference tab, with the more extensive documentation vignettes being found under the Articles tab.\n\n\n\nGitHub-based packages will vary depending on their individual developers, but often will also use pkgdown-style websites. These often appear as links on the right-hand side, or within the repository’s ReadMe.\n\n\n\nFor Bioconductor-based packages, on the package’s page we can typically find the already rendered vignette articles, usually as either html or pdf files. For example, with PeacoQC:\n\n\n\nAdditionally, package vignettes can also be reached via the packages help index page. These will usually appear under User guides, package vignettes, and other documentation.", + "objectID": "course/02_FilePaths/index.html#copying-files", + "href": "course/02_FilePaths/index.html#copying-files", + "title": "02 - File Paths", + "section": "Copying Files", + "text": "Copying Files\nTo copy files to another folder location, we use the file.copy() function. It has two arguments that we will be working with, from being the .fcs files, and to being the folder location we wish to transfer them to. If we tried using them as we currently have them:\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)\n\n\n\n\nThe reason for this error is we are only working with a partial file path, as viewed from our Working directory. In this case, what is needed is the full file.path, so the file.path should also include the upstream folders from your current working directory.\n\ngetwd()\n\n\n\n\nIn this case, we can update the .fcs files location by switching the full.names argument within list.files() from FALSE, to TRUE.\n\nfiles_present <- list.files(\"data\", full.names=TRUE, recursive=FALSE)\nfiles_present\n\n\nAnd filter for those containing “INF” again\n\nInfants <- files_present[str_detect(files_present, \"INF\")]\n\nAnd then try again:\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)", "crumbs": [ "About", - "Intro to R" + "Intro to R", + "02 - File Paths" ] }, { - "objectID": "course/01_InstallingRPackages/slides.html#set-up", - "href": "course/01_InstallingRPackages/slides.html#set-up", - "title": "01 - Installing R Packages", - "section": "Set Up", - "text": "Set Up\nAlright, with the background out of the way, let’s get started!\n\n\n\n\n\n\n\nImportant\n\n\nPlease make sure to sync your forked version of the CytometryInR repository, and pull any changes to your local computer’s CytometryInR project folder so that you have the most recent version of the code and data available.\n\n\n\n\n\n\n\n\n\n\n\nWarning\n\n\nPlease remember to always copy over the new material from your local CytometryInR folder to a separate Project Folder that you created and named (ex. “Week_01” or “MyLearningFolder”, etc.). This will ensure any edits you make to the files do not affect your ability to bring in next week’s materials to the CytometryInR folder" + "objectID": "course/02_FilePaths/index.html#removing-files.", + "href": "course/02_FilePaths/index.html#removing-files.", + "title": "02 - File Paths", + "section": "Removing files.", + "text": "Removing files.\nJust like we can add files via R, we can also remove them. However, when we remove them via this route, they are removed permanently, not sent to the recycle bin. We will revisit how later on in the course after you have gained additional experience with file.paths.\n\n?unlink()", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] }, { - "objectID": "course/01_InstallingRPackages/slides.html#checking-for-loaded-packages", - "href": "course/01_InstallingRPackages/slides.html#checking-for-loaded-packages", + "objectID": "course/02_FilePaths/index.html#basename", + "href": "course/02_FilePaths/index.html#basename", + "title": "02 - File Paths", + "section": "Basename", + "text": "Basename\nIf we look at Infants with the full.names=TRUE, we see the additional pathing folder has been added, allowing us to successfully copy over the files.\n\nInfants\n\n\n\n\nIf we were trying to retrieve just the local file names from the full.names, we could do so with basename() function. We will use this in combination with additional arguments later in the course\n\nbasename(Infants)", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] + }, + { + "objectID": "course/02_FilePaths/index.html#recursive", + "href": "course/02_FilePaths/index.html#recursive", + "title": "02 - File Paths", + "section": "Recursive", + "text": "Recursive\nAnd finally that we have created additional nested folders and populated them with fcs files, let’s see what setting list.files() recursive argument to TRUE\n\nall_files_present <- list.files(full.names=TRUE, recursive=TRUE)\nall_files_present \n\n\n\n\nIn this case, all files in all folders within the working directory are shown. This can be useful when exploring folder contents, but if there are a lot of files present within the folder, it will take a while to return the list.", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] + }, + { + "objectID": "course/02_FilePaths/index.html#saving-changes-to-version-control", + "href": "course/02_FilePaths/index.html#saving-changes-to-version-control", + "title": "02 - File Paths", + "section": "Saving changes to Version Control", + "text": "Saving changes to Version Control\nAnd as is good practice, to maintain version control, let’s stage all the files and folders we created today within the Week2 Project Folder, write a commit message, and send these files back to GitHub until they are needed again next time.", + "crumbs": [ + "About", + "Intro to R", + "02 - File Paths" + ] + }, + { + "objectID": "course/02_FilePaths/slides.html#set-up", + "href": "course/02_FilePaths/slides.html#set-up", + "title": "02 - File Paths", + "section": "Set Up", + "text": "Set Up\n\n\n\n\n\n\n\n\n.\n\n\nBefore we begin, let’s make sure you get the data needed for today transferred to your local computer, and then get the .fcs files copied over from there to your own working project folder. This is the process you will repeat each week throughout the course." + }, + { + "objectID": "course/02_FilePaths/slides.html#working-directory", + "href": "course/02_FilePaths/slides.html#working-directory", + "title": "02 - File Paths", + "section": "Working Directory", + "text": "Working Directory\n\n\n\n\n\n\n\n\n.\n\n\nNow that we are back in our Week2 folder, let’s start by seeing our current location similarly to how our computer perceives it.\nWe will use getwd() function (ie. get working directory) to return the location of the folder we are currently inside of. For example, when getwd() is run within my Week2 project folder, I see the following location" + }, + { + "objectID": "course/02_FilePaths/slides.html#directories", + "href": "course/02_FilePaths/slides.html#directories", + "title": "02 - File Paths", + "section": "Directories", + "text": "Directories\n\n\n\n\n\n\n\n\n.\n\n\nWithin this working directory, we have a variety of project folders and files related to the course. We can see the folders that are present using the list.dirs() function.\n\n\n\n\n\n\n\n\n\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)" + }, + { + "objectID": "course/02_FilePaths/slides.html#variables", + "href": "course/02_FilePaths/slides.html#variables", + "title": "02 - File Paths", + "section": "Variables", + "text": "Variables\n\n\n\n\n\n\n\n\n.\n\n\nBefore exploring file paths, we need to have some basic R code knowledge that we can use to work with them. Within R, we have the ability to assign particular values (be they character strings, numbers or logicals) to objects (ie. variables) that can be used when called upon later.\nFor example:\n\n\n\n\n\n\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\n\n\n\n\n\n\n\n\n\n.\n\n\nIn this case, the variable name is what the assignment arrow (“<-”) is pointing at. In this case, WhatDayDidIWriteThis" + }, + { + "objectID": "course/02_FilePaths/slides.html#indexing", + "href": "course/02_FilePaths/slides.html#indexing", + "title": "02 - File Paths", + "section": "Indexing", + "text": "Indexing\n\n\n\n\n\n\n\n\n.\n\n\nNot all variables contain single objects.\nFor example, we can modify Fluorophores and add additional entries:\n\n\n\n\n\n\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nstr(Fluorophores)\n\n chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n\n\n\n\n\n\n\n\n\n\n\n.\n\n\nThe c stands for concatenate. It concatenates the objects into a larger object, known as a vector.\nIn this case, you notice in addition to the specification the values are characters, we get a [1:4], denoting four objects are present." + }, + { + "objectID": "course/02_FilePaths/slides.html#listing-files", + "href": "course/02_FilePaths/slides.html#listing-files", + "title": "02 - File Paths", + "section": "Listing Files", + "text": "Listing Files\n\n\n\n\n\n\n\n\n.\n\n\nAfter this detour into variables and indexing, let’s return our focus to how to use these in context of file paths. Working from within our Week2 project folder, let’s see what directories (folders) are present\n\n\n\n\n\n\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)" + }, + { + "objectID": "course/02_FilePaths/slides.html#creating-directories", + "href": "course/02_FilePaths/slides.html#creating-directories", + "title": "02 - File Paths", + "section": "Creating directories", + "text": "Creating directories\n\n\n\n\n\n\n\n\n.\n\n\nAlternatively, we can also create a folder via R using the dir.create() function. Since we want it within data, we would modify the path accordingly\n\n\n\n\n\n\n\nNewFolderLocation <- file.path(\"data\", \"target2\")\n\ndir.create(path=NewFolderLocation)" + }, + { + "objectID": "course/02_FilePaths/slides.html#file-paths", + "href": "course/02_FilePaths/slides.html#file-paths", + "title": "02 - File Paths", + "section": "File Paths", + "text": "File Paths\n\n\n\n\n\n\n\n\n.\n\n\nOne way we can do this is through a file.path argument. We could potentially provide this by adding either a “/” or a “\" into the path argument, depending on your computers operating system.\n\n\n\n\n\n\n\nlist.files(path=\"data/target\", full.names=FALSE, recursive=FALSE)" + }, + { + "objectID": "course/02_FilePaths/slides.html#selecting-for-patterns", + "href": "course/02_FilePaths/slides.html#selecting-for-patterns", + "title": "02 - File Paths", + "section": "Selecting for Patterns", + "text": "Selecting for Patterns\n\n\n\n\n\n\n\n\n.\n\n\nIf we currently listed the files within data, we get a return that looks like this:\n\n\n\n\n\n\n\nlist.files(\"data\", full.names=FALSE, recursive=FALSE)" + }, + { + "objectID": "course/02_FilePaths/slides.html#conditionals", + "href": "course/02_FilePaths/slides.html#conditionals", + "title": "02 - File Paths", + "section": "Conditionals", + "text": "Conditionals\n\n\n\n\n\n\n\n\n.\n\n\nOne useful thing is that within R, we can set conditions on whether something is carried out. The most typical conditional you will encounter are the “If” statements. They typically take a form that resembles the following.\n\n\n\n\n\n\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}" + }, + { + "objectID": "course/02_FilePaths/slides.html#conditionals-in-practice", + "href": "course/02_FilePaths/slides.html#conditionals-in-practice", + "title": "02 - File Paths", + "section": "Conditionals in practice", + "text": "Conditionals in practice\n\n\n\n\n\n\n\n\n.\n\n\nFirst off, let’s write a conditional to check if there is a target3 folder within data.\n\n\n\n\n\n\n\nfiles_present <- list.files(\"data\", full.names=FALSE, recursive=FALSE)\nfiles_present" + }, + { + "objectID": "course/02_FilePaths/slides.html#copying-files", + "href": "course/02_FilePaths/slides.html#copying-files", + "title": "02 - File Paths", + "section": "Copying Files", + "text": "Copying Files\n\n\n\n\n\n\n\n\n.\n\n\nTo copy files to another folder location, we use the file.copy() function. It has two arguments that we will be working with, from being the .fcs files, and to being the folder location we wish to transfer them to. If we tried using them as we currently have them:\n\n\n\n\n\n\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)" + }, + { + "objectID": "course/02_FilePaths/slides.html#removing-files.", + "href": "course/02_FilePaths/slides.html#removing-files.", + "title": "02 - File Paths", + "section": "Removing files.", + "text": "Removing files.\n\n\n\n\n\n\n\n\n.\n\n\nJust like we can add files via R, we can also remove them. However, when we remove them via this route, they are removed permanently, not sent to the recycle bin. We will revisit how later on in the course after you have gained additional experience with file.paths.\n\n\n\n\n\n\n\n?unlink()" + }, + { + "objectID": "course/02_FilePaths/slides.html#basename", + "href": "course/02_FilePaths/slides.html#basename", + "title": "02 - File Paths", + "section": "Basename", + "text": "Basename\n\n\n\n\n\n\n\n\n.\n\n\nIf we look at Infants with the full.names=TRUE, we see the additional pathing folder has been added, allowing us to successfully copy over the files.\n\n\n\n\n\n\n\nInfants" + }, + { + "objectID": "course/02_FilePaths/slides.html#recursive", + "href": "course/02_FilePaths/slides.html#recursive", + "title": "02 - File Paths", + "section": "Recursive", + "text": "Recursive\n\n\n\n\n\n\n\n\n.\n\n\nAnd finally that we have created additional nested folders and populated them with fcs files, let’s see what setting list.files() recursive argument to TRUE\n\n\n\n\n\n\n\nall_files_present <- list.files(full.names=TRUE, recursive=TRUE)\nall_files_present" + }, + { + "objectID": "course/02_FilePaths/slides.html#saving-changes-to-version-control", + "href": "course/02_FilePaths/slides.html#saving-changes-to-version-control", + "title": "02 - File Paths", + "section": "Saving changes to Version Control", + "text": "Saving changes to Version Control\n\n\n\n\n\n\n\n\n.\n\n\nAnd as is good practice, to maintain version control, let’s stage all the files and folders we created today within the Week2 Project Folder, write a commit message, and send these files back to GitHub until they are needed again next time." + }, + { + "objectID": "course/01_InstallingRPackages/slides_inperson.html#checking-for-loaded-packages", + "href": "course/01_InstallingRPackages/slides_inperson.html#checking-for-loaded-packages", "title": "01 - Installing R Packages", "section": "Checking for Loaded Packages", "text": "Checking for Loaded Packages\n\n\n\n\n\n\n\n\n.\n\n\nFor the contents (ie. the functions) of an R package to be available for your computer to use, they must first be activated (ie. loaded) into your local environment. We will first learn how to check what R packages are currently active." }, { - "objectID": "course/01_InstallingRPackages/slides.html#installing-from-cran", - "href": "course/01_InstallingRPackages/slides.html#installing-from-cran", + "objectID": "course/01_InstallingRPackages/slides_inperson.html#installing-from-cran", + "href": "course/01_InstallingRPackages/slides_inperson.html#installing-from-cran", "title": "01 - Installing R Packages", "section": "Installing from CRAN", "text": "Installing from CRAN\n\n\n\n\n\n\n\n\n.\n\n\nWe will start by installing R packages that are part of the CRAN repository. This is the main R package repository, being part of the broader R software project. In the context of this course, R packages that work primarily with general data structure (rows, columns, matrices, etc.) or visualizations will predominantly be found within this repository.\nThese include the tidyverse packages. These packages have collectively made R easier to use by smoothing out some of the rough edges of base R, which is why R has seen major growth within the last decade. We will be installing several of these R packages today." }, { - "objectID": "course/01_InstallingRPackages/slides.html#installing-from-bioconductor", - "href": "course/01_InstallingRPackages/slides.html#installing-from-bioconductor", + "objectID": "course/01_InstallingRPackages/slides_inperson.html#installing-from-bioconductor", + "href": "course/01_InstallingRPackages/slides_inperson.html#installing-from-bioconductor", "title": "01 - Installing R Packages", "section": "Installing from Bioconductor", "text": "Installing from Bioconductor\n\n\n\n\n\n\n\n\n.\n\n\nBioconductor is the second R package repository we will be working with throughout the course. While it contains far fewer packages than CRAN, it contains packages that are primarily used by the biomedical sciences. Following this link you can find it’s current flow and mass cytometry R packages.\nBioconductor R packages differ from CRAN R packages in a couple of ways. Bioconductor has different standards for acceptance than CRAN. They usually contain interoperable object-types, put more effort into documentation and continous testing to ensure that the R package remains functional across operating systems." }, { - "objectID": "course/01_InstallingRPackages/slides.html#install-from-github", - "href": "course/01_InstallingRPackages/slides.html#install-from-github", + "objectID": "course/01_InstallingRPackages/slides_inperson.html#install-from-github", + "href": "course/01_InstallingRPackages/slides_inperson.html#install-from-github", "title": "01 - Installing R Packages", "section": "Install from GitHub", "text": "Install from GitHub\n\n\n\n\n\n\n\n\n.\n\n\nIn addition to the CRAN and Bioconductor repositories, individual R packages can also be found on GitHub hosted on their respective developers GitHub accounts. Newer packages that are still being worked on (often in the process of submission to CRAN or Bioconductor) can be found here, as well as those where the author decided not to bother with a review process, and just made the packages immediately available, warts and all." }, { - "objectID": "course/01_InstallingRPackages/slides.html#troubleshooting-install-errors", - "href": "course/01_InstallingRPackages/slides.html#troubleshooting-install-errors", + "objectID": "course/01_InstallingRPackages/slides_inperson.html#troubleshooting-install-errors", + "href": "course/01_InstallingRPackages/slides_inperson.html#troubleshooting-install-errors", "title": "01 - Installing R Packages", "section": "Troubleshooting Install Errors", "text": "Troubleshooting Install Errors\n\n\n\n\n\n\n\n\n.\n\n\nWe have now installed three R packages, dplyr, PeacoQC, and flowSpectrum. In my case, I did not encounter any errors during the installation. However, sometimes a package installation will fail due to an error encountered during the installation process. This can be due to a number of reasons, ranging from a missing dependency, or an update that caused a conflict. While these can occur for CRAN or Bioconductor packages, they are more frequently seen for GitHub packages where the Description/Namespace files may not have been fully updated yet to install all the required dependencies.\nWhen encountering an error, start of by first reading through the message to see if you can parse any useful information about what package failed to install, and if it list the missing dependency packages name. The later was the case in the error message example shown below." }, { - "objectID": "course/01_InstallingRPackages/slides.html#installing-specific-package-versions", - "href": "course/01_InstallingRPackages/slides.html#installing-specific-package-versions", - "title": "01 - Installing R Packages", - "section": "Installing Specific-Package Versions", - "text": "Installing Specific-Package Versions\n\n\n\n\n\n\n\n\n.\n\n\nWhile we may be tempted to think of R packages as static, they change quite often, as their develipers add new features, fix bugs, etc. To help keep track of these changes (essential for reproducibility and replicability), R packages have version numbers.\nWhen we run sessionInfo(), we can see an example of this, with the version number appearing after the package name.\n\n\n\n\n\n\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27\n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] IRanges_2.44.0 clue_0.3-66 cluster_2.1.8.1 \n[49] pkgconfig_2.0.3 pillar_1.11.1 gtable_0.3.6 \n[52] data.table_1.18.2.1 glue_1.8.0 xfun_0.56 \n[55] tibble_3.3.1 tidyselect_1.2.1 knitr_1.51 \n[58] farver_2.1.2 rjson_0.2.23 htmltools_0.5.9 \n[61] rmarkdown_2.30 compiler_4.5.2 S7_0.2.1" - }, - { - "objectID": "course/01_InstallingRPackages/slides.html#documentation-and-websites", - "href": "course/01_InstallingRPackages/slides.html#documentation-and-websites", + "objectID": "course/01_InstallingRPackages/slides_inperson.html#documentation-and-websites", + "href": "course/01_InstallingRPackages/slides_inperson.html#documentation-and-websites", "title": "01 - Installing R Packages", "section": "Documentation and Websites", "text": "Documentation and Websites\n\n\n\n\n\n\n\n\n.\n\n\nWe have already seen a couple ways to access the help documentation contained within an R package via Positron. Beyond internal documentation, R packages often have external websites that contain additional walk-through articles (ie. vignettes) to better document how to use the package.\nFor CRAN-based packages, we can start off by searching for the package name. So, in the case of dplyr" }, { - "objectID": "course/00_WorkstationSetup/Windows.html", - "href": "course/00_WorkstationSetup/Windows.html", - "title": "Installing Software on Windows", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shots slides, click here\nThis is the software installation walkthrough for those whose computers are running Windows. Based on our pre-course interest form, you make up the majority of course participants." + "objectID": "course/00_WorkstationSetup/MacOSSlides.html#installing-r", + "href": "course/00_WorkstationSetup/MacOSSlides.html#installing-r", + "title": "Installing Software on MacOS", + "section": "Installing R", + "text": "Installing R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." }, { - "objectID": "course/00_WorkstationSetup/Windows.html#installing-r", - "href": "course/00_WorkstationSetup/Windows.html#installing-r", - "title": "Installing Software on Windows", - "section": "Installing R", - "text": "Installing R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nYou will then select your Operating System, in this case, Windows.\n\n\n\nAnd go ahead and select the Install R for the first time link.\n\n\n\nNext, you will select the download the current version option at the top of the page.\n\n\n\nThe popup window will then ask where you want to save the installer (.exe) file. We generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nAfter the download is complete, double click on the installer’s .exe file. This will open a popup asking you to select your preferred language.\n\n\n\nYou will then be prompted to acccept the software license (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\nOn Windows, R will normally save it’s software folder under Program Files.\n\n\n\nNext, please accept the defaults.\n\n\n\n\n\n\n\n\n\n\n\n\nWith the defaults accepted, the installation will commence. Feel free to go have a coffee/tea/beverage-of-your choice break while you wait.\n\n\n\nAnd if all goes well, the installation will complete without any issues." + "objectID": "course/00_WorkstationSetup/MacOSSlides.html#xcode-command-line-tools", + "href": "course/00_WorkstationSetup/MacOSSlides.html#xcode-command-line-tools", + "title": "Installing Software on MacOS", + "section": "Xcode Command Line Tools", + "text": "Xcode Command Line Tools\n\n\n\n\n\n\n\n\n.\n\n\nDepending on your version of macOS, you may or may not already have Git installed on your computer. The reason is that it comes bundled within the Xcode Command Line Tools.\nIf this is not your first foray into coding, you may have previously seen an installation pop-up along the lines of “XYZ requires command line developer tools. Would you like to install the tools now?” when installing an IDE (like Positron, Rstudio or Visual Studio Code)." }, { - "objectID": "course/00_WorkstationSetup/Windows.html#installing-rtools", - "href": "course/00_WorkstationSetup/Windows.html#installing-rtools", - "title": "Installing Software on Windows", - "section": "Installing RTools", - "text": "Installing RTools\nWe will now work on installing Rtools. This software is needed when building R packages from source, which we will need throughout the course for R packages hosted on GitHub.\nTo get started, we will return to the R installation page we visited previously and instead click on the Rtools option.\n\n\n\nNext, select the most recent version of Rtools to Download.\n\n\n\nYou will then select for your architecture. For the vast majority of Windows users, your computer will likely be be using a x86 chip architecture, so you would select the Rtools45 installer option.\nIf your computer however uses the ARM chip architecture, you would select the 64-bit ARM Rtools45 installer instead. If you are unsure, see the following.\n\n\n\nNext, you will select the location to save the Rtools installer to. We generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nOnce downloaded, double click on the .exe to launch the Rtools installer.\n\n\n\nSimilar to what we did when installing R, go ahead and keep the defaults.\n\n\n\nAnd click install to proceed with the installation.\n\n\n\nAnd wait while the installation wraps up.\n\n\n\nIf all goes well, you should see the following installation success page." + "objectID": "course/00_WorkstationSetup/MacOSSlides.html#install-positron", + "href": "course/00_WorkstationSetup/MacOSSlides.html#install-positron", + "title": "Installing Software on MacOS", + "section": "Install Positron", + "text": "Install Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." }, { - "objectID": "course/00_WorkstationSetup/Windows.html#installing-git", - "href": "course/00_WorkstationSetup/Windows.html#installing-git", - "title": "Installing Software on Windows", + "objectID": "course/00_WorkstationSetup/LinuxSlides.html#debian-based-distros", + "href": "course/00_WorkstationSetup/LinuxSlides.html#debian-based-distros", + "title": "Installing Software on Linux", + "section": "Debian-based Distros", + "text": "Debian-based Distros\nInstalling R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." + }, + { + "objectID": "course/00_WorkstationSetup/LinuxSlides.html#installing-git", + "href": "course/00_WorkstationSetup/LinuxSlides.html#installing-git", + "title": "Installing Software on Linux", "section": "Installing Git", - "text": "Installing Git\nGit is a version control software widely used among software developers and bioinformaticians. We will use it extensively throughout the course, both locally on our computers (to keep track of changes to our files), as well as in combination with GitHub(to maintain online backups of our files).\nWe will first navigate to the website and select the download from Windows option.\n\n\n\n\n\n\n\n\n\nWe will then proceed and select install 64-bit Git for Windows Setup option\n\n\n\n\n\n\n\nAs was the case with our installation of R and Rtools, a pop-up will appear asking for a location to save the installer to.\nOnce downloaded, double-click and proceed with the installation.\nYou will be asked to accept the Git License (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\nThen you will be asked to select the folder to save to software to (usually your Programs folder)\n\n\n\nAt this point, the Git installer will ask a series of increasingly niche questions. It is best to just accept all the default options, to avoid wandering too far down a “What is Vim?!?” rabbit-hole.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nHaving made it through all the niche customization screens, we finally reach the install button.\n\n\n\nWe then can wait for the install to complete.\n\n\n\nAnd success, we have now installed Git." + "text": "Installing Git\n\n# sudo apt install git" }, { - "objectID": "course/00_WorkstationSetup/Windows.html#installing-positron", - "href": "course/00_WorkstationSetup/Windows.html#installing-positron", - "title": "Installing Software on Windows", + "objectID": "course/00_WorkstationSetup/LinuxSlides.html#installing-positron", + "href": "course/00_WorkstationSetup/LinuxSlides.html#installing-positron", + "title": "Installing Software on Linux", "section": "Installing Positron", - "text": "Installing Positron\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\nWith the license accepted, you will be able to select your operating system. In this case, we will select Windows, specifally the user level install.\n\n\n\nPlease note, if you are using a Windows computer with an ARM based chip (like is the case with Snapdragons), you will need to download the installed from the Positron’s GitHub Release Page, as they are still testing some features.\n\n\nYou will then be prompted to select the location you want to save the installer to. We will generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nOnce the download is complete, double click on the installer, and again accept the license agreement.\n\n\n\nGenerally, Positron will be store its software folder under Program Files.\n\n\n\nNext up, accept the default options for the following screens\n\n\n\n\n\n\nAnd finally, click Install.\n\n\n\n \n\nIf all goes well, you should then see the installation success page." + "text": "Installing Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will need to install Positron. It will be the integrated development environment (IDE) we will be using for the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." }, { - "objectID": "course/00_WorkstationSetup/index.html", - "href": "course/00_WorkstationSetup/index.html", - "title": "Workstation Setup", + "objectID": "course/00_WorkstationSetup/Linux.html", + "href": "course/00_WorkstationSetup/Linux.html", + "title": "Installing Software on Linux", "section": "", - "text": "In the previous section, we first set up your GitHub account. Then we modified your GitHub profile and added a README section. Finally, we forked the CytometryInR repository so that you can easily retrieve the new course materials each week.\nIt is now time to install the required software on your computer, which will get your work-station set up with everything needed for this course. Depending on your computers operating system, the installation requirements may differ a bit. In general, you will need to install the following software:\nR website : The programming language we will be using throughout the course.\nPositron : The integrated development environment (IDE) in which we will open, modify and run our code.\nGit : The version control software that will allow us to track changes to our files.\nAdditionally, Windows users will need to install:\nRTools : Used to build R packages from source code.\nYou can find the operating system specific installation walkthroughs below. Once you have completed your specific walkthrough, return to this page and proceed to the next section.\nPlease note: For those using university or company administered computers, please be aware that you may not have the necessary permissions to install these directly, and may need to reach out to your IT department to help get the software installed and running correctly.\nIf you are using your own computer, congratulations, you are your system administrator, and should already have the necessary permissions.", - "crumbs": [ - "About", - "Getting Started", - "00 - Workstation Setup" - ] + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nThis is the software installation walkthrough for those whose computers are running Linux. First off, welcome! Based on our pre-course interest form, there was a suprising number of you daily-drivers out there! However, a CytometryInR interest form is unlikely to be representative of the general population, so please stash all Year of the Linux desktop banners until further notice." }, { - "objectID": "course/00_WorkstationSetup/index.html#windows", - "href": "course/00_WorkstationSetup/index.html#windows", - "title": "Workstation Setup", - "section": "Windows", - "text": "Windows\n\nInstallation walkthrough for Windows", - "crumbs": [ - "About", - "Getting Started", - "00 - Workstation Setup" - ] - }, - { - "objectID": "course/00_WorkstationSetup/index.html#macos", - "href": "course/00_WorkstationSetup/index.html#macos", - "title": "Workstation Setup", - "section": "MacOS", - "text": "MacOS\n\nInstallation walkthrough for MacOS", - "crumbs": [ - "About", - "Getting Started", - "00 - Workstation Setup" - ] + "objectID": "course/00_WorkstationSetup/Linux.html#debian-based-distros", + "href": "course/00_WorkstationSetup/Linux.html#debian-based-distros", + "title": "Installing Software on Linux", + "section": "Debian-based Distros", + "text": "Debian-based Distros\n\nInstalling R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nOnce this is done, select your Linux Distro (or one that shares your package managers format).\n\n\n\nOn the landing page, you will find a bunch of relevant installation information, which is worthwhile giving a read-through when you have time.\n\n\n\nThe process to successfully install R can be summarized as follows:\nUpdate apt/sources.list to include the CRAN repository (allowing access to R packages)\n\n\n\nSince we are running on Debian stable (Trixie), we would add the following line to sources.list\n\n\n\nSo in practice, open sources.list:\n\n\n\nPaste the line, and “Ctrl + O”; “Enter”; “Ctrl + X” to save the changes.\n\n\n\nNext, we will need to retrieve the keyID used to sign. This can be fetched from Ubuntu via the terminal.\n\n\n\n\n\n\nThen we need to export and write it\n\n\n\nWhich if successful, will display the public key.\n\n\n\nWith the above set up, we can proceed via our apt package manager to install both r-base and r-base-dev (which contains the equivalent of Rtools for Windows, or Xcode Command Line Tools for macOS).\n\n\n\n\n\n\n\n\n\nAnd if all goes well, R should now be installed." }, { - "objectID": "course/00_WorkstationSetup/index.html#linux-debian", - "href": "course/00_WorkstationSetup/index.html#linux-debian", - "title": "Workstation Setup", - "section": "Linux (Debian)", - "text": "Linux (Debian)\n\nInstallation walkthrough for Linux", - "crumbs": [ - "About", - "Getting Started", - "00 - Workstation Setup" - ] + "objectID": "course/00_WorkstationSetup/Linux.html#installing-git", + "href": "course/00_WorkstationSetup/Linux.html#installing-git", + "title": "Installing Software on Linux", + "section": "Installing Git", + "text": "Installing Git\n\n# sudo apt install git" }, { - "objectID": "course/00_WorkstationSetup/MacOS.html", - "href": "course/00_WorkstationSetup/MacOS.html", - "title": "Installing Software on MacOS", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nThis is the software installation walkthrough for those whose computers are running MacOS. Based on our pre-course interest form, you make up a solid proportion of the course participants." + "objectID": "course/00_WorkstationSetup/Linux.html#installing-positron", + "href": "course/00_WorkstationSetup/Linux.html#installing-positron", + "title": "Installing Software on Linux", + "section": "Installing Positron", + "text": "Installing Positron\nFinally, you will need to install Positron. It will be the integrated development environment (IDE) we will be using for the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\n\n\n\nWith the license accepted, you will be able to select distribution and architecture.\n\n\n\nOnce the Download completes, proceed to install the .deb package as you would nornally. GUI example via Discover below.\n\n\n\nDepending on your configurations, you may be asked to exert your sudo powers.\n\n\n\nOnce this completes, you should now be able to launch the software for the first time." }, { - "objectID": "course/00_WorkstationSetup/MacOS.html#installing-r", - "href": "course/00_WorkstationSetup/MacOS.html#installing-r", - "title": "Installing Software on MacOS", + "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-r", + "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-r", + "title": "Installing Software on Windows", "section": "Installing R", - "text": "Installing R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nYou will then select your Operating System, in this case, macOS\n\n\n\nNext, you will need to select the appropiate download based on your computers architecture. On newer Macs (containing M1+ chips) this would the arm64 option on the center left of the screen. For the older Intel (pre-2020) Macs, you would select the x86_64 option. If you are unsure, check your About This Mac tab\n\n\n\nAfter the download has completed, launch the installer\n\n\n\nProceed through the Read Me\n\n\n\nYou will then be prompted to acccept the software license (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\n\n\n\nNext, you will need to navigate through several pages, keeping the defaults.\n\n\n\nAnd with any luck, you should see that the installation was successful." + "text": "Installing R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." }, { - "objectID": "course/00_WorkstationSetup/MacOS.html#xcode-command-line-tools", - "href": "course/00_WorkstationSetup/MacOS.html#xcode-command-line-tools", - "title": "Installing Software on MacOS", - "section": "Xcode Command Line Tools", - "text": "Xcode Command Line Tools\nDepending on your version of macOS, you may or may not already have Git installed on your computer. The reason is that it comes bundled within the Xcode Command Line Tools.\nIf this is not your first foray into coding, you may have previously seen an installation pop-up along the lines of “XYZ requires command line developer tools. Would you like to install the tools now?” when installing an IDE (like Positron, Rstudio or Visual Studio Code).\n\n\n\nSince these command line developer tools contain both Git, and also the equivalent of Rtools for Windows, we will need to install them for this course. To get started, first open your terminal.\n\n\n\nNext run the following code:\n\nxcode-select --install\n\n\n\n\nYou will then have the pop-up asking whether you want to install the command line tools (which contain Git). Select Install.\n\n\n\nYou will then be asked to accept the license\n\n\n\nYour installation will then proceed\n\n\n\nAnd if all goes well, the software will finish installing.\n\n\n\nAfter you complete Positron installation (next section), if you check the version control tab on the action bar on the far left side of the screen, you should see the following if Git was installed correctly.\n\n\n\nAlternatively, if you see this, you will need to reattempt the installation." + "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-rtools", + "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-rtools", + "title": "Installing Software on Windows", + "section": "Installing RTools", + "text": "Installing RTools\n\n\n\n\n\n\n\n\n.\n\n\nWe will now work on installing Rtools. This software is needed when building R packages from source, which we will need throughout the course for R packages hosted on GitHub.\nTo get started, we will return to the R installation page we visited previously and instead click on the Rtools option." }, { - "objectID": "course/00_WorkstationSetup/MacOS.html#install-positron", - "href": "course/00_WorkstationSetup/MacOS.html#install-positron", - "title": "Installing Software on MacOS", - "section": "Install Positron", - "text": "Install Positron\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\nWith the license accepted, you will be able to select your operating system and the relevant installer depending on whether you are on an M1+ (ARM) or older Intel (x86) Mac.\n\n\nOnce the Download completes, proceed to install the package as you normally would for any other program." + "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-git", + "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-git", + "title": "Installing Software on Windows", + "section": "Installing Git", + "text": "Installing Git\n\n\n\n\n\n\n\n\n.\n\n\nGit is a version control software widely used among software developers and bioinformaticians. We will use it extensively throughout the course, both locally on our computers (to keep track of changes to our files), as well as in combination with GitHub(to maintain online backups of our files).\nWe will first navigate to the website and select the download from Windows option." }, { - "objectID": "course/00_Quarto/index.html", - "href": "course/00_Quarto/index.html", - "title": "Introduction to Quarto", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-positron", + "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-positron", + "title": "Installing Software on Windows", + "section": "Installing Positron", + "text": "Installing Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." }, { - "objectID": "course/00_Quarto/index.html#renderpreview", - "href": "course/00_Quarto/index.html#renderpreview", + "objectID": "course/00_Quarto/slides.html#renderpreview", + "href": "course/00_Quarto/slides.html#renderpreview", "title": "Introduction to Quarto", "section": "Render/Preview", - "text": "Render/Preview\nThe preview button, at the upper-left end of the Editor, is used to render/knit a quarto document. This triggers the process by which code-chunks are run, and then the outputs are cobbled together into the file format type designated by the YAML header.\n\n\n\n\nHTML\nIn this case, the YAML header’s format argument is set to html. After clicking preview, we can see the various rendering steps appear in the console below. Since no errors occured, the html document was formed succesfully and appears as a file in the left side-bar. Additional, a preview of the document appears in the View tab of the right side-bar, allowing for quick visual inspection.\n\n\n\nAlternatively, we can render a document via the terminal, by entering “quarto render”, followed by the name of the document.\n\n\n\nThis results similar process as what we saw with the preview button\n\n\n\nWe can also open the .html document via our File Explorer, which will open it within our web browser.\n\n\n\nQuarto documents can be rendered (previewed) in other formats besides html. These include pdf, Word documents (docx), and slides (revealjs). This is set by the format argument within the YAML header.\n\n\nPDF\nBy switching the format argument from html to pdf, we can render the document as a pdf\n\n\n\nWe can see the pdf is now listed in the list of files, with a preview shown on the right side-bar.\n\n\n\n\n\nDocx\nWe can also generate Word documents (.docx) as well.\n\n\n\nIn this case, we can see that a Word document file was created, but nothing appears in the View tab. This is because the format is not yet supported for the View tab. We can however open and view the Word document via our File explorer.\n\n\n\nWhich shows a Word Document style output.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "Render/Preview\n\n\n\n\n\n\n\n\n.\n\n\nThe preview button, at the upper-left end of the Editor, is used to render/knit a quarto document. This triggers the process by which code-chunks are run, and then the outputs are cobbled together into the file format type designated by the YAML header." }, { - "objectID": "course/00_Quarto/index.html#yaml", - "href": "course/00_Quarto/index.html#yaml", + "objectID": "course/00_Quarto/slides.html#yaml", + "href": "course/00_Quarto/slides.html#yaml", "title": "Introduction to Quarto", "section": "YAML", - "text": "YAML\nWe can additionally provide additional custom inputs to the YAML header. A couple examples include providing the document author and date.\n\n\n\nWhich we can see are updated after we preview/render.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "YAML\n\n\n\n\n\n\n\n\n.\n\n\nWe can additionally provide additional custom inputs to the YAML header. A couple examples include providing the document author and date." }, { - "objectID": "course/00_Quarto/index.html#table-of-contents", - "href": "course/00_Quarto/index.html#table-of-contents", + "objectID": "course/00_Quarto/slides.html#table-of-contents", + "href": "course/00_Quarto/slides.html#table-of-contents", "title": "Introduction to Quarto", "section": "Table of Contents", - "text": "Table of Contents\nIn the previous section, we saw that we could provide headings and subheadings to our .qmd file by placing a # at the start of a line in the text portion of the document. A subheading was designated by a ##, with additional hierarchy being designated by appending an additional #.\n\n\n\nWe can use the heading information to generate a table of contents for our document. To do this, we add a toc argument to the yaml header, and set it to TRUE. After rendering, it appears on the upper-right side of the document.\n\n\n\nNotice, that the subheaders do not appear currently within the TOC.\n\n\n\nWe can fix this by setting a toc-expand argument in the YAML to true.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "Table of Contents\n\n\n\n\n\n\n\n\n.\n\n\nIn the previous section, we saw that we could provide headings and subheadings to our .qmd file by placing a # at the start of a line in the text portion of the document. A subheading was designated by a ##, with additional hierarchy being designated by appending an additional #." }, { - "objectID": "course/00_Quarto/index.html#code-chunk-arguments", - "href": "course/00_Quarto/index.html#code-chunk-arguments", + "objectID": "course/00_Quarto/slides.html#code-chunk-arguments", + "href": "course/00_Quarto/slides.html#code-chunk-arguments", "title": "Introduction to Quarto", "section": "Code Chunk Arguments", - "text": "Code Chunk Arguments\nAs we briefly touched on in the last section, code-chunks can be modified by including arguments, which affect whether a particular code chunk gets evaluated. In that example, we included a “#| eval: FALSE” to the install commands since we did not want them to be re-run subsequently. We will take a closer look at the other arguments in this section.\n\nEval\nThe code-chunk argument, “Eval”, is used to determine when a code-chunk get’s evaluated. When set to true (or by default if no eval argument is included), the code-chunks contents will be run/executed, and the output will appear. We can see this in the html output, as below the code block, we get back the address of my working directory.\n\n\n\nWhen we switch the Eval argument to FALSE, and then render the document, we can see that the code block remains, but we do not get any output for the code contained within.\nIn every-day practice, we will “use eval: FALSE” arguments when we want to keep the code for later use, but want to manually run the code contained within ourselves.\n\n\n\n\n\nEcho\nThe code-block argument “echo” dictates whether the code within the code-block is displayed within the document. So in the case when “echo: true”, we get both the code displayed, as well as the output that gets returned by the code.\n\n\n\nBy contrast, when “echo: FALSE”, we do not have the code displayed, but do get the output of that code being run.\nIn daily-practice, “echo: FALSE” gets often used when generating plots that we want to include in the report, without the code that generated them being displayed.\n\n\n\n\n\nInclude\nThe next code-chunk argument is include. Unlike echo, which focuses on whether the code is displayed, but still returns the output, include dictates behavior of both the code-block and it’s output. Unlike eval however, it will still run the code, which allows it to be available for the next code-chunk that might need it. When we set “include: false”, no trace of that code-chunk is present in the document. This is useful when making reports where we do not want to include the code used to generate a particular figure.\n\n\n\nBy contrast, when we set “include: true”, the code block and it’s output is once again included within the rendered document.\n\n\n\n\n\nCode-Fold\nOne of my favorites is “code-fold”. When we set it as “code-fold: show”, it displays the code, but provides a drop-down arrow that can be closed to compress the code.\n\n\n\nIn contrast, if we want to make the code-available for those that are interested, but not directly visible, we can set as “code-fold: true”\n\n\n\n\n\nWarnings\nWithin R, when code is executed, in addition to returning the output, R is capable of returning warnings (when something is not as expected, but not sufficient to elicit an error with a complete stop) or a message (text output that gets displayed, often telling about progress). While these are useful when running code yourself, it can be annoying when generating a report and the 2nd page is a bunch of warning text being displayed.\nFor example, when the R package ggcyto is loaded via the library call, it will automatically load several other packages, which typically results in these messages being outputted:\n\n\n\nWe can therefore set that code-chunk’s warning/message arguments to FALSE, therefore silencing the message outputs that would otherwise clutter up our report.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "Code Chunk Arguments\n\n\n\n\n\n\n\n\n.\n\n\nAs we briefly touched on in the last section, code-chunks can be modified by including arguments, which affect whether a particular code chunk gets evaluated. In that example, we included a “#| eval: FALSE” to the install commands since we did not want them to be re-run subsequently. We will take a closer look at the other arguments in this section.\n\n\n\n\n\nEval\n\n\n\n\n\n\n\n\n.\n\n\nThe code-chunk argument, “Eval”, is used to determine when a code-chunk get’s evaluated. When set to true (or by default if no eval argument is included), the code-chunks contents will be run/executed, and the output will appear. We can see this in the html output, as below the code block, we get back the address of my working directory." }, { - "objectID": "course/00_Quarto/index.html#text-styles", - "href": "course/00_Quarto/index.html#text-styles", + "objectID": "course/00_Quarto/slides.html#text-styles", + "href": "course/00_Quarto/slides.html#text-styles", "title": "Introduction to Quarto", "section": "Text Styles", - "text": "Text Styles\nQuarto primarily uses Markdown for text styling. Consequently, markdown arguments can be used within the text to change how various text appears.\n\n\n\nFor a regular text, This single asterisk on each side of a word will italicize.\n\n\n\nWhen the number of asterisk is doubled, This word is bolded.\n\n\n\nWhen three asterisk are used, both are applied.\n\n\n\nFor an underscore, the word of interest is surrounded by square brackets “[]”, with “{.underline}” adjacent.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "Text Styles\n\n\n\n\n\n\n\n\n.\n\n\nQuarto primarily uses Markdown for text styling. Consequently, markdown arguments can be used within the text to change how various text appears." }, { - "objectID": "course/00_Quarto/index.html#hyperlinks", - "href": "course/00_Quarto/index.html#hyperlinks", + "objectID": "course/00_Quarto/slides.html#hyperlinks", + "href": "course/00_Quarto/slides.html#hyperlinks", "title": "Introduction to Quarto", "section": "Hyperlinks", - "text": "Hyperlinks\nYou can link to a website by surrounding word of interest in [] and placing the url within () adjacent to it.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] + "text": "Hyperlinks\n\n\n\n\n\n\n\n\n.\n\n\nYou can link to a website by surrounding word of interest in [] and placing the url within () adjacent to it." }, { - "objectID": "course/00_Quarto/index.html#images", - "href": "course/00_Quarto/index.html#images", + "objectID": "course/00_Quarto/slides.html#images", + "href": "course/00_Quarto/slides.html#images", "title": "Introduction to Quarto", "section": "Images", - "text": "Images\nYou can place images by adding the following, as long as the file.path to the image is correctly formatted. In my case, this is why I include images folders within my folders to simplify the copy and paste.", - "crumbs": [ - "About", - "Getting Started", - "00 - Quarto" - ] - }, - { - "objectID": "course/00_Positron/index.html", - "href": "course/00_Positron/index.html", - "title": "Using Positron", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Images\n\n\n\n\n\n\n\n\n.\n\n\nYou can place images by adding the following, as long as the file.path to the image is correctly formatted. In my case, this is why I include images folders within my folders to simplify the copy and paste." }, { - "objectID": "course/00_Positron/index.html#console", - "href": "course/00_Positron/index.html#console", + "objectID": "course/00_Positron/slides.html#console", + "href": "course/00_Positron/slides.html#console", "title": "Using Positron", "section": "Console", - "text": "Console\nAt the bottom of the sceen, you will first see the Console Tab. This is the tab where your lines of code when executed (run) will appear, as well as any messages, warnings or errors that get returned. On the right side of the console, you can find several buttons, among them restart R and delete session (for when you need a fresh start), and clear console (which keeps all previously run outputs and objects, but clears away the displayed text within the console).", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Console\n\n\n\n\n\n\n\n\n.\n\n\nAt the bottom of the sceen, you will first see the Console Tab. This is the tab where your lines of code when executed (run) will appear, as well as any messages, warnings or errors that get returned. On the right side of the console, you can find several buttons, among them restart R and delete session (for when you need a fresh start), and clear console (which keeps all previously run outputs and objects, but clears away the displayed text within the console)." }, { - "objectID": "course/00_Positron/index.html#terminal", - "href": "course/00_Positron/index.html#terminal", + "objectID": "course/00_Positron/slides.html#terminal", + "href": "course/00_Positron/slides.html#terminal", "title": "Using Positron", "section": "Terminal", - "text": "Terminal\nRight next to the Console tab is your Terminal tab. While the console tab is primarily used to run R code within Positron, the terminal is the interface where code containing system commands directed at at your computer is entered. We will use this less frequently, primarily in two context: 1) rendering Quarto documents, and 2) commiting changes to version control. Among the buttons on the right-side of the terminal to make note of are the + button to add a new terminal, and the trash/garbage can button to kill (stop) the terminal.\n\n\n\nThe other tabs (Problems, Output, Ports, Debug Console) are used less frequently. I usually will Problems and Debug when something goes wrong with the code, as various warning and error messages will end up being displayed there.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Terminal\n\n\n\n\n\n\n\n\n.\n\n\nRight next to the Console tab is your Terminal tab. While the console tab is primarily used to run R code within Positron, the terminal is the interface where code containing system commands directed at at your computer is entered. We will use this less frequently, primarily in two context: 1) rendering Quarto documents, and 2) commiting changes to version control. Among the buttons on the right-side of the terminal to make note of are the + button to add a new terminal, and the trash/garbage can button to kill (stop) the terminal." }, { - "objectID": "course/00_Positron/index.html#help", - "href": "course/00_Positron/index.html#help", + "objectID": "course/00_Positron/slides.html#help", + "href": "course/00_Positron/slides.html#help", "title": "Using Positron", "section": "Help", - "text": "Help\nWhen trying to evaluate how a particular function is working in R, you can hover over it and positron will open up the documentation for that particular function if available, alternatively, you can enter ?theParticularFunctionsName in the console and hit enter to similarly view what is occuring.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Help\n\n\n\n\n\n\n\n\n.\n\n\nWhen trying to evaluate how a particular function is working in R, you can hover over it and positron will open up the documentation for that particular function if available, alternatively, you can enter ?theParticularFunctionsName in the console and hit enter to similarly view what is occuring." }, { - "objectID": "course/00_Positron/index.html#variables", - "href": "course/00_Positron/index.html#variables", + "objectID": "course/00_Positron/slides.html#variables", + "href": "course/00_Positron/slides.html#variables", "title": "Using Positron", "section": "Variables", - "text": "Variables\nOn the upper-portion of the Secondary Side Bar, we can find the Session window, containing the Variables tab. As you run (execute) lines of code, and different variables, objects and functions are created, these become visible under the variables tab on the upper right.\n\n\n\nFor some types of objects (generally data.frames and other matrix-like objects), you can click on their listing under variables to expand to see additional details about the object (column names, etc.) as well as view a larger version which will appear within the Editor window.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Variables\n\n\n\n\n\n\n\n\n.\n\n\nOn the upper-portion of the Secondary Side Bar, we can find the Session window, containing the Variables tab. As you run (execute) lines of code, and different variables, objects and functions are created, these become visible under the variables tab on the upper right." }, { - "objectID": "course/00_Positron/index.html#plots", - "href": "course/00_Positron/index.html#plots", + "objectID": "course/00_Positron/slides.html#plots", + "href": "course/00_Positron/slides.html#plots", "title": "Using Positron", "section": "Plots", - "text": "Plots\nSimilarly, any generated Plots or Documents will appear within the Secondary Side Bar, either under Plots (bottom) or Viewer (top) tabs.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Plots\n\n\n\n\n\n\n\n\n.\n\n\nSimilarly, any generated Plots or Documents will appear within the Secondary Side Bar, either under Plots (bottom) or Viewer (top) tabs." }, { - "objectID": "course/00_Positron/index.html#view", - "href": "course/00_Positron/index.html#view", + "objectID": "course/00_Positron/slides.html#view", + "href": "course/00_Positron/slides.html#view", "title": "Using Positron", "section": "View", - "text": "View\nOn the upper bar multiple tabs can be found, which we will explore in due time. Most useful to point out is the View tab. If you accidentally close your console, session or plots window, and are trying to get them to reapper, you would need to reselect them from this tab.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "View\n\n\n\n\n\n\n\n\n.\n\n\nOn the upper bar multiple tabs can be found, which we will explore in due time. Most useful to point out is the View tab. If you accidentally close your console, session or plots window, and are trying to get them to reapper, you would need to reselect them from this tab." }, { - "objectID": "course/00_Positron/index.html#pages", - "href": "course/00_Positron/index.html#pages", + "objectID": "course/00_Positron/slides.html#pages", + "href": "course/00_Positron/slides.html#pages", "title": "Using Positron", "section": "Pages", - "text": "Pages\nThe pages tab and the left-side bar show you everything that is currently within your project folder, including all the folders, and files. Once version control with Git is initiated, new files are relected showing up as green text and a dot, while modified tracked files are reflected by light brown text and a dot.\n\n\n\nThe dropdown arrows can be used to open and close specific folders to allow for better organization. There is also a scrollbar on the right-side of the side-bar to scroll through the entire folders contents.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Pages\n\n\n\n\n\n\n\n\n.\n\n\nThe pages tab and the left-side bar show you everything that is currently within your project folder, including all the folders, and files. Once version control with Git is initiated, new files are relected showing up as green text and a dot, while modified tracked files are reflected by light brown text and a dot." }, { - "objectID": "course/00_Positron/index.html#search", - "href": "course/00_Positron/index.html#search", + "objectID": "course/00_Positron/slides.html#search", + "href": "course/00_Positron/slides.html#search", "title": "Using Positron", "section": "Search", - "text": "Search\nThe search tab on the left side bar is something that I use routinely.\n\n\n\nIt can help locate code that you had been working on, but have since forgotten where it is at. Here is an example of finding the files where I had used a function that needed modifying within a local project folder’s files.\n\n\n\nSimilarly, if you need to replace a particular character string with another, the replace with field below can help simplify the task without having to track down and change 20 lines across 5 files.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Search\n\n\n\n\n\n\n\n\n.\n\n\nThe search tab on the left side bar is something that I use routinely." }, { - "objectID": "course/00_Positron/index.html#extensions", - "href": "course/00_Positron/index.html#extensions", + "objectID": "course/00_Positron/slides.html#extensions", + "href": "course/00_Positron/slides.html#extensions", "title": "Using Positron", "section": "Extensions", - "text": "Extensions\nOn the far-left side we can find the Activity bar, which contains several tabs. Which tab you have selected will then dictate the contents of your left side-bar.\nOccupying the left side bar are several tabs. One of these is Extensions, which shows “Plugins” (or the VScode equivalent) that extend the functionality of Positron further. The ones you have installed may vary, but the main ones in context of this course are Air (provides color and highlights syntax for R code to make interpretation easier) as well as Quarto (for rendering the various document types).", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] + "text": "Extensions\n\n\n\n\n\n\n\n\n.\n\n\nOn the far-left side we can find the Activity bar, which contains several tabs. Which tab you have selected will then dictate the contents of your left side-bar.\nOccupying the left side bar are several tabs. One of these is Extensions, which shows “Plugins” (or the VScode equivalent) that extend the functionality of Positron further. The ones you have installed may vary, but the main ones in context of this course are Air (provides color and highlights syntax for R code to make interpretation easier) as well as Quarto (for rendering the various document types)." }, { - "objectID": "course/00_Positron/index.html#git", - "href": "course/00_Positron/index.html#git", + "objectID": "course/00_Positron/slides.html#git", + "href": "course/00_Positron/slides.html#git", "title": "Using Positron", "section": "Git", - "text": "Git\nThe Git tab on the left side bar is where once version control is initiated for the project folder, we can see changes that have occurred to the individual files since the last commit. These changes can be added to a new commit by clicking on the + sign. This will be covered more extensively in the next section\n\n\n\nSimilarly, if you want to discard a change that has occured, the circular arrow will revert to the last commited version. Selecting and pressing the delete button will similarly work.\n\n\n\nSelecting the … options will highlight all the various git functions, some of which we will cover more extensively in the next section and throughout the course.", - "crumbs": [ - "About", - "Getting Started", - "00 - Positron" - ] - }, - { - "objectID": "course/00_Homeworks/index.html", - "href": "course/00_Homeworks/index.html", - "title": "Getting Help", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - Getting Help" - ] + "text": "Git\n\n\n\n\n\n\n\n\n.\n\n\nThe Git tab on the left side bar is where once version control is initiated for the project folder, we can see changes that have occurred to the individual files since the last commit. These changes can be added to a new commit by clicking on the + sign. This will be covered more extensively in the next section" }, { - "objectID": "course/00_Homeworks/index.html#discussions-forum", - "href": "course/00_Homeworks/index.html#discussions-forum", + "objectID": "course/00_Homeworks/slides.html#discussions-forum", + "href": "course/00_Homeworks/slides.html#discussions-forum", "title": "Getting Help", "section": "Discussions Forum", - "text": "Discussions Forum\nOn the course’s GitHub repository, we have opened up a Discussions page that we plan to use as a community forum. We hope that it will serve multiple functions, from providing a better sense of community for the online participants, to facilitating asking and receiving help on something that is not clear, provide feedback about something that it not working out, as well as a place to celebrate and show off your coding wins.\n\nTo keep the Discussions forum semi-organized, we have set up several categories, please select the appropiate category when opening a new discussion!\n\n\n\nCode of Conduct\n\nWe ask that all course participants read and adhere to the spirit of our Code of Conduct. We are all human, at different points in our learning journeys, so what may be obvious to you at your point of your learning journey may have necessarily be obvious to someone just getting started. This course is our giving back to those in the community, but is on a voluntary basis in addition to our regular workload. While we try to reply quickly, sometimes our cell sorters fully melt down sending everything into chaos. We will reply when we can.\n\n\n\n\nAnnouncements\n\nWhen we send out an email to all participants, we will also repost it as an announcement. This ensures that even if you are not on our mailing list, you will still be able to have access to important information and course updates.\n\n\n\n\n\n\n\nGeneral\n\nThis section category can be used for any discussions that you think are worth having, that don’t fall under any of the other category. Good examples are continuing a discussion that was held during one of the livestreams; wanting to discuss and dive further into a given week’s topic; or bringing in additional resources that you found useful to understandingn something that didn’t click initially. This space is for the community to shape as they see best.\n\n\n\n\n\n\n\nIdeas\n\nHave an idea for a new topic or a way to improve the course? We would love to hear them. Provide as many details, and ideally, an example, and if it is doable, we will try to implement them.\n\n\n\n\n\n\n\nIntroductions\n\nOnline courses can be odd in terms of replicating in-person dynamics. Fortunately, we have gathered the largest cohort of “cytometrist with no-to-little flow experience trying to learn R at the same time” that the world has ever seen, so best to take advantage of this while we can. Treat this section as if we had just met at a conference, tell us about yourself, what brings you here, and what you want to hopefully be able to do after the course ends.", - "crumbs": [ - "About", - "Getting Started", - "00 - Getting Help" - ] + "text": "Discussions Forum\n\n\n\n\n\n\n\n\n.\n\n\nOn the course’s GitHub repository, we have opened up a Discussions page that we plan to use as a community forum. We hope that it will serve multiple functions, from providing a better sense of community for the online participants, to facilitating asking and receiving help on something that is not clear, provide feedback about something that it not working out, as well as a place to celebrate and show off your coding wins." }, { - "objectID": "course/00_Homeworks/index.html#polls", - "href": "course/00_Homeworks/index.html#polls", + "objectID": "course/00_Homeworks/slides.html#polls", + "href": "course/00_Homeworks/slides.html#polls", "title": "Getting Help", "section": "Polls", - "text": "Polls\n\nOccasionally, we will need to gather community feedback on what is working and what is not working. We will sporadically post Polls for this purpose.\n\n\n\n\n\n\nQ&A\n\nThe Questions and Answers (Q&A) section is where you go if something is not clear, not working, and you are trying to troubleshoot your way through it. First thing before posting, search! to see if someone has already asked the question. If you don’t find anything, go ahead and open a new discussion.\nSince we are not at your computer, and don’t have your dataset, when troubleshooting it is best to include a minimal reproducible example of the issuen you are encountering, slimming down the number of files needed to be transferred, and generalizing down the code so that other course participants and instructors can follow along. If this is not doable, or if the problem requires added context (and larger files), create a new repository on your GitHub, make it public, and share the links to it in your post. The goal would be to download the folder and be able to replicate the issue that you are encountering.\n\n\n\n\n\n\n\n\n\n\nShow and Tell\n\nWhere Q&A section is for getting help on code that is frustratingly not working, Show and Tell is where to go and celebrate when you finally get things to work. Share your wins, show us the extra pretty graphs, bizarre autofluorescence signatures, or odd outputs that just make you laugh.", - "crumbs": [ - "About", - "Getting Started", - "00 - Getting Help" - ] + "text": "Polls\n\n\n\n\n\n\n\n\n\n.\n\n\nOccasionally, we will need to gather community feedback on what is working and what is not working. We will sporadically post Polls for this purpose." }, { - "objectID": "course/00_Homeworks/index.html#issues", - "href": "course/00_Homeworks/index.html#issues", + "objectID": "course/00_Homeworks/slides.html#issues", + "href": "course/00_Homeworks/slides.html#issues", "title": "Getting Help", "section": "Issues", - "text": "Issues\nMost of the time, if you are having trouble getting you code to run, you should first stop after some initial troubleshooting should be to open a new Discussion under the Q&A category. Here you will be able to get both community and instructor help and suggestions to hopefully resolve whatever is going on.\n\nThe Issues page is primarily meant for course-specific problems that require the course instructor intervention to fix. For example, we release a new week of material, and while it runs fine for both Windows and Linux, the code fails to run for all MacOS users. While you may be able to find workarounds on your own, it’s ultimately our responsibility to help provide a solution so that everyone can move forward. This is the situation where opening an Issue is appropiate.\n\n\n\nSimilarly, if our code contains a wrong argument, is returning a deprecation warning, etc. open an issue to let us know. While we may not be able to fix something that is not directly related to our code, we can redirect it to the package maintainers so that they can fix the issue.\nAnd likewise, if you find multiple typos in the documentation, you can open an issue and propose carrying out a pull-request to fix them.", - "crumbs": [ - "About", - "Getting Started", - "00 - Getting Help" - ] + "text": "Issues" }, { - "objectID": "course/00_Homeworks/index.html#submitting-take-home-problems", - "href": "course/00_Homeworks/index.html#submitting-take-home-problems", + "objectID": "course/00_Homeworks/slides.html#submitting-take-home-problems", + "href": "course/00_Homeworks/slides.html#submitting-take-home-problems", "title": "Getting Help", "section": "Submitting Take-Home Problems", - "text": "Submitting Take-Home Problems\nEach week, during the course, we introduce and cover the main concepts for the particular concept. Our goal is to provide you with the necessary code and enough code to be able to get the jist. However, to become comfortable and be able to apply what you have learned, you will need to explore beyond our examples, try it with your own datasets, encounter things that don’t work, and troubleshoot your way through them. It’s this cycle of venturing into the unknown that develops strong coding skills that are needed to overcome any barrier you encounter. The goal of the take-home questions is to provide some less curated problems that will take a little longer to answer to help get you started on your own exploration of the topic.\nAs previously mentioned, these take-home problems are completely optional. If you are in the middle of solving them and want to seek feedback from then community and course instructors, open a Discussion under the general category is the way to go.\nHowever, if you have completed them, and want course instructor feedback, you can submit them to us in the form of a pull-request to the CytometryInR repo’s homework branch. We will take a look, offer constructive suggestions, and when ready merge the solution. This will also result in GitHub listing you as a contributor to the course.\nWe will outline the basic steps of how to set up and open a pull-request, to help simplify the process.\n\nSync your Fork\nFirst off, make sure to Sync your fork of the Cytometry in R project. That makes sure that all the commits present are up-to-date and simplifies the process of having the pull-request being merged.\n\n\n\n\n\n\n\n\n\n\n\nPull to Local\nHaving Synced your branch on GitHub, return to your computer, open the CytometryInR repository and pull in the changes locally.\n\n\n\n\nCreate own Folder under Homeworks\nUnder the course folder, you will find folders for each week. Within these folders find the homework folder. This will appear empty except for a README file with ionstructions. It is within this folder you will need to create your own folder.\nTo ensure there are no conflicts on the pull-request merge, please use your GitHub username as the folder name.\n\n\n\nOnce you have your folder inside homework, go ahead and copy anything you are turning in from their respective working project folders. Remember, the goal is minimal reproducible example is the goal. Rendered Quarto Documents are preferred, but we will also accept scripts and small data files and images. a README.MD file with anything you want me to know,\n\n\n\n\n\n\n\n\nSign off Commit\nNow that everything is present, Sign Off and Commit the change.\n\n\n\n\n\nPush Branch to GitHub.\nProceed to push the branch to GitHub.\n\n\n\n\n\nRe-sync if necessary\nIf additional changes have occured to the parent CytometryInR repository, go ahead and update your branch. As long as your edits occurred within your folder inside homework folders, they should still be able to merge.\n\n\n\n\n\n\n\n\nOpen a pull-request\nTo start a pull request, click to see how your commit is ahead by\n\n\n\nNext, switch from the parent CytometryInR main branch (used for the website and course) to the homework branch for that respective week (used for the take-home problems).\n\n\n\nOnce this is done, select Pull request\n\n\n\nMake sure to triple check it’s bound for the homeworks branch. If you see that it is not capable of merging, verify that your commit only contains files within your respective homework username folder. Fill in the required fields of the pull request.\n\n\n\nAnd when ready, create the pull request.\n\n\n\n\nWait for Feedback\nOn our end, once you have created a pull request, we will review your work, offer constructive suggestions, etc. If I ask for revisions, all you would need to do is update your files, commit again on your side of the local forked repository.\n\n\n\n\n\nFinal Review and Merge\nIf all is good, we will merge the pull request and your solution to the take-home problems will now be available on the homework branch.\n\n\n\n\n\nAfter course\nAfter the course completes, we will merge homework branch with the main branch, making the community solutions to the take-home problems additional coding examples that can be used by others following along after the course concludes.", - "crumbs": [ - "About", - "Getting Started", - "00 - Getting Help" - ] - }, - { - "objectID": "course/00_GitHub/index.html", - "href": "course/00_GitHub/index.html", - "title": "Using GitHub", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] + "text": "Submitting Take-Home Problems\n\n\n\n\n\n\n\n\n.\n\n\nEach week, during the course, we introduce and cover the main concepts for the particular concept. Our goal is to provide you with the necessary code and enough code to be able to get the jist. However, to become comfortable and be able to apply what you have learned, you will need to explore beyond our examples, try it with your own datasets, encounter things that don’t work, and troubleshoot your way through them. It’s this cycle of venturing into the unknown that develops strong coding skills that are needed to overcome any barrier you encounter. The goal of the take-home questions is to provide some less curated problems that will take a little longer to answer to help get you started on your own exploration of the topic." }, { - "objectID": "course/00_GitHub/index.html#creating-an-account", - "href": "course/00_GitHub/index.html#creating-an-account", + "objectID": "course/00_GitHub/slides.html#creating-an-account", + "href": "course/00_GitHub/slides.html#creating-an-account", "title": "Using GitHub", "section": "Creating an Account", - "text": "Creating an Account\nWe will first navigate to the GitHub homepage. If you haven’t previously created an account, click on the button to sign up for an account.\n\n\n\nOn the sign-up page, you will fill in various details needed to create an account. Please remember that GitHub usernames are visible to others. Additionally, if you end up sharing code with others as part of a manuscript, or use GitHub to create a personal portfolio website in the future, your username will appear as part of the URL.\nFor example, in my case, my user name is DavidRach, so my GitHub profile ends up as: https://github.com/DavidRach. For our course, the core’s GitHub user name is UMGCCCFCSR, so the github profile ends up as https://github.com/UMGCCCFCSR, while the course website ends up as https://umgcccfcsr.github.io/CytometryInR/\n\n\n\nOnce you have entered your new account information, you will need your account creation by entering the code sent to the email address that you provided.\n\n\n\nOnce account creation has been confirmed, please proceed to login to GitHub for the first time.", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] + "text": "Creating an Account\n\n\n\n\n\n\n\n\n.\n\n\nWe will first navigate to the GitHub homepage. If you haven’t previously created an account, click on the button to sign up for an account." }, { - "objectID": "course/00_GitHub/index.html#github-profile", - "href": "course/00_GitHub/index.html#github-profile", + "objectID": "course/00_GitHub/slides.html#github-profile", + "href": "course/00_GitHub/slides.html#github-profile", "title": "Using GitHub", "section": "GitHub Profile", - "text": "GitHub Profile\nUpon creating a brand new account, your GitHub homepage will initially look rather empty, and can be intimidating to navigate for the first time.\nFor now, on the upper right, go ahead and click on the default profile picture icon…\n\n\n\nAnd then select Profile…\n\n\n\nYou are now on your public GitHub profile page. For a newly created account, it will look something like this:\n\n\n\nFor a more established account, this page will look a little different, and can be customized to highlight various projects that you are working on.\nFor this course, we will have you set up a basic GitHub profile page for now, although you are free to customize and personalize it as much as you may want to in the future!\nTo start, first select the edit profile button on the left below the default profile icon.\n\n\n\nYou can then proceed to fill in any details that you feel are relevant and are comfortable sharing.\n\n\n\nWith the quick access details filled in, it is now time to navigate to the Settings tab. You will return to the previous menu dropdown on the upper right, and instead of selecting Profile, click on the Settings option.\n\n\n\nYou should now end up within your Public Profile Settings page.\nFeel free to edit the default profile picture, and any other fields that you feel are relevant. Once done, continue to scroll down the page past ORCID ID.\n\n\n\nWhen you reach Contributions and Activity, go ahead and select the option to include private repositories in the activity summary graphic. Then scroll down and click save. You will now be returned to your GitHub profile page.\n\n\n\nAt the top of the profile, you will see a “Your contributions” calendar graph. For a new account, it will look like this:\n\n\n\nIf you are just starting out, this chart will be mostly empty, but will fill in as you work on projects, see here as an example.\nEvery time you save your code (ie. make a commit), the activity will be reflected in this chart. By clicking the option in settings, code made within a private repository will remain private, but will count toward your contribution chart. As you progress through the course, this will provide a nice visual reminder of the progress you have made, and the obstacles that you have overcome.", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] + "text": "GitHub Profile\n\n\n\n\n\n\n\n\n.\n\n\nUpon creating a brand new account, your GitHub homepage will initially look rather empty, and can be intimidating to navigate for the first time.\nFor now, on the upper right, go ahead and click on the default profile picture icon…" }, { - "objectID": "course/00_GitHub/index.html#github-readme", - "href": "course/00_GitHub/index.html#github-readme", + "objectID": "course/00_GitHub/slides.html#github-readme", + "href": "course/00_GitHub/slides.html#github-readme", "title": "Using GitHub", "section": "GitHub ReadMe", - "text": "GitHub ReadMe\nWith this done, we modify your GitHub profile by adding one customized element, a ReadMe page. This will be used for a couple projects during the course, and can be personalized further in the future.\nTo create a ReadMe page for your profile, we will navigate to the upper right of the screen and click on the + sign.\n\n\n\nWe will then select the Create New Repository option.\n\n\n\nYou will next create a repository (folder), naming it exactly the same as your username. This will be recognized by GitHub as being a special type of repository corresponding to the ReadMe section of your profile.\nFor options, leave the visibility as Public, and Add README set to On. And proceed to Create Repository.\n\n\n\nHaving created the repository (folder), you will see it has been populated by a few default files. For now, you will be editing the README.md file. On a new repository, the easiest way to access it is by clicking the green option on the right side of your screen.\n\n\n\nWith the README.md file now opened, you will be able to see generic filler text that is suggested by GitHub.\nFor this course, I will ask you to add a couple elements for now. You are free to return and further personalize it later if you wish to do so.\n\n\n\nThe type of file that we are working with is a Markdown file, which can allow for a bunch of customizations which we will cover throughout the course.\nFor now, please add and customize the following questions:\nCytometry In R\nLocation: Baltimore, Maryland, USA\nMy Favorite Fluorophore/Metal-Isotope: Spark Blue 550\nPrevious Coding Experience: Repeatedly Calling IT\nWhat I Hope to Get From This Course: A faster way to match FlowSOM clusters to their likely cell type.\n\n\n\nNext, to save you will select the green “Commit changes” button. We will cover the meaning of “Commit” more in-depth during the Git section.\nFor now, write a short summary of the change you made to the file in the “Commit message”, and any additional details within the “Extended description” field. When ready, click the green “Commit changes” button.\n\n\n\nYou will now be able to see the updated README.md file, as you can see in our example below. To make additional edits, you would select the pencil icon on the right-center side of the screen.\n\n\n\nNext, navigate back to your profile page (by clicking on either your username or the Overview option on the tabs).\nYou will see that the README file contents are now displayed on the upper portion of your GitHub profile. Feel free to circle back and customize this further to your liking.\nIn this last example, we created your first repository (folder). Since this is public, it is now shown below the README section of the profile under your repositories. You can also see that your commits made in the process of making the changes are now shown both in the Contributions graph, and under the Contributor Activity summary at the bottom of the page.", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] + "text": "GitHub ReadMe\n\n\n\n\n\n\n\n\n.\n\n\nWith this done, we modify your GitHub profile by adding one customized element, a ReadMe page. This will be used for a couple projects during the course, and can be personalized further in the future.\nTo create a ReadMe page for your profile, we will navigate to the upper right of the screen and click on the + sign." }, { - "objectID": "course/00_GitHub/index.html#github-repository", - "href": "course/00_GitHub/index.html#github-repository", + "objectID": "course/00_GitHub/slides.html#github-repository", + "href": "course/00_GitHub/slides.html#github-repository", "title": "Using GitHub", "section": "GitHub Repository", - "text": "GitHub Repository\nHaving set up your GitHub profile, it now is time to make sure you have access to our course materials. We will have you navigate to our course’s GitHub profile\nOn the profile page, you will be able to see our version of the README, our repositories, and the Contributions graph and Contribution activity sections.\nPlease click on the CytometryInR to navigate to its repository (folder)\n\n\n\nOn this page, you will see several elements that you will be circling back to throughout the course.\nFor our course, we will be extentsively ussing the Discussions page as a community forum. If you have any questions, are looking for feedback, or want to show off something that you worked on, this is the place for it. This will also help make sure\n\n\n\nThe Issues tab is where you will need to go to open an Issue if you encounter a bug (or major documentation typo), so that I can cicle back and correct them when I have the chance.\n\n\n\nTo submit the optional take-home problems, you would turn in these problems by going to the Pull Request tab, and initiating a pull request between your forked version of the project and our “homework” branch (more details on this later).\n\n\n\nOptionally, you can “Star” a repository. This is basically the GitHub equivalent of liking a project. In our case, we will often star a repository since it will be saved under the Stars tab of our profile, which makes finding it again significantly easier a few weeks later after forgetting the repository name.\n\n\n\nTo see projects that you have starred, you can select the Stars option from the same dropdown you used to get to Settings.\n\n\n\nOr from your GitHub profile, you can see these under Stars tab.", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] + "text": "GitHub Repository\n\n\n\n\n\n\n\n\n.\n\n\nHaving set up your GitHub profile, it now is time to make sure you have access to our course materials. We will have you navigate to our course’s GitHub profile\nOn the profile page, you will be able to see our version of the README, our repositories, and the Contributions graph and Contribution activity sections.\nPlease click on the CytometryInR to navigate to its repository (folder)" }, { - "objectID": "course/00_GitHub/index.html#forking-cytometryinr", - "href": "course/00_GitHub/index.html#forking-cytometryinr", + "objectID": "course/00_GitHub/slides.html#forking-cytometryinr", + "href": "course/00_GitHub/slides.html#forking-cytometryinr", "title": "Using GitHub", "section": "Forking CytometryInR", - "text": "Forking CytometryInR\nBefore we go further, we will need you to make your own copy of the course repository (ie. fork it). This will allow you to quickly retrieve all the new materials and code corrections by simply rereshing (ie. syncing) your forked version with our upstream parent branch once a week.\n\n\nTo fork the course repository, you will select the “Fork repository” option on the upper-center portion of your screen.\n\n\n\nBy “Fork-ing” a repository, you are basically copying the contents from that repository to a newly created repository on your own GitHub. Forked projects are still linked to the original (parent) fork, and can retrieve any updates via syncing, as well as return changes via a pull request.\nFor this course, when you create the fork, keep the existing repository name (“CytometryInR”). Importantly, select the copy main branch option. This will ensure you only get the code and data needed for the course copied over, and don’t end up with your entire hard-drive filled will website elements, or other people’s solutions to the take-home problems.\n\n\n\nOnce you have created the fork, you will see your copy of the forked repository under your own username. Seeing as you have just now forked the project, you will see the notification that you are up to date with the existing version of the CytometryInR course repository.\nAs we go through the course, and new material is released each week on Sunday at 2200 EST (Monday 0300 GMT+0), you will see this changed to behind the main branch by a number of commits, and have the option to sync in the changes to your fork to gain access to that week’s material.\n\n\n\nIf you remember, previously under your GitHub profile, the Repositories tab only contained the repository corresponding to your ReadMe section.\n\n\n\nYou should however now be able to see your fork of the CytometryInR repository. As you add project specific repositories throughout the course, they will also appear here.", - "crumbs": [ - "About", - "Getting Started", - "00 - GitHub" - ] - }, - { - "objectID": "course/00_Git/index.html", - "href": "course/00_Git/index.html", - "title": "Version Control with Git", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "Forking CytometryInR\n\n\n\n\n\n\n\n\n.\n\n\nBefore we go further, we will need you to make your own copy of the course repository (ie. fork it). This will allow you to quickly retrieve all the new materials and code corrections by simply rereshing (ie. syncing) your forked version with our upstream parent branch once a week." }, { - "objectID": "course/00_Git/index.html#new-folder-from-template", - "href": "course/00_Git/index.html#new-folder-from-template", + "objectID": "course/00_Git/slides.html#new-folder-from-template", + "href": "course/00_Git/slides.html#new-folder-from-template", "title": "Version Control with Git", "section": "New Folder from Template", - "text": "New Folder from Template\nSince Positron can use multiple programming languages, when we select “New Folder from Template” we will be asked what kind of folder template we want to use. Since we are working in R, we will select the “R Project” option.\n\n\n\nWe will next be asked to name the new project folder and a storage location.\nOne thing I would like to remind everyone who is just starting to code is that it is best to avoid using special characters (ex. @ $ # ^ ! ; : ,) in any folder or file name. This is because when coding, these can be misinterpreted as commands.\nWhile spaces are generally okay, it is often to best stick to to stick to hyphens (-), underscores (_). We will explore naming conventions in more depth at a later time.\n\n\n\nAnother useful thing to know when getting started with version control, it is best to save your files within your local computer, avoid using OneDrive or other cloud storage options for the time reason. The reason behind is that permissions to write/save to the cloud locations can sometimes be quite finicky, and some autosave/indexing behaviors can cause issues. akes things easier to save or modify without running into permission issues. For most of our course examples, we will be saving our Project Folders under the Documents Folder.\nHaving named our new Project Folder, and designated a storage location, go ahead and check the Initialize Git Repository option. This will indicate to version control to monitor content and changes to files within this folder.\n\n\n\nThe next setup screen will verify which version of R you wish to use. Since we are just getting started, your most recent version of R (usually system) should work. We will also leave the “renv” (reproducible environment setup) option unchecked for the time being (we will revisit the concept later in the course).\n\n\n\nAnd if all goes well, we should see the “New Folder Created” popup.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "New Folder from Template\n\n\n\n\n\n\n\n\n.\n\n\nSince Positron can use multiple programming languages, when we select “New Folder from Template” we will be asked what kind of folder template we want to use. Since we are working in R, we will select the “R Project” option." }, { - "objectID": "course/00_Git/index.html#creating-subfolders", - "href": "course/00_Git/index.html#creating-subfolders", + "objectID": "course/00_Git/slides.html#creating-subfolders", + "href": "course/00_Git/slides.html#creating-subfolders", "title": "Version Control with Git", "section": "Creating SubFolders", - "text": "Creating SubFolders\nOnce your new project folder has opened, you should be seeing the main layout elements that we briefly covered in the Positron walk-through.\nFor this section, we will primarily be focused on what is happening within the primary side bar on the left, where changes to the individual files within the folder since the last save/commit will be reflected by colored text.\nFor my own projects, there are some elements of organization that I go ahead and add for each new folder. These include both a data and an images subfolders to help keep things a little more organized.\nTo create these folders, we would click on the respective add folder (+) button on the side bar. Files and Folders can be clicked and dragged within the primary side bar to move things to new folder locations.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "Creating SubFolders\n\n\n\n\n\n\n\n\n.\n\n\nOnce your new project folder has opened, you should be seeing the main layout elements that we briefly covered in the Positron walk-through.\nFor this section, we will primarily be focused on what is happening within the primary side bar on the left, where changes to the individual files within the folder since the last save/commit will be reflected by colored text.\nFor my own projects, there are some elements of organization that I go ahead and add for each new folder. These include both a data and an images subfolders to help keep things a little more organized.\nTo create these folders, we would click on the respective add folder (+) button on the side bar. Files and Folders can be clicked and dragged within the primary side bar to move things to new folder locations." }, { - "objectID": "course/00_Git/index.html#creating-files", - "href": "course/00_Git/index.html#creating-files", + "objectID": "course/00_Git/slides.html#creating-files", + "href": "course/00_Git/slides.html#creating-files", "title": "Version Control with Git", "section": "Creating Files", - "text": "Creating Files\nIn context of this course, we will primarily be working with two types of files when coding:\n\nR Scripts: These files end in .R. These contain only code (with occasional # comment line). These are often used for self-contained code that once we get them working we rarely need to modify.\nQuarto Markdowns: These files end in .qmd. They contain a .yaml header, followed by a mix of regular written text (often explanations or other documentation), and sections (ie. chunks) that contain code. These are used when we are still getting the code to work, when we need to modify inputs frequently, or simply when we need to document what and why we are doing something to make life easier for our future-self two months from now.\n\n\n\nIn this example, I will go ahead and select the new file icon\n\n\n\nThenn I will name the file, and designate it as a Quarto Markdown file by adding the .qmd at the end of the name to denote the file type.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "Creating Files\n\n\n\n\n\n\n\n\n.\n\n\nIn context of this course, we will primarily be working with two types of files when coding:\n\nR Scripts: These files end in .R. These contain only code (with occasional # comment line). These are often used for self-contained code that once we get them working we rarely need to modify.\nQuarto Markdowns: These files end in .qmd. They contain a .yaml header, followed by a mix of regular written text (often explanations or other documentation), and sections (ie. chunks) that contain code. These are used when we are still getting the code to work, when we need to modify inputs frequently, or simply when we need to document what and why we are doing something to make life easier for our future-self two months from now." }, { - "objectID": "course/00_Git/index.html#qmd-files", - "href": "course/00_Git/index.html#qmd-files", + "objectID": "course/00_Git/slides.html#qmd-files", + "href": "course/00_Git/slides.html#qmd-files", "title": "Version Control with Git", "section": "QMD Files", - "text": "QMD Files\nOnce this is done, we can now see we have a new .qmd file (“Example.qmd” in this case).\n\nYAML\nAs previously mentioned, the start of a Quarto Markdown file containg a YAML code chunk that is used to set formatting choices (we will explore this in-depth during the next section)\nWhat designates the location of the YAML block are three hyphens at the start, and three hyphens at the end. For this example, we will also provide a “title:” and “format:” field for the time being (see additional options here).\n\n\n\n\n\nText\nWith a basic YAML formatting block now in place, we can build out other elements of our Quarto Markdown document. Unless otherwise specified, everything else in the document is assumed to be text, so I will go ahead and provide an initial text description of what I am trying to do.\n\n\n\n\n\nCode-Chunks\nHaving provided some initial text for documentation, we can then add code-block chunks to start writing some code.\nThe easiest way to do do this is to click the respective option on the upper-right of the Editor screen. Since Positron can handle multiple programming languages, so the chunk is inserted, we will need to select the language we use to be used within the code chunk (R in this case).\n\n\n\nYou will notice, that the inserted code block starts off with three backticks (`) and then “{r}”. The end of the code block is denoted by an additional three backticks.\nWe can also add new code blocks by simply typing these elements into the location we want to place a code chunk (as long as we are careful to add 3 backticks also at the end).\n\n\n\n\n\n\n\n\nRunning Code\nNow that we have two code-chunks written, we can write lines of code within them. For this example, I will use two beginner friendly functions, print(“Hello”), which will print the contents contained between the ” ” to the console, and getwd() which will return the location of the folder you are working within (ie. the working directory).\nTo run/execute these lines of code, we have a couple options. We can click on the Run Cell option that appears on the upper-left side of the code chunk. Additionally, it has a companion option that will run all code chunks above it.\n\n\n\nWhen a code block is successfully run, you will see within the console (lower bottom of the screen) the line of code be run, with any returned outputs appear directly after.\n\n\n\nAn alternative to clicking the Run Cell button is to click on the line of code you are interested in running, then press (Ctrl + Enter)/(Command + Enter). This will execute the line of code that you have clicked on. This can be useful in scenarios where you want to run a specific line, and not the entire code-chunk.\n\n\n\nUsing this approach, you can see the location (ie. file path) of the current working directory was returned to the Console.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "QMD Files\n\n\n\n\n\n\n\n\n.\n\n\nOnce this is done, we can now see we have a new .qmd file (“Example.qmd” in this case).\n\n\n\n\n\nYAML\n\n\n\n\n\n\n\n\n.\n\n\nAs previously mentioned, the start of a Quarto Markdown file containg a YAML code chunk that is used to set formatting choices (we will explore this in-depth during the next section)\nWhat designates the location of the YAML block are three hyphens at the start, and three hyphens at the end. For this example, we will also provide a “title:” and “format:” field for the time being (see additional options here)." }, { - "objectID": "course/00_Git/index.html#local-version-control", - "href": "course/00_Git/index.html#local-version-control", + "objectID": "course/00_Git/slides.html#local-version-control", + "href": "course/00_Git/slides.html#local-version-control", "title": "Version Control with Git", "section": "Local Version Control", - "text": "Local Version Control\nHaving introduced the main elements of a Quarto Markdown file, let’s turn our attention to the tab within the editor showing our newly created .qmd file.\nWe can see there is a solid circle next to the file name, and it is appearing as green. The circle denotes unsaved changes, which we can correct by clicking on the Save Button to save the changes to our file.\n\n\n\n\nUntracked\nIf we turn our attention to the left primary sidebar, we can see that within our GitPractie folder there are three files, our Example.qmd, and the default README.md and .gitignore files. These all show up in green text with U’s to the right of the file names.\nThis denotes that the version control tracking software Git is currently considering them as “Untracked” files. While saving the document via the Save button means we will still have our changes when we reopen Positron, we won’t have any history of changes that we can use to revert back to the way all the files appeared at this exact point in time should something go wrong.\nWe will next go the address bar on the very far left, and select the Git tab.\n\n\n\nOn the Git tab, we can see that each of the three files are shown underneath a “Changes” drop-down. This contains the files that have undergone changes since the last commit. In our case, since we haven’t updated the save-state yet, this last commit would be the initial creation of the project folder.\n\n\n\nTo have version control track these individual files going forward, we can do so in two separate ways. We can add them individually by clicking the + symbol next to the individual names.\n\n\n\n\n\nStaged\nThis will result in the files being moved to the “Staged” dropdown. This denotes files being tracked with the intention of being recorded as the next save-state or waypoint (ie. a commit).\n\n\n\n\n\nCommit\nTo create a new commit (save-state or waypoint), once we have the files we want to track staged, we will write a commit message, and then press commit.\nA commit message is a brief description of the changes that have occurred to the files between this commit and the previous one. Make this short description informative enough that if you need to revert back in the future, you can quickly identify the commit you need to fall back to (more about this later).\n\n\n\nIf this your first time using version control, you will likely encounter the following pop-up asking that you provide a user.name and user.email. This is used to designate the author of the changes.If you get this popup, go ahead and select “Open Git Log”\n\n\n\n\n\nUserName and UserEmail\nThe Output tab at the bottom of the screen will open, showing the messages that led to the popup.\nThe important part to note is the commands that will be needed to provide your user name and email to the computer for authoring the commit. Typically, your email will be the same one you used for your GitHub account.\n\n\n\nFrom the displayed message, go ahead and copy\n“git config –global user.email”you@example.com””\nThen click on the adjacent terminal tab. You will paste the command in, but do not hit enter just yet.\nWindows users, please note, depending on your settings, if trying to paste from the keyboard into the terminal, you may need to press “Ctrl + Shift + V” instead of the usual “Ctrl + V”.\n\n\n\nWith the command now pasted (or typed), use your keyboard arrows to navigate to the email portion, and replace the generic email with your email address used for your GitHub account.\nMake sure that the quotation marks (“) around the email address remain present, as they help the computer identify where your email address starts and ends. Once satisfied that your email address is correct, press enter.\n\n\n\nNext up, repeat the process, this time copying over the command needed to set your user name to the terminal. Repeat the editing process to provide your name between the “” marks. Then press enter.\n\n\n\n\n\n\n\n\nFirst Commit\nNow that your user.name and email address have been provided, Git should be able to provide an author to the commit message. Reattempt to press commit button.\nIf this is successful, you will see your initial commit appear on the bottom half of the left primary side bar, under the Graph dropdown. Congrats! Your files are now being tracked by version control.\n\n\n\nIf you hover with your mouse arrow just over the commit, you can see the longer commit message and additional details appear.\nIf you click on the commit tab, a new display will open in the editor, displaying the changes that occured in that commit compared to the previous one. In this case, since we added everything since the previous commit, nothing appears on the left side, while the entire documents contents appear highlighted in green on the right.\nGreen highlighting is used to show additions, while red highlighting is used to show deletions.\n\n\n\nHaving completed this initial commit, for this example, let’s imitate a typical workflow and make some additional changes to the file before we make a second commit. Within text portions of the .qmd file, use of # denotes a section header in markdown, so let’s add a header for Introduction and click save.\n\n\n\n\n\nModified\nWithin the left primary sidebar, we can see that the Git tracking has updated. Examples.qmd is visible once again. However, becuase it is now a tracked file, instead of showing up with the “U/Untracked” green highlight, it now appears as a brownish-red with a “M/Modified”.\nLet’s make an additional change to the .qmd file by adding another section (# Setup) and a code block with a commented out line (denoted by the # at the line start), before pressing Save.\n\n\n\nIf we were now to click on the Example.qmd file in the left primary sidebar, it will open the same kind of tracking display we saw previously. This time, we can see changes since our last commit. These appear as the green highlights along the scroll-bar, corresponding to the # Introduction and # Setup headers that we have added in since the last commit.\n\n\n\nFor a larger document, we can scroll down to see the various highlighted regions.\n\n\n\nWe could now repeat the steps showed above, staging the file, writing a commit message, and commiting again by clicking on the designated buttons.\nAn important question is how often should we commit, vs. just hit save? Well… it depends :D Let’s think about this in context of a video game. If you made commits at regular intervals throughout the day (or more frequently when doing something particularly risky), you are more likely to be close enough to a particular commit (waypoint/save-state) that you can quickly revert back to without loosing any progress. Alternatively, if your last commit was last week, you will not have any intermediate versions to fall back to.\n\n\nCommit via Terminal\nHaving demonstrated how to commit changes to Git via the left primary side-bar, for this second commit, let’s do it the alternate way via the terminal (tab on the panel at the bottom of your screen).\n\n\n\nAfter clicking on the terminal tab, click on blinking command line.\nThe command to stage a file is “git add”, followed by the name of the file you want to stage.\nIn this case, you would enter “git add Example.qmd” and press Enter. \n\n\nYou will see after pressing enter a new blank terminal line appear. If you glance at the left-sidebar, you can see that Example.qmd now appears under the Staged Changes dropdown.\n\n\n\nNext up, let’s write the git commit via the terminal. In this case, the command would be “git commit -m” (-m denoting message). The commit text is then surrounded by “” marks.\nFor example: “git commit -m”Added section headers to my QMD file””\nPress enter to save the commit.\n\n\n\nAnd you should see your second commit now appear in the left primary sidebar underneath the graphs dropdown.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "Local Version Control\n\n\n\n\n\n\n\n\n.\n\n\nHaving introduced the main elements of a Quarto Markdown file, let’s turn our attention to the tab within the editor showing our newly created .qmd file.\nWe can see there is a solid circle next to the file name, and it is appearing as green. The circle denotes unsaved changes, which we can correct by clicking on the Save Button to save the changes to our file." }, { - "objectID": "course/00_Git/index.html#remote-version-control", - "href": "course/00_Git/index.html#remote-version-control", + "objectID": "course/00_Git/slides.html#remote-version-control", + "href": "course/00_Git/slides.html#remote-version-control", "title": "Version Control with Git", "section": "Remote Version Control", - "text": "Remote Version Control\n\nCopying Project Folder to GitHub\nWhile having local version control in place is helpful when you need to revert back after encountering issues, where Git shines is the ability to pass your changes to your online GitHub repository.\nNot only does this allow you to switch between computers, but should something disastrous happen to your main computer, you still have all your hard work backed up and readily assessible.\nFor this subsection, first, double check that Positron is still connected to your GitHub account by checking the user tab on the bottom-left. If not, repeat the connection setup.\n\n\n\nSince our project was created using the “New Folder from Template” option, it currently only exist locally. What we want to do next is to copy it to our GitHub account, creating a new repository in the process.\nTo do this, we will first need to install the usethis R package. Within your console, you would run the following line of code:\n\ninstall.packages(\"usethis\")\n\nDepending on what R packages you already have installed on your computer, you may get a prompt asking if you want to update/install additional dependencies. Go ahead and type the number corresponding to Update All, and press enter.\nThe package and all it’s dependencies should then install. If an error message appears, read through it, and follow provided instructions. Go to Discussions if need help.\n\n\nOnce the usethis package is installed, we need to activate it within R by calling it with the library command. This makes all the tools (ie. functions) within an R package available for use within Positron.\nIn your console, you would type:\n\nlibrary(usethis)\n\n\n\n\nWith library called, you now have access to the functions (tools) within the usethis R package. One of these is the use_github() function.\nIn Positron, if you hover over a function, it will pull up the associated help file which will provide you information about the arguments the function expects to receive, and what they do.\nFor use_github(), the main thing to remember for now is since this is a personal project being used for testing, we don’t necessarily want to share it with the entire world, so we should set the “private” argument equal to TRUE when creating a new repository.\n\n\n\nTaking this information that we have now gathered, we can now within our Quarto Markdown create a code chunk, write out the line of code calling the function, and providing the Private=TRUE argument within the ().\nWithin a code chunk, adding a # in front of a line of code, will comment it out, resulting in that line of code not being run. Since we have already installed the usethis package, and we don’t want to reinstall it every single time, let’s go ahead and comment out that line. Go ahead and press Enter.\n\n\n\nWe will see a message pop-up in the console. In this case, we had not saved before pressing enter, so there are uncommitted changes within the folder. The pop-up is asking whether you want to save these as well before sending the Folder to GitHub.\nIn this case I will chose to ignore the uncommitted changes by entering 3 (for Definitely) in the console and hitting enter on my keyboard.\n\n\n\nThe usethis R package will then execute the series of git commands that are needed to set up a GitHub repository (ie. the messages being displayed in the console window), and when finished will open a pop-up asking whether you want to see your new repository in your default Web Browser. I will go ahead and select yes in this case.\n\n\n\nAfter the browser opens, you can see that the elements I had staged and committed within Positron are now present within the GitHub repository. Since I had only staged Example.qmd, it is the only file that was backed up. We can also see the commit history online by clicking on the commit clock.\n\n\n\nAs we would expect, we only see our two commit messages. One important thing to note is the commit hash numbers, that denote a particular commit. If we decided to revert/fall back to a prior commit in the future, this would be the number we would need to provide to Git to return to that previous commit/save-state\n\n\n\nSimilarly, on GitHub, we have an option to Browse a Repository at a particular point in time. This will be quite useful later in the future when troubleshooting what major changes occurred between versions of an R package.\n\n\n\n\n\nCode Chunk Arguments\nHaving successfully connected our local Project Folder to a remote GitHub repository, let’s return to Positron.\nBefore continuing, if we left the code chunk that created the GitHub repository as is, every time we ran all code chunks in the document, it would try to recreate the GitHub repository. We don’t want this to happen, as the setup was a one-time operation.\nWhile we could add # in front of every line of code (or delete the code chunk entirely) it is often useful to have these set-up code chunks around to remind us what arguments we need to provide next time we need to a similar setup and are mind blanking on what to do.\nFortunately, Quarto allows us to set conditions on whether a chunk is run (ie. evaluated). We will discuss the conditiona arguments in more depth in the next section, but for now, we can modify the code chunk as follows.\nOn the next line after the {r}, we will add a hashtag (#), then a pipe (|), followed by a space. This is the setup for a code-chunk specific argument. We will then add “eval: FALSE”, which signals that the particular code-chunk should not be evaluated (ie, should not be run).\n\n\n\n\n\nREADME\nNow that we have connected our local Project Folder to GitHub, and have gotten a basic introduction to the “git add”, “git commit” arguments, let’s turn our focus to the other files currently listed as untracked by Git within our folder, the README.md and the .gitignore files.\nWhen setting up our GitHub account, we encounted an example of a README.md file. This file often provides a brief description of the project, and an outline of what the other files in the folder are for. As you may have gathered, even software developers are forgetful/under-caffenaited, and having notes to catch back up to speed is important.\n\n\n\n\n\n.gitignore\nWe additionally have a .gitignore file. Within a project, there are often some files that we will never want version control to track. These could be files that are too large for GitHub (ex. really large .fcs files), or files containing sensitive information (passwords, history, credentials, etc.).\nWhen the names of these file (or the file type shothand) are added to the .gitignore file, they are ignored by version control, and no longer appear on the primary left side bar.\n\n\n\nLet’s proceed and stage both the README.md and .gitignore file, so that changes to these files will be tracked. We can of course select both from the primary left side bar and write a short commit message.\n\n\n\n\n\n\nOr alternatively, if we want to stage all uncommitted files present in a single step, we could in the terminal use the “git add .”\nWe can then write our git commit using “git commit -m”.\nBoth approaches work, and you may switch between them based on preferrence.\n\n\n\nYou will notice after having committed, that if you look at the Graph dropdown on the bottom half of the primary left side-bar that something has changed.\nThere are now separate icons denoted as main and origin/main. These correspond to the last commit present locally (main), and the last commit on remote (ie. GitHub, origin/main).\nLocal is ahead since you just made the commit with the changes inactivating the code-chunk, and you have not passed these changes up to GitHub yet.\n\n\n\n\n\nPull\nBefore sending (ie. pushing up) our updated commit to GitHub, especially if you are working on a project from multiple computers (or as part of a team) to bring in (ie. pull down) any changes that might be on GitHub that are not present locally.\nThis ensures that everything is up to date, and you don’t end up with mismatched commits that are incompatible with each other and trigger an error message.\nTo pull in changes from GitHub, at the top of the primary left side-bar, you can select the … button to open a drop-down menu of Git options. You would then select “Pull”.\nAlternatively, you could do the same thing via the terminal by running the “git pull” command.\n\n\n\n\n\nPush\nIn our case, there was no new material present on our GitHub repository that were not already present locally, so all that is returned is the “Already up to date” message.\nWe are now good to proceed to push (ie. send) the updated commit up to our GitHub repository.\nWe can do this by either pressing the Sync changes button, or via the terminal entering the “git push” command.\n\n\n\nAnd now, if you glance down at left side-bar’s graph section, you will see that both the main and origin/main icons are now present for the most recent commit.\n\n\n\nIf we switch to our Web browser, we can see that this is also now the case for our GitHub repository that now also has the most recent changes.\n\n\n\n\n\nReverting to Prior Commit\nFor most daily-workflows, you will only need the git commands that we have introduced above (git add, commit, pull, push). The next two areas (reverting to a prior commit, and branches) are more specialized, and will be covered in greater depth later in the course. We are briefly covering them here. If you are at the point where your last remaining neuron has disconnected, and you feel you need to take a break from version control, feel free to skip to the next section and we will revisit these topics later in the course.\n\n–\nIn most cases, if your code stops working, you can identify the issue and fix it in the existing version, never needing to resort to reverting to a previous commit (save-state). The times you would need to revert would be if you deleted important files, or the new files are hopeless mess that is not worth trying to sort through. In those cases, reverting back might be better approach.\nTo imitate a falling back scenario, lets create and additional file, stage and commit it to end up a commit ahead of where we are currently at within the Project Folder.\n\n\n\nNow being one (or several) commits ahead, if we wanted to revert back, we would first need to identify the commit we want to revert back to and copy the commit hash number.\n\n\n\nThen, opening the terminal, we can enter “git reset” and paste the hash afterwards. We can then press enter.\n\n\n\nYou will notice our additional commit has been removed, although the newer files we were working on subsequent last commit are still present.\n\n\n\nIf however, we had wanted to return to the exact same state as the previous commit (removing all subsequent created files), we could do so by adding in the –hard argument. Before starting, save any newer files you want to keep in a completely different folder, because they will be permanently removed.\nThen, enter “git reset –hard thecommithashnumber” into the terminal, which would result in a “hard” return to the previous commits save-state. You may need to close and reopen Positron to see the changes reflected.\n\n\nBranches\nBranches are an useful Git feature that we will start using extensively later in the course. Branching allows you to create a parallel/carbon-copy of your existing repository, which you can then edit without affecting the main branch. This is particularly useful for projects that may get messy or drawn out. By isolating these edits to a parallel branch, if they don’t work, your main branch remains safe. Alternatively, if you like the changes that occurred in the branch, you can pull these changes from the branch back to main, bringing the timelines back together.\n\n\nWithin the terminal, entering “git branch” will show the existing branches. In this case, only main is present since we haven’t yet created a new branch.\n\n\n\nWe can create a new branch in the terminal by entering “git branch” followed by the name of our desired branch. In this case, we are creating a branch called Week1\n\n\n\nNow, when we check “git branch” again in the terminal, which returns the two branches, Week1 and main. The * is located next to main, indicating that we are currently within the main branch.\n\n\n\nBesides the terminal, we can also create a new branch via Positron. To do so, we first click on the Git tab in the Actions Bar.\nOnce the left-side bar displays the version control display, we can click on the … button (to the right of changes)to gain access to the Git options drop-down.\nFrom here, we click on Branch, and then select Create Branch.\n\n\n\nUsing Git branch, we saw that we were still within the main branch. In the terminal, we can switch over to the Week1 branch by using the “git checkout” command, followed by the branch we wish to switch to.\n\n\n\nThis results in us switching over to the Week1 branch.\n\n\n\nHaving switched (ie. checkout) to the Week 1 branch, let’s create the file BranchTest.qmd, which will exist within this branch, but not yet in the main branch.\n\n\n\nHaving created the file, let’s stage and then commit it. This will put the Week1 branch ahead of the main branch by a single commit.\n\n\n\nWith our changes staged and committed, if we look at the left side-bar’s graph section, our Week1 branch is now ahead of the origin/main branch by one commit.\n\n\n\nIf we were to check on GitHub, we can see that no new files are present on the main branch, but can see the notification listing recent changes to Week1 branch.\n\n\n\nUsing the drop-down, we can switch from displaying the main branch to the Week1 branch, where we can see the new file.\n\n\n\nIf we click the green compare and pull request button, we end up on this screen. This compares how the two branches are different from each other.\n\n\n\nWe will delve into branches again at a later point. For now, remember that by creating and prunning parallel branches, you can develop knowing that even if something goes wrong, your main branch remains safe.", - "crumbs": [ - "About", - "Getting Started", - "00 - Git" - ] + "text": "Remote Version Control\nCopying Project Folder to GitHub\n\n\n\n\n\n\n\n\n.\n\n\nWhile having local version control in place is helpful when you need to revert back after encountering issues, where Git shines is the ability to pass your changes to your online GitHub repository.\nNot only does this allow you to switch between computers, but should something disastrous happen to your main computer, you still have all your hard work backed up and readily assessible.\nFor this subsection, first, double check that Positron is still connected to your GitHub account by checking the user tab on the bottom-left. If not, repeat the connection setup." }, { - "objectID": "course/00_Floreada/index.html", - "href": "course/00_Floreada/index.html", + "objectID": "course/00_Floreada/slides.html#floreada", + "href": "course/00_Floreada/slides.html#floreada", "title": "Using Floreada", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", - "crumbs": [ - "About", - "Getting Started", - "00 - Floreada" - ] + "section": "Floreada", + "text": "Floreada\nLoading Dataset\n\n\n\n\n\n\n\n\n.\n\n\nFirst, open your web browser and navigate to the website\nClick on Start to proceed to the next page." }, { - "objectID": "course/00_Floreada/index.html#floreada", - "href": "course/00_Floreada/index.html#floreada", - "title": "Using Floreada", - "section": "Floreada", - "text": "Floreada\n\nLoading Dataset\nFirst, open your web browser and navigate to the website\nClick on Start to proceed to the next page.\n\n\n\n\n\n\nOnce that is done, select the File tab on the upper navigation bar. Then click on Open File(s).\n\n\n\n\n\n\n\nFrom there, select your .fcs files of interest, and click Open.\n\n\n\nThe .fcs files will now load in, and you should see a view similar to the one below. On the left side-bar, you have your gating options (Rectangle, Polygon, Range, Elipse, Quad, etc). Next to these on the right you have the FCS files that are loaded into the workspace. Then on the right, you have the visual display for your selected specimen.\n\n\n\n\n\nSwitching Axis Markers\nIf you left click on the axis name (SSC-H or FSC-H in this case), you will be able to select other markers by which to gate your specimen. For the provided example, we were using a raw spectral flow cytometry .fcs file, so the names of the detectors are present.\n\n\n\nFor now, I plan to start off by gating for singlets. I switch the y-axis to FSC-H, and then proceed to switch the x-axis to FSC-A.\n\n\n\n\n\nCreating Gates\nWith this done, I can now select the Poly gate tab on the upper left.\n\n\n\nThen manually click on the locations on the plot to add the individual gate nodes.\n\n\n\nTo complete the gate, I click back to the original node point. At this point, the popup will allow you to name the gate.\n\n\n\nTo adjust the polygon gate, you can click on a node and drag it to expand or contract in a particular direction\n\n\n\nTo move the entire gate, first click on a node to select the gate, then click in the center of the gate to adjust its location.\n\n\n\n\n\nAdditional Gates\nUnfortunately for those with the force-of-habit from using other softwares, double-clicking within the gate doesn’t do anything. To continue gating on the selected cells, you will need to click on the newly created gate name on the left. This will result in visualizing the isolated cells.\n\n\n\nOnce this is done, you can repeat the previous steps to change the axis markers and create a second gate. For this example, we went with a “Cells” gate to exclude debris from this particular sample.\n\n\n\nHaving created the “Cells” gate, we will be switching gating based on FSC and SSC to using the detector parameters.\nThe samples in this example were acquired to derive the cell counts and concentration of various cell populations within cryopreserved cord and peripheral blood mononuclear cells (CBMC and PBMC) specimens after thawing.\nThey were stained with CD19 BV421, CD45 PE, and CD14 APC on a 5-Laser Cytek Aurora, before unmixing, this would correspond respectively to V1, YG1/B4, R1/YG4 peaks respectively.\n\n\n\n\nScaling/Transformation\nWhen we switch the axis, we can see that the scaling/transformation is not ideal, as the staining and not-staining populations are scrunched up together in the center of the plot.\n\n\n\nTo change the scaling/transformation, we need to click directly on the axis.\n\n\n\nFrom there, when we click on the drop-down, we see the various transformation options. We will select Logicle, given we are working with spectral flow cytometry files.\n\n\n\nThis y-axis values are subsequently visualized with the logicle transformation applied, increasing our resolution between the positive and negative population.\n\n\n\nWe can then repeat this for the x-axis, adjusting the fine-tune options for the scaling as needed.\n\n\n\n\n\nNavigating Gating Hierarchy\nWith this done, let’s first draw a rectangle gate for the CD45+ (B4-A) cells.\n\n\n\nAnd then selecting that population by clicking on the gate name, let’s proceed and gate the CD19+ cells (V2-A).\n\n\n\nAs you can see, we now have the various gates present in the gating hierarchy for the respective .fcs file. To return to a previous gated population, we would click on the parent population above it.\n\n\n\nWe can subsequently add an additional gate at this gating level for the likely debris population (the threshold setting was suboptimal for this experimental run).\n\n\n\n\n\nCopying Gates\nThis was the process for gating for a single specimen. To copy gates over to the other specimens, we have two options. First, holding down your Ctrl (or equivalent) button, you can click on the individual gate names.\n\n\n\nFrom there, you can drag them down to the next specimen and apply them.\n\n\n\nAlternatively, you can drag down the highlighted gated to the Pipelines Tab, and apply to All Files. This will result in the gates being copied to all specimens in the experiment.\n\n\n\n\n\n\nAdjustments within Pipelines will carry over to all other respective unmodified specimens that share it’s gates.\n\n\n\nOnce this is done, I recommend cycling through the gates for each specimen, just to ensure that the gates were positioned correctly before saving the workspace.\n\n\n\n\n\nSaving Workspace\nWith everyone now “correctly” gated, we can proceed to save the workspace so that we can reopen it later from another browser.\nTo do this we open the File tab from the upper navigation bar, and select Save Workspace.\n\n\n\nFrom there we have a couple options, for now let’s select Floreada Workspace. Where it is saved at will depend on your individual browser settings, so watch for a popup.\n\n\n\nAlternatively (and crucially for the CytoML pipeline) we can also choose to save it as a FlowJo v10 .wsp file.\n\n\n\nIn both cases, you will end up with Workspace files that can be used later to access your created gates\n\n\n\n\n\nReopening Workspace\nTo reopen the Floreada workspace within the browser, reopen the website, and select the Open File(s) option.\n\n\n\nFrom there, select both the Floreada Workspace file as well as the .fcs files\n\n\n\nAt which point you will now be back to the point you last saved at.", - "crumbs": [ - "About", - "Getting Started", - "00 - Floreada" - ] - }, - { - "objectID": "course/00_Floreada/index.html#cytoml", - "href": "course/00_Floreada/index.html#cytoml", + "objectID": "course/00_Floreada/slides.html#cytoml", + "href": "course/00_Floreada/slides.html#cytoml", "title": "Using Floreada", "section": "CytoML", - "text": "CytoML\nDue to a unknown formatting bug, the Floreada produced FlowJo v10 .wsp is not directly accessible by CytoML at the time of this course. However, the issue is resolved as soon as the file is opened the first time within FlowJo v10, regardless of whether you have a log in or not. Strange? Yes, but we will take the workaround.\nSo, for anyone on Windows or MacOS, download FlowJo v10. Once installed, open the software, and close the login popups. Once there, open the Floreada created FlowJo.wsp file. Since you haven’t logged in, it won’t show any events. But it will correct the formatting bug. Close the software, and return to R. Your Floreada sourced .WSP file should now be readable by CytoML.\nOdd? For sure. Fixable? Likely, I will set a reminder to work with the Floreada and CytoML devs to see if we can cut out the need for this workaround.", - "crumbs": [ - "About", - "Getting Started", - "00 - Floreada" - ] - }, - { - "objectID": "course/00_BonusContent/index.html", - "href": "course/00_BonusContent/index.html", - "title": "Bonus Content", - "section": "", - "text": "This is a miscellaneous page to host walk-throughs of topics that come up via the Discussion Page. Rather than re-explain how to in the comments, I want to have a place to post short-walkthroughs to solve these issues, while avoiding incorporating it into the existing walk-throughs at this point in time. I hope you find it useful, and pardon the organized chaos of miscellaneous topics." - }, - { - "objectID": "course/00_BonusContent/index.html#windows-arm", - "href": "course/00_BonusContent/index.html#windows-arm", - "title": "Bonus Content", - "section": "Windows Arm", - "text": "Windows Arm\n\nPositron\nOn the main Positron installation page, only the installers for Windows Computers with x86 chips are currently shown. There is a beta (experimental) version of Positron for Windows ARM (ex. Snapdragons), but it needs to be installed from Positron’s GitHub releases page.\n\nPlease note, you should download the most recent version that is available to you, as they continue to update it and fix bugs. As of February 04, 2026, you would also need to install Quarto separately.\nTo install Quarto, first navigate to their website. Quarto for Windows ARM was implemented in 2023, so the regular installer should work.\n\nAlso, you would need a Python arm64 installation installed if you decide you want to venture into using Python at any point." - }, - { - "objectID": "course/00_BonusContent/index.html#visual-mode", - "href": "course/00_BonusContent/index.html#visual-mode", - "title": "Bonus Content", - "section": "Visual Mode", - "text": "Visual Mode\nWithin Positron, there exist a toggle button to switch between source and visual mode on Quarto documents. But what do you do when you can’t find it?\n\nTuns out…. Visual Mode is currently broken, so the developers removed it about two weeks ago.\nThe current way to switch to it is via right-click, then select edit visual mode.\n\nVice versa, once there, you can revert by right-clicking and selecting Edit Source Mode\n\nThe process of figuring what is going on highlights how to use a GitHub Discussion Page. This is Positrons when I searched for visual button. I then found that a similar question was asked 3 days ago that led me to the linked thread above." - }, - { - "objectID": "course/00_BonusContent/index.html#not-detecting-git", - "href": "course/00_BonusContent/index.html#not-detecting-git", - "title": "Bonus Content", - "section": "Not Detecting Git", - "text": "Not Detecting Git\nIf you leave the “Initialize Git Repository” option unclicked when setting up a New Folder from Template, Git will not be active within your project folder.\n\nAs a result, when you try to use the usethis packages use_github(private=true) function, you will get an error that resembles the one below\n\nTo initiate a Git repository after the fact, you will need to go to the Version Control tab in the action bar, and select the option.\n\nThen, you will need to stage the files you want to work with, and commit them.\n\nuse_github(private=TRUE) should now be functional at that point. However, you can also choose to continue via Positron’s interface instead by selecting Publish.\n\nIt will then ask you whether you want to save it as either a Public or a Private repository.\n\nAnd if all goes well, you will see the “Successs” pop-up in the lower-right" - }, - { - "objectID": "course/00_BonusContent/PullConflicts/index.html", - "href": "course/00_BonusContent/PullConflicts/index.html", - "title": "Take-Home Problems - Pull Fix Resolution", - "section": "", - "text": "Background\nFor those who have turned in the homework to the Cytometry in R - homework branches, many report having encountered merge issues pulling in the next week’s data if the pull request hasn’t been resolved yet. Creating a parallel branch, and submitting homework from there to the homework branch might solve the issue? But we will need to test that out. For now, here are the steps we used to resolve the issue locally without needing to delete and re-download.\n\n\nGetting Started\nStart off checking your GitHub forked version of the CytometryInR, notice how many commits behind you are.\n\n\nIf you haven’t submitted the optional Take-Home problems via a pull-request, proceed to do so.\n\n\nThis was an example of the page you see when submitting the pull request. Upon submission, your branch may show merge conflicts due to difference in rendered docs. This is okay, we will resolve it on our end.\n\n\nWhat we will end up doing is ignore the changes and accept the current version. This issue is likely due to the weekly updating of the data resulting in new sidebar links. We will then mark these issues as resolved\n\nWe will then mark the issues as resolved.\n\n\nOn return to the homework, we will be able to merge the branch once again. We will likely make our suggestions at this point for this branch.\n\n\nHowever, after pull request has been merged, you will see your branch is way ahead (due to everyone elses homework commits). This is the area we will need to address via the new branch method.\n\n\nFor now, proceed to discard the changes (you don’t need the other participants homeworks cluttering your folder)\n\n\nYou will then appear as caught up with the main branch.\n\n\nOn return to Positron, attempt to pull\n\n\nHowever, since your homework commit is still present, you will receive a pop-up asking you to see the GitLog. If you scroll up the problem log, it will give you several options.\n\n\nYou will need to enter the following code into your terminal tab:\n\ngit config pull.rebase TRUE\n\n\n\nThis will result in a branched appearance, and the button asking you to sync the changes.\n\n\nUpon doing so you will have a restored status vs. the main cytometry in R project folder.\n\n\n\nTake Away\nWe have encountered a first growing pain for the course, in that the pull-request method we have been using still causes merge conflicts. We will be going to a homework branch to homework branch pull-request approach going forward, I will send out additional instructions on how to do so shortly.\nThanks for your patience!\nDavid\n\n\nAdditional Resources" - }, - { - "objectID": "course/index.html", - "href": "course/index.html", - "title": "Cytometry in R", - "section": "", - "text": "Cytometry in R is a free virtual mini-course being organized by the Flow Cytometry Shared Resource Core at the University of Maryland’s Greenebaum Comprehensive Cancer Center. This course is a passion project arising from our desire to contribute back to the community.\nWe are excited that so many individuals worldwide have chosen to take part, and we look forward to helping you get started on your own learning journeys." - }, - { - "objectID": "course/index.html#resources", - "href": "course/index.html#resources", - "title": "Cytometry in R", - "section": "Resources", - "text": "Resources\nCourse materials can be found here. The livestream recordings are available via YouTube" - }, - { - "objectID": "course/index.html#in-person-baltimore", - "href": "course/index.html#in-person-baltimore", - "title": "Cytometry in R", - "section": "In-Person (Baltimore)", - "text": "In-Person (Baltimore)\nFor those joining us in person, the class is being offered on Thursday from 4-5 pm EST in Bressler Research Building Room 7-035. Monitors to plug your laptops in will be available on a first come, first served basis. These in-person sessions will not be recorded, but with the smaller class size you will have our undivided attention should you have any questions." - }, - { - "objectID": "course/index.html#virtual-worldwide", - "href": "course/index.html#virtual-worldwide", - "title": "Cytometry in R", - "section": "Virtual (Worldwide)", - "text": "Virtual (Worldwide)\nFor those joining us virtually, we will have three separate livestreams throughout the week on YouTube. These will be offered on:\n\nTuesday 2200 EST (Wednesday 0300 GMT+0)\nWednesday 1600 EST (Wednesday 2100 GMT+0)\nThursday 1000 EST (Thursday 1500 GMT+0)\n\nAll three livestreams will be recorded and available on YouTube immediately afterwards." - }, - { - "objectID": "course/index.html#discussion-forum", - "href": "course/index.html#discussion-forum", - "title": "Cytometry in R", - "section": "Discussion Forum", - "text": "Discussion Forum\nWe will be using the Cytometry in R Discussions page as a community forum, and a place to ask questions, celebrate wins, and provide feedback. After creating a a GitHub account, pleae go introduce yourself." - }, - { - "objectID": "ExistingResources.html", - "href": "ExistingResources.html", - "title": "Existing Resources", - "section": "", - "text": "We are not the first “Cytometry in R” course, nor will we be the last. This page is linking to the already existant online Cytometry in R resources that we have encountered and benefited from during our own learning journey. May they prove useful to you as you progress your way through yours!\n\n\n\nChristopher Hall - Flow Cytometry Data Analysis in R\nCytometry-R-Scripts: R scripts to help with your flow cytometry analysis\nR_flowcytometry_course: The files and presentation from the Cytometry Core Facility flow cytometry data analysis course in R\n\nInstallation and Loading Data\n(1) Flow Cytometry Data Analysis in R - Installation and Loading Data\n\n\n\n\nCompensation, Cleaning, Transformation, Visualization\n(2) Flow Cytometry Data Analysis in R: compensation, cleaning, transformation, visualization\n\n\n\n\nGating with flowWorkspace\n(3) Flow Cytometry Data Analysis in R: gating with flowWorkspace\n\n\n\n\nVisualization\n(4) Flow Cytometry Data Analysis in R: Visualisation\n\n\n\n\n\n\n\nOzette Technologies - BioC 2023 Workshop\nWorkshop given at the Bioc2023 conference, authored by Arpan Neupane and Andrew McDavid.\nWorkshop: Reproducible and programmatic analysis of flow cytometry experiments with the cytoverse\n\n\n\n\n\n\nPritam Kumar Panda - Flow Cytometry Data Analysis & Visualization in R using CytoExploreR\nFlow-Cytometry-analysis-in-R\nCytoExploreR-Interactive-visualization\n\nComplete Guide\nFlow Cytometry Data Analysis & Visualization in R using CytoExploreR: Complete Guide\n\n\n\n\n\n\n\nBioinformatics DotCa - Introduction to Flow Cytometry in R\n\nIntroduction to Flow Cytometry in R\nIntroduction to Flow Cytometry in R\n\n\n\n\nExploring FCM Data in R\nExploring FCM Data in R\n\n\n\n\nProcessing and Quality Assurance of FCM Data\nProcessing and Quality Assurance of FCM Data\n\n\n\n\n1D Dynamic Gating\n1D Dynamic Gating\n\n\n\n\nClustering and Additional FCM Tools\nClustering and Additional FCM Tools\n\n\n\n\n\nTulika Rai - Learn Innovatively With Me\n\nflowAI Flow Cytometry Data Cleaning using R\nflowAI Flow Cytometry Data Cleaning using R: A Step-by-step Tutorial\n\n\n\n\ntSNE UMAP TRIMAP colorization or Transformation using R script\ntSNE UMAP TRIMAP colorization or Transformation using R script\n\n\n\n\n\n\n\nGivanna Putri - Introduction to Cytometry Data Analysis in R workshop\nACS 2021 Workshops - Introduction to Cytometry Data Analysis in R workshop\n\n\n\n\n\n\nTimothy Keyes -\n{tidytof}: Predicting Patient Outcomes from Single-cell Data using Tidy Data Principles\n\n\n\n\n\n\nRyan Duggan - Cytometry on Air\nCytometry on Air: Analyzing Flow Cytometry Data in R Presentation by TJ Chen and Greg Finak,\n\n\n\n\n\n\nGuillaume Beyrend - Learn Cytometry\nLearn Cytometry Originally appeared to have been paywalled, doesn’t currently appear to be the case.\n\n\n\n\nHong Qin - flow analysis in R\n\nFlow Analysis in R\nflow analysis in R, bio125, Spring 2015\n\n\n\n\nFlow Cytometer Data Analysis\nBIO233 demo, flow cytometer data analysis, simple example\n\n\n\n\n\n\n\nSwayam Prabha - Flow cytometry data analysis in R/Bioconductor\nLecture 15 : Flow cytometry data analysis in R/Bioconductor" + "text": "CytoML\n\n\n\n\n\n\n\n\n.\n\n\nDue to a unknown formatting bug, the Floreada produced FlowJo v10 .wsp is not directly accessible by CytoML at the time of this course. However, the issue is resolved as soon as the file is opened the first time within FlowJo v10, regardless of whether you have a log in or not. Strange? Yes, but we will take the workaround.\nSo, for anyone on Windows or MacOS, download FlowJo v10. Once installed, open the software, and close the login popups. Once there, open the Floreada created FlowJo.wsp file. Since you haven’t logged in, it won’t show any events. But it will correct the formatting bug. Close the software, and return to R. Your Floreada sourced .WSP file should now be readable by CytoML.\nOdd? For sure. Fixable? Likely, I will set a reminder to work with the Floreada and CytoML devs to see if we can cut out the need for this workaround." }, { - "objectID": "index.html", - "href": "index.html", - "title": "About", + "objectID": "course/00_BonusContent/PullConflicts/UpdatedPullRequest.html", + "href": "course/00_BonusContent/PullConflicts/UpdatedPullRequest.html", + "title": "Updated Pull Request Protocol", "section": "", - "text": "Cytometry in R is a free weekly mini-course being offered both in-person and online by the Flow Cytometry Shared Resource staff at the University of Maryland Greenebaum Comprehensive Cancer Center. Its primary audience is for those with prior flow cytometry knowledge, who have limited previous experience with the programming language R. However, we welcome everyone regardless of their existing  flow cytometry  or coding experience.\nThis course is a passion project arising from our desire to contribute back to the community. We are excited that so many of you have chosen to sign up, and look forward to helping you get started on your own learning journeys.\nFor more information on topics-covered, please see our schedule. Course materials can be found here or via the Course tab in the navigation bar. The livestream recordings are available via YouTube\n\n\nAbout\n\n\nMotivation\nWhile many cytometry enthusiast express an interest in learning how to carry out flow cytometry analyses in R, they often do not know where to start. Additionally, many of the limited existing resources are focused towards users with intermediate bioinformatic skills, contributing to a greater barrier for entry for those just starting out. Our motivation in offering this mini-course tailored towards beginners is to make the learning journey smoother than the one we ourselves experienced.\n\nWhile designing the course, we kept the following concepts in mind:\n\nBeginning coders benefit both by having detailed examples that they can initially work through on their own time, as well as less defined problems that through troubleshooting enable the acquisition of the thought-process and skills needed for coding.\nSome topics will take individuals a longer time to fully grasp. Providing a format and resources that enable being able to revisit the material multiple times is incredibly helpful. Likewise, life is busy, and missing a workshop session is highly probable. If this happens, it shouldn’t make or break the ability of the individual to understanding the rest of the course.\nConsistency is key, and being able to apply what you are learning to your own datasets, files, and questions of interest helps achieve this.\n\n\n\n\n\nCourse Details\n\nEach week, the mini-course will cover a particular topic for an hour. This individual class is offered on multiple days, at different times, both in-person and online. We invite you to attend the one that best fits your schedule each week. If life gets busy and you can’t make regular day, the online livestream recordings will be available on YouTube.\n \n\nCourse Materials\n\nWe will release the course materials for the upcoming week on Monday 1700 EST (Monday 2200 GMT+0) via our course website and GitHub. These materials will normally be Quarto Markdown documents containing code, explanation, and other resources needed for that week. If you have your own data, you can use your own data! If you don’t have any data, we will make sure to provide some of our own available data for each lesson so that you can use it and be able to follow along.\nIn our commitment to open-source and open-science, all teaching materials are freely offered under a CC-BY-SA license, while all code examples are offered under the AGPL3-0 copyleft license.\n \n\n\nIn-Person (Baltimore)\n\nFor those who are local and attending in person, the class will be offered on Thursday from 4-5 pm EST in Bressler Research Building Conference Room 7-035 (around the corner from the Flow Core).\nIf you have your own laptop, feel free to bring it. If you don’t have a laptop, please reach out, the Flow Core has 6 laptops running Linux that we can lend out to participants for use during the session.\nFor those who arrive early, we will have a limited number of second screens with provided mouse and keyboard that you can plug a laptop into via HDMI cable to set up a larger workstation. For those arriving later, the room has enough space (and electrical plugs) for up to 20 people, but you will need to balance a laptop on your lap.\n \n\n\nOnline (Worldwide)\n\nFor those joining us virtually, we will have three separate livestreams throughout the week on YouTube. These will be offered on:\n\nTuesday 2200 EST (Wednesday 0300 GMT+0)\nWednesday 1600 EST (Wednesday 2100 GMT+0)\nThursday 1000 EST (Thursday 1500 GMT+0)\n\n \n\n\nRecordings\n\nAll three livestreams will be recorded and available on YouTube immediately afterwards. Our plan is to eventually circle back after the course and properly edit them (ie. less minutes of random background noise, highlighting the relevant lines of code, time-stamps, subtitles, translations, etc.) later on as time allows, so that they can serve as a more permanent resource.  \n\n\nDiscussion Forum\n\nWe will be using our GitHub Discussions page as a community forum. This will allow us to answer questions, and benefit from insights from others in the community. One advantage of having so many people signed up for the course is that if you have a question, someone else likely does as well, so go start a post and ask it!\n \n\n\nOptional Take-Home Problems\n\nEach week, we will offer optional take-home problems. These are intended to allow you to work with your own data on similar problems, but in a not-so-structured manner. Challenges that you and overcome during the process will help grow your problem solving and debugging skills, and help solidify concepts covered during the course.\nTo get feedback on these problems, you can reach out to the community on the Discussions page, or once far enough open a pull request to the homework branch and we will provide additional feedback.\n \n\n\nCost\nIs there a cost to participate? No, it’s absolutely free! Is there a catch? Yes, you learn R, and may wind up with strong feelings about flowframes vs. cytoframes. This is also our first year offering this course, so we will sporadically ask you to fill out a feedback forms to help us improve.\n\n \n\n\nComputing Requirements\n\nFor those attending online, you will need a computer with internet access. Operating system shouldn’t matter, as we will be offering code examples for Windows, Mac and Linux. As with all things flow-cytometry software, having a faster CPU with multiple cores, more RAM and greater storage space is generally helpful, but not a deal breaker.\n\nYou will need to be able to install the required software (R, Rtools, Positron, Quarto, and Git) as well as install and compile R packages from the CRAN and Bioconductor repositories (as well as a few GitHub-based R packages). Installation walkthroughs for each computer operating system can be found here.\nFor those using university or company administered computers, please be aware that you may not have the necessary permissions to install these directly, and may need to reach out to your IT department to help get these initial requirements set up. If you are using your own computer, congratulations, you are your system administrator, and should already have the necessary permissions.\n\nFor those attending in-person, we have set up a pop-up computer lab in the conference room. For those who arrive early, we have a limited number of second screens with provided mouse and keyboard that you can plug a laptop into via HDMI cable to set up a workstation. For those arriving later, the room has enough space (and electrical plugs) for 20 people, but you will need to balance a laptop on your lap. If you have your own laptop, feel free to bring it. If you don’t have a laptop, the flow core has 6 loaner laptops running Linux that we can let participants use for that session.\n\n\n\n\nLicense\nIn our commitment to open-science and open-source, all teaching materials are freely offered under a CC-BY-SA license, while all code examples are offered under the AGPL3-0 copyleft license." + "text": "Background\nDue to an encountered issue pulling in new updates for CytometryInR when you have an optional take-home problem still waiting to be reviewed, we will be modifying the protocol for submitting a pull request. You will first create a local homework branch, and submit from your branch to our homework branch. That should hopefully prevent any incoming changes from main to main from becoming conflicted.\n\n\nGetting Started\nThe first step is to open Positron, and navigate through the dropdown options to the Create a Branch option\n\n\nAnd provide a name (since the homework was for Week 02, we set it as Week 02)\n\n\nNext, select the option to Publish the Branch\n\n\nFrom here, importantly, select the option to make it a branch of YOUR forked CytometryInR version (since you don’t have permissions for the main course repository)\n\n\nAt this point, your new branch will have been created. You can check by entering the following code in the terminal, and verifying the * is next to the Week02 branch\n\ngit branch\n\n\n\nOnce you have confirmed you are in your homework branch, go ahead and transfer in all the files you will be submitting for the optional take-home problems\n\n\nAnd once done, make a commit as you would normally\n\n\nAs you can see, you will now be ahead of the main branch by one commit. Go ahead and sync your branch to GitHub so the contents are available remotely for use in the pull-request.\n\n\nOnce synced, you will notice that your branch is now up to date with the remote (cloud) icon. Next, proceed to checkout to the main branch, either via the dropdown or via the terminal using\n\ngit checkout main\n\n\n\nReturning to GitHub, you will see that your homework branch has received the incoming changes. You are now safe to sync your fork to bring in changes from the main course CytometryInR repository.\n\n\nAnd confirm yes.\n\n\nReturning to Positron, once verified you are in your main branch, proceed to pull in changes\n\n\nIf you switch between branches, you will notice you have both the new changes to main, as well as your week specific side branch co-existing peacefully.\n\n\nYou are then safe to make a pullrequest from your homework branch, to our homework branch, without running into risk of an additional commit from our end (or delay in reviewing) causing issues.\n\n\n\n\nAdditional Resources\nThis method should hopefully avoid the previously encountered issues. Apologies once again to those who encountered the issue! Still learning how to use some of these aspects of Version control in a GitHub context." }, { - "objectID": "Schedule.html", - "href": "Schedule.html", - "title": "Cytometry in R", + "objectID": "course/00_BonusContent/Immport/images/index.html", + "href": "course/00_BonusContent/Immport/images/index.html", + "title": "ImmPort - Downloading Datasets", "section": "", - "text": "Cytometry in R: A Course for Beginners\nCytometry in R is a free virtual mini-course being organized by the Flow Cytometry Shared Resource core at the University of Maryland’s Greenebaum Comprehensive Cancer Center. This course is a passion project arising from our desire to contribute back to the community. We are excited that you have chosen to take part and look forward to helping you get started on your own learning journey.\nCourse materials can be found here or via the Course tab in the navigation bar. The livestream recordings are available via YouTube\n\n\n\nPre-Course Walkthroughs\n\nWeek 0: January 26, 2026 In these pre-course walk-throughs, we ensure that everyone creates a GitHub account, and has their computer properly set up with the required software (including R, Positron, and Git). We then start to build individual participants familiarity with the software infrastructure that they will be using throughout the rest of the course.\n \n\n\nInstalling R Packages\n\nWeek 1: February 2, 2026 During this first session, we learn how to install R packages from the various repositories (CRAN, Bioconductor, GitHub), and how to troubleshoot the more typical errors that occur during this process.\n \n\n\nFile Paths\n\nWeek 2: February 9, 2026 For this second session, we focus on how to programmatically tell your computer where to locate your experimental files, introducing the concept of file paths. We explore how the various operating systems (Linux, MacOS, Windows) specify their respective folders and files, and how to identify where you are currently within the directory. Our goal by the end of this session is to have walked you through how to figure out where an .fcs file of interest is stored, and convey to your computer where you want it copied/moved to, without encountering the common pitfalls.\n \n\n\nInside an .FCS file\n\nWeek 3: February 16, 2026 In the course of this third session we will slice into an .FCS file and find out what the individual components that make it up are. In the process, we will cover the concepts of main data structures within R (vectors, matrices, data.frames, list) and how to identify what we are working with. Additionally, we will explore how various cytometry softwares store their metadata variables under various keywords that can be useful to know about.\n \n\n\nIntroduction to the Tidyverse\n\nWeek 4: February 23, 2026 Within this fourth session, we explore how the various tidyverse packages can be utilized to reorganize rows and columns of data in ways that are useful for data analysis. We will primarily work with the MFI expression data we isolated from within the .fcs file in the previous session, identifying and isolating events that meet certain criterias. We introduce the concepts behind “tidy” data and how it can improve our workflows.\n \n\n\nGating Sets\n\nWeek 5: March 2, 2026 As part of this fifth session, we learn about the two main flow cytometry infrastructure packages in R we will be working with during the course, flowcore and flowWorkspace. Throughout the session, we will compare how they differ in naming, memory usage, and accessing .fcs file metadata. We additionally explore how to add keywords to their respective metadata for use in filtering specimens of interest from the larger set of .fcs files.\n \n\n\nVisualizing with ggplot2\n\nWeek 6: March 9, 2026 During this session we provide an introduction to the ggplot2 package. We will take the datasets we have collected from the previous sessions and see how in varying in different arguments at the respective plot layers we can produce and customize many different forms of plots, focusing on both cytometry and statistics plots. We close out providing links to additional helpful resources and highlight the TidyTuesday project.\n \n\n\nApplying Transformations and Compensation\n\nWeek 7: March 16, 2026 For this seventh session, we take a closer look at the raw values of the data within our .fcs files, and explore the various ways to transform (ie. scale) flow cytometry data in R to better visualize “positive” and “negative populations”. In the process, we visualize the differences resulting from applying different transformations commonly used by commercial software. Similarly, we learn how to apply and visualize compensation in context of conventional flow cytometry files.\n \n\n\nManual and Automated Gating\n\nWeek 8: March 23, 2026 Within this session, we explore various ways to implement gating for flow cytometry files in R. We will explore manual approaches utilizing flowGate, as well as automated options with openCyto and it’s gating templates. We additionally will explore how to provide gate constraints and various ways to visually screen and evaluate the outcomes within the context of our own projects.\n \n\n\nConference Break 1\nNo class week of March 30, 2026. If you are attending the ABRF conference, track me down at the Complex Data Analysis in Flow Cytometry: Navigating the Landscape talk on Monday, March 30th at 4:30 PM.\n \n\n\nIt’s Raining Functions!\n\nWeek 9: April 6, 2026 In the course of this ninth session, we tackle one of the harder but most useful concepts to learn for a beginner, namely functions. We explore what they are, how their individual arguments work, how they differ from for-loops, and how to create our own to do useful work, reduce the number times code gets copied and pasted. Additionally, some functional programming best practices will be introduced, as well as provide introduction to how to use the walk and map functions from the purrr package.\n \n\n\nDownsampling and Concatenation\n\nWeek 10: April 13, 2026 Within this session, we will expand on our growing understanding of GatingSets, functions and fcs file internals to write a script to downsample your fcs files to a desired number (or percentage) of cells for a given cell population. We will additionally learn how to concatenate these downsampled files together, and save them to a new .fcs file in ways that the metadata can be read by commercial software without the scaling being widely thrown off.\n \n\n\nRetrieving data for Statistics\n\nWeek 11: April 20, 2026 Leveraging the increased familiarity working with the various packages this far in the course, in this session we will retrieve summary statistics for the gates within our GatingSet, and programmatically derrive out tidy data.frames for use in statistical analyses typically used by many Immunologist. In the process, we add a couple additional plot types to our ggplot2 arsenal to hold in reserve should Prism prices go up again.\n \n\n\nSpectral Signatures\n\nWeek 12: April 27, 2026 As part of this session, we will explore how to extract fluorescent signatures from our raw spectral flow cytometry reference controls. Building on prior concepts, we will learn to isolate median signatures from positive and negative gates, and how to derrive and plot normalized signatures. We also introduce plotly package and it’s interactive plotting features, before showcasing various packages attempts at facilitating signature retrieval.\n \n\n\nSimilarities and Hotspots\n\nWeek 13: May 4, 2026 During this session, we will utilize the spectral signature matrix isolated from raw spectral flow cytometry controls and evaluate different ways of evaluating how similar different fluorescent signatures are to each other. In the process, we will gain better understanding of the metrics behind similarity (cosine), panel complexity (kappa), and unmixing-dependent spreading (collinearity).\n \n\n\nUnmixing in R\n\nWeek 14: May 11, 2026 In the course of this session, we will attempt a reach goal of many, namely carry out unmixing of raw .fcs files using the spectral signatures we have isolated from our unmixing controls, and write to new .fcs files. After evaluating the necessary internals, we will explore how various current cytometry R packages have implemented their own unmixing functions, and the various limitations that each approach has encountered.\n \n\n\nCleaning Algorithms\n\nWeek 15: May 18, 2026 In the span of this session, we will directly compare how various Bioconductor data cleanup algorithms (namely PeacoQC, FlowAI, FlowCut, and FlowClean) tackle distinguishing and removing bad quality events. We will see how they perform with previously identified good quality and horrific quality .fcs files. We will whether the implemented algorithmic decisions made sense, and how to customize them within our workflows to achieve our own desired goals.\n \n\n\nClustering Algorithms\n\nWeek 16: May 25, 2026 As part of this session, we venture away from supervised and semi-supervised analyses to explore unsupervised clustering approaches, namely FlowSOM and Phenograph. We will compare outcomes depending markers included, transformations applied, and panel used to gain a greater familiarity with how they work. We wrap up by investigating ways to visualize marker expression of cells ending up in each cluster, and how to backgate them to our manual gates.\n \n\n\nNormalization: Batch Effect or Real Biology\n\nWeek 17: June 1, 2026 During this session, we will dive into evaluating the performance of two commonly used normalization algorithms, CytoNorm and CyCombine. We will utilize our ggplot2 and functional programming toolkits to create a customized workflow to visualize the differences for our respective cell populations before and after normalization, to better evaluate how the respective parameter choices can affect the process.\n \n\n\nConference Break 2\nNo class week of June 8, 2026. If you are attending the Cyto conference, track me down at my talks (Open-Source automation on June 7, 10:30-11:30AM at Grand Ballroom; and Semi-supervised pipeline on June 9, 10:30-11:45AM atRoom 2DEF) or poster (grab some Cytometry in R course hex stickers!)\n \n\n\nDimensionality Visualization\n\nWeek 18: June 15, 2026 For this session, we explore how dimensionality visualization algorithms perform tSNE and UMAP in R using our raw and unmixed samples. In the process, we will explore how markers included, number of cells, and presence of bad quality events can impact the final visualizations. Finally, we will provide an overview of how to link to Python to additionally run PaCMAP and PHATE visualizations for use in R.\n \n\n\nAnnotating Unsupervised Clusters\n\nWeek 19: June 22, 2026 In the course of this session, we explore ways to scale our efficiency in figuring out what an unsupervised cluster of cells may be, by employing several annotation packages. We explore how these work under the hood in their decision making process, and how to link them to reference data from external repositories for additional evaluation.\n \n\n\nThe Art of GitHub Diving\n\nWeek 20: June 29, 2026 Within this session, we delve into the art of investigating a new-to-you GitHub repository. We discuss the overall structure of R packages stored as source files within GitHub repositories, and how to leverage this knowledge when troubleshooting errors thrown by underdocumented R packages. We discuss how to modify identified functions, evaluate them, and process to submit helpful bug reports back to the original project to help fix the issue.\n \n\n\nXML Files All The Way Down\n\nWeek 21: July 6, 2026 Breaking news alert, most of the experiment templates and worksheet layouts we work with as cytometrist are .xml files. In this session, we learn some additional coding tools to allow us to work with these types of files to extract useful data. In this session, we test out our new problem solving abilities to retrieve data from SpectroFlo and Diva .xml files to monitor how our core’s flow cytometers behaved for various users last week.\n \n\n\nUtilizing Bioconductor packages\n\nWeek 22: July 13, 2026 Many of the R packages for Flow Cytometry we have utilized in this course were packages from the Bioconductor project. We take a look at what makes Bioconductor packages unique compared to packages found on GitHub and CRAN, explore some of their specific infrastructure types for flow cytometry data, and highlight some useful packages for downstream analysis that we haven’t had time to properly explore.\n \n\n\nBuilding your First R package\n\nWeek 23: July 20, 2026 For most of the course, we have been working with R packages that other individuals built and maintained. In this session, we leverage all your hard work from the rest of the course and corral the unwieldly arsenal of functions you wrote into your first R package for easier use. We will discuss the individual pieces of an R package, the importance of a well-setup namespace file, and how to generate help page manuals to refer future-you back to what your individual function arguments actually do.\n \n\n\nEveryone Get’s a Quarto Website\n\nWeek 24: July 27, 2026 In this session, we will extend the knowledge of .R and .qmd files you have gained from the course and extend them to create your own website using Quarto. We discuss the additional files that are required, how to customize and render the website locally, and finally set up Quarto Pub or GitHub Pages website that we are to access online.\n \n\n\nReproducibility and Replicability\n\nWeek 25: August 3, 2026 Throughout the course, we emphasized the importance of making your workspaces and code reproducible and replicable. But what do we mean by these terms, and are there best practices we could add to our existing workflow to do this more efficiently? We explore a couple community-led efforts within the cytometry space and troubleshoot their implementation into a previously published pipeline.\n \n\n\nConference Break 3\nNo class week of August 10, 2026. If you are attending the BioC conference, track me down at my talk/poster.\n \n\n\nOpen Source Licenses\n\nWeek 26: August 17, 2026 For this course, we have relied extensively on open-source software to create our own data analysis pipelines. In the process, you may have some recollection of the various license names. But what impact do all these different names have in the end? We take a brief deep-dive into the ecosystem of free and open-source licenses, and evaluate what their respective license terms mean for us as individual users of the code, as well as potential developers extending existing codebases.\n \n\n\nValidating Algorthmic Tools\n\nWeek 27: August 24, 2026 We will be the first to admit, new implementations of algorithms as R packages are awesome! We appreciate the effort that went into them and making them available to the community at large. But what is the best way of evaluating whether they behave as promised, or work for our dataset? During this session, we share tips and tricks to gain better understanding of how a new R package works, and things to watch out for when evaluating complicated algortithms. We wrap with walkthrough of how to generate simulated datasets with known distributions for use in testing.\n \n\n\nDatabases and Repositories\n\nWeek 28: August 31, 2026 During this session, we will learn how to identify and retrieve .fcs files from databases. While many of us are accustomed to working with large datasets of our own making, many of us are increasingly encountering larger-than-memory datasets, as well as files stored in large repositories. In this session, we will explore several database focused R packages, before investigating how to identify and retrieve .fcs files and associated metadata of interest from repositories, namely ImmPort (and maybe FlowRepository if it can be pinged that afternoon).\n \n\n\nAssembling Web Data\n\nWeek 29: September 7, 2026 In this session, we briefly delve into the concepts of web-scraping and APIs in general. We highlight useful packages, namely httr2 and rvest, and best practices implemented to allow respectful retrieval of useful data without crashing someone’s server like some AI startup bot. We finish by providing a list of additional useful resources for those interested in learning more.\n \n\n\nFuture Directions\n\nWeek 30: September 14, 2026 In this final of the planned sessions, we revisit our solutions to the challenge problems set out during the beginning of the course. We also discuss potential future topics to visit in the future, and any additional resources that proved helpful throughout the course.", - "crumbs": [ - "About", - "Cytometry Core" - ] + "text": "To download data from the ImmPort Shared Data Repository, first navigate to the website\n\nFor help setting up Aspera Connect, see the following help documentation" }, { "objectID": "PackageWalkthroughs.html#flowcore", @@ -1804,861 +1631,1132 @@ "text": "flowMagic" }, { - "objectID": "course/00_BonusContent/Immport/images/index.html", - "href": "course/00_BonusContent/Immport/images/index.html", - "title": "ImmPort - Downloading Datasets", + "objectID": "Schedule.html", + "href": "Schedule.html", + "title": "Cytometry in R", "section": "", - "text": "To download data from the ImmPort Shared Data Repository, first navigate to the website\n\nFor help setting up Aspera Connect, see the following help documentation" + "text": "Cytometry in R: A Course for Beginners\nCytometry in R is a free virtual mini-course being organized by the Flow Cytometry Shared Resource core at the University of Maryland’s Greenebaum Comprehensive Cancer Center. This course is a passion project arising from our desire to contribute back to the community. We are excited that you have chosen to take part and look forward to helping you get started on your own learning journey.\nCourse materials can be found here or via the Course tab in the navigation bar. The livestream recordings are available via YouTube\n\n\n\nPre-Course Walkthroughs\n\nWeek 0: January 26, 2026 In these pre-course walk-throughs, we ensure that everyone creates a GitHub account, and has their computer properly set up with the required software (including R, Positron, and Git). We then start to build individual participants familiarity with the software infrastructure that they will be using throughout the rest of the course.\n \n\n\nInstalling R Packages\n\nWeek 1: February 2, 2026 During this first session, we learn how to install R packages from the various repositories (CRAN, Bioconductor, GitHub), and how to troubleshoot the more typical errors that occur during this process.\n \n\n\nFile Paths\n\nWeek 2: February 9, 2026 For this second session, we focus on how to programmatically tell your computer where to locate your experimental files, introducing the concept of file paths. We explore how the various operating systems (Linux, MacOS, Windows) specify their respective folders and files, and how to identify where you are currently within the directory. Our goal by the end of this session is to have walked you through how to figure out where an .fcs file of interest is stored, and convey to your computer where you want it copied/moved to, without encountering the common pitfalls.\n \n\n\nInside an .FCS file\n\nWeek 3: February 16, 2026 In the course of this third session we will slice into an .FCS file and find out what the individual components that make it up are. In the process, we will cover the concepts of main data structures within R (vectors, matrices, data.frames, list) and how to identify what we are working with. Additionally, we will explore how various cytometry softwares store their metadata variables under various keywords that can be useful to know about.\n \n\n\nIntroduction to the Tidyverse\n\nWeek 4: February 23, 2026 Within this fourth session, we explore how the various tidyverse packages can be utilized to reorganize rows and columns of data in ways that are useful for data analysis. We will primarily work with the MFI expression data we isolated from within the .fcs file in the previous session, identifying and isolating events that meet certain criterias. We introduce the concepts behind “tidy” data and how it can improve our workflows.\n \n\n\nGating Sets\n\nWeek 5: March 2, 2026 As part of this fifth session, we learn about the two main flow cytometry infrastructure packages in R we will be working with during the course, flowcore and flowWorkspace. Throughout the session, we will compare how they differ in naming, memory usage, and accessing .fcs file metadata. We additionally explore how to add keywords to their respective metadata for use in filtering specimens of interest from the larger set of .fcs files.\n \n\n\nVisualizing with ggplot2\n\nWeek 6: March 9, 2026 During this session we provide an introduction to the ggplot2 package. We will take the datasets we have collected from the previous sessions and see how in varying in different arguments at the respective plot layers we can produce and customize many different forms of plots, focusing on both cytometry and statistics plots. We close out providing links to additional helpful resources and highlight the TidyTuesday project.\n \n\n\nApplying Transformations and Compensation\n\nWeek 7: March 16, 2026 For this seventh session, we take a closer look at the raw values of the data within our .fcs files, and explore the various ways to transform (ie. scale) flow cytometry data in R to better visualize “positive” and “negative populations”. In the process, we visualize the differences resulting from applying different transformations commonly used by commercial software. Similarly, we learn how to apply and visualize compensation in context of conventional flow cytometry files.\n \n\n\nManual and Automated Gating\n\nWeek 8: March 23, 2026 Within this session, we explore various ways to implement gating for flow cytometry files in R. We will explore manual approaches utilizing flowGate, as well as automated options with openCyto and it’s gating templates. We additionally will explore how to provide gate constraints and various ways to visually screen and evaluate the outcomes within the context of our own projects.\n \n\n\nConference Break 1\nNo class week of March 30, 2026. If you are attending the ABRF conference, track me down at the Complex Data Analysis in Flow Cytometry: Navigating the Landscape talk on Monday, March 30th at 4:30 PM.\n \n\n\nIt’s Raining Functions!\n\nWeek 9: April 6, 2026 In the course of this ninth session, we tackle one of the harder but most useful concepts to learn for a beginner, namely functions. We explore what they are, how their individual arguments work, how they differ from for-loops, and how to create our own to do useful work, reduce the number times code gets copied and pasted. Additionally, some functional programming best practices will be introduced, as well as provide introduction to how to use the walk and map functions from the purrr package.\n \n\n\nDownsampling and Concatenation\n\nWeek 10: April 13, 2026 Within this session, we will expand on our growing understanding of GatingSets, functions and fcs file internals to write a script to downsample your fcs files to a desired number (or percentage) of cells for a given cell population. We will additionally learn how to concatenate these downsampled files together, and save them to a new .fcs file in ways that the metadata can be read by commercial software without the scaling being widely thrown off.\n \n\n\nRetrieving data for Statistics\n\nWeek 11: April 20, 2026 Leveraging the increased familiarity working with the various packages this far in the course, in this session we will retrieve summary statistics for the gates within our GatingSet, and programmatically derrive out tidy data.frames for use in statistical analyses typically used by many Immunologist. In the process, we add a couple additional plot types to our ggplot2 arsenal to hold in reserve should Prism prices go up again.\n \n\n\nSpectral Signatures\n\nWeek 12: April 27, 2026 As part of this session, we will explore how to extract fluorescent signatures from our raw spectral flow cytometry reference controls. Building on prior concepts, we will learn to isolate median signatures from positive and negative gates, and how to derrive and plot normalized signatures. We also introduce plotly package and it’s interactive plotting features, before showcasing various packages attempts at facilitating signature retrieval.\n \n\n\nSimilarities and Hotspots\n\nWeek 13: May 4, 2026 During this session, we will utilize the spectral signature matrix isolated from raw spectral flow cytometry controls and evaluate different ways of evaluating how similar different fluorescent signatures are to each other. In the process, we will gain better understanding of the metrics behind similarity (cosine), panel complexity (kappa), and unmixing-dependent spreading (collinearity).\n \n\n\nUnmixing in R\n\nWeek 14: May 11, 2026 In the course of this session, we will attempt a reach goal of many, namely carry out unmixing of raw .fcs files using the spectral signatures we have isolated from our unmixing controls, and write to new .fcs files. After evaluating the necessary internals, we will explore how various current cytometry R packages have implemented their own unmixing functions, and the various limitations that each approach has encountered.\n \n\n\nCleaning Algorithms\n\nWeek 15: May 18, 2026 In the span of this session, we will directly compare how various Bioconductor data cleanup algorithms (namely PeacoQC, FlowAI, FlowCut, and FlowClean) tackle distinguishing and removing bad quality events. We will see how they perform with previously identified good quality and horrific quality .fcs files. We will whether the implemented algorithmic decisions made sense, and how to customize them within our workflows to achieve our own desired goals.\n \n\n\nClustering Algorithms\n\nWeek 16: May 25, 2026 As part of this session, we venture away from supervised and semi-supervised analyses to explore unsupervised clustering approaches, namely FlowSOM and Phenograph. We will compare outcomes depending markers included, transformations applied, and panel used to gain a greater familiarity with how they work. We wrap up by investigating ways to visualize marker expression of cells ending up in each cluster, and how to backgate them to our manual gates.\n \n\n\nNormalization: Batch Effect or Real Biology\n\nWeek 17: June 1, 2026 During this session, we will dive into evaluating the performance of two commonly used normalization algorithms, CytoNorm and CyCombine. We will utilize our ggplot2 and functional programming toolkits to create a customized workflow to visualize the differences for our respective cell populations before and after normalization, to better evaluate how the respective parameter choices can affect the process.\n \n\n\nConference Break 2\nNo class week of June 8, 2026. If you are attending the Cyto conference, track me down at my talks (Open-Source automation on June 7, 10:30-11:30AM at Grand Ballroom; and Semi-supervised pipeline on June 9, 10:30-11:45AM atRoom 2DEF) or poster (grab some Cytometry in R course hex stickers!)\n \n\n\nDimensionality Visualization\n\nWeek 18: June 15, 2026 For this session, we explore how dimensionality visualization algorithms perform tSNE and UMAP in R using our raw and unmixed samples. In the process, we will explore how markers included, number of cells, and presence of bad quality events can impact the final visualizations. Finally, we will provide an overview of how to link to Python to additionally run PaCMAP and PHATE visualizations for use in R.\n \n\n\nAnnotating Unsupervised Clusters\n\nWeek 19: June 22, 2026 In the course of this session, we explore ways to scale our efficiency in figuring out what an unsupervised cluster of cells may be, by employing several annotation packages. We explore how these work under the hood in their decision making process, and how to link them to reference data from external repositories for additional evaluation.\n \n\n\nThe Art of GitHub Diving\n\nWeek 20: June 29, 2026 Within this session, we delve into the art of investigating a new-to-you GitHub repository. We discuss the overall structure of R packages stored as source files within GitHub repositories, and how to leverage this knowledge when troubleshooting errors thrown by underdocumented R packages. We discuss how to modify identified functions, evaluate them, and process to submit helpful bug reports back to the original project to help fix the issue.\n \n\n\nXML Files All The Way Down\n\nWeek 21: July 6, 2026 Breaking news alert, most of the experiment templates and worksheet layouts we work with as cytometrist are .xml files. In this session, we learn some additional coding tools to allow us to work with these types of files to extract useful data. In this session, we test out our new problem solving abilities to retrieve data from SpectroFlo and Diva .xml files to monitor how our core’s flow cytometers behaved for various users last week.\n \n\n\nUtilizing Bioconductor packages\n\nWeek 22: July 13, 2026 Many of the R packages for Flow Cytometry we have utilized in this course were packages from the Bioconductor project. We take a look at what makes Bioconductor packages unique compared to packages found on GitHub and CRAN, explore some of their specific infrastructure types for flow cytometry data, and highlight some useful packages for downstream analysis that we haven’t had time to properly explore.\n \n\n\nBuilding your First R package\n\nWeek 23: July 20, 2026 For most of the course, we have been working with R packages that other individuals built and maintained. In this session, we leverage all your hard work from the rest of the course and corral the unwieldly arsenal of functions you wrote into your first R package for easier use. We will discuss the individual pieces of an R package, the importance of a well-setup namespace file, and how to generate help page manuals to refer future-you back to what your individual function arguments actually do.\n \n\n\nEveryone Get’s a Quarto Website\n\nWeek 24: July 27, 2026 In this session, we will extend the knowledge of .R and .qmd files you have gained from the course and extend them to create your own website using Quarto. We discuss the additional files that are required, how to customize and render the website locally, and finally set up Quarto Pub or GitHub Pages website that we are to access online.\n \n\n\nReproducibility and Replicability\n\nWeek 25: August 3, 2026 Throughout the course, we emphasized the importance of making your workspaces and code reproducible and replicable. But what do we mean by these terms, and are there best practices we could add to our existing workflow to do this more efficiently? We explore a couple community-led efforts within the cytometry space and troubleshoot their implementation into a previously published pipeline.\n \n\n\nConference Break 3\nNo class week of August 10, 2026. If you are attending the BioC conference, track me down at my talk/poster.\n \n\n\nOpen Source Licenses\n\nWeek 26: August 17, 2026 For this course, we have relied extensively on open-source software to create our own data analysis pipelines. In the process, you may have some recollection of the various license names. But what impact do all these different names have in the end? We take a brief deep-dive into the ecosystem of free and open-source licenses, and evaluate what their respective license terms mean for us as individual users of the code, as well as potential developers extending existing codebases.\n \n\n\nValidating Algorthmic Tools\n\nWeek 27: August 24, 2026 We will be the first to admit, new implementations of algorithms as R packages are awesome! We appreciate the effort that went into them and making them available to the community at large. But what is the best way of evaluating whether they behave as promised, or work for our dataset? During this session, we share tips and tricks to gain better understanding of how a new R package works, and things to watch out for when evaluating complicated algortithms. We wrap with walkthrough of how to generate simulated datasets with known distributions for use in testing.\n \n\n\nDatabases and Repositories\n\nWeek 28: August 31, 2026 During this session, we will learn how to identify and retrieve .fcs files from databases. While many of us are accustomed to working with large datasets of our own making, many of us are increasingly encountering larger-than-memory datasets, as well as files stored in large repositories. In this session, we will explore several database focused R packages, before investigating how to identify and retrieve .fcs files and associated metadata of interest from repositories, namely ImmPort (and maybe FlowRepository if it can be pinged that afternoon).\n \n\n\nAssembling Web Data\n\nWeek 29: September 7, 2026 In this session, we briefly delve into the concepts of web-scraping and APIs in general. We highlight useful packages, namely httr2 and rvest, and best practices implemented to allow respectful retrieval of useful data without crashing someone’s server like some AI startup bot. We finish by providing a list of additional useful resources for those interested in learning more.\n \n\n\nFuture Directions\n\nWeek 30: September 14, 2026 In this final of the planned sessions, we revisit our solutions to the challenge problems set out during the beginning of the course. We also discuss potential future topics to visit in the future, and any additional resources that proved helpful throughout the course.", + "crumbs": [ + "About", + "Cytometry Core" + ] }, { - "objectID": "course/00_BonusContent/PullConflicts/UpdatedPullRequest.html", - "href": "course/00_BonusContent/PullConflicts/UpdatedPullRequest.html", - "title": "Updated Pull Request Protocol", + "objectID": "index.html", + "href": "index.html", + "title": "About", "section": "", - "text": "Background\nDue to an encountered issue pulling in new updates for CytometryInR when you have an optional take-home problem still waiting to be reviewed, we will be modifying the protocol for submitting a pull request. You will first create a local homework branch, and submit from your branch to our homework branch. That should hopefully prevent any incoming changes from main to main from becoming conflicted.\n\n\nGetting Started\nThe first step is to open Positron, and navigate through the dropdown options to the Create a Branch option\n\n\nAnd provide a name (since the homework was for Week 02, we set it as Week 02)\n\n\nNext, select the option to Publish the Branch\n\n\nFrom here, importantly, select the option to make it a branch of YOUR forked CytometryInR version (since you don’t have permissions for the main course repository)\n\n\nAt this point, your new branch will have been created. You can check by entering the following code in the terminal, and verifying the * is next to the Week02 branch\n\ngit branch\n\n\n\nOnce you have confirmed you are in your homework branch, go ahead and transfer in all the files you will be submitting for the optional take-home problems\n\n\nAnd once done, make a commit as you would normally\n\n\nAs you can see, you will now be ahead of the main branch by one commit. Go ahead and sync your branch to GitHub so the contents are available remotely for use in the pull-request.\n\n\nOnce synced, you will notice that your branch is now up to date with the remote (cloud) icon. Next, proceed to checkout to the main branch, either via the dropdown or via the terminal using\n\ngit checkout main\n\n\n\nReturning to GitHub, you will see that your homework branch has received the incoming changes. You are now safe to sync your fork to bring in changes from the main course CytometryInR repository.\n\n\nAnd confirm yes.\n\n\nReturning to Positron, once verified you are in your main branch, proceed to pull in changes\n\n\nIf you switch between branches, you will notice you have both the new changes to main, as well as your week specific side branch co-existing peacefully.\n\n\nYou are then safe to make a pullrequest from your homework branch, to our homework branch, without running into risk of an additional commit from our end (or delay in reviewing) causing issues.\n\n\n\n\nAdditional Resources\nThis method should hopefully avoid the previously encountered issues. Apologies once again to those who encountered the issue! Still learning how to use some of these aspects of Version control in a GitHub context." - }, - { - "objectID": "course/00_Floreada/slides.html#floreada", - "href": "course/00_Floreada/slides.html#floreada", - "title": "Using Floreada", - "section": "Floreada", - "text": "Floreada\nLoading Dataset\n\n\n\n\n\n\n\n\n.\n\n\nFirst, open your web browser and navigate to the website\nClick on Start to proceed to the next page." + "text": "Cytometry in R is a free weekly mini-course being offered both in-person and online by the Flow Cytometry Shared Resource staff at the University of Maryland Greenebaum Comprehensive Cancer Center. Its primary audience is for those with prior flow cytometry knowledge, who have limited previous experience with the programming language R. However, we welcome everyone regardless of their existing  flow cytometry  or coding experience.\nThis course is a passion project arising from our desire to contribute back to the community. We are excited that so many of you have chosen to sign up, and look forward to helping you get started on your own learning journeys.\nFor more information on topics-covered, please see our schedule. Course materials can be found here or via the Course tab in the navigation bar. The livestream recordings are available via YouTube\n\n\nAbout\n\n\nMotivation\nWhile many cytometry enthusiast express an interest in learning how to carry out flow cytometry analyses in R, they often do not know where to start. Additionally, many of the limited existing resources are focused towards users with intermediate bioinformatic skills, contributing to a greater barrier for entry for those just starting out. Our motivation in offering this mini-course tailored towards beginners is to make the learning journey smoother than the one we ourselves experienced.\n\nWhile designing the course, we kept the following concepts in mind:\n\nBeginning coders benefit both by having detailed examples that they can initially work through on their own time, as well as less defined problems that through troubleshooting enable the acquisition of the thought-process and skills needed for coding.\nSome topics will take individuals a longer time to fully grasp. Providing a format and resources that enable being able to revisit the material multiple times is incredibly helpful. Likewise, life is busy, and missing a workshop session is highly probable. If this happens, it shouldn’t make or break the ability of the individual to understanding the rest of the course.\nConsistency is key, and being able to apply what you are learning to your own datasets, files, and questions of interest helps achieve this.\n\n\n\n\n\nCourse Details\n\nEach week, the mini-course will cover a particular topic for an hour. This individual class is offered on multiple days, at different times, both in-person and online. We invite you to attend the one that best fits your schedule each week. If life gets busy and you can’t make regular day, the online livestream recordings will be available on YouTube.\n \n\nCourse Materials\n\nWe will release the course materials for the upcoming week on Monday 1700 EST (Monday 2200 GMT+0) via our course website and GitHub. These materials will normally be Quarto Markdown documents containing code, explanation, and other resources needed for that week. If you have your own data, you can use your own data! If you don’t have any data, we will make sure to provide some of our own available data for each lesson so that you can use it and be able to follow along.\nIn our commitment to open-source and open-science, all teaching materials are freely offered under a CC-BY-SA license, while all code examples are offered under the AGPL3-0 copyleft license.\n \n\n\nIn-Person (Baltimore)\n\nFor those who are local and attending in person, the class will be offered on Thursday from 4-5 pm EST in Bressler Research Building Conference Room 7-035 (around the corner from the Flow Core).\nIf you have your own laptop, feel free to bring it. If you don’t have a laptop, please reach out, the Flow Core has 6 laptops running Linux that we can lend out to participants for use during the session.\nFor those who arrive early, we will have a limited number of second screens with provided mouse and keyboard that you can plug a laptop into via HDMI cable to set up a larger workstation. For those arriving later, the room has enough space (and electrical plugs) for up to 20 people, but you will need to balance a laptop on your lap.\n \n\n\nOnline (Worldwide)\n\nFor those joining us virtually, we will have three separate livestreams throughout the week on YouTube. These will be offered on:\n\nTuesday 2200 EST (Wednesday 0300 GMT+0)\nWednesday 1600 EST (Wednesday 2100 GMT+0)\nThursday 1000 EST (Thursday 1500 GMT+0)\n\n \n\n\nRecordings\n\nAll three livestreams will be recorded and available on YouTube immediately afterwards. Our plan is to eventually circle back after the course and properly edit them (ie. less minutes of random background noise, highlighting the relevant lines of code, time-stamps, subtitles, translations, etc.) later on as time allows, so that they can serve as a more permanent resource.  \n\n\nDiscussion Forum\n\nWe will be using our GitHub Discussions page as a community forum. This will allow us to answer questions, and benefit from insights from others in the community. One advantage of having so many people signed up for the course is that if you have a question, someone else likely does as well, so go start a post and ask it!\n \n\n\nOptional Take-Home Problems\n\nEach week, we will offer optional take-home problems. These are intended to allow you to work with your own data on similar problems, but in a not-so-structured manner. Challenges that you and overcome during the process will help grow your problem solving and debugging skills, and help solidify concepts covered during the course.\nTo get feedback on these problems, you can reach out to the community on the Discussions page, or once far enough open a pull request to the homework branch and we will provide additional feedback.\n \n\n\nCost\nIs there a cost to participate? No, it’s absolutely free! Is there a catch? Yes, you learn R, and may wind up with strong feelings about flowframes vs. cytoframes. This is also our first year offering this course, so we will sporadically ask you to fill out a feedback forms to help us improve.\n\n \n\n\nComputing Requirements\n\nFor those attending online, you will need a computer with internet access. Operating system shouldn’t matter, as we will be offering code examples for Windows, Mac and Linux. As with all things flow-cytometry software, having a faster CPU with multiple cores, more RAM and greater storage space is generally helpful, but not a deal breaker.\n\nYou will need to be able to install the required software (R, Rtools, Positron, Quarto, and Git) as well as install and compile R packages from the CRAN and Bioconductor repositories (as well as a few GitHub-based R packages). Installation walkthroughs for each computer operating system can be found here.\nFor those using university or company administered computers, please be aware that you may not have the necessary permissions to install these directly, and may need to reach out to your IT department to help get these initial requirements set up. If you are using your own computer, congratulations, you are your system administrator, and should already have the necessary permissions.\n\nFor those attending in-person, we have set up a pop-up computer lab in the conference room. For those who arrive early, we have a limited number of second screens with provided mouse and keyboard that you can plug a laptop into via HDMI cable to set up a workstation. For those arriving later, the room has enough space (and electrical plugs) for 20 people, but you will need to balance a laptop on your lap. If you have your own laptop, feel free to bring it. If you don’t have a laptop, the flow core has 6 loaner laptops running Linux that we can let participants use for that session.\n\n\n\n\nLicense\nIn our commitment to open-science and open-source, all teaching materials are freely offered under a CC-BY-SA license, while all code examples are offered under the AGPL3-0 copyleft license." }, { - "objectID": "course/00_Floreada/slides.html#cytoml", - "href": "course/00_Floreada/slides.html#cytoml", - "title": "Using Floreada", - "section": "CytoML", - "text": "CytoML\n\n\n\n\n\n\n\n\n.\n\n\nDue to a unknown formatting bug, the Floreada produced FlowJo v10 .wsp is not directly accessible by CytoML at the time of this course. However, the issue is resolved as soon as the file is opened the first time within FlowJo v10, regardless of whether you have a log in or not. Strange? Yes, but we will take the workaround.\nSo, for anyone on Windows or MacOS, download FlowJo v10. Once installed, open the software, and close the login popups. Once there, open the Floreada created FlowJo.wsp file. Since you haven’t logged in, it won’t show any events. But it will correct the formatting bug. Close the software, and return to R. Your Floreada sourced .WSP file should now be readable by CytoML.\nOdd? For sure. Fixable? Likely, I will set a reminder to work with the Floreada and CytoML devs to see if we can cut out the need for this workaround." + "objectID": "ExistingResources.html", + "href": "ExistingResources.html", + "title": "Existing Resources", + "section": "", + "text": "We are not the first “Cytometry in R” course, nor will we be the last. This page is linking to the already existant online Cytometry in R resources that we have encountered and benefited from during our own learning journey. May they prove useful to you as you progress your way through yours!\n\n\n\nChristopher Hall - Flow Cytometry Data Analysis in R\nCytometry-R-Scripts: R scripts to help with your flow cytometry analysis\nR_flowcytometry_course: The files and presentation from the Cytometry Core Facility flow cytometry data analysis course in R\n\nInstallation and Loading Data\n(1) Flow Cytometry Data Analysis in R - Installation and Loading Data\n\n\n\n\nCompensation, Cleaning, Transformation, Visualization\n(2) Flow Cytometry Data Analysis in R: compensation, cleaning, transformation, visualization\n\n\n\n\nGating with flowWorkspace\n(3) Flow Cytometry Data Analysis in R: gating with flowWorkspace\n\n\n\n\nVisualization\n(4) Flow Cytometry Data Analysis in R: Visualisation\n\n\n\n\n\n\n\nOzette Technologies - BioC 2023 Workshop\nWorkshop given at the Bioc2023 conference, authored by Arpan Neupane and Andrew McDavid.\nWorkshop: Reproducible and programmatic analysis of flow cytometry experiments with the cytoverse\n\n\n\n\n\n\nPritam Kumar Panda - Flow Cytometry Data Analysis & Visualization in R using CytoExploreR\nFlow-Cytometry-analysis-in-R\nCytoExploreR-Interactive-visualization\n\nComplete Guide\nFlow Cytometry Data Analysis & Visualization in R using CytoExploreR: Complete Guide\n\n\n\n\n\n\n\nBioinformatics DotCa - Introduction to Flow Cytometry in R\n\nIntroduction to Flow Cytometry in R\nIntroduction to Flow Cytometry in R\n\n\n\n\nExploring FCM Data in R\nExploring FCM Data in R\n\n\n\n\nProcessing and Quality Assurance of FCM Data\nProcessing and Quality Assurance of FCM Data\n\n\n\n\n1D Dynamic Gating\n1D Dynamic Gating\n\n\n\n\nClustering and Additional FCM Tools\nClustering and Additional FCM Tools\n\n\n\n\n\nTulika Rai - Learn Innovatively With Me\n\nflowAI Flow Cytometry Data Cleaning using R\nflowAI Flow Cytometry Data Cleaning using R: A Step-by-step Tutorial\n\n\n\n\ntSNE UMAP TRIMAP colorization or Transformation using R script\ntSNE UMAP TRIMAP colorization or Transformation using R script\n\n\n\n\n\n\n\nGivanna Putri - Introduction to Cytometry Data Analysis in R workshop\nACS 2021 Workshops - Introduction to Cytometry Data Analysis in R workshop\n\n\n\n\n\n\nTimothy Keyes -\n{tidytof}: Predicting Patient Outcomes from Single-cell Data using Tidy Data Principles\n\n\n\n\n\n\nRyan Duggan - Cytometry on Air\nCytometry on Air: Analyzing Flow Cytometry Data in R Presentation by TJ Chen and Greg Finak,\n\n\n\n\n\n\nGuillaume Beyrend - Learn Cytometry\nLearn Cytometry Originally appeared to have been paywalled, doesn’t currently appear to be the case.\n\n\n\n\nHong Qin - flow analysis in R\n\nFlow Analysis in R\nflow analysis in R, bio125, Spring 2015\n\n\n\n\nFlow Cytometer Data Analysis\nBIO233 demo, flow cytometer data analysis, simple example\n\n\n\n\n\n\n\nSwayam Prabha - Flow cytometry data analysis in R/Bioconductor\nLecture 15 : Flow cytometry data analysis in R/Bioconductor" }, { - "objectID": "course/00_Git/slides.html#new-folder-from-template", - "href": "course/00_Git/slides.html#new-folder-from-template", - "title": "Version Control with Git", - "section": "New Folder from Template", - "text": "New Folder from Template\n\n\n\n\n\n\n\n\n.\n\n\nSince Positron can use multiple programming languages, when we select “New Folder from Template” we will be asked what kind of folder template we want to use. Since we are working in R, we will select the “R Project” option." + "objectID": "course/index.html", + "href": "course/index.html", + "title": "Cytometry in R", + "section": "", + "text": "Cytometry in R is a free virtual mini-course being organized by the Flow Cytometry Shared Resource Core at the University of Maryland’s Greenebaum Comprehensive Cancer Center. This course is a passion project arising from our desire to contribute back to the community.\nWe are excited that so many individuals worldwide have chosen to take part, and we look forward to helping you get started on your own learning journeys." }, { - "objectID": "course/00_Git/slides.html#creating-subfolders", - "href": "course/00_Git/slides.html#creating-subfolders", - "title": "Version Control with Git", - "section": "Creating SubFolders", - "text": "Creating SubFolders\n\n\n\n\n\n\n\n\n.\n\n\nOnce your new project folder has opened, you should be seeing the main layout elements that we briefly covered in the Positron walk-through.\nFor this section, we will primarily be focused on what is happening within the primary side bar on the left, where changes to the individual files within the folder since the last save/commit will be reflected by colored text.\nFor my own projects, there are some elements of organization that I go ahead and add for each new folder. These include both a data and an images subfolders to help keep things a little more organized.\nTo create these folders, we would click on the respective add folder (+) button on the side bar. Files and Folders can be clicked and dragged within the primary side bar to move things to new folder locations." + "objectID": "course/index.html#resources", + "href": "course/index.html#resources", + "title": "Cytometry in R", + "section": "Resources", + "text": "Resources\nCourse materials can be found here. The livestream recordings are available via YouTube" }, { - "objectID": "course/00_Git/slides.html#creating-files", - "href": "course/00_Git/slides.html#creating-files", - "title": "Version Control with Git", - "section": "Creating Files", - "text": "Creating Files\n\n\n\n\n\n\n\n\n.\n\n\nIn context of this course, we will primarily be working with two types of files when coding:\n\nR Scripts: These files end in .R. These contain only code (with occasional # comment line). These are often used for self-contained code that once we get them working we rarely need to modify.\nQuarto Markdowns: These files end in .qmd. They contain a .yaml header, followed by a mix of regular written text (often explanations or other documentation), and sections (ie. chunks) that contain code. These are used when we are still getting the code to work, when we need to modify inputs frequently, or simply when we need to document what and why we are doing something to make life easier for our future-self two months from now." + "objectID": "course/index.html#in-person-baltimore", + "href": "course/index.html#in-person-baltimore", + "title": "Cytometry in R", + "section": "In-Person (Baltimore)", + "text": "In-Person (Baltimore)\nFor those joining us in person, the class is being offered on Thursday from 4-5 pm EST in Bressler Research Building Room 7-035. Monitors to plug your laptops in will be available on a first come, first served basis. These in-person sessions will not be recorded, but with the smaller class size you will have our undivided attention should you have any questions." }, { - "objectID": "course/00_Git/slides.html#qmd-files", - "href": "course/00_Git/slides.html#qmd-files", - "title": "Version Control with Git", - "section": "QMD Files", - "text": "QMD Files\n\n\n\n\n\n\n\n\n.\n\n\nOnce this is done, we can now see we have a new .qmd file (“Example.qmd” in this case).\n\n\n\n\n\nYAML\n\n\n\n\n\n\n\n\n.\n\n\nAs previously mentioned, the start of a Quarto Markdown file containg a YAML code chunk that is used to set formatting choices (we will explore this in-depth during the next section)\nWhat designates the location of the YAML block are three hyphens at the start, and three hyphens at the end. For this example, we will also provide a “title:” and “format:” field for the time being (see additional options here)." + "objectID": "course/index.html#virtual-worldwide", + "href": "course/index.html#virtual-worldwide", + "title": "Cytometry in R", + "section": "Virtual (Worldwide)", + "text": "Virtual (Worldwide)\nFor those joining us virtually, we will have three separate livestreams throughout the week on YouTube. These will be offered on:\n\nTuesday 2200 EST (Wednesday 0300 GMT+0)\nWednesday 1600 EST (Wednesday 2100 GMT+0)\nThursday 1000 EST (Thursday 1500 GMT+0)\n\nAll three livestreams will be recorded and available on YouTube immediately afterwards." }, { - "objectID": "course/00_Git/slides.html#local-version-control", - "href": "course/00_Git/slides.html#local-version-control", - "title": "Version Control with Git", - "section": "Local Version Control", - "text": "Local Version Control\n\n\n\n\n\n\n\n\n.\n\n\nHaving introduced the main elements of a Quarto Markdown file, let’s turn our attention to the tab within the editor showing our newly created .qmd file.\nWe can see there is a solid circle next to the file name, and it is appearing as green. The circle denotes unsaved changes, which we can correct by clicking on the Save Button to save the changes to our file." + "objectID": "course/index.html#discussion-forum", + "href": "course/index.html#discussion-forum", + "title": "Cytometry in R", + "section": "Discussion Forum", + "text": "Discussion Forum\nWe will be using the Cytometry in R Discussions page as a community forum, and a place to ask questions, celebrate wins, and provide feedback. After creating a a GitHub account, pleae go introduce yourself." }, { - "objectID": "course/00_Git/slides.html#remote-version-control", - "href": "course/00_Git/slides.html#remote-version-control", - "title": "Version Control with Git", - "section": "Remote Version Control", - "text": "Remote Version Control\nCopying Project Folder to GitHub\n\n\n\n\n\n\n\n\n.\n\n\nWhile having local version control in place is helpful when you need to revert back after encountering issues, where Git shines is the ability to pass your changes to your online GitHub repository.\nNot only does this allow you to switch between computers, but should something disastrous happen to your main computer, you still have all your hard work backed up and readily assessible.\nFor this subsection, first, double check that Positron is still connected to your GitHub account by checking the user tab on the bottom-left. If not, repeat the connection setup." + "objectID": "course/00_BonusContent/PullConflicts/index.html", + "href": "course/00_BonusContent/PullConflicts/index.html", + "title": "Take-Home Problems - Pull Fix Resolution", + "section": "", + "text": "Background\nFor those who have turned in the homework to the Cytometry in R - homework branches, many report having encountered merge issues pulling in the next week’s data if the pull request hasn’t been resolved yet. Creating a parallel branch, and submitting homework from there to the homework branch might solve the issue? But we will need to test that out. For now, here are the steps we used to resolve the issue locally without needing to delete and re-download.\n\n\nGetting Started\nStart off checking your GitHub forked version of the CytometryInR, notice how many commits behind you are.\n\n\nIf you haven’t submitted the optional Take-Home problems via a pull-request, proceed to do so.\n\n\nThis was an example of the page you see when submitting the pull request. Upon submission, your branch may show merge conflicts due to difference in rendered docs. This is okay, we will resolve it on our end.\n\n\nWhat we will end up doing is ignore the changes and accept the current version. This issue is likely due to the weekly updating of the data resulting in new sidebar links. We will then mark these issues as resolved\n\nWe will then mark the issues as resolved.\n\n\nOn return to the homework, we will be able to merge the branch once again. We will likely make our suggestions at this point for this branch.\n\n\nHowever, after pull request has been merged, you will see your branch is way ahead (due to everyone elses homework commits). This is the area we will need to address via the new branch method.\n\n\nFor now, proceed to discard the changes (you don’t need the other participants homeworks cluttering your folder)\n\n\nYou will then appear as caught up with the main branch.\n\n\nOn return to Positron, attempt to pull\n\n\nHowever, since your homework commit is still present, you will receive a pop-up asking you to see the GitLog. If you scroll up the problem log, it will give you several options.\n\n\nYou will need to enter the following code into your terminal tab:\n\ngit config pull.rebase TRUE\n\n\n\nThis will result in a branched appearance, and the button asking you to sync the changes.\n\n\nUpon doing so you will have a restored status vs. the main cytometry in R project folder.\n\n\n\nTake Away\nWe have encountered a first growing pain for the course, in that the pull-request method we have been using still causes merge conflicts. We will be going to a homework branch to homework branch pull-request approach going forward, I will send out additional instructions on how to do so shortly.\nThanks for your patience!\nDavid\n\n\nAdditional Resources" }, { - "objectID": "course/00_GitHub/slides.html#creating-an-account", - "href": "course/00_GitHub/slides.html#creating-an-account", - "title": "Using GitHub", - "section": "Creating an Account", - "text": "Creating an Account\n\n\n\n\n\n\n\n\n.\n\n\nWe will first navigate to the GitHub homepage. If you haven’t previously created an account, click on the button to sign up for an account." + "objectID": "course/00_BonusContent/index.html", + "href": "course/00_BonusContent/index.html", + "title": "Bonus Content", + "section": "", + "text": "This is a miscellaneous page to host walk-throughs of topics that come up via the Discussion Page. Rather than re-explain how to in the comments, I want to have a place to post short-walkthroughs to solve these issues, while avoiding incorporating it into the existing walk-throughs at this point in time. I hope you find it useful, and pardon the organized chaos of miscellaneous topics." }, { - "objectID": "course/00_GitHub/slides.html#github-profile", - "href": "course/00_GitHub/slides.html#github-profile", - "title": "Using GitHub", - "section": "GitHub Profile", - "text": "GitHub Profile\n\n\n\n\n\n\n\n\n.\n\n\nUpon creating a brand new account, your GitHub homepage will initially look rather empty, and can be intimidating to navigate for the first time.\nFor now, on the upper right, go ahead and click on the default profile picture icon…" + "objectID": "course/00_BonusContent/index.html#windows-arm", + "href": "course/00_BonusContent/index.html#windows-arm", + "title": "Bonus Content", + "section": "Windows Arm", + "text": "Windows Arm\n\nPositron\nOn the main Positron installation page, only the installers for Windows Computers with x86 chips are currently shown. There is a beta (experimental) version of Positron for Windows ARM (ex. Snapdragons), but it needs to be installed from Positron’s GitHub releases page.\n\nPlease note, you should download the most recent version that is available to you, as they continue to update it and fix bugs. As of February 04, 2026, you would also need to install Quarto separately.\nTo install Quarto, first navigate to their website. Quarto for Windows ARM was implemented in 2023, so the regular installer should work.\n\nAlso, you would need a Python arm64 installation installed if you decide you want to venture into using Python at any point." }, { - "objectID": "course/00_GitHub/slides.html#github-readme", - "href": "course/00_GitHub/slides.html#github-readme", - "title": "Using GitHub", - "section": "GitHub ReadMe", - "text": "GitHub ReadMe\n\n\n\n\n\n\n\n\n.\n\n\nWith this done, we modify your GitHub profile by adding one customized element, a ReadMe page. This will be used for a couple projects during the course, and can be personalized further in the future.\nTo create a ReadMe page for your profile, we will navigate to the upper right of the screen and click on the + sign." + "objectID": "course/00_BonusContent/index.html#visual-mode", + "href": "course/00_BonusContent/index.html#visual-mode", + "title": "Bonus Content", + "section": "Visual Mode", + "text": "Visual Mode\nWithin Positron, there exist a toggle button to switch between source and visual mode on Quarto documents. But what do you do when you can’t find it?\n\nTuns out…. Visual Mode is currently broken, so the developers removed it about two weeks ago.\nThe current way to switch to it is via right-click, then select edit visual mode.\n\nVice versa, once there, you can revert by right-clicking and selecting Edit Source Mode\n\nThe process of figuring what is going on highlights how to use a GitHub Discussion Page. This is Positrons when I searched for visual button. I then found that a similar question was asked 3 days ago that led me to the linked thread above." }, { - "objectID": "course/00_GitHub/slides.html#github-repository", - "href": "course/00_GitHub/slides.html#github-repository", - "title": "Using GitHub", - "section": "GitHub Repository", - "text": "GitHub Repository\n\n\n\n\n\n\n\n\n.\n\n\nHaving set up your GitHub profile, it now is time to make sure you have access to our course materials. We will have you navigate to our course’s GitHub profile\nOn the profile page, you will be able to see our version of the README, our repositories, and the Contributions graph and Contribution activity sections.\nPlease click on the CytometryInR to navigate to its repository (folder)" + "objectID": "course/00_BonusContent/index.html#not-detecting-git", + "href": "course/00_BonusContent/index.html#not-detecting-git", + "title": "Bonus Content", + "section": "Not Detecting Git", + "text": "Not Detecting Git\nIf you leave the “Initialize Git Repository” option unclicked when setting up a New Folder from Template, Git will not be active within your project folder.\n\nAs a result, when you try to use the usethis packages use_github(private=true) function, you will get an error that resembles the one below\n\nTo initiate a Git repository after the fact, you will need to go to the Version Control tab in the action bar, and select the option.\n\nThen, you will need to stage the files you want to work with, and commit them.\n\nuse_github(private=TRUE) should now be functional at that point. However, you can also choose to continue via Positron’s interface instead by selecting Publish.\n\nIt will then ask you whether you want to save it as either a Public or a Private repository.\n\nAnd if all goes well, you will see the “Successs” pop-up in the lower-right" }, { - "objectID": "course/00_GitHub/slides.html#forking-cytometryinr", - "href": "course/00_GitHub/slides.html#forking-cytometryinr", - "title": "Using GitHub", - "section": "Forking CytometryInR", - "text": "Forking CytometryInR\n\n\n\n\n\n\n\n\n.\n\n\nBefore we go further, we will need you to make your own copy of the course repository (ie. fork it). This will allow you to quickly retrieve all the new materials and code corrections by simply rereshing (ie. syncing) your forked version with our upstream parent branch once a week." + "objectID": "course/00_Floreada/index.html", + "href": "course/00_Floreada/index.html", + "title": "Using Floreada", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - Floreada" + ] }, { - "objectID": "course/00_Homeworks/slides.html#discussions-forum", - "href": "course/00_Homeworks/slides.html#discussions-forum", + "objectID": "course/00_Floreada/index.html#floreada", + "href": "course/00_Floreada/index.html#floreada", + "title": "Using Floreada", + "section": "Floreada", + "text": "Floreada\n\nLoading Dataset\nFirst, open your web browser and navigate to the website\nClick on Start to proceed to the next page.\n\n\n\n\n\n\nOnce that is done, select the File tab on the upper navigation bar. Then click on Open File(s).\n\n\n\n\n\n\n\nFrom there, select your .fcs files of interest, and click Open.\n\n\n\nThe .fcs files will now load in, and you should see a view similar to the one below. On the left side-bar, you have your gating options (Rectangle, Polygon, Range, Elipse, Quad, etc). Next to these on the right you have the FCS files that are loaded into the workspace. Then on the right, you have the visual display for your selected specimen.\n\n\n\n\n\nSwitching Axis Markers\nIf you left click on the axis name (SSC-H or FSC-H in this case), you will be able to select other markers by which to gate your specimen. For the provided example, we were using a raw spectral flow cytometry .fcs file, so the names of the detectors are present.\n\n\n\nFor now, I plan to start off by gating for singlets. I switch the y-axis to FSC-H, and then proceed to switch the x-axis to FSC-A.\n\n\n\n\n\nCreating Gates\nWith this done, I can now select the Poly gate tab on the upper left.\n\n\n\nThen manually click on the locations on the plot to add the individual gate nodes.\n\n\n\nTo complete the gate, I click back to the original node point. At this point, the popup will allow you to name the gate.\n\n\n\nTo adjust the polygon gate, you can click on a node and drag it to expand or contract in a particular direction\n\n\n\nTo move the entire gate, first click on a node to select the gate, then click in the center of the gate to adjust its location.\n\n\n\n\n\nAdditional Gates\nUnfortunately for those with the force-of-habit from using other softwares, double-clicking within the gate doesn’t do anything. To continue gating on the selected cells, you will need to click on the newly created gate name on the left. This will result in visualizing the isolated cells.\n\n\n\nOnce this is done, you can repeat the previous steps to change the axis markers and create a second gate. For this example, we went with a “Cells” gate to exclude debris from this particular sample.\n\n\n\nHaving created the “Cells” gate, we will be switching gating based on FSC and SSC to using the detector parameters.\nThe samples in this example were acquired to derive the cell counts and concentration of various cell populations within cryopreserved cord and peripheral blood mononuclear cells (CBMC and PBMC) specimens after thawing.\nThey were stained with CD19 BV421, CD45 PE, and CD14 APC on a 5-Laser Cytek Aurora, before unmixing, this would correspond respectively to V1, YG1/B4, R1/YG4 peaks respectively.\n\n\n\n\nScaling/Transformation\nWhen we switch the axis, we can see that the scaling/transformation is not ideal, as the staining and not-staining populations are scrunched up together in the center of the plot.\n\n\n\nTo change the scaling/transformation, we need to click directly on the axis.\n\n\n\nFrom there, when we click on the drop-down, we see the various transformation options. We will select Logicle, given we are working with spectral flow cytometry files.\n\n\n\nThis y-axis values are subsequently visualized with the logicle transformation applied, increasing our resolution between the positive and negative population.\n\n\n\nWe can then repeat this for the x-axis, adjusting the fine-tune options for the scaling as needed.\n\n\n\n\n\nNavigating Gating Hierarchy\nWith this done, let’s first draw a rectangle gate for the CD45+ (B4-A) cells.\n\n\n\nAnd then selecting that population by clicking on the gate name, let’s proceed and gate the CD19+ cells (V2-A).\n\n\n\nAs you can see, we now have the various gates present in the gating hierarchy for the respective .fcs file. To return to a previous gated population, we would click on the parent population above it.\n\n\n\nWe can subsequently add an additional gate at this gating level for the likely debris population (the threshold setting was suboptimal for this experimental run).\n\n\n\n\n\nCopying Gates\nThis was the process for gating for a single specimen. To copy gates over to the other specimens, we have two options. First, holding down your Ctrl (or equivalent) button, you can click on the individual gate names.\n\n\n\nFrom there, you can drag them down to the next specimen and apply them.\n\n\n\nAlternatively, you can drag down the highlighted gated to the Pipelines Tab, and apply to All Files. This will result in the gates being copied to all specimens in the experiment.\n\n\n\n\n\n\nAdjustments within Pipelines will carry over to all other respective unmodified specimens that share it’s gates.\n\n\n\nOnce this is done, I recommend cycling through the gates for each specimen, just to ensure that the gates were positioned correctly before saving the workspace.\n\n\n\n\n\nSaving Workspace\nWith everyone now “correctly” gated, we can proceed to save the workspace so that we can reopen it later from another browser.\nTo do this we open the File tab from the upper navigation bar, and select Save Workspace.\n\n\n\nFrom there we have a couple options, for now let’s select Floreada Workspace. Where it is saved at will depend on your individual browser settings, so watch for a popup.\n\n\n\nAlternatively (and crucially for the CytoML pipeline) we can also choose to save it as a FlowJo v10 .wsp file.\n\n\n\nIn both cases, you will end up with Workspace files that can be used later to access your created gates\n\n\n\n\n\nReopening Workspace\nTo reopen the Floreada workspace within the browser, reopen the website, and select the Open File(s) option.\n\n\n\nFrom there, select both the Floreada Workspace file as well as the .fcs files\n\n\n\nAt which point you will now be back to the point you last saved at.", + "crumbs": [ + "About", + "Getting Started", + "00 - Floreada" + ] + }, + { + "objectID": "course/00_Floreada/index.html#cytoml", + "href": "course/00_Floreada/index.html#cytoml", + "title": "Using Floreada", + "section": "CytoML", + "text": "CytoML\nDue to a unknown formatting bug, the Floreada produced FlowJo v10 .wsp is not directly accessible by CytoML at the time of this course. However, the issue is resolved as soon as the file is opened the first time within FlowJo v10, regardless of whether you have a log in or not. Strange? Yes, but we will take the workaround.\nSo, for anyone on Windows or MacOS, download FlowJo v10. Once installed, open the software, and close the login popups. Once there, open the Floreada created FlowJo.wsp file. Since you haven’t logged in, it won’t show any events. But it will correct the formatting bug. Close the software, and return to R. Your Floreada sourced .WSP file should now be readable by CytoML.\nOdd? For sure. Fixable? Likely, I will set a reminder to work with the Floreada and CytoML devs to see if we can cut out the need for this workaround.", + "crumbs": [ + "About", + "Getting Started", + "00 - Floreada" + ] + }, + { + "objectID": "course/00_Git/index.html", + "href": "course/00_Git/index.html", + "title": "Version Control with Git", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#new-folder-from-template", + "href": "course/00_Git/index.html#new-folder-from-template", + "title": "Version Control with Git", + "section": "New Folder from Template", + "text": "New Folder from Template\nSince Positron can use multiple programming languages, when we select “New Folder from Template” we will be asked what kind of folder template we want to use. Since we are working in R, we will select the “R Project” option.\n\n\n\nWe will next be asked to name the new project folder and a storage location.\nOne thing I would like to remind everyone who is just starting to code is that it is best to avoid using special characters (ex. @ $ # ^ ! ; : ,) in any folder or file name. This is because when coding, these can be misinterpreted as commands.\nWhile spaces are generally okay, it is often to best stick to to stick to hyphens (-), underscores (_). We will explore naming conventions in more depth at a later time.\n\n\n\nAnother useful thing to know when getting started with version control, it is best to save your files within your local computer, avoid using OneDrive or other cloud storage options for the time reason. The reason behind is that permissions to write/save to the cloud locations can sometimes be quite finicky, and some autosave/indexing behaviors can cause issues. akes things easier to save or modify without running into permission issues. For most of our course examples, we will be saving our Project Folders under the Documents Folder.\nHaving named our new Project Folder, and designated a storage location, go ahead and check the Initialize Git Repository option. This will indicate to version control to monitor content and changes to files within this folder.\n\n\n\nThe next setup screen will verify which version of R you wish to use. Since we are just getting started, your most recent version of R (usually system) should work. We will also leave the “renv” (reproducible environment setup) option unchecked for the time being (we will revisit the concept later in the course).\n\n\n\nAnd if all goes well, we should see the “New Folder Created” popup.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#creating-subfolders", + "href": "course/00_Git/index.html#creating-subfolders", + "title": "Version Control with Git", + "section": "Creating SubFolders", + "text": "Creating SubFolders\nOnce your new project folder has opened, you should be seeing the main layout elements that we briefly covered in the Positron walk-through.\nFor this section, we will primarily be focused on what is happening within the primary side bar on the left, where changes to the individual files within the folder since the last save/commit will be reflected by colored text.\nFor my own projects, there are some elements of organization that I go ahead and add for each new folder. These include both a data and an images subfolders to help keep things a little more organized.\nTo create these folders, we would click on the respective add folder (+) button on the side bar. Files and Folders can be clicked and dragged within the primary side bar to move things to new folder locations.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#creating-files", + "href": "course/00_Git/index.html#creating-files", + "title": "Version Control with Git", + "section": "Creating Files", + "text": "Creating Files\nIn context of this course, we will primarily be working with two types of files when coding:\n\nR Scripts: These files end in .R. These contain only code (with occasional # comment line). These are often used for self-contained code that once we get them working we rarely need to modify.\nQuarto Markdowns: These files end in .qmd. They contain a .yaml header, followed by a mix of regular written text (often explanations or other documentation), and sections (ie. chunks) that contain code. These are used when we are still getting the code to work, when we need to modify inputs frequently, or simply when we need to document what and why we are doing something to make life easier for our future-self two months from now.\n\n\n\nIn this example, I will go ahead and select the new file icon\n\n\n\nThenn I will name the file, and designate it as a Quarto Markdown file by adding the .qmd at the end of the name to denote the file type.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#qmd-files", + "href": "course/00_Git/index.html#qmd-files", + "title": "Version Control with Git", + "section": "QMD Files", + "text": "QMD Files\nOnce this is done, we can now see we have a new .qmd file (“Example.qmd” in this case).\n\nYAML\nAs previously mentioned, the start of a Quarto Markdown file containg a YAML code chunk that is used to set formatting choices (we will explore this in-depth during the next section)\nWhat designates the location of the YAML block are three hyphens at the start, and three hyphens at the end. For this example, we will also provide a “title:” and “format:” field for the time being (see additional options here).\n\n\n\n\n\nText\nWith a basic YAML formatting block now in place, we can build out other elements of our Quarto Markdown document. Unless otherwise specified, everything else in the document is assumed to be text, so I will go ahead and provide an initial text description of what I am trying to do.\n\n\n\n\n\nCode-Chunks\nHaving provided some initial text for documentation, we can then add code-block chunks to start writing some code.\nThe easiest way to do do this is to click the respective option on the upper-right of the Editor screen. Since Positron can handle multiple programming languages, so the chunk is inserted, we will need to select the language we use to be used within the code chunk (R in this case).\n\n\n\nYou will notice, that the inserted code block starts off with three backticks (`) and then “{r}”. The end of the code block is denoted by an additional three backticks.\nWe can also add new code blocks by simply typing these elements into the location we want to place a code chunk (as long as we are careful to add 3 backticks also at the end).\n\n\n\n\n\n\n\n\nRunning Code\nNow that we have two code-chunks written, we can write lines of code within them. For this example, I will use two beginner friendly functions, print(“Hello”), which will print the contents contained between the ” ” to the console, and getwd() which will return the location of the folder you are working within (ie. the working directory).\nTo run/execute these lines of code, we have a couple options. We can click on the Run Cell option that appears on the upper-left side of the code chunk. Additionally, it has a companion option that will run all code chunks above it.\n\n\n\nWhen a code block is successfully run, you will see within the console (lower bottom of the screen) the line of code be run, with any returned outputs appear directly after.\n\n\n\nAn alternative to clicking the Run Cell button is to click on the line of code you are interested in running, then press (Ctrl + Enter)/(Command + Enter). This will execute the line of code that you have clicked on. This can be useful in scenarios where you want to run a specific line, and not the entire code-chunk.\n\n\n\nUsing this approach, you can see the location (ie. file path) of the current working directory was returned to the Console.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#local-version-control", + "href": "course/00_Git/index.html#local-version-control", + "title": "Version Control with Git", + "section": "Local Version Control", + "text": "Local Version Control\nHaving introduced the main elements of a Quarto Markdown file, let’s turn our attention to the tab within the editor showing our newly created .qmd file.\nWe can see there is a solid circle next to the file name, and it is appearing as green. The circle denotes unsaved changes, which we can correct by clicking on the Save Button to save the changes to our file.\n\n\n\n\nUntracked\nIf we turn our attention to the left primary sidebar, we can see that within our GitPractie folder there are three files, our Example.qmd, and the default README.md and .gitignore files. These all show up in green text with U’s to the right of the file names.\nThis denotes that the version control tracking software Git is currently considering them as “Untracked” files. While saving the document via the Save button means we will still have our changes when we reopen Positron, we won’t have any history of changes that we can use to revert back to the way all the files appeared at this exact point in time should something go wrong.\nWe will next go the address bar on the very far left, and select the Git tab.\n\n\n\nOn the Git tab, we can see that each of the three files are shown underneath a “Changes” drop-down. This contains the files that have undergone changes since the last commit. In our case, since we haven’t updated the save-state yet, this last commit would be the initial creation of the project folder.\n\n\n\nTo have version control track these individual files going forward, we can do so in two separate ways. We can add them individually by clicking the + symbol next to the individual names.\n\n\n\n\n\nStaged\nThis will result in the files being moved to the “Staged” dropdown. This denotes files being tracked with the intention of being recorded as the next save-state or waypoint (ie. a commit).\n\n\n\n\n\nCommit\nTo create a new commit (save-state or waypoint), once we have the files we want to track staged, we will write a commit message, and then press commit.\nA commit message is a brief description of the changes that have occurred to the files between this commit and the previous one. Make this short description informative enough that if you need to revert back in the future, you can quickly identify the commit you need to fall back to (more about this later).\n\n\n\nIf this your first time using version control, you will likely encounter the following pop-up asking that you provide a user.name and user.email. This is used to designate the author of the changes.If you get this popup, go ahead and select “Open Git Log”\n\n\n\n\n\nUserName and UserEmail\nThe Output tab at the bottom of the screen will open, showing the messages that led to the popup.\nThe important part to note is the commands that will be needed to provide your user name and email to the computer for authoring the commit. Typically, your email will be the same one you used for your GitHub account.\n\n\n\nFrom the displayed message, go ahead and copy\n“git config –global user.email”you@example.com””\nThen click on the adjacent terminal tab. You will paste the command in, but do not hit enter just yet.\nWindows users, please note, depending on your settings, if trying to paste from the keyboard into the terminal, you may need to press “Ctrl + Shift + V” instead of the usual “Ctrl + V”.\n\n\n\nWith the command now pasted (or typed), use your keyboard arrows to navigate to the email portion, and replace the generic email with your email address used for your GitHub account.\nMake sure that the quotation marks (“) around the email address remain present, as they help the computer identify where your email address starts and ends. Once satisfied that your email address is correct, press enter.\n\n\n\nNext up, repeat the process, this time copying over the command needed to set your user name to the terminal. Repeat the editing process to provide your name between the “” marks. Then press enter.\n\n\n\n\n\n\n\n\nFirst Commit\nNow that your user.name and email address have been provided, Git should be able to provide an author to the commit message. Reattempt to press commit button.\nIf this is successful, you will see your initial commit appear on the bottom half of the left primary side bar, under the Graph dropdown. Congrats! Your files are now being tracked by version control.\n\n\n\nIf you hover with your mouse arrow just over the commit, you can see the longer commit message and additional details appear.\nIf you click on the commit tab, a new display will open in the editor, displaying the changes that occured in that commit compared to the previous one. In this case, since we added everything since the previous commit, nothing appears on the left side, while the entire documents contents appear highlighted in green on the right.\nGreen highlighting is used to show additions, while red highlighting is used to show deletions.\n\n\n\nHaving completed this initial commit, for this example, let’s imitate a typical workflow and make some additional changes to the file before we make a second commit. Within text portions of the .qmd file, use of # denotes a section header in markdown, so let’s add a header for Introduction and click save.\n\n\n\n\n\nModified\nWithin the left primary sidebar, we can see that the Git tracking has updated. Examples.qmd is visible once again. However, becuase it is now a tracked file, instead of showing up with the “U/Untracked” green highlight, it now appears as a brownish-red with a “M/Modified”.\nLet’s make an additional change to the .qmd file by adding another section (# Setup) and a code block with a commented out line (denoted by the # at the line start), before pressing Save.\n\n\n\nIf we were now to click on the Example.qmd file in the left primary sidebar, it will open the same kind of tracking display we saw previously. This time, we can see changes since our last commit. These appear as the green highlights along the scroll-bar, corresponding to the # Introduction and # Setup headers that we have added in since the last commit.\n\n\n\nFor a larger document, we can scroll down to see the various highlighted regions.\n\n\n\nWe could now repeat the steps showed above, staging the file, writing a commit message, and commiting again by clicking on the designated buttons.\nAn important question is how often should we commit, vs. just hit save? Well… it depends :D Let’s think about this in context of a video game. If you made commits at regular intervals throughout the day (or more frequently when doing something particularly risky), you are more likely to be close enough to a particular commit (waypoint/save-state) that you can quickly revert back to without loosing any progress. Alternatively, if your last commit was last week, you will not have any intermediate versions to fall back to.\n\n\nCommit via Terminal\nHaving demonstrated how to commit changes to Git via the left primary side-bar, for this second commit, let’s do it the alternate way via the terminal (tab on the panel at the bottom of your screen).\n\n\n\nAfter clicking on the terminal tab, click on blinking command line.\nThe command to stage a file is “git add”, followed by the name of the file you want to stage.\nIn this case, you would enter “git add Example.qmd” and press Enter. \n\n\nYou will see after pressing enter a new blank terminal line appear. If you glance at the left-sidebar, you can see that Example.qmd now appears under the Staged Changes dropdown.\n\n\n\nNext up, let’s write the git commit via the terminal. In this case, the command would be “git commit -m” (-m denoting message). The commit text is then surrounded by “” marks.\nFor example: “git commit -m”Added section headers to my QMD file””\nPress enter to save the commit.\n\n\n\nAnd you should see your second commit now appear in the left primary sidebar underneath the graphs dropdown.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_Git/index.html#remote-version-control", + "href": "course/00_Git/index.html#remote-version-control", + "title": "Version Control with Git", + "section": "Remote Version Control", + "text": "Remote Version Control\n\nCopying Project Folder to GitHub\nWhile having local version control in place is helpful when you need to revert back after encountering issues, where Git shines is the ability to pass your changes to your online GitHub repository.\nNot only does this allow you to switch between computers, but should something disastrous happen to your main computer, you still have all your hard work backed up and readily assessible.\nFor this subsection, first, double check that Positron is still connected to your GitHub account by checking the user tab on the bottom-left. If not, repeat the connection setup.\n\n\n\nSince our project was created using the “New Folder from Template” option, it currently only exist locally. What we want to do next is to copy it to our GitHub account, creating a new repository in the process.\nTo do this, we will first need to install the usethis R package. Within your console, you would run the following line of code:\n\ninstall.packages(\"usethis\")\n\nDepending on what R packages you already have installed on your computer, you may get a prompt asking if you want to update/install additional dependencies. Go ahead and type the number corresponding to Update All, and press enter.\nThe package and all it’s dependencies should then install. If an error message appears, read through it, and follow provided instructions. Go to Discussions if need help.\n\n\nOnce the usethis package is installed, we need to activate it within R by calling it with the library command. This makes all the tools (ie. functions) within an R package available for use within Positron.\nIn your console, you would type:\n\nlibrary(usethis)\n\n\n\n\nWith library called, you now have access to the functions (tools) within the usethis R package. One of these is the use_github() function.\nIn Positron, if you hover over a function, it will pull up the associated help file which will provide you information about the arguments the function expects to receive, and what they do.\nFor use_github(), the main thing to remember for now is since this is a personal project being used for testing, we don’t necessarily want to share it with the entire world, so we should set the “private” argument equal to TRUE when creating a new repository.\n\n\n\nTaking this information that we have now gathered, we can now within our Quarto Markdown create a code chunk, write out the line of code calling the function, and providing the Private=TRUE argument within the ().\nWithin a code chunk, adding a # in front of a line of code, will comment it out, resulting in that line of code not being run. Since we have already installed the usethis package, and we don’t want to reinstall it every single time, let’s go ahead and comment out that line. Go ahead and press Enter.\n\n\n\nWe will see a message pop-up in the console. In this case, we had not saved before pressing enter, so there are uncommitted changes within the folder. The pop-up is asking whether you want to save these as well before sending the Folder to GitHub.\nIn this case I will chose to ignore the uncommitted changes by entering 3 (for Definitely) in the console and hitting enter on my keyboard.\n\n\n\nThe usethis R package will then execute the series of git commands that are needed to set up a GitHub repository (ie. the messages being displayed in the console window), and when finished will open a pop-up asking whether you want to see your new repository in your default Web Browser. I will go ahead and select yes in this case.\n\n\n\nAfter the browser opens, you can see that the elements I had staged and committed within Positron are now present within the GitHub repository. Since I had only staged Example.qmd, it is the only file that was backed up. We can also see the commit history online by clicking on the commit clock.\n\n\n\nAs we would expect, we only see our two commit messages. One important thing to note is the commit hash numbers, that denote a particular commit. If we decided to revert/fall back to a prior commit in the future, this would be the number we would need to provide to Git to return to that previous commit/save-state\n\n\n\nSimilarly, on GitHub, we have an option to Browse a Repository at a particular point in time. This will be quite useful later in the future when troubleshooting what major changes occurred between versions of an R package.\n\n\n\n\n\nCode Chunk Arguments\nHaving successfully connected our local Project Folder to a remote GitHub repository, let’s return to Positron.\nBefore continuing, if we left the code chunk that created the GitHub repository as is, every time we ran all code chunks in the document, it would try to recreate the GitHub repository. We don’t want this to happen, as the setup was a one-time operation.\nWhile we could add # in front of every line of code (or delete the code chunk entirely) it is often useful to have these set-up code chunks around to remind us what arguments we need to provide next time we need to a similar setup and are mind blanking on what to do.\nFortunately, Quarto allows us to set conditions on whether a chunk is run (ie. evaluated). We will discuss the conditiona arguments in more depth in the next section, but for now, we can modify the code chunk as follows.\nOn the next line after the {r}, we will add a hashtag (#), then a pipe (|), followed by a space. This is the setup for a code-chunk specific argument. We will then add “eval: FALSE”, which signals that the particular code-chunk should not be evaluated (ie, should not be run).\n\n\n\n\n\nREADME\nNow that we have connected our local Project Folder to GitHub, and have gotten a basic introduction to the “git add”, “git commit” arguments, let’s turn our focus to the other files currently listed as untracked by Git within our folder, the README.md and the .gitignore files.\nWhen setting up our GitHub account, we encounted an example of a README.md file. This file often provides a brief description of the project, and an outline of what the other files in the folder are for. As you may have gathered, even software developers are forgetful/under-caffenaited, and having notes to catch back up to speed is important.\n\n\n\n\n\n.gitignore\nWe additionally have a .gitignore file. Within a project, there are often some files that we will never want version control to track. These could be files that are too large for GitHub (ex. really large .fcs files), or files containing sensitive information (passwords, history, credentials, etc.).\nWhen the names of these file (or the file type shothand) are added to the .gitignore file, they are ignored by version control, and no longer appear on the primary left side bar.\n\n\n\nLet’s proceed and stage both the README.md and .gitignore file, so that changes to these files will be tracked. We can of course select both from the primary left side bar and write a short commit message.\n\n\n\n\n\n\nOr alternatively, if we want to stage all uncommitted files present in a single step, we could in the terminal use the “git add .”\nWe can then write our git commit using “git commit -m”.\nBoth approaches work, and you may switch between them based on preferrence.\n\n\n\nYou will notice after having committed, that if you look at the Graph dropdown on the bottom half of the primary left side-bar that something has changed.\nThere are now separate icons denoted as main and origin/main. These correspond to the last commit present locally (main), and the last commit on remote (ie. GitHub, origin/main).\nLocal is ahead since you just made the commit with the changes inactivating the code-chunk, and you have not passed these changes up to GitHub yet.\n\n\n\n\n\nPull\nBefore sending (ie. pushing up) our updated commit to GitHub, especially if you are working on a project from multiple computers (or as part of a team) to bring in (ie. pull down) any changes that might be on GitHub that are not present locally.\nThis ensures that everything is up to date, and you don’t end up with mismatched commits that are incompatible with each other and trigger an error message.\nTo pull in changes from GitHub, at the top of the primary left side-bar, you can select the … button to open a drop-down menu of Git options. You would then select “Pull”.\nAlternatively, you could do the same thing via the terminal by running the “git pull” command.\n\n\n\n\n\nPush\nIn our case, there was no new material present on our GitHub repository that were not already present locally, so all that is returned is the “Already up to date” message.\nWe are now good to proceed to push (ie. send) the updated commit up to our GitHub repository.\nWe can do this by either pressing the Sync changes button, or via the terminal entering the “git push” command.\n\n\n\nAnd now, if you glance down at left side-bar’s graph section, you will see that both the main and origin/main icons are now present for the most recent commit.\n\n\n\nIf we switch to our Web browser, we can see that this is also now the case for our GitHub repository that now also has the most recent changes.\n\n\n\n\n\nReverting to Prior Commit\nFor most daily-workflows, you will only need the git commands that we have introduced above (git add, commit, pull, push). The next two areas (reverting to a prior commit, and branches) are more specialized, and will be covered in greater depth later in the course. We are briefly covering them here. If you are at the point where your last remaining neuron has disconnected, and you feel you need to take a break from version control, feel free to skip to the next section and we will revisit these topics later in the course.\n\n–\nIn most cases, if your code stops working, you can identify the issue and fix it in the existing version, never needing to resort to reverting to a previous commit (save-state). The times you would need to revert would be if you deleted important files, or the new files are hopeless mess that is not worth trying to sort through. In those cases, reverting back might be better approach.\nTo imitate a falling back scenario, lets create and additional file, stage and commit it to end up a commit ahead of where we are currently at within the Project Folder.\n\n\n\nNow being one (or several) commits ahead, if we wanted to revert back, we would first need to identify the commit we want to revert back to and copy the commit hash number.\n\n\n\nThen, opening the terminal, we can enter “git reset” and paste the hash afterwards. We can then press enter.\n\n\n\nYou will notice our additional commit has been removed, although the newer files we were working on subsequent last commit are still present.\n\n\n\nIf however, we had wanted to return to the exact same state as the previous commit (removing all subsequent created files), we could do so by adding in the –hard argument. Before starting, save any newer files you want to keep in a completely different folder, because they will be permanently removed.\nThen, enter “git reset –hard thecommithashnumber” into the terminal, which would result in a “hard” return to the previous commits save-state. You may need to close and reopen Positron to see the changes reflected.\n\n\nBranches\nBranches are an useful Git feature that we will start using extensively later in the course. Branching allows you to create a parallel/carbon-copy of your existing repository, which you can then edit without affecting the main branch. This is particularly useful for projects that may get messy or drawn out. By isolating these edits to a parallel branch, if they don’t work, your main branch remains safe. Alternatively, if you like the changes that occurred in the branch, you can pull these changes from the branch back to main, bringing the timelines back together.\n\n\nWithin the terminal, entering “git branch” will show the existing branches. In this case, only main is present since we haven’t yet created a new branch.\n\n\n\nWe can create a new branch in the terminal by entering “git branch” followed by the name of our desired branch. In this case, we are creating a branch called Week1\n\n\n\nNow, when we check “git branch” again in the terminal, which returns the two branches, Week1 and main. The * is located next to main, indicating that we are currently within the main branch.\n\n\n\nBesides the terminal, we can also create a new branch via Positron. To do so, we first click on the Git tab in the Actions Bar.\nOnce the left-side bar displays the version control display, we can click on the … button (to the right of changes)to gain access to the Git options drop-down.\nFrom here, we click on Branch, and then select Create Branch.\n\n\n\nUsing Git branch, we saw that we were still within the main branch. In the terminal, we can switch over to the Week1 branch by using the “git checkout” command, followed by the branch we wish to switch to.\n\n\n\nThis results in us switching over to the Week1 branch.\n\n\n\nHaving switched (ie. checkout) to the Week 1 branch, let’s create the file BranchTest.qmd, which will exist within this branch, but not yet in the main branch.\n\n\n\nHaving created the file, let’s stage and then commit it. This will put the Week1 branch ahead of the main branch by a single commit.\n\n\n\nWith our changes staged and committed, if we look at the left side-bar’s graph section, our Week1 branch is now ahead of the origin/main branch by one commit.\n\n\n\nIf we were to check on GitHub, we can see that no new files are present on the main branch, but can see the notification listing recent changes to Week1 branch.\n\n\n\nUsing the drop-down, we can switch from displaying the main branch to the Week1 branch, where we can see the new file.\n\n\n\nIf we click the green compare and pull request button, we end up on this screen. This compares how the two branches are different from each other.\n\n\n\nWe will delve into branches again at a later point. For now, remember that by creating and prunning parallel branches, you can develop knowing that even if something goes wrong, your main branch remains safe.", + "crumbs": [ + "About", + "Getting Started", + "00 - Git" + ] + }, + { + "objectID": "course/00_GitHub/index.html", + "href": "course/00_GitHub/index.html", + "title": "Using GitHub", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_GitHub/index.html#creating-an-account", + "href": "course/00_GitHub/index.html#creating-an-account", + "title": "Using GitHub", + "section": "Creating an Account", + "text": "Creating an Account\nWe will first navigate to the GitHub homepage. If you haven’t previously created an account, click on the button to sign up for an account.\n\n\n\nOn the sign-up page, you will fill in various details needed to create an account. Please remember that GitHub usernames are visible to others. Additionally, if you end up sharing code with others as part of a manuscript, or use GitHub to create a personal portfolio website in the future, your username will appear as part of the URL.\nFor example, in my case, my user name is DavidRach, so my GitHub profile ends up as: https://github.com/DavidRach. For our course, the core’s GitHub user name is UMGCCCFCSR, so the github profile ends up as https://github.com/UMGCCCFCSR, while the course website ends up as https://umgcccfcsr.github.io/CytometryInR/\n\n\n\nOnce you have entered your new account information, you will need your account creation by entering the code sent to the email address that you provided.\n\n\n\nOnce account creation has been confirmed, please proceed to login to GitHub for the first time.", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_GitHub/index.html#github-profile", + "href": "course/00_GitHub/index.html#github-profile", + "title": "Using GitHub", + "section": "GitHub Profile", + "text": "GitHub Profile\nUpon creating a brand new account, your GitHub homepage will initially look rather empty, and can be intimidating to navigate for the first time.\nFor now, on the upper right, go ahead and click on the default profile picture icon…\n\n\n\nAnd then select Profile…\n\n\n\nYou are now on your public GitHub profile page. For a newly created account, it will look something like this:\n\n\n\nFor a more established account, this page will look a little different, and can be customized to highlight various projects that you are working on.\nFor this course, we will have you set up a basic GitHub profile page for now, although you are free to customize and personalize it as much as you may want to in the future!\nTo start, first select the edit profile button on the left below the default profile icon.\n\n\n\nYou can then proceed to fill in any details that you feel are relevant and are comfortable sharing.\n\n\n\nWith the quick access details filled in, it is now time to navigate to the Settings tab. You will return to the previous menu dropdown on the upper right, and instead of selecting Profile, click on the Settings option.\n\n\n\nYou should now end up within your Public Profile Settings page.\nFeel free to edit the default profile picture, and any other fields that you feel are relevant. Once done, continue to scroll down the page past ORCID ID.\n\n\n\nWhen you reach Contributions and Activity, go ahead and select the option to include private repositories in the activity summary graphic. Then scroll down and click save. You will now be returned to your GitHub profile page.\n\n\n\nAt the top of the profile, you will see a “Your contributions” calendar graph. For a new account, it will look like this:\n\n\n\nIf you are just starting out, this chart will be mostly empty, but will fill in as you work on projects, see here as an example.\nEvery time you save your code (ie. make a commit), the activity will be reflected in this chart. By clicking the option in settings, code made within a private repository will remain private, but will count toward your contribution chart. As you progress through the course, this will provide a nice visual reminder of the progress you have made, and the obstacles that you have overcome.", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_GitHub/index.html#github-readme", + "href": "course/00_GitHub/index.html#github-readme", + "title": "Using GitHub", + "section": "GitHub ReadMe", + "text": "GitHub ReadMe\nWith this done, we modify your GitHub profile by adding one customized element, a ReadMe page. This will be used for a couple projects during the course, and can be personalized further in the future.\nTo create a ReadMe page for your profile, we will navigate to the upper right of the screen and click on the + sign.\n\n\n\nWe will then select the Create New Repository option.\n\n\n\nYou will next create a repository (folder), naming it exactly the same as your username. This will be recognized by GitHub as being a special type of repository corresponding to the ReadMe section of your profile.\nFor options, leave the visibility as Public, and Add README set to On. And proceed to Create Repository.\n\n\n\nHaving created the repository (folder), you will see it has been populated by a few default files. For now, you will be editing the README.md file. On a new repository, the easiest way to access it is by clicking the green option on the right side of your screen.\n\n\n\nWith the README.md file now opened, you will be able to see generic filler text that is suggested by GitHub.\nFor this course, I will ask you to add a couple elements for now. You are free to return and further personalize it later if you wish to do so.\n\n\n\nThe type of file that we are working with is a Markdown file, which can allow for a bunch of customizations which we will cover throughout the course.\nFor now, please add and customize the following questions:\nCytometry In R\nLocation: Baltimore, Maryland, USA\nMy Favorite Fluorophore/Metal-Isotope: Spark Blue 550\nPrevious Coding Experience: Repeatedly Calling IT\nWhat I Hope to Get From This Course: A faster way to match FlowSOM clusters to their likely cell type.\n\n\n\nNext, to save you will select the green “Commit changes” button. We will cover the meaning of “Commit” more in-depth during the Git section.\nFor now, write a short summary of the change you made to the file in the “Commit message”, and any additional details within the “Extended description” field. When ready, click the green “Commit changes” button.\n\n\n\nYou will now be able to see the updated README.md file, as you can see in our example below. To make additional edits, you would select the pencil icon on the right-center side of the screen.\n\n\n\nNext, navigate back to your profile page (by clicking on either your username or the Overview option on the tabs).\nYou will see that the README file contents are now displayed on the upper portion of your GitHub profile. Feel free to circle back and customize this further to your liking.\nIn this last example, we created your first repository (folder). Since this is public, it is now shown below the README section of the profile under your repositories. You can also see that your commits made in the process of making the changes are now shown both in the Contributions graph, and under the Contributor Activity summary at the bottom of the page.", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_GitHub/index.html#github-repository", + "href": "course/00_GitHub/index.html#github-repository", + "title": "Using GitHub", + "section": "GitHub Repository", + "text": "GitHub Repository\nHaving set up your GitHub profile, it now is time to make sure you have access to our course materials. We will have you navigate to our course’s GitHub profile\nOn the profile page, you will be able to see our version of the README, our repositories, and the Contributions graph and Contribution activity sections.\nPlease click on the CytometryInR to navigate to its repository (folder)\n\n\n\nOn this page, you will see several elements that you will be circling back to throughout the course.\nFor our course, we will be extentsively ussing the Discussions page as a community forum. If you have any questions, are looking for feedback, or want to show off something that you worked on, this is the place for it. This will also help make sure\n\n\n\nThe Issues tab is where you will need to go to open an Issue if you encounter a bug (or major documentation typo), so that I can cicle back and correct them when I have the chance.\n\n\n\nTo submit the optional take-home problems, you would turn in these problems by going to the Pull Request tab, and initiating a pull request between your forked version of the project and our “homework” branch (more details on this later).\n\n\n\nOptionally, you can “Star” a repository. This is basically the GitHub equivalent of liking a project. In our case, we will often star a repository since it will be saved under the Stars tab of our profile, which makes finding it again significantly easier a few weeks later after forgetting the repository name.\n\n\n\nTo see projects that you have starred, you can select the Stars option from the same dropdown you used to get to Settings.\n\n\n\nOr from your GitHub profile, you can see these under Stars tab.", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_GitHub/index.html#forking-cytometryinr", + "href": "course/00_GitHub/index.html#forking-cytometryinr", + "title": "Using GitHub", + "section": "Forking CytometryInR", + "text": "Forking CytometryInR\nBefore we go further, we will need you to make your own copy of the course repository (ie. fork it). This will allow you to quickly retrieve all the new materials and code corrections by simply rereshing (ie. syncing) your forked version with our upstream parent branch once a week.\n\n\nTo fork the course repository, you will select the “Fork repository” option on the upper-center portion of your screen.\n\n\n\nBy “Fork-ing” a repository, you are basically copying the contents from that repository to a newly created repository on your own GitHub. Forked projects are still linked to the original (parent) fork, and can retrieve any updates via syncing, as well as return changes via a pull request.\nFor this course, when you create the fork, keep the existing repository name (“CytometryInR”). Importantly, select the copy main branch option. This will ensure you only get the code and data needed for the course copied over, and don’t end up with your entire hard-drive filled will website elements, or other people’s solutions to the take-home problems.\n\n\n\nOnce you have created the fork, you will see your copy of the forked repository under your own username. Seeing as you have just now forked the project, you will see the notification that you are up to date with the existing version of the CytometryInR course repository.\nAs we go through the course, and new material is released each week on Sunday at 2200 EST (Monday 0300 GMT+0), you will see this changed to behind the main branch by a number of commits, and have the option to sync in the changes to your fork to gain access to that week’s material.\n\n\n\nIf you remember, previously under your GitHub profile, the Repositories tab only contained the repository corresponding to your ReadMe section.\n\n\n\nYou should however now be able to see your fork of the CytometryInR repository. As you add project specific repositories throughout the course, they will also appear here.", + "crumbs": [ + "About", + "Getting Started", + "00 - GitHub" + ] + }, + { + "objectID": "course/00_Homeworks/index.html", + "href": "course/00_Homeworks/index.html", + "title": "Getting Help", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - Getting Help" + ] + }, + { + "objectID": "course/00_Homeworks/index.html#discussions-forum", + "href": "course/00_Homeworks/index.html#discussions-forum", "title": "Getting Help", "section": "Discussions Forum", - "text": "Discussions Forum\n\n\n\n\n\n\n\n\n.\n\n\nOn the course’s GitHub repository, we have opened up a Discussions page that we plan to use as a community forum. We hope that it will serve multiple functions, from providing a better sense of community for the online participants, to facilitating asking and receiving help on something that is not clear, provide feedback about something that it not working out, as well as a place to celebrate and show off your coding wins." + "text": "Discussions Forum\nOn the course’s GitHub repository, we have opened up a Discussions page that we plan to use as a community forum. We hope that it will serve multiple functions, from providing a better sense of community for the online participants, to facilitating asking and receiving help on something that is not clear, provide feedback about something that it not working out, as well as a place to celebrate and show off your coding wins.\n\nTo keep the Discussions forum semi-organized, we have set up several categories, please select the appropiate category when opening a new discussion!\n\n\n\nCode of Conduct\n\nWe ask that all course participants read and adhere to the spirit of our Code of Conduct. We are all human, at different points in our learning journeys, so what may be obvious to you at your point of your learning journey may have necessarily be obvious to someone just getting started. This course is our giving back to those in the community, but is on a voluntary basis in addition to our regular workload. While we try to reply quickly, sometimes our cell sorters fully melt down sending everything into chaos. We will reply when we can.\n\n\n\n\nAnnouncements\n\nWhen we send out an email to all participants, we will also repost it as an announcement. This ensures that even if you are not on our mailing list, you will still be able to have access to important information and course updates.\n\n\n\n\n\n\n\nGeneral\n\nThis section category can be used for any discussions that you think are worth having, that don’t fall under any of the other category. Good examples are continuing a discussion that was held during one of the livestreams; wanting to discuss and dive further into a given week’s topic; or bringing in additional resources that you found useful to understandingn something that didn’t click initially. This space is for the community to shape as they see best.\n\n\n\n\n\n\n\nIdeas\n\nHave an idea for a new topic or a way to improve the course? We would love to hear them. Provide as many details, and ideally, an example, and if it is doable, we will try to implement them.\n\n\n\n\n\n\n\nIntroductions\n\nOnline courses can be odd in terms of replicating in-person dynamics. Fortunately, we have gathered the largest cohort of “cytometrist with no-to-little flow experience trying to learn R at the same time” that the world has ever seen, so best to take advantage of this while we can. Treat this section as if we had just met at a conference, tell us about yourself, what brings you here, and what you want to hopefully be able to do after the course ends.", + "crumbs": [ + "About", + "Getting Started", + "00 - Getting Help" + ] }, { - "objectID": "course/00_Homeworks/slides.html#polls", - "href": "course/00_Homeworks/slides.html#polls", + "objectID": "course/00_Homeworks/index.html#polls", + "href": "course/00_Homeworks/index.html#polls", "title": "Getting Help", "section": "Polls", - "text": "Polls\n\n\n\n\n\n\n\n\n\n.\n\n\nOccasionally, we will need to gather community feedback on what is working and what is not working. We will sporadically post Polls for this purpose." + "text": "Polls\n\nOccasionally, we will need to gather community feedback on what is working and what is not working. We will sporadically post Polls for this purpose.\n\n\n\n\n\n\nQ&A\n\nThe Questions and Answers (Q&A) section is where you go if something is not clear, not working, and you are trying to troubleshoot your way through it. First thing before posting, search! to see if someone has already asked the question. If you don’t find anything, go ahead and open a new discussion.\nSince we are not at your computer, and don’t have your dataset, when troubleshooting it is best to include a minimal reproducible example of the issuen you are encountering, slimming down the number of files needed to be transferred, and generalizing down the code so that other course participants and instructors can follow along. If this is not doable, or if the problem requires added context (and larger files), create a new repository on your GitHub, make it public, and share the links to it in your post. The goal would be to download the folder and be able to replicate the issue that you are encountering.\n\n\n\n\n\n\n\n\n\n\nShow and Tell\n\nWhere Q&A section is for getting help on code that is frustratingly not working, Show and Tell is where to go and celebrate when you finally get things to work. Share your wins, show us the extra pretty graphs, bizarre autofluorescence signatures, or odd outputs that just make you laugh.", + "crumbs": [ + "About", + "Getting Started", + "00 - Getting Help" + ] }, { - "objectID": "course/00_Homeworks/slides.html#issues", - "href": "course/00_Homeworks/slides.html#issues", + "objectID": "course/00_Homeworks/index.html#issues", + "href": "course/00_Homeworks/index.html#issues", "title": "Getting Help", "section": "Issues", - "text": "Issues" + "text": "Issues\nMost of the time, if you are having trouble getting you code to run, you should first stop after some initial troubleshooting should be to open a new Discussion under the Q&A category. Here you will be able to get both community and instructor help and suggestions to hopefully resolve whatever is going on.\n\nThe Issues page is primarily meant for course-specific problems that require the course instructor intervention to fix. For example, we release a new week of material, and while it runs fine for both Windows and Linux, the code fails to run for all MacOS users. While you may be able to find workarounds on your own, it’s ultimately our responsibility to help provide a solution so that everyone can move forward. This is the situation where opening an Issue is appropiate.\n\n\n\nSimilarly, if our code contains a wrong argument, is returning a deprecation warning, etc. open an issue to let us know. While we may not be able to fix something that is not directly related to our code, we can redirect it to the package maintainers so that they can fix the issue.\nAnd likewise, if you find multiple typos in the documentation, you can open an issue and propose carrying out a pull-request to fix them.", + "crumbs": [ + "About", + "Getting Started", + "00 - Getting Help" + ] }, { - "objectID": "course/00_Homeworks/slides.html#submitting-take-home-problems", - "href": "course/00_Homeworks/slides.html#submitting-take-home-problems", + "objectID": "course/00_Homeworks/index.html#submitting-take-home-problems", + "href": "course/00_Homeworks/index.html#submitting-take-home-problems", "title": "Getting Help", "section": "Submitting Take-Home Problems", - "text": "Submitting Take-Home Problems\n\n\n\n\n\n\n\n\n.\n\n\nEach week, during the course, we introduce and cover the main concepts for the particular concept. Our goal is to provide you with the necessary code and enough code to be able to get the jist. However, to become comfortable and be able to apply what you have learned, you will need to explore beyond our examples, try it with your own datasets, encounter things that don’t work, and troubleshoot your way through them. It’s this cycle of venturing into the unknown that develops strong coding skills that are needed to overcome any barrier you encounter. The goal of the take-home questions is to provide some less curated problems that will take a little longer to answer to help get you started on your own exploration of the topic." + "text": "Submitting Take-Home Problems\nEach week, during the course, we introduce and cover the main concepts for the particular concept. Our goal is to provide you with the necessary code and enough code to be able to get the jist. However, to become comfortable and be able to apply what you have learned, you will need to explore beyond our examples, try it with your own datasets, encounter things that don’t work, and troubleshoot your way through them. It’s this cycle of venturing into the unknown that develops strong coding skills that are needed to overcome any barrier you encounter. The goal of the take-home questions is to provide some less curated problems that will take a little longer to answer to help get you started on your own exploration of the topic.\nAs previously mentioned, these take-home problems are completely optional. If you are in the middle of solving them and want to seek feedback from then community and course instructors, open a Discussion under the general category is the way to go.\nHowever, if you have completed them, and want course instructor feedback, you can submit them to us in the form of a pull-request to the CytometryInR repo’s homework branch. We will take a look, offer constructive suggestions, and when ready merge the solution. This will also result in GitHub listing you as a contributor to the course.\nWe will outline the basic steps of how to set up and open a pull-request, to help simplify the process.\n\nSync your Fork\nFirst off, make sure to Sync your fork of the Cytometry in R project. That makes sure that all the commits present are up-to-date and simplifies the process of having the pull-request being merged.\n\n\n\n\n\n\n\n\n\n\n\nPull to Local\nHaving Synced your branch on GitHub, return to your computer, open the CytometryInR repository and pull in the changes locally.\n\n\n\n\nCreate own Folder under Homeworks\nUnder the course folder, you will find folders for each week. Within these folders find the homework folder. This will appear empty except for a README file with ionstructions. It is within this folder you will need to create your own folder.\nTo ensure there are no conflicts on the pull-request merge, please use your GitHub username as the folder name.\n\n\n\nOnce you have your folder inside homework, go ahead and copy anything you are turning in from their respective working project folders. Remember, the goal is minimal reproducible example is the goal. Rendered Quarto Documents are preferred, but we will also accept scripts and small data files and images. a README.MD file with anything you want me to know,\n\n\n\n\n\n\n\n\nSign off Commit\nNow that everything is present, Sign Off and Commit the change.\n\n\n\n\n\nPush Branch to GitHub.\nProceed to push the branch to GitHub.\n\n\n\n\n\nRe-sync if necessary\nIf additional changes have occured to the parent CytometryInR repository, go ahead and update your branch. As long as your edits occurred within your folder inside homework folders, they should still be able to merge.\n\n\n\n\n\n\n\n\nOpen a pull-request\nTo start a pull request, click to see how your commit is ahead by\n\n\n\nNext, switch from the parent CytometryInR main branch (used for the website and course) to the homework branch for that respective week (used for the take-home problems).\n\n\n\nOnce this is done, select Pull request\n\n\n\nMake sure to triple check it’s bound for the homeworks branch. If you see that it is not capable of merging, verify that your commit only contains files within your respective homework username folder. Fill in the required fields of the pull request.\n\n\n\nAnd when ready, create the pull request.\n\n\n\n\nWait for Feedback\nOn our end, once you have created a pull request, we will review your work, offer constructive suggestions, etc. If I ask for revisions, all you would need to do is update your files, commit again on your side of the local forked repository.\n\n\n\n\n\nFinal Review and Merge\nIf all is good, we will merge the pull request and your solution to the take-home problems will now be available on the homework branch.\n\n\n\n\n\nAfter course\nAfter the course completes, we will merge homework branch with the main branch, making the community solutions to the take-home problems additional coding examples that can be used by others following along after the course concludes.", + "crumbs": [ + "About", + "Getting Started", + "00 - Getting Help" + ] }, { - "objectID": "course/00_Positron/slides.html#console", - "href": "course/00_Positron/slides.html#console", + "objectID": "course/00_Positron/index.html", + "href": "course/00_Positron/index.html", + "title": "Using Positron", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] + }, + { + "objectID": "course/00_Positron/index.html#console", + "href": "course/00_Positron/index.html#console", "title": "Using Positron", "section": "Console", - "text": "Console\n\n\n\n\n\n\n\n\n.\n\n\nAt the bottom of the sceen, you will first see the Console Tab. This is the tab where your lines of code when executed (run) will appear, as well as any messages, warnings or errors that get returned. On the right side of the console, you can find several buttons, among them restart R and delete session (for when you need a fresh start), and clear console (which keeps all previously run outputs and objects, but clears away the displayed text within the console)." + "text": "Console\nAt the bottom of the sceen, you will first see the Console Tab. This is the tab where your lines of code when executed (run) will appear, as well as any messages, warnings or errors that get returned. On the right side of the console, you can find several buttons, among them restart R and delete session (for when you need a fresh start), and clear console (which keeps all previously run outputs and objects, but clears away the displayed text within the console).", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#terminal", - "href": "course/00_Positron/slides.html#terminal", + "objectID": "course/00_Positron/index.html#terminal", + "href": "course/00_Positron/index.html#terminal", "title": "Using Positron", "section": "Terminal", - "text": "Terminal\n\n\n\n\n\n\n\n\n.\n\n\nRight next to the Console tab is your Terminal tab. While the console tab is primarily used to run R code within Positron, the terminal is the interface where code containing system commands directed at at your computer is entered. We will use this less frequently, primarily in two context: 1) rendering Quarto documents, and 2) commiting changes to version control. Among the buttons on the right-side of the terminal to make note of are the + button to add a new terminal, and the trash/garbage can button to kill (stop) the terminal." + "text": "Terminal\nRight next to the Console tab is your Terminal tab. While the console tab is primarily used to run R code within Positron, the terminal is the interface where code containing system commands directed at at your computer is entered. We will use this less frequently, primarily in two context: 1) rendering Quarto documents, and 2) commiting changes to version control. Among the buttons on the right-side of the terminal to make note of are the + button to add a new terminal, and the trash/garbage can button to kill (stop) the terminal.\n\n\n\nThe other tabs (Problems, Output, Ports, Debug Console) are used less frequently. I usually will Problems and Debug when something goes wrong with the code, as various warning and error messages will end up being displayed there.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#help", - "href": "course/00_Positron/slides.html#help", + "objectID": "course/00_Positron/index.html#help", + "href": "course/00_Positron/index.html#help", "title": "Using Positron", "section": "Help", - "text": "Help\n\n\n\n\n\n\n\n\n.\n\n\nWhen trying to evaluate how a particular function is working in R, you can hover over it and positron will open up the documentation for that particular function if available, alternatively, you can enter ?theParticularFunctionsName in the console and hit enter to similarly view what is occuring." + "text": "Help\nWhen trying to evaluate how a particular function is working in R, you can hover over it and positron will open up the documentation for that particular function if available, alternatively, you can enter ?theParticularFunctionsName in the console and hit enter to similarly view what is occuring.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#variables", - "href": "course/00_Positron/slides.html#variables", + "objectID": "course/00_Positron/index.html#variables", + "href": "course/00_Positron/index.html#variables", "title": "Using Positron", "section": "Variables", - "text": "Variables\n\n\n\n\n\n\n\n\n.\n\n\nOn the upper-portion of the Secondary Side Bar, we can find the Session window, containing the Variables tab. As you run (execute) lines of code, and different variables, objects and functions are created, these become visible under the variables tab on the upper right." + "text": "Variables\nOn the upper-portion of the Secondary Side Bar, we can find the Session window, containing the Variables tab. As you run (execute) lines of code, and different variables, objects and functions are created, these become visible under the variables tab on the upper right.\n\n\n\nFor some types of objects (generally data.frames and other matrix-like objects), you can click on their listing under variables to expand to see additional details about the object (column names, etc.) as well as view a larger version which will appear within the Editor window.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#plots", - "href": "course/00_Positron/slides.html#plots", + "objectID": "course/00_Positron/index.html#plots", + "href": "course/00_Positron/index.html#plots", "title": "Using Positron", "section": "Plots", - "text": "Plots\n\n\n\n\n\n\n\n\n.\n\n\nSimilarly, any generated Plots or Documents will appear within the Secondary Side Bar, either under Plots (bottom) or Viewer (top) tabs." + "text": "Plots\nSimilarly, any generated Plots or Documents will appear within the Secondary Side Bar, either under Plots (bottom) or Viewer (top) tabs.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#view", - "href": "course/00_Positron/slides.html#view", + "objectID": "course/00_Positron/index.html#view", + "href": "course/00_Positron/index.html#view", "title": "Using Positron", "section": "View", - "text": "View\n\n\n\n\n\n\n\n\n.\n\n\nOn the upper bar multiple tabs can be found, which we will explore in due time. Most useful to point out is the View tab. If you accidentally close your console, session or plots window, and are trying to get them to reapper, you would need to reselect them from this tab." + "text": "View\nOn the upper bar multiple tabs can be found, which we will explore in due time. Most useful to point out is the View tab. If you accidentally close your console, session or plots window, and are trying to get them to reapper, you would need to reselect them from this tab.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#pages", - "href": "course/00_Positron/slides.html#pages", + "objectID": "course/00_Positron/index.html#pages", + "href": "course/00_Positron/index.html#pages", "title": "Using Positron", "section": "Pages", - "text": "Pages\n\n\n\n\n\n\n\n\n.\n\n\nThe pages tab and the left-side bar show you everything that is currently within your project folder, including all the folders, and files. Once version control with Git is initiated, new files are relected showing up as green text and a dot, while modified tracked files are reflected by light brown text and a dot." + "text": "Pages\nThe pages tab and the left-side bar show you everything that is currently within your project folder, including all the folders, and files. Once version control with Git is initiated, new files are relected showing up as green text and a dot, while modified tracked files are reflected by light brown text and a dot.\n\n\n\nThe dropdown arrows can be used to open and close specific folders to allow for better organization. There is also a scrollbar on the right-side of the side-bar to scroll through the entire folders contents.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#search", - "href": "course/00_Positron/slides.html#search", + "objectID": "course/00_Positron/index.html#search", + "href": "course/00_Positron/index.html#search", "title": "Using Positron", "section": "Search", - "text": "Search\n\n\n\n\n\n\n\n\n.\n\n\nThe search tab on the left side bar is something that I use routinely." + "text": "Search\nThe search tab on the left side bar is something that I use routinely.\n\n\n\nIt can help locate code that you had been working on, but have since forgotten where it is at. Here is an example of finding the files where I had used a function that needed modifying within a local project folder’s files.\n\n\n\nSimilarly, if you need to replace a particular character string with another, the replace with field below can help simplify the task without having to track down and change 20 lines across 5 files.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#extensions", - "href": "course/00_Positron/slides.html#extensions", + "objectID": "course/00_Positron/index.html#extensions", + "href": "course/00_Positron/index.html#extensions", "title": "Using Positron", "section": "Extensions", - "text": "Extensions\n\n\n\n\n\n\n\n\n.\n\n\nOn the far-left side we can find the Activity bar, which contains several tabs. Which tab you have selected will then dictate the contents of your left side-bar.\nOccupying the left side bar are several tabs. One of these is Extensions, which shows “Plugins” (or the VScode equivalent) that extend the functionality of Positron further. The ones you have installed may vary, but the main ones in context of this course are Air (provides color and highlights syntax for R code to make interpretation easier) as well as Quarto (for rendering the various document types)." + "text": "Extensions\nOn the far-left side we can find the Activity bar, which contains several tabs. Which tab you have selected will then dictate the contents of your left side-bar.\nOccupying the left side bar are several tabs. One of these is Extensions, which shows “Plugins” (or the VScode equivalent) that extend the functionality of Positron further. The ones you have installed may vary, but the main ones in context of this course are Air (provides color and highlights syntax for R code to make interpretation easier) as well as Quarto (for rendering the various document types).", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Positron/slides.html#git", - "href": "course/00_Positron/slides.html#git", + "objectID": "course/00_Positron/index.html#git", + "href": "course/00_Positron/index.html#git", "title": "Using Positron", "section": "Git", - "text": "Git\n\n\n\n\n\n\n\n\n.\n\n\nThe Git tab on the left side bar is where once version control is initiated for the project folder, we can see changes that have occurred to the individual files since the last commit. These changes can be added to a new commit by clicking on the + sign. This will be covered more extensively in the next section" + "text": "Git\nThe Git tab on the left side bar is where once version control is initiated for the project folder, we can see changes that have occurred to the individual files since the last commit. These changes can be added to a new commit by clicking on the + sign. This will be covered more extensively in the next section\n\n\n\nSimilarly, if you want to discard a change that has occured, the circular arrow will revert to the last commited version. Selecting and pressing the delete button will similarly work.\n\n\n\nSelecting the … options will highlight all the various git functions, some of which we will cover more extensively in the next section and throughout the course.", + "crumbs": [ + "About", + "Getting Started", + "00 - Positron" + ] }, { - "objectID": "course/00_Quarto/slides.html#renderpreview", - "href": "course/00_Quarto/slides.html#renderpreview", + "objectID": "course/00_Quarto/index.html", + "href": "course/00_Quarto/index.html", + "title": "Introduction to Quarto", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] + }, + { + "objectID": "course/00_Quarto/index.html#renderpreview", + "href": "course/00_Quarto/index.html#renderpreview", "title": "Introduction to Quarto", "section": "Render/Preview", - "text": "Render/Preview\n\n\n\n\n\n\n\n\n.\n\n\nThe preview button, at the upper-left end of the Editor, is used to render/knit a quarto document. This triggers the process by which code-chunks are run, and then the outputs are cobbled together into the file format type designated by the YAML header." + "text": "Render/Preview\nThe preview button, at the upper-left end of the Editor, is used to render/knit a quarto document. This triggers the process by which code-chunks are run, and then the outputs are cobbled together into the file format type designated by the YAML header.\n\n\n\n\nHTML\nIn this case, the YAML header’s format argument is set to html. After clicking preview, we can see the various rendering steps appear in the console below. Since no errors occured, the html document was formed succesfully and appears as a file in the left side-bar. Additional, a preview of the document appears in the View tab of the right side-bar, allowing for quick visual inspection.\n\n\n\nAlternatively, we can render a document via the terminal, by entering “quarto render”, followed by the name of the document.\n\n\n\nThis results similar process as what we saw with the preview button\n\n\n\nWe can also open the .html document via our File Explorer, which will open it within our web browser.\n\n\n\nQuarto documents can be rendered (previewed) in other formats besides html. These include pdf, Word documents (docx), and slides (revealjs). This is set by the format argument within the YAML header.\n\n\nPDF\nBy switching the format argument from html to pdf, we can render the document as a pdf\n\n\n\nWe can see the pdf is now listed in the list of files, with a preview shown on the right side-bar.\n\n\n\n\n\nDocx\nWe can also generate Word documents (.docx) as well.\n\n\n\nIn this case, we can see that a Word document file was created, but nothing appears in the View tab. This is because the format is not yet supported for the View tab. We can however open and view the Word document via our File explorer.\n\n\n\nWhich shows a Word Document style output.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_Quarto/slides.html#yaml", - "href": "course/00_Quarto/slides.html#yaml", + "objectID": "course/00_Quarto/index.html#yaml", + "href": "course/00_Quarto/index.html#yaml", "title": "Introduction to Quarto", "section": "YAML", - "text": "YAML\n\n\n\n\n\n\n\n\n.\n\n\nWe can additionally provide additional custom inputs to the YAML header. A couple examples include providing the document author and date." + "text": "YAML\nWe can additionally provide additional custom inputs to the YAML header. A couple examples include providing the document author and date.\n\n\n\nWhich we can see are updated after we preview/render.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_Quarto/slides.html#table-of-contents", - "href": "course/00_Quarto/slides.html#table-of-contents", + "objectID": "course/00_Quarto/index.html#table-of-contents", + "href": "course/00_Quarto/index.html#table-of-contents", "title": "Introduction to Quarto", "section": "Table of Contents", - "text": "Table of Contents\n\n\n\n\n\n\n\n\n.\n\n\nIn the previous section, we saw that we could provide headings and subheadings to our .qmd file by placing a # at the start of a line in the text portion of the document. A subheading was designated by a ##, with additional hierarchy being designated by appending an additional #." + "text": "Table of Contents\nIn the previous section, we saw that we could provide headings and subheadings to our .qmd file by placing a # at the start of a line in the text portion of the document. A subheading was designated by a ##, with additional hierarchy being designated by appending an additional #.\n\n\n\nWe can use the heading information to generate a table of contents for our document. To do this, we add a toc argument to the yaml header, and set it to TRUE. After rendering, it appears on the upper-right side of the document.\n\n\n\nNotice, that the subheaders do not appear currently within the TOC.\n\n\n\nWe can fix this by setting a toc-expand argument in the YAML to true.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_Quarto/slides.html#code-chunk-arguments", - "href": "course/00_Quarto/slides.html#code-chunk-arguments", + "objectID": "course/00_Quarto/index.html#code-chunk-arguments", + "href": "course/00_Quarto/index.html#code-chunk-arguments", "title": "Introduction to Quarto", "section": "Code Chunk Arguments", - "text": "Code Chunk Arguments\n\n\n\n\n\n\n\n\n.\n\n\nAs we briefly touched on in the last section, code-chunks can be modified by including arguments, which affect whether a particular code chunk gets evaluated. In that example, we included a “#| eval: FALSE” to the install commands since we did not want them to be re-run subsequently. We will take a closer look at the other arguments in this section.\n\n\n\n\n\nEval\n\n\n\n\n\n\n\n\n.\n\n\nThe code-chunk argument, “Eval”, is used to determine when a code-chunk get’s evaluated. When set to true (or by default if no eval argument is included), the code-chunks contents will be run/executed, and the output will appear. We can see this in the html output, as below the code block, we get back the address of my working directory." + "text": "Code Chunk Arguments\nAs we briefly touched on in the last section, code-chunks can be modified by including arguments, which affect whether a particular code chunk gets evaluated. In that example, we included a “#| eval: FALSE” to the install commands since we did not want them to be re-run subsequently. We will take a closer look at the other arguments in this section.\n\nEval\nThe code-chunk argument, “Eval”, is used to determine when a code-chunk get’s evaluated. When set to true (or by default if no eval argument is included), the code-chunks contents will be run/executed, and the output will appear. We can see this in the html output, as below the code block, we get back the address of my working directory.\n\n\n\nWhen we switch the Eval argument to FALSE, and then render the document, we can see that the code block remains, but we do not get any output for the code contained within.\nIn every-day practice, we will “use eval: FALSE” arguments when we want to keep the code for later use, but want to manually run the code contained within ourselves.\n\n\n\n\n\nEcho\nThe code-block argument “echo” dictates whether the code within the code-block is displayed within the document. So in the case when “echo: true”, we get both the code displayed, as well as the output that gets returned by the code.\n\n\n\nBy contrast, when “echo: FALSE”, we do not have the code displayed, but do get the output of that code being run.\nIn daily-practice, “echo: FALSE” gets often used when generating plots that we want to include in the report, without the code that generated them being displayed.\n\n\n\n\n\nInclude\nThe next code-chunk argument is include. Unlike echo, which focuses on whether the code is displayed, but still returns the output, include dictates behavior of both the code-block and it’s output. Unlike eval however, it will still run the code, which allows it to be available for the next code-chunk that might need it. When we set “include: false”, no trace of that code-chunk is present in the document. This is useful when making reports where we do not want to include the code used to generate a particular figure.\n\n\n\nBy contrast, when we set “include: true”, the code block and it’s output is once again included within the rendered document.\n\n\n\n\n\nCode-Fold\nOne of my favorites is “code-fold”. When we set it as “code-fold: show”, it displays the code, but provides a drop-down arrow that can be closed to compress the code.\n\n\n\nIn contrast, if we want to make the code-available for those that are interested, but not directly visible, we can set as “code-fold: true”\n\n\n\n\n\nWarnings\nWithin R, when code is executed, in addition to returning the output, R is capable of returning warnings (when something is not as expected, but not sufficient to elicit an error with a complete stop) or a message (text output that gets displayed, often telling about progress). While these are useful when running code yourself, it can be annoying when generating a report and the 2nd page is a bunch of warning text being displayed.\nFor example, when the R package ggcyto is loaded via the library call, it will automatically load several other packages, which typically results in these messages being outputted:\n\n\n\nWe can therefore set that code-chunk’s warning/message arguments to FALSE, therefore silencing the message outputs that would otherwise clutter up our report.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_Quarto/slides.html#text-styles", - "href": "course/00_Quarto/slides.html#text-styles", + "objectID": "course/00_Quarto/index.html#text-styles", + "href": "course/00_Quarto/index.html#text-styles", "title": "Introduction to Quarto", "section": "Text Styles", - "text": "Text Styles\n\n\n\n\n\n\n\n\n.\n\n\nQuarto primarily uses Markdown for text styling. Consequently, markdown arguments can be used within the text to change how various text appears." - }, - { - "objectID": "course/00_Quarto/slides.html#hyperlinks", - "href": "course/00_Quarto/slides.html#hyperlinks", - "title": "Introduction to Quarto", - "section": "Hyperlinks", - "text": "Hyperlinks\n\n\n\n\n\n\n\n\n.\n\n\nYou can link to a website by surrounding word of interest in [] and placing the url within () adjacent to it." - }, - { - "objectID": "course/00_Quarto/slides.html#images", - "href": "course/00_Quarto/slides.html#images", - "title": "Introduction to Quarto", - "section": "Images", - "text": "Images\n\n\n\n\n\n\n\n\n.\n\n\nYou can place images by adding the following, as long as the file.path to the image is correctly formatted. In my case, this is why I include images folders within my folders to simplify the copy and paste." - }, - { - "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-r", - "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-r", - "title": "Installing Software on Windows", - "section": "Installing R", - "text": "Installing R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." - }, - { - "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-rtools", - "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-rtools", - "title": "Installing Software on Windows", - "section": "Installing RTools", - "text": "Installing RTools\n\n\n\n\n\n\n\n\n.\n\n\nWe will now work on installing Rtools. This software is needed when building R packages from source, which we will need throughout the course for R packages hosted on GitHub.\nTo get started, we will return to the R installation page we visited previously and instead click on the Rtools option." - }, - { - "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-git", - "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-git", - "title": "Installing Software on Windows", - "section": "Installing Git", - "text": "Installing Git\n\n\n\n\n\n\n\n\n.\n\n\nGit is a version control software widely used among software developers and bioinformaticians. We will use it extensively throughout the course, both locally on our computers (to keep track of changes to our files), as well as in combination with GitHub(to maintain online backups of our files).\nWe will first navigate to the website and select the download from Windows option." - }, - { - "objectID": "course/00_WorkstationSetup/WindowsSlides.html#installing-positron", - "href": "course/00_WorkstationSetup/WindowsSlides.html#installing-positron", - "title": "Installing Software on Windows", - "section": "Installing Positron", - "text": "Installing Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." - }, - { - "objectID": "course/00_WorkstationSetup/Linux.html", - "href": "course/00_WorkstationSetup/Linux.html", - "title": "Installing Software on Linux", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nThis is the software installation walkthrough for those whose computers are running Linux. First off, welcome! Based on our pre-course interest form, there was a suprising number of you daily-drivers out there! However, a CytometryInR interest form is unlikely to be representative of the general population, so please stash all Year of the Linux desktop banners until further notice." - }, - { - "objectID": "course/00_WorkstationSetup/Linux.html#debian-based-distros", - "href": "course/00_WorkstationSetup/Linux.html#debian-based-distros", - "title": "Installing Software on Linux", - "section": "Debian-based Distros", - "text": "Debian-based Distros\n\nInstalling R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nOnce this is done, select your Linux Distro (or one that shares your package managers format).\n\n\n\nOn the landing page, you will find a bunch of relevant installation information, which is worthwhile giving a read-through when you have time.\n\n\n\nThe process to successfully install R can be summarized as follows:\nUpdate apt/sources.list to include the CRAN repository (allowing access to R packages)\n\n\n\nSince we are running on Debian stable (Trixie), we would add the following line to sources.list\n\n\n\nSo in practice, open sources.list:\n\n\n\nPaste the line, and “Ctrl + O”; “Enter”; “Ctrl + X” to save the changes.\n\n\n\nNext, we will need to retrieve the keyID used to sign. This can be fetched from Ubuntu via the terminal.\n\n\n\n\n\n\nThen we need to export and write it\n\n\n\nWhich if successful, will display the public key.\n\n\n\nWith the above set up, we can proceed via our apt package manager to install both r-base and r-base-dev (which contains the equivalent of Rtools for Windows, or Xcode Command Line Tools for macOS).\n\n\n\n\n\n\n\n\n\nAnd if all goes well, R should now be installed." - }, - { - "objectID": "course/00_WorkstationSetup/Linux.html#installing-git", - "href": "course/00_WorkstationSetup/Linux.html#installing-git", - "title": "Installing Software on Linux", - "section": "Installing Git", - "text": "Installing Git\n\n# sudo apt install git" - }, - { - "objectID": "course/00_WorkstationSetup/Linux.html#installing-positron", - "href": "course/00_WorkstationSetup/Linux.html#installing-positron", - "title": "Installing Software on Linux", - "section": "Installing Positron", - "text": "Installing Positron\nFinally, you will need to install Positron. It will be the integrated development environment (IDE) we will be using for the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\n\n\n\nWith the license accepted, you will be able to select distribution and architecture.\n\n\n\nOnce the Download completes, proceed to install the .deb package as you would nornally. GUI example via Discover below.\n\n\n\nDepending on your configurations, you may be asked to exert your sudo powers.\n\n\n\nOnce this completes, you should now be able to launch the software for the first time." - }, - { - "objectID": "course/00_WorkstationSetup/LinuxSlides.html#debian-based-distros", - "href": "course/00_WorkstationSetup/LinuxSlides.html#debian-based-distros", - "title": "Installing Software on Linux", - "section": "Debian-based Distros", - "text": "Debian-based Distros\nInstalling R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." + "text": "Text Styles\nQuarto primarily uses Markdown for text styling. Consequently, markdown arguments can be used within the text to change how various text appears.\n\n\n\nFor a regular text, This single asterisk on each side of a word will italicize.\n\n\n\nWhen the number of asterisk is doubled, This word is bolded.\n\n\n\nWhen three asterisk are used, both are applied.\n\n\n\nFor an underscore, the word of interest is surrounded by square brackets “[]”, with “{.underline}” adjacent.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_WorkstationSetup/LinuxSlides.html#installing-git", - "href": "course/00_WorkstationSetup/LinuxSlides.html#installing-git", - "title": "Installing Software on Linux", - "section": "Installing Git", - "text": "Installing Git\n\n# sudo apt install git" + "objectID": "course/00_Quarto/index.html#hyperlinks", + "href": "course/00_Quarto/index.html#hyperlinks", + "title": "Introduction to Quarto", + "section": "Hyperlinks", + "text": "Hyperlinks\nYou can link to a website by surrounding word of interest in [] and placing the url within () adjacent to it.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_WorkstationSetup/LinuxSlides.html#installing-positron", - "href": "course/00_WorkstationSetup/LinuxSlides.html#installing-positron", - "title": "Installing Software on Linux", - "section": "Installing Positron", - "text": "Installing Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will need to install Positron. It will be the integrated development environment (IDE) we will be using for the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." + "objectID": "course/00_Quarto/index.html#images", + "href": "course/00_Quarto/index.html#images", + "title": "Introduction to Quarto", + "section": "Images", + "text": "Images\nYou can place images by adding the following, as long as the file.path to the image is correctly formatted. In my case, this is why I include images folders within my folders to simplify the copy and paste.", + "crumbs": [ + "About", + "Getting Started", + "00 - Quarto" + ] }, { - "objectID": "course/00_WorkstationSetup/MacOSSlides.html#installing-r", - "href": "course/00_WorkstationSetup/MacOSSlides.html#installing-r", + "objectID": "course/00_WorkstationSetup/MacOS.html", + "href": "course/00_WorkstationSetup/MacOS.html", + "title": "Installing Software on MacOS", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nThis is the software installation walkthrough for those whose computers are running MacOS. Based on our pre-course interest form, you make up a solid proportion of the course participants." + }, + { + "objectID": "course/00_WorkstationSetup/MacOS.html#installing-r", + "href": "course/00_WorkstationSetup/MacOS.html#installing-r", "title": "Installing Software on MacOS", "section": "Installing R", - "text": "Installing R\n\n\n\n\n\n\n\n\n.\n\n\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page." + "text": "Installing R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nYou will then select your Operating System, in this case, macOS\n\n\n\nNext, you will need to select the appropiate download based on your computers architecture. On newer Macs (containing M1+ chips) this would the arm64 option on the center left of the screen. For the older Intel (pre-2020) Macs, you would select the x86_64 option. If you are unsure, check your About This Mac tab\n\n\n\nAfter the download has completed, launch the installer\n\n\n\nProceed through the Read Me\n\n\n\nYou will then be prompted to acccept the software license (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\n\n\n\nNext, you will need to navigate through several pages, keeping the defaults.\n\n\n\nAnd with any luck, you should see that the installation was successful." }, { - "objectID": "course/00_WorkstationSetup/MacOSSlides.html#xcode-command-line-tools", - "href": "course/00_WorkstationSetup/MacOSSlides.html#xcode-command-line-tools", + "objectID": "course/00_WorkstationSetup/MacOS.html#xcode-command-line-tools", + "href": "course/00_WorkstationSetup/MacOS.html#xcode-command-line-tools", "title": "Installing Software on MacOS", "section": "Xcode Command Line Tools", - "text": "Xcode Command Line Tools\n\n\n\n\n\n\n\n\n.\n\n\nDepending on your version of macOS, you may or may not already have Git installed on your computer. The reason is that it comes bundled within the Xcode Command Line Tools.\nIf this is not your first foray into coding, you may have previously seen an installation pop-up along the lines of “XYZ requires command line developer tools. Would you like to install the tools now?” when installing an IDE (like Positron, Rstudio or Visual Studio Code)." + "text": "Xcode Command Line Tools\nDepending on your version of macOS, you may or may not already have Git installed on your computer. The reason is that it comes bundled within the Xcode Command Line Tools.\nIf this is not your first foray into coding, you may have previously seen an installation pop-up along the lines of “XYZ requires command line developer tools. Would you like to install the tools now?” when installing an IDE (like Positron, Rstudio or Visual Studio Code).\n\n\n\nSince these command line developer tools contain both Git, and also the equivalent of Rtools for Windows, we will need to install them for this course. To get started, first open your terminal.\n\n\n\nNext run the following code:\n\nxcode-select --install\n\n\n\n\nYou will then have the pop-up asking whether you want to install the command line tools (which contain Git). Select Install.\n\n\n\nYou will then be asked to accept the license\n\n\n\nYour installation will then proceed\n\n\n\nAnd if all goes well, the software will finish installing.\n\n\n\nAfter you complete Positron installation (next section), if you check the version control tab on the action bar on the far left side of the screen, you should see the following if Git was installed correctly.\n\n\n\nAlternatively, if you see this, you will need to reattempt the installation." }, { - "objectID": "course/00_WorkstationSetup/MacOSSlides.html#install-positron", - "href": "course/00_WorkstationSetup/MacOSSlides.html#install-positron", + "objectID": "course/00_WorkstationSetup/MacOS.html#install-positron", + "href": "course/00_WorkstationSetup/MacOS.html#install-positron", "title": "Installing Software on MacOS", "section": "Install Positron", - "text": "Install Positron\n\n\n\n\n\n\n\n\n.\n\n\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#checking-for-loaded-packages", - "href": "course/01_InstallingRPackages/slides_inperson.html#checking-for-loaded-packages", - "title": "01 - Installing R Packages", - "section": "Checking for Loaded Packages", - "text": "Checking for Loaded Packages\n\n\n\n\n\n\n\n\n.\n\n\nFor the contents (ie. the functions) of an R package to be available for your computer to use, they must first be activated (ie. loaded) into your local environment. We will first learn how to check what R packages are currently active." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#installing-from-cran", - "href": "course/01_InstallingRPackages/slides_inperson.html#installing-from-cran", - "title": "01 - Installing R Packages", - "section": "Installing from CRAN", - "text": "Installing from CRAN\n\n\n\n\n\n\n\n\n.\n\n\nWe will start by installing R packages that are part of the CRAN repository. This is the main R package repository, being part of the broader R software project. In the context of this course, R packages that work primarily with general data structure (rows, columns, matrices, etc.) or visualizations will predominantly be found within this repository.\nThese include the tidyverse packages. These packages have collectively made R easier to use by smoothing out some of the rough edges of base R, which is why R has seen major growth within the last decade. We will be installing several of these R packages today." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#installing-from-bioconductor", - "href": "course/01_InstallingRPackages/slides_inperson.html#installing-from-bioconductor", - "title": "01 - Installing R Packages", - "section": "Installing from Bioconductor", - "text": "Installing from Bioconductor\n\n\n\n\n\n\n\n\n.\n\n\nBioconductor is the second R package repository we will be working with throughout the course. While it contains far fewer packages than CRAN, it contains packages that are primarily used by the biomedical sciences. Following this link you can find it’s current flow and mass cytometry R packages.\nBioconductor R packages differ from CRAN R packages in a couple of ways. Bioconductor has different standards for acceptance than CRAN. They usually contain interoperable object-types, put more effort into documentation and continous testing to ensure that the R package remains functional across operating systems." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#install-from-github", - "href": "course/01_InstallingRPackages/slides_inperson.html#install-from-github", - "title": "01 - Installing R Packages", - "section": "Install from GitHub", - "text": "Install from GitHub\n\n\n\n\n\n\n\n\n.\n\n\nIn addition to the CRAN and Bioconductor repositories, individual R packages can also be found on GitHub hosted on their respective developers GitHub accounts. Newer packages that are still being worked on (often in the process of submission to CRAN or Bioconductor) can be found here, as well as those where the author decided not to bother with a review process, and just made the packages immediately available, warts and all." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#troubleshooting-install-errors", - "href": "course/01_InstallingRPackages/slides_inperson.html#troubleshooting-install-errors", - "title": "01 - Installing R Packages", - "section": "Troubleshooting Install Errors", - "text": "Troubleshooting Install Errors\n\n\n\n\n\n\n\n\n.\n\n\nWe have now installed three R packages, dplyr, PeacoQC, and flowSpectrum. In my case, I did not encounter any errors during the installation. However, sometimes a package installation will fail due to an error encountered during the installation process. This can be due to a number of reasons, ranging from a missing dependency, or an update that caused a conflict. While these can occur for CRAN or Bioconductor packages, they are more frequently seen for GitHub packages where the Description/Namespace files may not have been fully updated yet to install all the required dependencies.\nWhen encountering an error, start of by first reading through the message to see if you can parse any useful information about what package failed to install, and if it list the missing dependency packages name. The later was the case in the error message example shown below." - }, - { - "objectID": "course/01_InstallingRPackages/slides_inperson.html#documentation-and-websites", - "href": "course/01_InstallingRPackages/slides_inperson.html#documentation-and-websites", - "title": "01 - Installing R Packages", - "section": "Documentation and Websites", - "text": "Documentation and Websites\n\n\n\n\n\n\n\n\n.\n\n\nWe have already seen a couple ways to access the help documentation contained within an R package via Positron. Beyond internal documentation, R packages often have external websites that contain additional walk-through articles (ie. vignettes) to better document how to use the package.\nFor CRAN-based packages, we can start off by searching for the package name. So, in the case of dplyr" + "text": "Install Positron\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\nWith the license accepted, you will be able to select your operating system and the relevant installer depending on whether you are on an M1+ (ARM) or older Intel (x86) Mac.\n\n\nOnce the Download completes, proceed to install the package as you normally would for any other program." }, { - "objectID": "course/02_FilePaths/slides.html#set-up", - "href": "course/02_FilePaths/slides.html#set-up", - "title": "02 - File Paths", - "section": "Set Up", - "text": "Set Up\n\n\n\n\n\n\n\n\n.\n\n\nBefore we begin, let’s make sure you get the data needed for today transferred to your local computer, and then get the .fcs files copied over from there to your own working project folder. This is the process you will repeat each week throughout the course." + "objectID": "course/00_WorkstationSetup/index.html", + "href": "course/00_WorkstationSetup/index.html", + "title": "Workstation Setup", + "section": "", + "text": "In the previous section, we first set up your GitHub account. Then we modified your GitHub profile and added a README section. Finally, we forked the CytometryInR repository so that you can easily retrieve the new course materials each week.\nIt is now time to install the required software on your computer, which will get your work-station set up with everything needed for this course. Depending on your computers operating system, the installation requirements may differ a bit. In general, you will need to install the following software:\nR website : The programming language we will be using throughout the course.\nPositron : The integrated development environment (IDE) in which we will open, modify and run our code.\nGit : The version control software that will allow us to track changes to our files.\nAdditionally, Windows users will need to install:\nRTools : Used to build R packages from source code.\nYou can find the operating system specific installation walkthroughs below. Once you have completed your specific walkthrough, return to this page and proceed to the next section.\nPlease note: For those using university or company administered computers, please be aware that you may not have the necessary permissions to install these directly, and may need to reach out to your IT department to help get the software installed and running correctly.\nIf you are using your own computer, congratulations, you are your system administrator, and should already have the necessary permissions.", + "crumbs": [ + "About", + "Getting Started", + "00 - Workstation Setup" + ] }, { - "objectID": "course/02_FilePaths/slides.html#working-directory", - "href": "course/02_FilePaths/slides.html#working-directory", - "title": "02 - File Paths", - "section": "Working Directory", - "text": "Working Directory\n\n\n\n\n\n\n\n\n.\n\n\nNow that we are back in our Week2 folder, let’s start by seeing our current location similarly to how our computer perceives it.\nWe will use getwd() function (ie. get working directory) to return the location of the folder we are currently inside of. For example, when getwd() is run within my Week2 project folder, I see the following location" + "objectID": "course/00_WorkstationSetup/index.html#windows", + "href": "course/00_WorkstationSetup/index.html#windows", + "title": "Workstation Setup", + "section": "Windows", + "text": "Windows\n\nInstallation walkthrough for Windows", + "crumbs": [ + "About", + "Getting Started", + "00 - Workstation Setup" + ] }, { - "objectID": "course/02_FilePaths/slides.html#directories", - "href": "course/02_FilePaths/slides.html#directories", - "title": "02 - File Paths", - "section": "Directories", - "text": "Directories\n\n\n\n\n\n\n\n\n.\n\n\nWithin this working directory, we have a variety of project folders and files related to the course. We can see the folders that are present using the list.dirs() function.\n\n\n\n\n\n\n\n\n\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)" + "objectID": "course/00_WorkstationSetup/index.html#macos", + "href": "course/00_WorkstationSetup/index.html#macos", + "title": "Workstation Setup", + "section": "MacOS", + "text": "MacOS\n\nInstallation walkthrough for MacOS", + "crumbs": [ + "About", + "Getting Started", + "00 - Workstation Setup" + ] }, { - "objectID": "course/02_FilePaths/slides.html#variables", - "href": "course/02_FilePaths/slides.html#variables", - "title": "02 - File Paths", - "section": "Variables", - "text": "Variables\n\n\n\n\n\n\n\n\n.\n\n\nBefore exploring file paths, we need to have some basic R code knowledge that we can use to work with them. Within R, we have the ability to assign particular values (be they character strings, numbers or logicals) to objects (ie. variables) that can be used when called upon later.\nFor example:\n\n\n\n\n\n\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\n\n\n\n\n\n\n\n\n\n.\n\n\nIn this case, the variable name is what the assignment arrow (“<-”) is pointing at. In this case, WhatDayDidIWriteThis" + "objectID": "course/00_WorkstationSetup/index.html#linux-debian", + "href": "course/00_WorkstationSetup/index.html#linux-debian", + "title": "Workstation Setup", + "section": "Linux (Debian)", + "text": "Linux (Debian)\n\nInstallation walkthrough for Linux", + "crumbs": [ + "About", + "Getting Started", + "00 - Workstation Setup" + ] }, { - "objectID": "course/02_FilePaths/slides.html#indexing", - "href": "course/02_FilePaths/slides.html#indexing", - "title": "02 - File Paths", - "section": "Indexing", - "text": "Indexing\n\n\n\n\n\n\n\n\n.\n\n\nNot all variables contain single objects.\nFor example, we can modify Fluorophores and add additional entries:\n\n\n\n\n\n\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nstr(Fluorophores)\n\n chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n\n\n\n\n\n\n\n\n\n\n\n.\n\n\nThe c stands for concatenate. It concatenates the objects into a larger object, known as a vector.\nIn this case, you notice in addition to the specification the values are characters, we get a [1:4], denoting four objects are present." + "objectID": "course/00_WorkstationSetup/Windows.html", + "href": "course/00_WorkstationSetup/Windows.html", + "title": "Installing Software on Windows", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shots slides, click here\nThis is the software installation walkthrough for those whose computers are running Windows. Based on our pre-course interest form, you make up the majority of course participants." }, { - "objectID": "course/02_FilePaths/slides.html#listing-files", - "href": "course/02_FilePaths/slides.html#listing-files", - "title": "02 - File Paths", - "section": "Listing Files", - "text": "Listing Files\n\n\n\n\n\n\n\n\n.\n\n\nAfter this detour into variables and indexing, let’s return our focus to how to use these in context of file paths. Working from within our Week2 project folder, let’s see what directories (folders) are present\n\n\n\n\n\n\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)" + "objectID": "course/00_WorkstationSetup/Windows.html#installing-r", + "href": "course/00_WorkstationSetup/Windows.html#installing-r", + "title": "Installing Software on Windows", + "section": "Installing R", + "text": "Installing R\nTo get started, first navigate to the R website. Once there, click on Download R option towards the top of the page.\n\n\n\nOn the next screen, you will need to select a mirror from which to download the software from. You can either select the closest geographic location (which may be faster) or alternatively just select the Cloud option which should redirect you.\n\n\n\nYou will then select your Operating System, in this case, Windows.\n\n\n\nAnd go ahead and select the Install R for the first time link.\n\n\n\nNext, you will select the download the current version option at the top of the page.\n\n\n\nThe popup window will then ask where you want to save the installer (.exe) file. We generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nAfter the download is complete, double click on the installer’s .exe file. This will open a popup asking you to select your preferred language.\n\n\n\nYou will then be prompted to acccept the software license (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\nOn Windows, R will normally save it’s software folder under Program Files.\n\n\n\nNext, please accept the defaults.\n\n\n\n\n\n\n\n\n\n\n\n\nWith the defaults accepted, the installation will commence. Feel free to go have a coffee/tea/beverage-of-your choice break while you wait.\n\n\n\nAnd if all goes well, the installation will complete without any issues." }, { - "objectID": "course/02_FilePaths/slides.html#creating-directories", - "href": "course/02_FilePaths/slides.html#creating-directories", - "title": "02 - File Paths", - "section": "Creating directories", - "text": "Creating directories\n\n\n\n\n\n\n\n\n.\n\n\nAlternatively, we can also create a folder via R using the dir.create() function. Since we want it within data, we would modify the path accordingly\n\n\n\n\n\n\n\nNewFolderLocation <- file.path(\"data\", \"target2\")\n\ndir.create(path=NewFolderLocation)" + "objectID": "course/00_WorkstationSetup/Windows.html#installing-rtools", + "href": "course/00_WorkstationSetup/Windows.html#installing-rtools", + "title": "Installing Software on Windows", + "section": "Installing RTools", + "text": "Installing RTools\nWe will now work on installing Rtools. This software is needed when building R packages from source, which we will need throughout the course for R packages hosted on GitHub.\nTo get started, we will return to the R installation page we visited previously and instead click on the Rtools option.\n\n\n\nNext, select the most recent version of Rtools to Download.\n\n\n\nYou will then select for your architecture. For the vast majority of Windows users, your computer will likely be be using a x86 chip architecture, so you would select the Rtools45 installer option.\nIf your computer however uses the ARM chip architecture, you would select the 64-bit ARM Rtools45 installer instead. If you are unsure, see the following.\n\n\n\nNext, you will select the location to save the Rtools installer to. We generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nOnce downloaded, double click on the .exe to launch the Rtools installer.\n\n\n\nSimilar to what we did when installing R, go ahead and keep the defaults.\n\n\n\nAnd click install to proceed with the installation.\n\n\n\nAnd wait while the installation wraps up.\n\n\n\nIf all goes well, you should see the following installation success page." }, { - "objectID": "course/02_FilePaths/slides.html#file-paths", - "href": "course/02_FilePaths/slides.html#file-paths", - "title": "02 - File Paths", - "section": "File Paths", - "text": "File Paths\n\n\n\n\n\n\n\n\n.\n\n\nOne way we can do this is through a file.path argument. We could potentially provide this by adding either a “/” or a “\" into the path argument, depending on your computers operating system.\n\n\n\n\n\n\n\nlist.files(path=\"data/target\", full.names=FALSE, recursive=FALSE)" + "objectID": "course/00_WorkstationSetup/Windows.html#installing-git", + "href": "course/00_WorkstationSetup/Windows.html#installing-git", + "title": "Installing Software on Windows", + "section": "Installing Git", + "text": "Installing Git\nGit is a version control software widely used among software developers and bioinformaticians. We will use it extensively throughout the course, both locally on our computers (to keep track of changes to our files), as well as in combination with GitHub(to maintain online backups of our files).\nWe will first navigate to the website and select the download from Windows option.\n\n\n\n\n\n\n\n\n\nWe will then proceed and select install 64-bit Git for Windows Setup option\n\n\n\n\n\n\n\nAs was the case with our installation of R and Rtools, a pop-up will appear asking for a location to save the installer to.\nOnce downloaded, double-click and proceed with the installation.\nYou will be asked to accept the Git License (which is the free copyleft GPL2 license, which we will learn about later in the course).\n\n\n\nThen you will be asked to select the folder to save to software to (usually your Programs folder)\n\n\n\nAt this point, the Git installer will ask a series of increasingly niche questions. It is best to just accept all the default options, to avoid wandering too far down a “What is Vim?!?” rabbit-hole.\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nHaving made it through all the niche customization screens, we finally reach the install button.\n\n\n\nWe then can wait for the install to complete.\n\n\n\nAnd success, we have now installed Git." }, { - "objectID": "course/02_FilePaths/slides.html#selecting-for-patterns", - "href": "course/02_FilePaths/slides.html#selecting-for-patterns", - "title": "02 - File Paths", - "section": "Selecting for Patterns", - "text": "Selecting for Patterns\n\n\n\n\n\n\n\n\n.\n\n\nIf we currently listed the files within data, we get a return that looks like this:\n\n\n\n\n\n\n\nlist.files(\"data\", full.names=FALSE, recursive=FALSE)" + "objectID": "course/00_WorkstationSetup/Windows.html#installing-positron", + "href": "course/00_WorkstationSetup/Windows.html#installing-positron", + "title": "Installing Software on Windows", + "section": "Installing Positron", + "text": "Installing Positron\nFinally, you will install Positron. It is an integrated development environment (IDE) in which we will open, modify and run our code throughout the course.\nFirst, navigate to their homepage, and select the blue Download option button on the upper-right.\n\n\n\nYou will then need to accept the Elastic License agreement to use the software (we will cover this source-available license type and what it does later in the course).\nWith the license accepted, you will be able to select your operating system. In this case, we will select Windows, specifally the user level install.\n\n\n\nPlease note, if you are using a Windows computer with an ARM based chip (like is the case with Snapdragons), you will need to download the installed from the Positron’s GitHub Release Page, as they are still testing some features.\n\n\nYou will then be prompted to select the location you want to save the installer to. We will generally save this to either Downloads or Desktop to make finding it easier.\n\n\n\nOnce the download is complete, double click on the installer, and again accept the license agreement.\n\n\n\nGenerally, Positron will be store its software folder under Program Files.\n\n\n\nNext up, accept the default options for the following screens\n\n\n\n\n\n\nAnd finally, click Install.\n\n\n\n \n\nIf all goes well, you should then see the installation success page." }, { - "objectID": "course/02_FilePaths/slides.html#conditionals", - "href": "course/02_FilePaths/slides.html#conditionals", - "title": "02 - File Paths", - "section": "Conditionals", - "text": "Conditionals\n\n\n\n\n\n\n\n\n.\n\n\nOne useful thing is that within R, we can set conditions on whether something is carried out. The most typical conditional you will encounter are the “If” statements. They typically take a form that resembles the following.\n\n\n\n\n\n\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}" + "objectID": "course/01_InstallingRPackages/slides.html#set-up", + "href": "course/01_InstallingRPackages/slides.html#set-up", + "title": "01 - Installing R Packages", + "section": "Set Up", + "text": "Set Up\nAlright, with the background out of the way, let’s get started!\n\n\n\n\n\n\n\nImportant\n\n\nPlease make sure to sync your forked version of the CytometryInR repository, and pull any changes to your local computer’s CytometryInR project folder so that you have the most recent version of the code and data available.\n\n\n\n\n\n\n\n\n\n\n\nWarning\n\n\nPlease remember to always copy over the new material from your local CytometryInR folder to a separate Project Folder that you created and named (ex. “Week_01” or “MyLearningFolder”, etc.). This will ensure any edits you make to the files do not affect your ability to bring in next week’s materials to the CytometryInR folder" }, { - "objectID": "course/02_FilePaths/slides.html#conditionals-in-practice", - "href": "course/02_FilePaths/slides.html#conditionals-in-practice", - "title": "02 - File Paths", - "section": "Conditionals in practice", - "text": "Conditionals in practice\n\n\n\n\n\n\n\n\n.\n\n\nFirst off, let’s write a conditional to check if there is a target3 folder within data.\n\n\n\n\n\n\n\nfiles_present <- list.files(\"data\", full.names=FALSE, recursive=FALSE)\nfiles_present" + "objectID": "course/01_InstallingRPackages/slides.html#checking-for-loaded-packages", + "href": "course/01_InstallingRPackages/slides.html#checking-for-loaded-packages", + "title": "01 - Installing R Packages", + "section": "Checking for Loaded Packages", + "text": "Checking for Loaded Packages\n\n\n\n\n\n\n\n\n.\n\n\nFor the contents (ie. the functions) of an R package to be available for your computer to use, they must first be activated (ie. loaded) into your local environment. We will first learn how to check what R packages are currently active." }, { - "objectID": "course/02_FilePaths/slides.html#copying-files", - "href": "course/02_FilePaths/slides.html#copying-files", - "title": "02 - File Paths", - "section": "Copying Files", - "text": "Copying Files\n\n\n\n\n\n\n\n\n.\n\n\nTo copy files to another folder location, we use the file.copy() function. It has two arguments that we will be working with, from being the .fcs files, and to being the folder location we wish to transfer them to. If we tried using them as we currently have them:\n\n\n\n\n\n\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)" + "objectID": "course/01_InstallingRPackages/slides.html#installing-from-cran", + "href": "course/01_InstallingRPackages/slides.html#installing-from-cran", + "title": "01 - Installing R Packages", + "section": "Installing from CRAN", + "text": "Installing from CRAN\n\n\n\n\n\n\n\n\n.\n\n\nWe will start by installing R packages that are part of the CRAN repository. This is the main R package repository, being part of the broader R software project. In the context of this course, R packages that work primarily with general data structure (rows, columns, matrices, etc.) or visualizations will predominantly be found within this repository.\nThese include the tidyverse packages. These packages have collectively made R easier to use by smoothing out some of the rough edges of base R, which is why R has seen major growth within the last decade. We will be installing several of these R packages today." }, { - "objectID": "course/02_FilePaths/slides.html#removing-files.", - "href": "course/02_FilePaths/slides.html#removing-files.", - "title": "02 - File Paths", - "section": "Removing files.", - "text": "Removing files.\n\n\n\n\n\n\n\n\n.\n\n\nJust like we can add files via R, we can also remove them. However, when we remove them via this route, they are removed permanently, not sent to the recycle bin. We will revisit how later on in the course after you have gained additional experience with file.paths.\n\n\n\n\n\n\n\n?unlink()" + "objectID": "course/01_InstallingRPackages/slides.html#installing-from-bioconductor", + "href": "course/01_InstallingRPackages/slides.html#installing-from-bioconductor", + "title": "01 - Installing R Packages", + "section": "Installing from Bioconductor", + "text": "Installing from Bioconductor\n\n\n\n\n\n\n\n\n.\n\n\nBioconductor is the second R package repository we will be working with throughout the course. While it contains far fewer packages than CRAN, it contains packages that are primarily used by the biomedical sciences. Following this link you can find it’s current flow and mass cytometry R packages.\nBioconductor R packages differ from CRAN R packages in a couple of ways. Bioconductor has different standards for acceptance than CRAN. They usually contain interoperable object-types, put more effort into documentation and continous testing to ensure that the R package remains functional across operating systems." }, { - "objectID": "course/02_FilePaths/slides.html#basename", - "href": "course/02_FilePaths/slides.html#basename", - "title": "02 - File Paths", - "section": "Basename", - "text": "Basename\n\n\n\n\n\n\n\n\n.\n\n\nIf we look at Infants with the full.names=TRUE, we see the additional pathing folder has been added, allowing us to successfully copy over the files.\n\n\n\n\n\n\n\nInfants" + "objectID": "course/01_InstallingRPackages/slides.html#install-from-github", + "href": "course/01_InstallingRPackages/slides.html#install-from-github", + "title": "01 - Installing R Packages", + "section": "Install from GitHub", + "text": "Install from GitHub\n\n\n\n\n\n\n\n\n.\n\n\nIn addition to the CRAN and Bioconductor repositories, individual R packages can also be found on GitHub hosted on their respective developers GitHub accounts. Newer packages that are still being worked on (often in the process of submission to CRAN or Bioconductor) can be found here, as well as those where the author decided not to bother with a review process, and just made the packages immediately available, warts and all." }, { - "objectID": "course/02_FilePaths/slides.html#recursive", - "href": "course/02_FilePaths/slides.html#recursive", - "title": "02 - File Paths", - "section": "Recursive", - "text": "Recursive\n\n\n\n\n\n\n\n\n.\n\n\nAnd finally that we have created additional nested folders and populated them with fcs files, let’s see what setting list.files() recursive argument to TRUE\n\n\n\n\n\n\n\nall_files_present <- list.files(full.names=TRUE, recursive=TRUE)\nall_files_present" + "objectID": "course/01_InstallingRPackages/slides.html#troubleshooting-install-errors", + "href": "course/01_InstallingRPackages/slides.html#troubleshooting-install-errors", + "title": "01 - Installing R Packages", + "section": "Troubleshooting Install Errors", + "text": "Troubleshooting Install Errors\n\n\n\n\n\n\n\n\n.\n\n\nWe have now installed three R packages, dplyr, PeacoQC, and flowSpectrum. In my case, I did not encounter any errors during the installation. However, sometimes a package installation will fail due to an error encountered during the installation process. This can be due to a number of reasons, ranging from a missing dependency, or an update that caused a conflict. While these can occur for CRAN or Bioconductor packages, they are more frequently seen for GitHub packages where the Description/Namespace files may not have been fully updated yet to install all the required dependencies.\nWhen encountering an error, start of by first reading through the message to see if you can parse any useful information about what package failed to install, and if it list the missing dependency packages name. The later was the case in the error message example shown below." }, { - "objectID": "course/02_FilePaths/slides.html#saving-changes-to-version-control", - "href": "course/02_FilePaths/slides.html#saving-changes-to-version-control", - "title": "02 - File Paths", - "section": "Saving changes to Version Control", - "text": "Saving changes to Version Control\n\n\n\n\n\n\n\n\n.\n\n\nAnd as is good practice, to maintain version control, let’s stage all the files and folders we created today within the Week2 Project Folder, write a commit message, and send these files back to GitHub until they are needed again next time." + "objectID": "course/01_InstallingRPackages/slides.html#installing-specific-package-versions", + "href": "course/01_InstallingRPackages/slides.html#installing-specific-package-versions", + "title": "01 - Installing R Packages", + "section": "Installing Specific-Package Versions", + "text": "Installing Specific-Package Versions\n\n\n\n\n\n\n\n\n.\n\n\nWhile we may be tempted to think of R packages as static, they change quite often, as their develipers add new features, fix bugs, etc. To help keep track of these changes (essential for reproducibility and replicability), R packages have version numbers.\nWhen we run sessionInfo(), we can see an example of this, with the version number appearing after the package name.\n\n\n\n\n\n\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27\n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] IRanges_2.44.0 clue_0.3-66 cluster_2.1.8.1 \n[49] pkgconfig_2.0.3 pillar_1.11.1 gtable_0.3.6 \n[52] data.table_1.18.2.1 glue_1.8.0 xfun_0.56 \n[55] tibble_3.3.1 tidyselect_1.2.1 knitr_1.51 \n[58] farver_2.1.2 rjson_0.2.23 htmltools_0.5.9 \n[61] rmarkdown_2.30 compiler_4.5.2 S7_0.2.1" }, { - "objectID": "course/02_FilePaths/index.html", - "href": "course/02_FilePaths/index.html", - "title": "02 - File Paths", + "objectID": "course/01_InstallingRPackages/slides.html#documentation-and-websites", + "href": "course/01_InstallingRPackages/slides.html#documentation-and-websites", + "title": "01 - Installing R Packages", + "section": "Documentation and Websites", + "text": "Documentation and Websites\n\n\n\n\n\n\n\n\n.\n\n\nWe have already seen a couple ways to access the help documentation contained within an R package via Positron. Beyond internal documentation, R packages often have external websites that contain additional walk-through articles (ie. vignettes) to better document how to use the package.\nFor CRAN-based packages, we can start off by searching for the package name. So, in the case of dplyr" + }, + { + "objectID": "course/01_InstallingRPackages/index.html", + "href": "course/01_InstallingRPackages/index.html", + "title": "01 - Installing R Packages", "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nWelcome to the second week of Cytometry in R! This week we will learn about file.path, namely, how to communicate to our computer (and R) where various files are stored.", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here\nWelcome to the first week of Cytometry in R! This week we will be diving into how R packages work, and the how to go about installing them.\nBefore getting started, please make sure you have completed the creating a GitHub and Workstation Setup walk-throughs, since we will begin where they left off once the required software was successfully installed.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#set-up", - "href": "course/02_FilePaths/index.html#set-up", - "title": "02 - File Paths", + "objectID": "course/01_InstallingRPackages/index.html#set-up", + "href": "course/01_InstallingRPackages/index.html#set-up", + "title": "01 - Installing R Packages", "section": "Set Up", - "text": "Set Up\nBefore we begin, let’s make sure you get the data needed for today transferred to your local computer, and then get the .fcs files copied over from there to your own working project folder. This is the process you will repeat each week throughout the course.\n\nNew Repository\nFirst off, login to your GitHub account. Once there, you will select the options to create a new repository (similar to what you did during Using GitHub)\n\n\n\nFor this week, let’s set this new repository up as a private repository, and call it Week2. This will keep things consistent with the file.paths we will be showing in the examples.\n\n\n\nOnce the new repository has been created, copy the URL.\n\n\n\nNext, open up Positron, set the interpreter to use R, and then select the option to bring in a “New Folder from Git”.\n\n\n\nPaste in your new repository’s url. Additionally, if you want to match file.paths shown in the examples, set your storage location to your local Documents folder (please note the start of the file.path will look differently depending on whether you are on Windows, MacOS, or Linux).\n\n\n\nYour new repository will then be imported from GitHub. Once this is done, create two subfolders (data and images) and a new .qmd file (naming it filepaths.qmd).\n\n\n\n\n\nSync\nWith this done, return to GitHub and open your forked version of the CytometryInR course folder. If you haven’t yet done so, click on sync to bring in this week’s code and datasets.\n\n\n\nReturning to Positron, you will need to switch Project Folders, switching from Week2 over to CytometryInR.\n\n\n\n\n\nPull\nOnce CytometryInR project folder has opened, you will need to pull in the new data from GitHub to your local computer.\n\n\n\n\n\nCopy Files to Week2\nOnce this is done, you will see within the course folder, containing this weeks folder (02_FilePaths). Within it there is a data folder with .fcs files. To avoid causing conflicts when bringing in next week’s materials, you will want to manually copy over these .fcs files (via your File Explorer) to the data folder within your “Week2” Project Folder.\n\n\n\n\n\nCommit and Push\nWhen you reopen your Week2 project folder in Positron, you should now be able to see the .fcs files within the data folder. Next, from the action bar on the far left, select the Source Control tab. Stage all the changes (as was done in Using Git), and write a short commit message.\n\n\n\nWith these files now being tracked by version control, push (ie. send) your changes to GitHub so that they are remotely backed up.\n\n\n\nAnd with this setup complete, you are now ready to proceed. Remember, run code and write notes in your working project folder (Week2 or otherwise named) to avoid conflicts next week in the CytometryInR folder when you are trying to bring in the Week #3 code and datasets.", + "text": "Set Up\nAlright, with the background out of the way, let’s get started!\n\n\n\n\n\n\nImportant\n\n\n\nPlease make sure to sync your forked version of the CytometryInR repository, and pull any changes to your local computer’s CytometryInR project folder so that you have the most recent version of the code and data available.\n\n\n\n\n\n\n\n\nWarning\n\n\n\nPlease remember to always copy over the new material from your local CytometryInR folder to a separate Project Folder that you created and named (ex. “Week_01” or “MyLearningFolder”, etc.). This will ensure any edits you make to the files do not affect your ability to bring in next week’s materials to the CytometryInR folder\n\n\n\n\nAfter pulling the new data and code locally, open CytometryInR, open the course folder, and open the 01_InstallingRPackages folder. From here, copy the index.qmd file to your own working Project Folder (ex. Week_01) where you can work on it without causing any conflicts. Then return to Positron and open up your working project folder (ex. Week_01).\n\n\n\nNext up, within Positron, let’s make sure to select R as the coding language being used for this session.\n\n\n\nNow that R is running within Positron, the console (lower portion of the screenn) is now able to run (ie. execute) any R code that is sent to it.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#working-directory", - "href": "course/02_FilePaths/index.html#working-directory", - "title": "02 - File Paths", - "section": "Working Directory", - "text": "Working Directory\nNow that we are back in our Week2 folder, let’s start by seeing our current location similarly to how our computer perceives it.\nWe will use getwd() function (ie. get working directory) to return the location of the folder we are currently inside of. For example, when getwd() is run within my Week2 project folder, I see the following location\n\ngetwd()\n\n\nThis returns a file path. The final location (Week2 in this case) is the Working Directory. Your computer when working in R will be descern other locations in relation to this directory.", + "objectID": "course/01_InstallingRPackages/index.html#checking-for-loaded-packages", + "href": "course/01_InstallingRPackages/index.html#checking-for-loaded-packages", + "title": "01 - Installing R Packages", + "section": "Checking for Loaded Packages", + "text": "Checking for Loaded Packages\nFor the contents (ie. the functions) of an R package to be available for your computer to use, they must first be activated (ie. loaded) into your local environment. We will first learn how to check what R packages are currently active.\n\n\n\nAccessing Help Documentation\nWithin your own index.qmd (or a new .qmd file that you created), type out/copy-paste the following sessionInfo() function:\n\nsessionInfo()\n\n\n\nIf you hover over the line of code within Positron, you will glimpse the help file for the particular function you are hovering over.\n\n\n\nIn this case, we can see the help documentation corresponding for sessionInfo(). Beyond hovering over the function, this can also be accessed by adding a ? directly in front of the function, and then running that line of code.\n\n?sessionInfo()\n\n\n\n\nWhen executed, the function’s help file documentation will open up within the Help tab in the secondary side bar on the right-side of the screen. Glancing at the top of the page we can see the name of the package that contains the sessionInfo() function ({utils}). Scrolling down the help page past all the documentation, we can see a link to the index page.\n\n\n\nAfter clicking, the Help tab switches from viewing the documentation for the sessionInfo() function, to showing all the functions within the utils package. Most R packages contain help documentation, so this process can be adapted to find out additional information about what a function does, and what arguments are needed to produce customized outputs.\n\n\n\n\n\nsessionInfo()\nWithin your .qmd file, let’s go ahead and run the following code-block:\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] htmlwidgets_1.6.4 BiocManager_1.30.27 compiler_4.5.2 \n [4] fastmap_1.2.0 cli_3.6.5 tools_4.5.2 \n [7] htmltools_0.5.9 otel_0.2.0 yaml_2.3.12 \n[10] rmarkdown_2.30 knitr_1.51 jsonlite_2.0.0 \n[13] xfun_0.56 digest_0.6.39 rlang_1.1.7 \n[16] evaluate_1.0.5 \n\n\n\n\nThe outputs that get returned by sessionInfo() will vary a bit depending on your computer’s operating system, and the version of R you have installed.\nFor today, let’s focus on the last two elements of the output:\n\n\n\nThe R software itself is made up of several base R packages, that are loaded automatically. These contain everything you need to read, write and run R code on your computer. You can see these packages are the stats, graphics, grDevices, utils, datasets, methods and base packages.\nAs we install additional R packages and load them using the library() function throughout this session, sporadically re-run sessionInfo() to see how this list of R packages changes.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#directories", - "href": "course/02_FilePaths/index.html#directories", - "title": "02 - File Paths", - "section": "Directories", - "text": "Directories\nWithin this working directory, we have a variety of project folders and files related to the course. We can see the folders that are present using the list.dirs() function.\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)\n\n\nWithin this list.dirs() function, we are specifying two arguments with which we will be working with later today, full.names and recursive. For now, lets set their arguments to FALSE, which means they conditions they implement are inactive (turned off).\n\n\nThe path argument is currently set to “.”, which is a stand-in for the present directory. In R, if an argument is not specified directly, it is inferred based on an order of expected arguments. Thus, if not present, we could still get the same output as seen before.\n\nlist.dirs(full.names=FALSE, recursive=FALSE)\n\n\n\n\nWithin Positron, in addition to visible folders, we also have hidden folders (denoted by the “.” in front of the folder name when using list.dirs()). In the case of one of our course website folders, we can see a “.quarto” folder shown in a lighter gray . The “.git” folder we saw from list.dirs() is typically hidden when viewing from Positron.\n\nIn the case of Week2, the two not-hidden folders we created are listed. We will see how to navigate these in a second.", + "objectID": "course/01_InstallingRPackages/index.html#installing-from-cran", + "href": "course/01_InstallingRPackages/index.html#installing-from-cran", + "title": "01 - Installing R Packages", + "section": "Installing from CRAN", + "text": "Installing from CRAN\nWe will start by installing R packages that are part of the CRAN repository. This is the main R package repository, being part of the broader R software project. In the context of this course, R packages that work primarily with general data structure (rows, columns, matrices, etc.) or visualizations will predominantly be found within this repository.\nThese include the tidyverse packages. These packages have collectively made R easier to use by smoothing out some of the rough edges of base R, which is why R has seen major growth within the last decade. We will be installing several of these R packages today.\n\n\n\ndplyr\nOur first R package we will install during this session is the dplyr package. Since it is hosted on the CRAN repository, to install it, we will need to use the CRAN-specific installation function install.packages().\n\n?install.packages()\n\n\n\n\nFor the install.packages() function, we place within the () the name of the R package from CRAN that we wish to install.\n\ninstall.packages(\"dplyr\")\n\n\n\n\n\n\n\n\n\nTip\n\n\n\nA usual struggle point for beginners is that install.packages() requires ” ” to be placed around the package name. Forgetting them results in the error that we see below.\n\n\n\ninstall.packages(dplyr)\n\nError:\n! object 'dplyr' not found\n\n\n\n\n\ninstall.packages(\"dplyr\")\n\nGo ahead and click on “Run Cell” next to your code-block, to install the dplyr R package.\n\n\nWhen a package starts to install, you will see your console start to display text resembling that seen in the image below (varying a bit depending on your computers operating system).\n\n\n\nWithin this opening scrawl, you will see the location on your computer the R package is being installed to, as well as the file location for the R package being retrieved on CRAN.\nIf the package is successfully located, your computer will proceed to first download, then unpack (ie. unzip) it, before attempting to install to the target folder.\n\n\n\nThe final steps of the installation process involved various steps to verify everything was copied successfully, the help documentation assembled, and that the R package is capable of being loaded. If this is the case, you will see the “Done” line appear, as well as a mention where the original downloaded source package files has been stashed (usually a temp folder).\n\n\n\n\nAttaching packages via library()\nIf an R package has been installed successfully, we are now able to load it (ie. make it’s functions available) to our local environment using the library() function.\n\n?library()\n\n\n\nUnlike install.packages(), where we needed “” around the package name, the library() function does not require “” around the package name. Let’s go ahead and load in dplyr, making its respective functions to our local environment.\n\nlibrary(dplyr)\n\n\nAttaching package: 'dplyr'\n\n\nThe following objects are masked from 'package:stats':\n\n filter, lag\n\n\nThe following objects are masked from 'package:base':\n\n intersect, setdiff, setequal, union\n\n\n\n\nFrom the output, we can see that dplyr has been attached. There are also a couple functions within dplyr that have identical names to functions within the stats and base packages. To avoid confusion, these 6 functions are masked, which is why we get the additional messages.\nWith dplyr now loaded via the library() call, let’s check sessionInfo() to see what has changed.\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] dplyr_1.2.0 BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 \n [4] tidyselect_1.2.1 xfun_0.56 magrittr_2.0.4 \n [7] glue_1.8.0 tibble_3.3.1 knitr_1.51 \n[10] pkgconfig_2.0.3 htmltools_0.5.9 generics_0.1.4 \n[13] rmarkdown_2.30 lifecycle_1.0.5 cli_3.6.5 \n[16] vctrs_0.7.1 compiler_4.5.2 tools_4.5.2 \n[19] evaluate_1.0.5 pillar_1.11.1 yaml_2.3.12 \n[22] otel_0.2.0 BiocManager_1.30.27 rlang_1.1.7 \n[25] jsonlite_2.0.0 htmlwidgets_1.6.4 \n\n\n\n\nSimilar to what was seen for the base R packages, dplyr is now attached. This means we should theoretically now have access to all its functions. We can verify this by seeing if we can look up the dplyr packages select() function and it’s respective help page.\n\n?select\n\n\n\n\nSince its parent package has been attached to our local environment (via the library() call), we can see dplyr functions appear as suggestions as we begin to type.\nBy contrast, is we check for the ggplot() function from the ggplot2 package (which we haven’t yet installed or attached via library()), no suggestions will pop up.\n\n?ggplot\n\nNo documentation for 'ggplot' in specified packages and libraries:\nyou could try '??ggplot'\n\n\n\n\nBeyond individual functions, some R packages also have help landing pages, that can be similarly accessed by adding a ? in front of the package name:\n\n\n\n\n\nUnattaching\nSo far, we have installed an R package, and then attached it (via library()). How would we reverse these steps?\nWell, to unload it from the local environment, there are a couple options. You could of course simply shut down Positron. The local environment only exist in context of when you open and close the session, which closing the program will do. All previously loaded R packages will be unattached, which is why when you start a new session you will need to load in all packages you plan on using via library().\nAlternatively, although less used, you could detach() it via your console:\n\ndetach(\"package:dplyr\", unload=TRUE)\n\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] BiocStyle_2.38.0\n\nloaded via a namespace (and not attached):\n [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 \n [4] tidyselect_1.2.1 xfun_0.56 magrittr_2.0.4 \n [7] glue_1.8.0 tibble_3.3.1 knitr_1.51 \n[10] pkgconfig_2.0.3 htmltools_0.5.9 generics_0.1.4 \n[13] rmarkdown_2.30 lifecycle_1.0.5 cli_3.6.5 \n[16] vctrs_0.7.1 compiler_4.5.2 tools_4.5.2 \n[19] evaluate_1.0.5 pillar_1.11.1 yaml_2.3.12 \n[22] otel_0.2.0 BiocManager_1.30.27 rlang_1.1.7 \n[25] jsonlite_2.0.0 htmlwidgets_1.6.4 \n\n\n\n\nLooking at the sessionInfo() output, dplyr is no longer attached to the local environment. Consequently, if we try to once again look for the documentation, no information will be retrieved.\n\n?dplyr\n\nNo documentation for 'dplyr' in specified packages and libraries:\nyou could try '??dplyr'\n\n\n\n\nThere is a workaround however, if we want to access functions from an unloaded R package. We can specify the R package’s name, followed by two :, and then the function name. The :: conveys the context to your computer that the package is present, but may not be attached.\n\n?dplyr::select()\n\nThis particular use case can be useful if we want to run a particular function, but not load in all a packages functions (which may have identical function names to other R packages we are using and cause some conflicts).\n\n\n\n\nRemoving Packages\nJust as we can install an R package, we can also uninstall an R package (although doing so is rare, most often when encountering package dependency conflict). To do so, we would use the remove.packages() function.\n\n?remove.packages()\n\n\nremove.packages(\"dplyr\")\n\nThis results in the package being removed entirely from our computer. We would then need to reinstall it if needed in the future.\n\n\n\n\nCommon Issues\nAs previously mentioned, CRAN is the main repository for R packages. But what if we tried to install an R package that is only found on Bioconductor or via GitHub using the install.packages() function?\nTo see what occurs, let’s try installing the PeacoQC package (which is found on Bioconductor).\n\ninstall.packages(\"PeacoQC\")\n\nInstalling package into '/home/david/R/x86_64-pc-linux-gnu-library/4.5'\n(as 'lib' is unspecified)\n\n\nWarning: package 'PeacoQC' is not available for this version of R\n\nA version of this package for your version of R might be available elsewhere,\nsee the ideas at\nhttps://cran.r-project.org/doc/manuals/r-patched/R-admin.html#Installing-packages\n\n\n\n\nAs you can see, the initial warning message suggest that PeacoQC is not available for your version of R. When I first started trying to learn R on my own during COVID, this particular message was the bane of my existence and I couldn’t figure out what was going on.\nThis is just a default warning message, that would apply for both a package having a version mismatch, but also shown when trying to install packages that are not found on CRAN.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#variables", - "href": "course/02_FilePaths/index.html#variables", - "title": "02 - File Paths", - "section": "Variables", - "text": "Variables\nBefore exploring file paths, we need to have some basic R code knowledge that we can use to work with them. Within R, we have the ability to assign particular values (be they character strings, numbers or logicals) to objects (ie. variables) that can be used when called upon later.\nFor example:\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\nIn this case, the variable name is what the assignment arrow (“<-”) is pointing at. In this case, WhatDayDidIWriteThis\n\n\nWhen we run this, we create a variable, that will appear within the right-sidebar.\n\nWhatDayDidIWriteThis <- \"Saturday\"\n\n\n\n\nThese variables can subsequently be retrieved by printing (ie. running) the name of the variable\n\nWhatDayDidIWriteThis \n\n[1] \"Saturday\"\n\n\n\n\nYou can create variables with almost any name you can think of\n\nTopSecretMeetingDay <- \"Saturday\"\n\n\n\nWith a few exceptions. R doesn’t play well with spaces:\n\nTop Secret Meeting Day <- \"Saturday\"\n\nError in parse(text = input): <text>:1:5: unexpected symbol\n1: Top Secret\n ^\n\n\n\n\nBut does play well with underscores:\n\nTop_Secret_Meeting_Day <- \"Saturday\"\n\n\n\nThe above (with individual words separated by _) is collectively known as snake case. The alternate way to help delineate variable names is “camelCase”, with first letter of each word being capitalized (seen in the previous example).\n\n\n\n\nTopSecretMeetingDay\n\n[1] \"Saturday\"\n\n\n\n\nYou can overwrite a Variable name by assigning a different value to it:\n\nTopSecretMeetingDay <- \"Monday\"\n\n\nTopSecretMeetingDay\n\n[1] \"Monday\"\n\n\n\n\nYou can also remove individual variables via the rm function\n\nrm(Top_Secret_Meeting_Day)\n\n\n\nOr if trying to remove all, via the right sidebar\n\n\n\nIn the prior case, we are creating a variable that is a “string” of character values, due to our use of “” around the word. We can see this when we use the str() function.\n\nFluorophores <- \"FITC\"\nstr(Fluorophores)\n\n chr \"FITC\"\n\n\nThe “chr” in front denotating that Fluorophores contains a character string.\n\n\nThis could also be retrieved using the class() function.\n\nclass(Fluorophores)\n\n[1] \"character\"\n\n\n\n\nAlternatively, we could assign a numeric value to a variable\n\nFluorophores <- 29\nstr(Fluorophores)\n\n num 29\n\n\nWhich returns “num”, ie. numeric.\n\n\nWe can also specify a logical (ie. True or FALSE) to a particular object\n\nIsPerCPCy5AGoodFluorophore <- FALSE\nstr(IsPerCPCy5AGoodFluorophore)\n\n logi FALSE\n\n\nWhich returns logi in front, denoting this variable contains a logical value.\n\n\nLast week, when we were installing dplyr, the reason that installation failed was install.packages() expects a character string. However, when we left off the ““, it looked within our local environments created variables for the dplyr variable, couldn’t find it, and thus failed.\nWe could of course, have assigned a character value to a variable name, and then used that variable name, which would have worked.\n\nPackageToInstall <- \"dplyr\"\n\ninstall.packages(PackageToInstall)", + "objectID": "course/01_InstallingRPackages/index.html#installing-from-bioconductor", + "href": "course/01_InstallingRPackages/index.html#installing-from-bioconductor", + "title": "01 - Installing R Packages", + "section": "Installing from Bioconductor", + "text": "Installing from Bioconductor\nBioconductor is the second R package repository we will be working with throughout the course. While it contains far fewer packages than CRAN, it contains packages that are primarily used by the biomedical sciences. Following this link you can find it’s current flow and mass cytometry R packages.\nBioconductor R packages differ from CRAN R packages in a couple of ways. Bioconductor has different standards for acceptance than CRAN. They usually contain interoperable object-types, put more effort into documentation and continous testing to ensure that the R package remains functional across operating systems.\n\n\nTo install an R package that is located on Bioconductor, we first need to install the BiocManager package from CRAN. This package will allow us to install Bioconductor packages from their respective repository.\n\ninstall.packages(\"BiocManager\")\n\n\n\nOnce BiocManager is installed, we can attach it to our local environment using the library() function\n\nlibrary(BiocManager)\n\n\n\nWhen loaded, you will see an output showing the current Bioconductor and R versions.\nWe can then use BiocManager’s install() function to go back and install PeacoQC().\n\n\n\n\n\n\nTip\n\n\n\nAs always, don’t forget the “” when running an install() command.\n\n\n\n?install()\n\n\ninstall(\"PeacoQC\")\n\n\n\nWe see a similar opening sequence of installation steps as what we saw when installing the dplyr package from CRAN. However, in this case, several package dependencies (rjson, GlobalOptions, etc.) are present. Consequently, you can see these packages are also being downloaded from their respective repositories (either CRAN or Bioconductor), then unzipped and assembled before PeacoQC undergoes installation.\n\n\n\n\n\n\nNote\n\n\n\nBehind the scenes, within an R package, what package dependencies need to be installed are specified through the Description and Namespace files. If a package name is removed from these files, it will not be installed during the installation process\n\n\n\n\n\nWithin the scrawl of installation outputs, we can see individual dependencies undergoing installation similar to what we saw with dplyr, with a “Done (packagename)” being printed upon successful installation.\n\n\n\nThis process continues for each dependency being installed.\n\n\n\nAnd finally, once all the dependencies are installed, PeacoQC starts to install.\n\n\n\nOccasionally, during installation, you will see a pop-up windown like this one in the console. This let’s you know that some of the package dependencies have newer updated versions that are available to download. We are prompted to select between updating all, some or none. You will need to specify via the console how you want to proceed, by typing and entering one of the suggested options [a/s/n].\n\n\n\nAlternatively you may encounter a pop-up that resembles this one. Unlike the a/s/n output, we would need to provide a number for our intended choice. In this case, I went ahead and skipped all updates by typing 3 into the console, then hitting enter.\n\n\n\nGenerally, it’s okay to update if you have the time. Updates generally consist of minor improvements or bug fixes, that shouldn’t cause major issues. If you are short on time, you can go ahead and select skip the update by entering the value (n) for the none option.\n\n\n\nWith PeacoQC has been installed, we can load it via the library() call\n\n\n\n\n\n\nTip\n\n\n\nRemeber, library() doesn’t require ” ”\n\n\n\nlibrary(PeacoQC)\n\n\n\nAnd we can check to see if it has been attached to the local environment\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27 BiocStyle_2.38.0 \n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] htmlwidgets_1.6.4 IRanges_2.44.0 clue_0.3-66 \n[49] cluster_2.1.8.1 pkgconfig_2.0.3 pillar_1.11.1 \n[52] gtable_0.3.6 data.table_1.18.2.1 glue_1.8.0 \n[55] xfun_0.56 tibble_3.3.1 tidyselect_1.2.1 \n[58] knitr_1.51 farver_2.1.2 rjson_0.2.23 \n[61] htmltools_0.5.9 rmarkdown_2.30 compiler_4.5.2 \n[64] S7_0.2.1 \n\n\n\n\nAs you may have noticed, the section of loaded via namespace (but not attached) packages has grown larger. These packages are dependencies for the attached packages (dplyr, BiocManager and PeacoQC). Since the functions within these dependencies are only used selectively by the attached packages, they do not need to be active within the local environment.\n\n\n\nTo see what packages are installed (but not yet loaded), we can use the installed.packages() function to return a list of R packages for your computer.\n\ninstalled.packages()", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#indexing", - "href": "course/02_FilePaths/index.html#indexing", - "title": "02 - File Paths", - "section": "Indexing", - "text": "Indexing\nNot all variables contain single objects.\nFor example, we can modify Fluorophores and add additional entries:\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nstr(Fluorophores)\n\n chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n\n\nThe c stands for concatenate. It concatenates the objects into a larger object, known as a vector.\nIn this case, you notice in addition to the specification the values are characters, we get a [1:4], denoting four objects are present.\n\n\nWe can similarly retrieve this information using the length() function\n\nlength(Fluorophores)\n\n[1] 4\n\n\n\n\nWhen multiple objects are present, we can specify them individidually by providing their index number within square brackets [].\n\nFluorophores[1]\n\n[1] \"BV421\"\n\n\n\n\n\nFluorophores[3]\n\n[1] \"PE\"\n\n\n\n\nOr specify in sequence using a colon (:)\n\nFluorophores[3:4]\n\n[1] \"PE\" \"APC\"\n\n\n\n\nOr if not adjacent, reusing c within the square brackets\n\nFluorophores[c(1,4)]\n\n[1] \"BV421\" \"APC\" \n\n\n\n\nWe will revisit these concepts throughout the course, with what we have covered today, this will help us create file.paths and select fcs files that we want to work with via index number.", + "objectID": "course/01_InstallingRPackages/index.html#install-from-github", + "href": "course/01_InstallingRPackages/index.html#install-from-github", + "title": "01 - Installing R Packages", + "section": "Install from GitHub", + "text": "Install from GitHub\nIn addition to the CRAN and Bioconductor repositories, individual R packages can also be found on GitHub hosted on their respective developers GitHub accounts. Newer packages that are still being worked on (often in the process of submission to CRAN or Bioconductor) can be found here, as well as those where the author decided not to bother with a review process, and just made the packages immediately available, warts and all.\n\n\nWhile many gems of R packages can be found on GitHub, there are also a bunch of R packages that due to deprecation since when they were published and released have stopped working. This is often the case for R packages that are not maintained, which is why it’s useful to check the commits and issues pages to see when the last contribution occurred. We will take a closer look at how to do so later on.\n\n\nTo install packages from GitHub, you will need the remotes package, which can be found on CRAN.\n\n\n\n\n\n\nSpot Check #1\n\n\n\nTo install a package from CRAN, what function would you use? Click on the code-fold arrow below to reveal the answer.\n\n\n\n\nCode\ninstall.packages(\"remotes\")\n\n\n\n\nWith the remotes package now installed, we can attach it to our local environment.\n\n\n\n\n\n\nSpot Check #2\n\n\n\nWhat function would be used to do so?\n\n\n\n\nCode\nlibrary(remotes)\n\n\n\n\nAnd finally, we can use the install_github() function to download R packages from the invidual developers GitHub account.\n\n\n\n\n\n\nSpot Check #3\n\n\n\nHow would you look up the help documentation for this function?\n\n\n\n\nCode\n# Either by hovering over it within Positron or via\n\n?install_github()\n\n\n\n\nWe will be installing a small R package flowSpectrum for this example. It’s one of the packages created by Christopher Hall, whose small series of Flow Cytometry Data Analysis in R tutorials were immensely useful when I was first getting started learning R. flowSpectrum can be used to generate spectrum-style plots for spectral flow cytometry data.\n\n\n\nTo install an R package from GitHub, we first need the GitHub username (so hally166 in this case), which is followed by a “/”, and then the name of the package repository (so flowSpectrum in this case). Our code should consequently be:\n\ninstall_github(\"hally166/flowSpectrum\")\n\n\n\nWhen installing from GitHub, the opening installation scrawl will look different. Unlike R packages from CRAN or Bioconductor, which are usually shipped in an assembled binary format, R packages from GitHub start off as source code. So the first steps shown in the scrawl are the process of converting them to binary before proceeding.\nThis process of building R packages from source code is one of the reasons we needed to install Rtools (for Windows users) or Xcode Developer Tools (for MacOS) for this course. We will look at this topic in greater depth later in the course when we talk about creating R packages.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#listing-files", - "href": "course/02_FilePaths/index.html#listing-files", - "title": "02 - File Paths", - "section": "Listing Files", - "text": "Listing Files\nAfter this detour into variables and indexing, let’s return our focus to how to use these in context of file paths. Working from within our Week2 project folder, let’s see what directories (folders) are present\n\nlist.dirs(path=\".\", full.names=FALSE, recursive=FALSE)\n\n\n\n\nWe can also list any files that are present within our working directory using the list.files() function.\n\nlist.files()\n\n\nIn this case, in addition to our filepaths.qmd file, we can see the LICENSE and README files created when we set up the repository.\n\n\nWe can also specify a particular folder we want to show items present within by changing the path argument. For example, if we wanted to see the contents of the “data” folder\n\nlist.files(path=\"data\", full.names=FALSE, recursive=FALSE)\n\n\nWhich in this case returns the fcs files we copied over at the start of this lesson.\n\n\nIn this case, there are no folders under “data”. Let’s go ahead and create a new one, calling it target.", + "objectID": "course/01_InstallingRPackages/index.html#troubleshooting-install-errors", + "href": "course/01_InstallingRPackages/index.html#troubleshooting-install-errors", + "title": "01 - Installing R Packages", + "section": "Troubleshooting Install Errors", + "text": "Troubleshooting Install Errors\nWe have now installed three R packages, dplyr, PeacoQC, and flowSpectrum. In my case, I did not encounter any errors during the installation. However, sometimes a package installation will fail due to an error encountered during the installation process. This can be due to a number of reasons, ranging from a missing dependency, or an update that caused a conflict. While these can occur for CRAN or Bioconductor packages, they are more frequently seen for GitHub packages where the Description/Namespace files may not have been fully updated yet to install all the required dependencies.\nWhen encountering an error, start of by first reading through the message to see if you can parse any useful information about what package failed to install, and if it list the missing dependency packages name. The later was the case in the error message example shown below.\n\n\n\nIf you encounter an installation error this week, please take screenshots of the error message and post them to this Discussion. This will help us troubleshoot your installation, as well as provide additional examples of installation errors that will be used to update this section in the future.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#creating-directories", - "href": "course/02_FilePaths/index.html#creating-directories", - "title": "02 - File Paths", - "section": "Creating directories", - "text": "Creating directories\nAlternatively, we can also create a folder via R using the dir.create() function. Since we want it within data, we would modify the path accordingly\n\nNewFolderLocation <- file.path(\"data\", \"target2\")\n\ndir.create(path=NewFolderLocation)\n\n\n\n\nBefore continuing, let’s copy the first two .fcs files into both target and target2.\n\n\n\nGiven our working directory is set the top-level of the Week2 project folder, we can’t just check inside nested target folders directly. If we attempt to:\n\nlist.files(path=\"target\", full.names=FALSE, recursive=FALSE)\n\ncharacter(0)\n\n\n\n\nNo files are returned (ie, character(0)), since from our computers perspective, “target” doesn’t exist within the active working directory.\n\nfile.exists(\"target\")\n\n[1] FALSE\n\n\n\n\nOn the other hand, within it’s view, it knows that the data folder exist\n\nfile.exists(\"data\")\n\n\nSo here we encounter the first challenge when communicating to our computer where to search for and find files. We need to provide a file.path that incorporates the path of folders between where the computer is currently at (ie. the working directory) and the target file itself.", + "objectID": "course/01_InstallingRPackages/index.html#installing-specific-package-versions", + "href": "course/01_InstallingRPackages/index.html#installing-specific-package-versions", + "title": "01 - Installing R Packages", + "section": "Installing Specific-Package Versions", + "text": "Installing Specific-Package Versions\nWhile we may be tempted to think of R packages as static, they change quite often, as their develipers add new features, fix bugs, etc. To help keep track of these changes (essential for reproducibility and replicability), R packages have version numbers.\nWhen we run sessionInfo(), we can see an example of this, with the version number appearing after the package name.\n\nsessionInfo()\n\nR version 4.5.2 (2025-10-31)\nPlatform: x86_64-pc-linux-gnu\nRunning under: Debian GNU/Linux 13 (trixie)\n\nMatrix products: default\nBLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.12.1 \nLAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.1; LAPACK version 3.12.0\n\nlocale:\n [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C \n [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 \n [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 \n [7] LC_PAPER=en_US.UTF-8 LC_NAME=C \n [9] LC_ADDRESS=C LC_TELEPHONE=C \n[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C \n\ntime zone: America/New_York\ntzcode source: system (glibc)\n\nattached base packages:\n[1] stats graphics grDevices utils datasets methods base \n\nother attached packages:\n[1] PeacoQC_1.20.0 BiocManager_1.30.27 BiocStyle_2.38.0 \n\nloaded via a namespace (and not attached):\n [1] generics_0.1.4 shape_1.4.6.1 digest_0.6.39 \n [4] magrittr_2.0.4 evaluate_1.0.5 grid_4.5.2 \n [7] RColorBrewer_1.1-3 iterators_1.0.14 circlize_0.4.17 \n[10] fastmap_1.2.0 foreach_1.5.2 doParallel_1.0.17 \n[13] jsonlite_2.0.0 graph_1.88.1 GlobalOptions_0.1.3 \n[16] ComplexHeatmap_2.26.0 flowWorkspace_4.22.1 scales_1.4.0 \n[19] XML_3.99-0.20 Rgraphviz_2.54.0 codetools_0.2-20 \n[22] cli_3.6.5 RProtoBufLib_2.22.0 rlang_1.1.7 \n[25] crayon_1.5.3 Biobase_2.70.0 yaml_2.3.12 \n[28] otel_0.2.0 cytolib_2.22.0 ncdfFlow_2.56.0 \n[31] tools_4.5.2 parallel_4.5.2 dplyr_1.2.0 \n[34] colorspace_2.1-2 ggplot2_4.0.2 GetoptLong_1.1.0 \n[37] BiocGenerics_0.56.0 vctrs_0.7.1 R6_2.6.1 \n[40] png_0.1-8 matrixStats_1.5.0 stats4_4.5.2 \n[43] lifecycle_1.0.5 flowCore_2.22.1 S4Vectors_0.48.0 \n[46] htmlwidgets_1.6.4 IRanges_2.44.0 clue_0.3-66 \n[49] cluster_2.1.8.1 pkgconfig_2.0.3 pillar_1.11.1 \n[52] gtable_0.3.6 data.table_1.18.2.1 glue_1.8.0 \n[55] xfun_0.56 tibble_3.3.1 tidyselect_1.2.1 \n[58] knitr_1.51 farver_2.1.2 rjson_0.2.23 \n[61] htmltools_0.5.9 rmarkdown_2.30 compiler_4.5.2 \n[64] S7_0.2.1 \n\n\n\n\nAlternatively, we can retrieve the same information for the individual packages via the packageVersion() function\n\npackageVersion(\"PeacoQC\")\n\n[1] '1.20.0'\n\n\n\n\nAs well as from the citation() function.\n\ncitation(\"PeacoQC\")\n\nTo cite package 'PeacoQC' in publications use:\n\n Emmaneel A (2025). _PeacoQC: Peak-based selection of high quality\n cytometry data_. doi:10.18129/B9.bioc.PeacoQC\n <https://doi.org/10.18129/B9.bioc.PeacoQC>, R package version 1.20.0,\n <https://bioconductor.org/packages/PeacoQC>.\n\nA BibTeX entry for LaTeX users is\n\n @Manual{,\n title = {PeacoQC: Peak-based selection of high quality cytometry data},\n author = {Annelies Emmaneel},\n year = {2025},\n note = {R package version 1.20.0},\n url = {https://bioconductor.org/packages/PeacoQC},\n doi = {10.18129/B9.bioc.PeacoQC},\n }\n\n\n\n\nHow does a version number work? Lets say we have the following version number: 1.20.0\nThe first number of the version (1. in this case) denotes major changes, primarily those where after the version change the package may not be compatible with the code used in the prior version. As a consequence, this number changes rarely.\nThe second number (.20. in this case) is the minor version. Minor changes typically consist of new features that are added, that don’t affect the overall package function. These will change more frequently, especially for Bioconductor packages with fixed release cycles.\nThe final number (.0 in this case) is often used to denote small changes occuring within a minor release period, often bug-fixes or fixing typos within the documentation.\n\n\nWe may in the future need to install specific package versions (but wont be doing so today). As expected, which repository contains the R package influences how we would go about doing this.\nFor CRAN packages, we can use the remotes packages install_version() function. This allows us to provide the version number, and designate the repository location (the CRAN url in this case).\n\nremotes::install_version(\"ggplot2\", version = \"3.5.2\", repos = \"https://cloud.r-project.org\")\n\nFor GitHub-based R packages, the package versioning schema is not as strict as that of CRAN or Bioconductor. Typically, changes in R packagaes are put out by their developers as releases. When trying to install a particular release, we can add an additional argument to the install_github() function, specifying the release version’s tag number. For example:\n\nremotes::install_github(\"DavidRach/Luciernaga\", ref = \"v0.99.7\")\n\nAlternatively, if the developer doesn’t implement releases, you can provide the hash number of a particular commit.\n\nremotes::install_github(\"DavidRach/Luciernaga\", ref = \"8d1d694\")", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#file-paths", - "href": "course/02_FilePaths/index.html#file-paths", - "title": "02 - File Paths", - "section": "File Paths", - "text": "File Paths\nOne way we can do this is through a file.path argument. We could potentially provide this by adding either a / or a  into the path argument, depending on your computers operating system.\n\nlist.files(path=\"data/target\", full.names=FALSE, recursive=FALSE)\n\n\n\nWhile this works in your particular context, if you are sharing the code with others who have a different operating system, these hard-coded “/” or “\" will cause the code for them to error out at these particular steps.\n\nFor that reason, it is better to assemble a file.path using the file.path() function. This function takes into account the operating system, removing your need to have to worry about this particular computing nuance, and write code that is reproducible and replicable for everyone.\n\nFolderLocation <- file.path(\"data\", \"target\")\nFolderLocation\n\n[1] \"data/target\"\n\n\n\nlist.files(path=FolderLocation, full.names=FALSE, recursive=FALSE)\n\n\n\n\nWe can also append additional locations to existing file paths, by including the variable name within the file.path() we are creating.\n\nFolderLocation <- \"data\"\nScreenshotFolder <- file.path(FolderLocation, \"target\")\nScreenshotFolder\n\n[1] \"data/target\"\n\n\n\nlist.files(path=ScreenshotFolder, full.names=FALSE, recursive=FALSE)\n\n\n\n\nAdditionally, list.files() has the ability to filter for files that contain a particular character string. This can be useful is we are searching for “.fcs” or “.csv” files, but also for files that contain a particular word. In the case of the ScreenshotFolders\n\nlist.files(path=ScreenshotFolder, pattern=\"ND050\", full.names=FALSE, recursive=FALSE)\n\n\nYou will notice, the index numbers are in the context of what is filtered, not all the folder contents.", + "objectID": "course/01_InstallingRPackages/index.html#documentation-and-websites", + "href": "course/01_InstallingRPackages/index.html#documentation-and-websites", + "title": "01 - Installing R Packages", + "section": "Documentation and Websites", + "text": "Documentation and Websites\nWe have already seen a couple ways to access the help documentation contained within an R package via Positron. Beyond internal documentation, R packages often have external websites that contain additional walk-through articles (ie. vignettes) to better document how to use the package.\nFor CRAN-based packages, we can start off by searching for the package name. So, in the case of dplyr:\n\n\n\nTwo main suggestions pop up. One is the package’s CRAN page. Unfortunately, this one is not particularly user-friendly, although some text-based vignettes are accessible.\n\n\n\nBecause of this, many CRAN-based R packages (especially those part of the tidyverse) use pkgdown-generated websites hosted via a GitHub page (similar to the one used by this course. The second option on the search is dplyr’s pkgdown-style website\n\n\n\nWe can usually find the list of functions under the Reference tab, with the more extensive documentation vignettes being found under the Articles tab.\n\n\n\nGitHub-based packages will vary depending on their individual developers, but often will also use pkgdown-style websites. These often appear as links on the right-hand side, or within the repository’s ReadMe.\n\n\n\nFor Bioconductor-based packages, on the package’s page we can typically find the already rendered vignette articles, usually as either html or pdf files. For example, with PeacoQC:\n\n\n\nAdditionally, package vignettes can also be reached via the packages help index page. These will usually appear under User guides, package vignettes, and other documentation.", "crumbs": [ "About", - "Intro to R", - "02 - File Paths" + "Intro to R" ] }, { - "objectID": "course/02_FilePaths/index.html#selecting-for-patterns", - "href": "course/02_FilePaths/index.html#selecting-for-patterns", - "title": "02 - File Paths", - "section": "Selecting for Patterns", - "text": "Selecting for Patterns\nIf we currently listed the files within data, we get a return that looks like this:\n\nlist.files(\"data\", full.names=FALSE, recursive=FALSE)\n\n\n\n\nAs you can see, we are getting back both folders and individual .fcs files. We could consequently change the pattern to provide a character string that will only return the .fcs files. We will go ahead and assign this list to a variable named files, for later retrieval.\n\nfiles <- list.files(\"data\", pattern=\".fcs\", full.names=FALSE, recursive=FALSE)\nfiles\n\n\n\n\nOne of the R packages we will be using througout the course is the stringr package. It contains two functions that can be useful when identifying more complicated character strings. In this case, if we run the str_detect() function to identify which of the .fcs files within the files variable contains the “INF” character string, we get a vector of logical (ie. True or FALSE) outputs corresponding to each file.\n\n# install.packages(\"stringr\") # CRAN\nlibrary(stringr)\n\n\nstr_detect(files, \"INF\")\n\n\n\n\nSimilar to how we indexed the Fluorophore list (ex. Fluorophore[1:2]) which returned a subset, we can similarly use this logical vector to subset files that returned as TRUE for containing the pattern “INF”\n\nfiles[str_detect(files, \"INF\")]\n\n\n\n\nLet’s go ahead and save these subsetted file names to a new variable, called Infants.\n\nInfants <- files[str_detect(files, \"INF\")]", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/02_FilePaths/Downsampler.html", + "href": "course/02_FilePaths/Downsampler.html", + "title": "Downsampling", + "section": "", + "text": "Due to trying to keep the overall file size down, I am downsampling to 100 events. For anyone interested in how I did this, this Quarto Markdown Document contains the code needed to repeat the process." + }, + { + "objectID": "course/02_FilePaths/Downsampler.html#specify-file.path-and-identify-files", + "href": "course/02_FilePaths/Downsampler.html#specify-file.path-and-identify-files", + "title": "Downsampling", + "section": "Specify file.path and identify files", + "text": "Specify file.path and identify files\nDue to the counts being conducter on two separate instruments, the number of columns differs, so they will need to be loaded into separate GatingSet objects.\n\nStorageLocation <- file.path(\"course\", \"02_FilePaths\", \"data\")\nExisting <- list.files(StorageLocation, pattern=\".fcs\", full.names=TRUE)\nList1 <- Existing[1:2] # 3L Aurora\nList2 <- Existing[3:8] # 4L Aurora" + }, + { + "objectID": "course/02_FilePaths/Downsampler.html#load-.fcs-files-into-a-gatingset", + "href": "course/02_FilePaths/Downsampler.html#load-.fcs-files-into-a-gatingset", + "title": "Downsampling", + "section": "Load .fcs files into a GatingSet", + "text": "Load .fcs files into a GatingSet\nLoad in files to their respective GatingSet objects\n\ncs1 <- load_cytoset_from_fcs(List1, truncate_max_range = FALSE, transformation = FALSE)\ngs1 <- GatingSet(cs1)\n\ncs2 <- load_cytoset_from_fcs(List2, truncate_max_range = FALSE, transformation = FALSE)\ngs2 <- GatingSet(cs2)" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#getting-set-up", + "href": "course/03_InsideFCSFile/slides.html#getting-set-up", + "title": "03 - Inside an FCS File", + "section": "Getting Set Up", + "text": "Getting Set Up" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#flowcore", + "href": "course/03_InsideFCSFile/slides.html#flowcore", + "title": "03 - Inside an FCS File", + "section": "flowCore", + "text": "flowCore\n\n\n\n\n\n\n\n\n.\n\n\nWe will be using the flowCore package, which is the oldest and most-frequently downloaded flow cytometry package on Bioconductor." + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#flowframe", + "href": "course/03_InsideFCSFile/slides.html#flowframe", + "title": "03 - Inside an FCS File", + "section": "flowFrame", + "text": "flowFrame\n\n\n\n\n\n\n\n\n.\n\n\nFor read.FCS(), it accepts several arguments. The argument “filename” is where we provide our file.path to .fcs file that we wish to load into R. Let’s go ahead and do so\n\n\n\n\n\n\n\nread.FCS(filename=firstfile)" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#early-metadata", + "href": "course/03_InsideFCSFile/slides.html#early-metadata", + "title": "03 - Inside an FCS File", + "section": "Early Metadata", + "text": "Early Metadata\n\n\n\n\n\n\n\n\n.\n\n\nWithin the initial portion, we are getting back metadata keywords related to where and how the particular file was acquired. Keywords of potential interest include:\n\n\n\n\n\n\n\n\n\n\n\n\n\nStart Time\n\n\nWhat time was the .fcs file acquired\n\n\n\n\n\n\n\nDescriptionList$`$BTIM`\n\n[1] \"13:55:29.85\"" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#detector-values", + "href": "course/03_InsideFCSFile/slides.html#detector-values", + "title": "03 - Inside an FCS File", + "section": "Detector Values", + "text": "Detector Values\n\n\n\n\n\n\n\n\n.\n\n\nThe next major stretch of keywords encode parameter values associated with the individual detectors for at the time of acquisition.\n\n\n\n\n\n\n\nDetectors <- DescriptionList[20:384]\nDetectors\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#middle-metadata", + "href": "course/03_InsideFCSFile/slides.html#middle-metadata", + "title": "03 - Inside an FCS File", + "section": "Middle Metadata", + "text": "Middle Metadata\n\n\n\n\n\n\n\n\n.\n\n\nOnce we are out of the detector keywords, we find the last of the $Metadata associated keywords.\n\n\n\n\n\n\n\nDetectors <- DescriptionList[385:398]\nDetectors\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#laser-metadata", + "href": "course/03_InsideFCSFile/slides.html#laser-metadata", + "title": "03 - Inside an FCS File", + "section": "Laser Metadata", + "text": "Laser Metadata\n\n\n\n\n\n\n\n\n.\n\n\nNext up, there is a small stretch of keywords containing the values associated with the individual lasers as far as delays and area scaling factors for a particular day (also useful when plotted).\n\n\n\n\n\n\n\nDetectors <- DescriptionList[399:410]\nDetectors\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#display", + "href": "course/03_InsideFCSFile/slides.html#display", + "title": "03 - Inside an FCS File", + "section": "Display", + "text": "Display\n\n\n\n\n\n\n\n\n.\n\n\nThen there is a stretch matching whether a particular detector needs to be displayed as linear (in the case of time and scatter) or as log (for individual detectors).\n\n\n\n\n\n\n\nDetectors <- DescriptionList[412:472]\nDetectors\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"" + }, + { + "objectID": "course/03_InsideFCSFile/slides.html#flowcore-parameters", + "href": "course/03_InsideFCSFile/slides.html#flowcore-parameters", + "title": "03 - Inside an FCS File", + "section": "flowCore Parameters", + "text": "flowCore Parameters\n\n\n\n\n\n\n\n\n.\n\n\nDepending on the arguments selected during read.FCS(), we might also encounter additional keywords that are added in by flowCore. For example, we do not see these keywords when “transformation” is set to FALSE.\n\n\n\n\n\n\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = FALSE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot" + }, + { + "objectID": "course/04_IntroToTidyverse/slides.html#read.csv", + "href": "course/04_IntroToTidyverse/slides.html#read.csv", + "title": "04 - Introduction to Tidyverse", + "section": "read.csv", + "text": "read.csv\n\n\n\n\n\n\n\n\n.\n\n\nWe will start by first loading in our copied over dataset (Dataset.csv) from it’s location in the project folder. If you are following the organization scheme we have been using throughout the course, your file path will look something like this:\n\n\n\n\n\n\n\n\n\n\nthefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"" + }, + { + "objectID": "course/04_IntroToTidyverse/slides.html#data.frame", + "href": "course/04_IntroToTidyverse/slides.html#data.frame", + "title": "04 - Introduction to Tidyverse", + "section": "data.frame", + "text": "data.frame\n\n\n\n\n\n\n\n\n.\n\n\nOr alternatively using the new-to-us glimpse() function\n\n\n\n\n\n\n\nglimpse(Data)\n\nError in `glimpse()`:\n! could not find function \"glimpse\"" + }, + { + "objectID": "course/04_IntroToTidyverse/slides.html#column-value-type", + "href": "course/04_IntroToTidyverse/slides.html#column-value-type", + "title": "04 - Introduction to Tidyverse", + "section": "Column value type", + "text": "Column value type\n\n\n\n\n\n\n\n\n.\n\n\nAs we saw last week, functions often need values that match a certain type (the paintbrush needing paint analogy). As we inspect the columns of Data, we can notice some of the columns contain values within that are character (ie. “char”) values. Others appear to contain numeric values (which are subtyped as either double (“ie. dbl”) or integer (ie. “int”)). At first glance, we do not appear to have any logical (ie. TRUE or FALSE) columns in this dataset." + }, + { + "objectID": "course/04_IntroToTidyverse/slides.html#select-columns", + "href": "course/04_IntroToTidyverse/slides.html#select-columns", + "title": "04 - Introduction to Tidyverse", + "section": "select (Columns)", + "text": "select (Columns)\n\n\n\n\n\n\n\n\n.\n\n\nNow that we have read in our data, and have a general picture of the structure and contents, lets start learning the main dplyr functions we will be using throughout the course. To do this, lets go ahead and attach dplyr to our local environment via the library() call.\n\n\n\n\n\n\n\nlibrary(dplyr)" }, { - "objectID": "course/02_FilePaths/index.html#conditionals", - "href": "course/02_FilePaths/index.html#conditionals", - "title": "02 - File Paths", - "section": "Conditionals", - "text": "Conditionals\nOne useful thing is that within R, we can set conditions on whether something is carried out. The most typical conditional you will encounter are the “If” statements. They typically take a form that resembles the following.\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n\n\nIn this case of the above, if the variable within the () is equal to true, the code within the {} will be executed.\n\nNeedCoffee <- TRUE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n[1] \"Take a break\"\n\n\n\n\nBy contrast, when the variable within the () is equal to false, the code within the {} will not be executed.\n\nNeedCoffee <- FALSE\n\nif (NeedCoffee){\n print(\"Take a break\")\n}\n\n\n\nThese “If” statements will trigger as long as the specified condition within the () is TRUE. For a different example:\n\nRowNumber <- 299\n2 + RowNumber > 300\n\n[1] TRUE\n\n\n\nif (2 + RowNumber > 3){\n print(\"Stop Iterating\")\n}\n\n[1] \"Stop Iterating\"\n\n\n\n\nWhen you add an ! in front a conditional, it flips the expected outcome.\n\nItsRaining <- TRUE\n\nif (ItsRaining){print(\"Bring an Umbrella\")}\n\n[1] \"Bring an Umbrella\"\n\n\n\n!ItsRaining\n\n[1] FALSE\n\n\n\nif (!ItsRaining){print(\"Bring an Umbrella\")}\n\n\nItsRaining <- TRUE\n\nif (!ItsRaining){print(\"Bring Sunglasses\")}\n\n\n\nWe will explore more complicated conditionals throughout the course, but for now, let’s implement a couple simple ones in the context of copying over the .fcs files in Infants over to a new target3 folder.", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#relocate", + "href": "course/04_IntroToTidyverse/slides.html#relocate", + "title": "04 - Introduction to Tidyverse", + "section": "relocate", + "text": "relocate\n\n\n\n\n\n\n\n\n.\n\n\nAlternatively, we occasionally want to move one column. While we could respecify the location using select(), specifying the names of all the other columns out in a line of code to just to rearrange one does not sound like a good use of time. For this reason, the second dplyr function we will be learning is the relocate() function." }, { - "objectID": "course/02_FilePaths/index.html#conditionals-in-practice", - "href": "course/02_FilePaths/index.html#conditionals-in-practice", - "title": "02 - File Paths", - "section": "Conditionals in practice", - "text": "Conditionals in practice\nFirst off, let’s write a conditional to check if there is a target3 folder within data.\n\nfiles_present <- list.files(\"data\", full.names=FALSE, recursive=FALSE)\nfiles_present\n\n\n\n\n\nFolderTarget3 <- file.path(\"data\", \"target3\")\ndir.exists(FolderTarget3)\n\n\n\n\nWe can write a conditional to create a folder if one does not yet exist.\n\nif (!dir.exists(FolderTarget3)){\n dir.create(FolderTarget3)\n}", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#rename", + "href": "course/04_IntroToTidyverse/slides.html#rename", + "title": "04 - Introduction to Tidyverse", + "section": "rename", + "text": "rename\n\n\n\n\n\n\n\n\n.\n\n\nAt this point, we are able to both move and select particular columns, allowing us to rearrange and subset a larger data.frame object however we want it to appear. However, as we encountered, some of the names contain special characters and spaces, requiring use of tick marks (``) to avoid issues. How can we change a column name?" }, { - "objectID": "course/02_FilePaths/index.html#copying-files", - "href": "course/02_FilePaths/index.html#copying-files", - "title": "02 - File Paths", - "section": "Copying Files", - "text": "Copying Files\nTo copy files to another folder location, we use the file.copy() function. It has two arguments that we will be working with, from being the .fcs files, and to being the folder location we wish to transfer them to. If we tried using them as we currently have them:\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)\n\n\n\n\nThe reason for this error is we are only working with a partial file path, as viewed from our Working directory. In this case, what is needed is the full file.path, so the file.path should also include the upstream folders from your current working directory.\n\ngetwd()\n\n\n\n\nIn this case, we can update the .fcs files location by switching the full.names argument within list.files() from FALSE, to TRUE.\n\nfiles_present <- list.files(\"data\", full.names=TRUE, recursive=FALSE)\nfiles_present\n\n\nAnd filter for those containing “INF” again\n\nInfants <- files_present[str_detect(files_present, \"INF\")]\n\nAnd then try again:\n\n# Variable Infants containing 4 .fcs file names\n\nfile.copy(from=Infants, to=FolderTarget3)", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#pull", + "href": "course/04_IntroToTidyverse/slides.html#pull", + "title": "04 - Introduction to Tidyverse", + "section": "pull", + "text": "pull\n\n\n\n\n\n\n\n\n.\n\n\nSometimes, we may want to retrieve individual values present in a column, to use within either a vector or a list. We can do this using the pull() function, which will retrieve the column contents and strip the column formatting\n\n\n\n\n\n\n\nData |> pull(Date) |> head(10)\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"" }, { - "objectID": "course/02_FilePaths/index.html#removing-files.", - "href": "course/02_FilePaths/index.html#removing-files.", - "title": "02 - File Paths", - "section": "Removing files.", - "text": "Removing files.\nJust like we can add files via R, we can also remove them. However, when we remove them via this route, they are removed permanently, not sent to the recycle bin. We will revisit how later on in the course after you have gained additional experience with file.paths.\n\n?unlink()", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#filter-rows", + "href": "course/04_IntroToTidyverse/slides.html#filter-rows", + "title": "04 - Introduction to Tidyverse", + "section": "filter (Rows)", + "text": "filter (Rows)\n\n\n\n\n\n\n\n\n.\n\n\nSo far, we have been working with dplyr functions primarily used when working with and subsetting columns (including select(), pull(), rename() and relocate()). What if we wanted to work with rows of a data.frame? This is where the filter() function is used." }, { - "objectID": "course/02_FilePaths/index.html#basename", - "href": "course/02_FilePaths/index.html#basename", - "title": "02 - File Paths", - "section": "Basename", - "text": "Basename\nIf we look at Infants with the full.names=TRUE, we see the additional pathing folder has been added, allowing us to successfully copy over the files.\n\nInfants\n\n\n\n\nIf we were trying to retrieve just the local file names from the full.names, we could do so with basename() function. We will use this in combination with additional arguments later in the course\n\nbasename(Infants)", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#mutate", + "href": "course/04_IntroToTidyverse/slides.html#mutate", + "title": "04 - Introduction to Tidyverse", + "section": "mutate", + "text": "mutate\n\n\n\n\n\n\n\n\n.\n\n\nAs we can see, with just these handful of functions, we have the building blocks to rearrange and subset a larger data.frame into a format that we prefer. But what if we wanted to alter the content of a column, or add new columns to an existing data.frame? This is where the mutate() function can be used." }, { - "objectID": "course/02_FilePaths/index.html#recursive", - "href": "course/02_FilePaths/index.html#recursive", - "title": "02 - File Paths", - "section": "Recursive", - "text": "Recursive\nAnd finally that we have created additional nested folders and populated them with fcs files, let’s see what setting list.files() recursive argument to TRUE\n\nall_files_present <- list.files(full.names=TRUE, recursive=TRUE)\nall_files_present \n\n\n\n\nIn this case, all files in all folders within the working directory are shown. This can be useful when exploring folder contents, but if there are a lot of files present within the folder, it will take a while to return the list.", - "crumbs": [ - "About", - "Intro to R", - "02 - File Paths" - ] + "objectID": "course/04_IntroToTidyverse/slides.html#arrange", + "href": "course/04_IntroToTidyverse/slides.html#arrange", + "title": "04 - Introduction to Tidyverse", + "section": "arrange", + "text": "arrange\n\n\n\n\n\n\n\n\n.\n\n\nAnd while we are here, let’s rearrange the rows so that they are descending based on the Tcell proportion. We can use this by using the desc() and arrange() functions from dplyr:\n\n\n\n\n\n\n\nTidyData <- TidyData |> arrange(desc(TcellsRounded))" }, { - "objectID": "course/02_FilePaths/index.html#saving-changes-to-version-control", - "href": "course/02_FilePaths/index.html#saving-changes-to-version-control", - "title": "02 - File Paths", - "section": "Saving changes to Version Control", - "text": "Saving changes to Version Control\nAnd as is good practice, to maintain version control, let’s stage all the files and folders we created today within the Week2 Project Folder, write a commit message, and send these files back to GitHub until they are needed again next time.", + "objectID": "course/04_IntroToTidyverse/index.html", + "href": "course/04_IntroToTidyverse/index.html", + "title": "04 - Introduction to Tidyverse", + "section": "", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", "crumbs": [ "About", "Intro to R", - "02 - File Paths" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html", - "href": "course/03_InsideFCSFile/index.html", - "title": "03 - Inside an FCS File", - "section": "", - "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", + "objectID": "course/04_IntroToTidyverse/index.html#read.csv", + "href": "course/04_IntroToTidyverse/index.html#read.csv", + "title": "04 - Introduction to Tidyverse", + "section": "read.csv", + "text": "read.csv\nWe will start by first loading in our copied over dataset (Dataset.csv) from it’s location in the project folder. If you are following the organization scheme we have been using throughout the course, your file path will look something like this:\n\nthefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWe encourage using the file.path function to build our file paths, as this keeps our code reproducible and replicable when a project folder is copied to other people’s computers that differ on whether the operating system uses forward or backward slash separation between folders.\n\n\nAbove, we directly specified the name (Dataset) and filetype (.csv) of the file we wanted in the last argument of the file.path (“Dataset.csv”). This allows us to skip the list.files() step we used last week as we have provided the full file path. While this approach can be faster, if we accidentally mistype the file name, we could end up with an error at the next step due to no files being found with the mistyped name.\nSince our dataset is stored as a .csv file, we will be using the read.csv() function from the utils package (included in our base R software installation) to read it into R. We will also use the colnames() function from last week to get a read-out of the column names.\n\nData <- read.csv(file=thefilepath, check.names=FALSE)\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\nAs we look at the line of code, we now have enough context to decipher that the “file” argument is where we provide a file path to an individual file, but what does the “check.names” argument do?\nLet’s see what happens to the column names when we set “check.names” argument to TRUE:\n\nData_Alternative <- read.csv(thefilepath, check.names=TRUE)\ncolnames(Data_Alternative)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump.\" \"Dump..1\" \"Tcells\" \n[19] \"Vd2.\" \"Vd2..1\" \"Va7.2.\" \n[22] \"Va7.2..1\" \"CD4.\" \"CD4..1\" \n[25] \"CD8.\" \"CD8..1\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\nAs we can see, any column name that contained a special character or a space was automatically converted over to R-approved syntax. However, this resulted in the loss of both +” and “-”, leaving us unable to determine whether we are looking at cells within or outside a particular gate.\n\nBecause of this, it is often better to rename columns individually after import, which we will learn how to do later today.\nFollowing up with what we practiced last week, lets use the head() function to visualize the first few rows of data.\n\nhead(Data, 3)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 Ctrl 2025-07-26 Male HEU-hi 2098368 1894070\n2 INF0100 0 Ctrl 2025-07-26 Male HEU-lo 2020184 1791890\n3 INF0100 4 Ctrl 2025-07-26 Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n\nWhen working in Positron, we could have alternatively clicked on the little grid icon next to our created variable “Data” in the right secondary sidebar, which would have opened the data in our Editor window. From this same window, we can see it is stored as a “data.frame” object type.\n\nWe could also achieve the same window to open using the View() function:\n\nView(Data)\n\nWrapping up our brief recap of last week functions, we can check an objects type using both the class() and str() functions.\n\nclass(Data)\n\n[1] \"data.frame\"\n\n\n\nstr(Data)\n\n'data.frame': 196 obs. of 31 variables:\n $ bid : chr \"INF0052\" \"INF0100\" \"INF0100\" \"INF0100\" ...\n $ timepoint : int 0 0 4 9 0 4 9 4 9 0 ...\n $ Condition : chr \"Ctrl\" \"Ctrl\" \"Ctrl\" \"Ctrl\" ...\n $ Date : chr \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n $ infant_sex : chr \"Male\" \"Male\" \"Male\" \"Male\" ...\n $ ptype : chr \"HEU-hi\" \"HEU-lo\" \"HEU-lo\" \"HEU-lo\" ...\n $ root : int 2098368 2020184 1155040 358624 1362216 1044808 1434840 972056 1521928 2363512 ...\n $ singletsFSC : int 1894070 1791890 1033320 328624 1206309 917398 1265022 875707 1359574 2136616 ...\n $ singletsSSC : int 1666179 1697083 875465 289327 1032946 735579 988445 767323 1175755 1875394 ...\n $ singletsSSCB : int 1537396 1579098 845446 276289 982736 685592 940454 718000 1097478 1732620 ...\n $ CD45 : num 0.595 0.911 0.971 0.982 0.957 ...\n $ NotMonocytes : num 0.882 0.905 0.985 0.986 0.956 ...\n $ nonDebris : num 0.863 0.86 0.958 0.941 0.841 ...\n $ lymphocytes : num 0.642 0.215 0.74 0.651 0.705 ...\n $ live : num 0.902 0.891 0.876 0.915 0.895 ...\n $ Dump+ : num 0.2109 0.0625 0.2002 0.2147 0.3383 ...\n $ Dump- : num 0.691 0.828 0.676 0.701 0.557 ...\n $ Tcells : num 0.28 0.675 0.612 0.631 0.44 ...\n $ Vd2+ : num 0.00812 0.00727 0.00465 0.01135 0.00475 ...\n $ Vd2- : num 0.992 0.993 0.995 0.989 0.995 ...\n $ Va7.2+ : num 0.0145 0.0158 0.0158 0.017 0.0133 ...\n $ Va7.2- : num 0.977 0.977 0.98 0.972 0.982 ...\n $ CD4+ : num 0.634 0.612 0.664 0.438 0.739 ...\n $ CD4- : num 0.343 0.365 0.316 0.534 0.243 ...\n $ CD8+ : num 0.273 0.336 0.286 0.486 0.195 ...\n $ CD8- : num 0.0698 0.0293 0.0294 0.0476 0.0476 ...\n $ Tcells_count : int 164771 208241 371723 111552 291777 271870 487937 220634 415867 184930 ...\n $ lymphocytes_count: int 587573 308583 607477 176662 663667 510730 726238 451047 710964 652155 ...\n $ Monocytes : num 0.118 0.0948 0.0155 0.0145 0.0444 ...\n $ Debris : num 0.1372 0.1397 0.0421 0.0587 0.1592 ...\n $ CD45_count : int 915203 1438047 820570 271304 940733 675857 921660 701657 1066884 1017713 ...", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#getting-set-up", - "href": "course/03_InsideFCSFile/index.html#getting-set-up", - "title": "03 - Inside an FCS File", - "section": "Getting Set Up", - "text": "Getting Set Up\n\n\nSet up File Paths\nHaving copied over the new data to your working project folder (Week 3 or whatever your chosen name), let’s identify the file paths between our working directory and the fcs files. If you retained the same project organization structure we had during Week #2, it may look similar to the following:\n\nPathToDataFolder <- file.path(\"data\")\n\n\nPathToDataFolder\n\n[1] \"data\"\n\n\n\n\n\n\nLocate .fcs files\nWe will now locate our .fcs files. As we saw last week, our computer will need the full file.paths to these individual files, so we will set the list.files() “full.names” argument to TRUE.\n\nfcs_files <- list.files(PathToDataFolder, pattern=\".fcs\", full.names=TRUE)\nfcs_files\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n\nBy contrast, if the “full.names” argument was set to FALSE, we would have retrieved just the file names\n\nlist.files(PathToDataFolder, pattern=\".fcs\", full.names=FALSE)\n\n[1] \"CellCounts4L_AB_05_ND050_05.fcs\"\n\n\nThis would have been the equivalent of running the basename function on the “full.names=TRUE” output.\n\nbasename(fcs_files)\n\n[1] \"CellCounts4L_AB_05_ND050_05.fcs\"", + "objectID": "course/04_IntroToTidyverse/index.html#data.frame", + "href": "course/04_IntroToTidyverse/index.html#data.frame", + "title": "04 - Introduction to Tidyverse", + "section": "data.frame", + "text": "data.frame\nOr alternatively using the new-to-us glimpse() function\n\nglimpse(Data)\n\nError in `glimpse()`:\n! could not find function \"glimpse\"\n\n\n\n\n\n\n\n\nCheckpoint 1\n\n\n\nThis however returns an error. Any idea why this might be occuring?\n\n\n\n\nCode\n# We haven't attached/loaded the package in which the function glimpse is within\n\n\n\n\n\n\n\n\nCheckpoint 2\n\n\n\nHow would we locate a package a not-yet-loaded function is within?\n\n\n\n\nCode\n# We can use double ? to search all installed packages for a function, regardless\n# if the package is attached to the environment or not\n\n??glimpse\n\n\n\nFrom the list of search matches (in the right secondary sidebar), it looks likely that the glimpse() function in the dplyr package was the one we were looking for. This is one the main tidyverse packages we will be using throughout the course. Let’s attach it to our environment via the library() call first and try running glimpse() again.\n\nlibrary(dplyr)\nglimpse(Data)\n\nRows: 196\nColumns: 31\n$ bid <chr> \"INF0052\", \"INF0100\", \"INF0100\", \"INF0100\", \"INF0179…\n$ timepoint <int> 0, 0, 4, 9, 0, 4, 9, 4, 9, 0, 0, 4, 9, 0, 4, 9, 4, 9…\n$ Condition <chr> \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctrl\", \"Ctr…\n$ Date <chr> \"2025-07-26\", \"2025-07-26\", \"2025-07-26\", \"2025-07-2…\n$ infant_sex <chr> \"Male\", \"Male\", \"Male\", \"Male\", \"Male\", \"Male\", \"Mal…\n$ ptype <chr> \"HEU-hi\", \"HEU-lo\", \"HEU-lo\", \"HEU-lo\", \"HU\", \"HU\", …\n$ root <int> 2098368, 2020184, 1155040, 358624, 1362216, 1044808,…\n$ singletsFSC <int> 1894070, 1791890, 1033320, 328624, 1206309, 917398, …\n$ singletsSSC <int> 1666179, 1697083, 875465, 289327, 1032946, 735579, 9…\n$ singletsSSCB <int> 1537396, 1579098, 845446, 276289, 982736, 685592, 94…\n$ CD45 <dbl> 0.5952943, 0.9106762, 0.9705765, 0.9819573, 0.957259…\n$ NotMonocytes <dbl> 0.8820349, 0.9052256, 0.9845400, 0.9855070, 0.955627…\n$ nonDebris <dbl> 0.8627649, 0.8602660, 0.9578793, 0.9412615, 0.840783…\n$ lymphocytes <dbl> 0.6420138, 0.2145848, 0.7403110, 0.6511588, 0.705478…\n$ live <dbl> 0.9020581, 0.8908981, 0.8757665, 0.9153242, 0.895214…\n$ `Dump+` <dbl> 0.21090996, 0.06252775, 0.20023803, 0.21469246, 0.33…\n$ `Dump-` <dbl> 0.6911482, 0.8283703, 0.6755285, 0.7006317, 0.556895…\n$ Tcells <dbl> 0.2804264, 0.6748298, 0.6119129, 0.6314431, 0.439643…\n$ `Vd2+` <dbl> 0.008120361, 0.007265620, 0.004651313, 0.011348967, …\n$ `Vd2-` <dbl> 0.9918796, 0.9927344, 0.9953487, 0.9886510, 0.995246…\n$ `Va7.2+` <dbl> 0.014480704, 0.015774991, 0.015794019, 0.017023451, …\n$ `Va7.2-` <dbl> 0.9773989, 0.9769594, 0.9795547, 0.9716276, 0.981924…\n$ `CD4+` <dbl> 0.6341164, 0.6119112, 0.6639621, 0.4378944, 0.739256…\n$ `CD4-` <dbl> 0.3432825, 0.3650482, 0.3155925, 0.5337331, 0.242668…\n$ `CD8+` <dbl> 0.2734826, 0.3357696, 0.2862104, 0.4861231, 0.195063…\n$ `CD8-` <dbl> 0.06979990, 0.02927858, 0.02938209, 0.04761008, 0.04…\n$ Tcells_count <int> 164771, 208241, 371723, 111552, 291777, 271870, 4879…\n$ lymphocytes_count <int> 587573, 308583, 607477, 176662, 663667, 510730, 7262…\n$ Monocytes <dbl> 0.11796509, 0.09477437, 0.01545999, 0.01449297, 0.04…\n$ Debris <dbl> 0.13723513, 0.13973396, 0.04212072, 0.05873854, 0.15…\n$ CD45_count <int> 915203, 1438047, 820570, 271304, 940733, 675857, 921…\n\n\nWe notice that while similar to the str() output, glimpse() handles spacing a little differently, and includes the dimensions at the top. However, we can also retrieve the dimensions directly using the dim() function (which maintains the row followed by column position convention of base R (ex. [196,31]))\n\ndim(Data)\n\n[1] 196 31", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#flowcore", - "href": "course/03_InsideFCSFile/index.html#flowcore", - "title": "03 - Inside an FCS File", - "section": "flowCore", - "text": "flowCore\nWe will be using the flowCore package, which is the oldest and most-frequently downloaded flow cytometry package on Bioconductor.\n\n\nCode\n# I have attached this code for anyone that is interested in seeing how these plots were made. The content is not part of today's lesson, so if you are just starting off, we will cover the details of data-tidying and creating ggplot objects over the next several weeks. Best, David\n\n# Load required packages via a library call\n\nlibrary(dplyr) # CRAN\nlibrary(stringr) # CRAN\nlibrary(ggplot2) # CRAN\n#library(plotly) # Using the :: to access \n\n# Loading in the dataset contained within the .csv file\nBioconductorFlow_path <- file.path(PathToDataFolder, \"BioconductorFlow.csv\")\nBioconductorFlowPackages <- read.csv(BioconductorFlow_path, check.names=FALSE)\nBioconductorFlowPackages <- BioconductorFlowPackages |>\n arrange(desc(since)) |> mutate(package = factor(package, levels = package))\n\n# Newer Base R Pipe : |> \n# Older mostly equivalent Magrittr Pipe %>% \n\n\n\n\nCode\n# Notice the code-chunk eval arguments above dictate the shape of the final rendered plot. \n\n# Taking the imported dataset and passing it to ggplot2 to create the first plot. \n\nplot <- ggplot(BioconductorFlowPackages,\n aes(x = 0, xend = since, y = package, yend = package)) +\n geom_segment(linewidth = 2, color = \"steelblue\") +\n scale_x_continuous(trans = \"reverse\", \n breaks = seq(0, max(BioconductorFlowPackages$since), by = 5)) +\n labs(\n x = \"Years in Bioconductor\",\n y = NULL,\n title = \"Bioconductor Flow Cytometry R packages\"\n ) +\n theme_bw()\n\n# Taking the static plot and making it interactive using the plotly package\n\nplotly::ggplotly(plot)\n\n\n\n\n\n\n\n\nCode\n# Retrieving the names of Bioconductor flow cytometry R packages in correct release order. \n\nHistoricalOrder <- BioconductorFlowPackages |> pull(package)\n\n# Bringing in 2025 package usage dataset from a .csv file\nBioconductorUsage_path <- file.path(PathToDataFolder, \"BioconductorDownloads.csv\")\nBioconductorUsage <- read.csv(BioconductorUsage_path, check.names=FALSE)\nBioconductorUsage <- BioconductorUsage |> dplyr::filter(Month %in% \"all\")\n\n# Note, dplyr::filter is used due to flowCore also having a filter function, which causes conflicts once it is attached to the local environment. \n\n# Combining both data.frames for use in the plot\n\nDataset <- left_join(BioconductorFlowPackages, BioconductorUsage, by=\"package\")\n\n# Rearranging the order in which packages are displayed\n\nDataset$package <- factor(Dataset$package, levels=HistoricalOrder)\n\n\n\n\nCode\n# Generating the 2nd plot with ggplot2\n\nplot <- ggplot(Dataset, aes(x = since, y = Nb_of_distinct_IPs)) +\n geom_point(aes(color = package), size = 3, alpha = 0.7) + \n labs(\n x = \"Years in Bioconductor\",\n y = \"Number of Yearly Downloads\",\n title = \"\",\n color = \"Package\"\n ) +\n theme_bw()\n\n# Making it interactive with plotly\n\nplotly::ggplotly(plot)\n\n\n\n\n\n\nflowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:\n\nAs with all our R packages, we first need to make sure flowCore is attached to our local environment via the library call.\n\nlibrary(flowCore)\n\nThe function we will be using today is the read.FCS() function. Do you remember how to access the help documentation?\n\n\nCode\n# Or when in Positron, hovering over the highlighted function name within the code-chunk\n\n?flowCore::read.FCS\n\n\nTo start, lets select just the first .fcs file. We will do this by indexing the first item within fcs_files via the square brackets [].\n\nfirstfile <- fcs_files[1]\nfirstfile\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"", + "objectID": "course/04_IntroToTidyverse/index.html#column-value-type", + "href": "course/04_IntroToTidyverse/index.html#column-value-type", + "title": "04 - Introduction to Tidyverse", + "section": "Column value type", + "text": "Column value type\nAs we saw last week, functions often need values that match a certain type (the paintbrush needing paint analogy). As we inspect the columns of Data, we can notice some of the columns contain values within that are character (ie. “char”) values. Others appear to contain numeric values (which are subtyped as either double (“ie. dbl”) or integer (ie. “int”)). At first glance, we do not appear to have any logical (ie. TRUE or FALSE) columns in this dataset.\n\nIf we were trying to verify type of values contained within a data.frame column, we could employ several similarly-named functions (is.character(), is.numeric() or is.logical()) to check\n\n# colnames(Data) # To recheck the column names\n\nis.character(Data$bid)\n\n[1] TRUE\n\n\n\nis.numeric(Data$bid)\n\n[1] FALSE\n\n\n\n# colnames(Data) # To recheck the column names\n\nis.character(Data$Tcells_count)\n\n[1] FALSE\n\n\nFor numeric columns using the is.numeric() function, we can also be subtype specific using either is.integer() or is.double().\n\n# colnames(Data) # To recheck the column names\n\nis.numeric(Data$Tcells_count)\n\n[1] TRUE\n\nis.integer(Data$Tcells_count)\n\n[1] TRUE\n\nis.double(Data$Tcells_count)\n\n[1] FALSE\n\n\n\n\n\n\n\n\nReminder\n\n\n\nAs we observed last week with keywords, column names that contain special characters like $ or spaces will need to be surrounded with tick marks in order for the function to be able to run.\n\n\n\n# colnames(Data) # To recheck the column names\nis.numeric(Data$CD8-)\n\nError in parse(text = input): <text>:2:21: unexpected ')'\n1: # colnames(Data) # To recheck the column names\n2: is.numeric(Data$CD8-)\n ^\n\n\n\n# colnames(Data) # To recheck the column names\nis.numeric(Data$`CD8-`)\n\n[1] TRUE", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#flowframe", - "href": "course/03_InsideFCSFile/index.html#flowframe", - "title": "03 - Inside an FCS File", - "section": "flowFrame", - "text": "flowFrame\nFor read.FCS(), it accepts several arguments. The argument “filename” is where we provide our file.path to .fcs file that we wish to load into R. Let’s go ahead and do so\n\nread.FCS(filename=firstfile)\n\nPlease note, if you are doing this with your own .fcs files, you will need to provide two additional arguments, “transformation” = FALSE, and “truncate_max_range” = FALSE for the files to be read in correctly. We will revisit the reasons why in Week #5.\n\nread.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot\n\n\nIn this case, we can see the .fcs file has been read into R as a “flowFrame” object. We can also see the file name, as well as details about the number of cells, and number of columns (whether detectors (for raw spectral flow data) or fluorophores (for unmixed spectral flow data)).\n\nDirectly below we see what resembles a table. At first glance, the only column with an immediately discernable purpose is the one with the name column, which is listing the detectors present on a Cytek Aurora.\n\nAnd finally, at the bottom we reach a line that tells us that for this .fcs files, 599 keyword can be found in a description slot.\n\n\n\nSo let’s get our bearings, we have loaded in an .fcs file to R, but let’s use some of the concepts we covered last week to try to understand a bit about what type or class of object we are working with. From the output, we saw the words flowFrame object, so let’s read it back in again, but assign it to an variable/object called flowFrame so that we can use the type-discerning functions we worked with last week on.\n\nflowFrame <- read.FCS(filename=firstfile, transformation = FALSE, truncate_max_range = FALSE)\n\nAs we create this variable, if we have the session tab selected on our right secondary side bar, we see it appear:\n\nIf we were to use the type-determining functions we learned last week\n\nclass(flowFrame)\n\n[1] \"flowFrame\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nflowFrames are a class of object with a structure defined within the flowCore package. They are used to work with the data contained within individual .fcs files. Looking again at the right secondary side bar, we can see that it shows up as a ““S4 class flowFrame package flowCore”“” with 3 slots, with the words flowFrame adjacent to it.\nA perfectly valid first reaction to first reading this is “well how should I know what any of this means?”. Powering through this initial discomfort, let’s go ahead and click on the dropdown arrow next to the variables name and see if we get any additional clarity on the issue.\n\nWhen we do so, three additional drop-downs appear. Based on the previous line that mentioned 3 slots, we could infer that each line corresponds to one of those slots.\nWhat we are encountering with flowFrame is our first example of an S4 object type. These more-complicated object types are quite common for the various Bioconductor affilitated R packages.\nThese objects will usually appear with either S4 or S3 in their metadata, and are made up of various simpler object types that are cobbled together within the larger object, usually occupying individual slots.\nWhat advantage this bundling provides will be something we revisit throughout the course as you encounter more of these S4/S3 objects.\n\n\n\nexprs\nThe first slot within the flowFrame object shows up with the name “exprs”. For the exprs object, glancing at it’s middle column, we can based on the 100 rows and 61 columns, that it is likely a matrix-style object. We might also recall we saw similar numbers in the printed output when we ran read.FCS()earlier.\n\nWhich likely means that “exprs” slot is where the MFI data for the individual acquired cells within our .fcs file is being stored. Within Positron, for a matrix object, we can click on the little grid symbol on the far right to open up the table within editor.\n\nIf we utilize the scroll bars, we can see that the individual detectors (in the case of uploading a raw spectral fcs file, they would appear as fluorophores for unmixed spectral or conventional fcs files) occupy the individual columns, which are named. The rows are not named, but number 100, matching the number of cells present in the .fcs file. Additionally, on the far left there is a little summary table about the overall data.\n\nLet’s go ahead and assign this matrix to a new variable/object so that we can explore it later. Since flowFrame is an S4 object, it’s slots can be individually accessed by adding the @ symbol and the respective slot name.\n\nMFI_Matrix <- flowFrame@exprs\n\nAlternatively, we can use the Bioconductor helper function exprs() to get data held in that slot\n\nMFI_Matrix_Alternate <- exprs(flowFrame)\n\nIn the case of the above, this displayed text output to the console would be unwiedly to display all at once. If we wanted to only see the first five rows, we could use the head() function, and provide a value of 5.\n\nhead(MFI_Matrix, 5)\n\n Time UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A\n[1,] 38823 37.79983 -184.479996 353.87714 1106.22998 1145.18140 2130.21899\n[2,] 39780 234.23021 -98.456429 26.43876 70.65833 -89.93541 -29.14263\n[3,] 267292 -117.96355 40.732426 473.94574 1177.86975 1516.70935 1985.46130\n[4,] 128101 289.87671 -2.723389 -54.11960 -163.71489 32.62989 -134.90411\n[5,] 255221 -104.50541 -71.163338 567.57562 610.23627 1416.61328 2868.16040\n UV7-A UV8-A UV9-A UV10-A UV11-A UV12-A UV13-A\n[1,] 4376.34277 3246.7952 32050.65039 8123.2637 1992.5785 1070.3323 956.43573\n[2,] -26.34649 -162.6675 17.98848 271.9152 154.8575 163.5411 -32.81524\n[3,] 3658.87671 4140.1724 59792.16406 14013.7969 3427.4324 1668.7588 1071.14636\n[4,] 739.71960 402.9025 427.37534 315.6364 -223.0423 145.7121 127.03777\n[5,] 4034.58789 3234.6626 40126.46484 10325.0371 1974.0907 1033.8450 -21.57245\n UV14-A UV15-A UV16-A SSC-H SSC-A V1-A V2-A\n[1,] 290.8685 385.49921 670.97687 657613 750760.12 1171.1390 154.5628\n[2,] -104.9198 103.41382 71.41528 83481 81552.85 266.2424 705.2527\n[3,] 730.1430 214.93053 252.75406 890845 1183519.00 1196.0931 1183.1105\n[4,] -207.8978 -55.37944 -45.10131 75103 72457.33 227.9926 556.9189\n[5,] 273.6271 960.16290 341.20633 415791 501690.97 717.2498 929.9780\n V3-A V4-A V5-A V6-A V7-A V8-A\n[1,] 1346.4488525 1706.9260 1923.50940 898.2527 3162.55371 83596.5078\n[2,] 244.3218689 341.0508 381.15939 87.1600 151.68785 119.5544\n[3,] 2087.0092773 824.6352 1635.27258 1613.9069 4653.16260 176981.6094\n[4,] -0.8137281 205.4732 18.12125 179.6371 -69.50061 -132.4348\n[5,] 1358.4512939 788.6506 1208.81006 1156.7040 3118.42627 104951.2578\n V9-A V10-A V11-A V12-A V13-A V14-A\n[1,] 32506.7617 27161.5137 6236.072754 2220.303223 2023.39966 753.589355\n[2,] -79.7691 -109.1783 -73.991196 114.375542 -11.53453 124.986206\n[3,] 69236.4297 57626.8984 13175.838867 4534.874023 3434.38989 1995.172363\n[4,] 129.2739 231.8918 -5.473321 8.792875 -24.62049 -8.212234\n[5,] 42090.0781 34104.3164 7620.552734 3103.544189 2426.43359 650.836304\n V15-A V16-A FSC-H FSC-A SSC-B-H SSC-B-A B1-A\n[1,] 510.9540 228.34962 1055905 1217097.50 716733 815959.06 606.6683\n[2,] -207.3494 -28.96272 79696 83439.11 104575 103132.83 195.2795\n[3,] 1321.8030 615.05560 1092481 1453969.38 757351 982038.31 2010.5110\n[4,] -133.7503 -34.32619 64760 60415.23 67955 66806.13 -146.8936\n[5,] 290.2892 473.32599 1038362 1184479.00 425296 522873.12 1015.5981\n B2-A B3-A B4-A B5-A B6-A B7-A\n[1,] 416.98294 4172.4712 192400.0938 93929.9375 54236.3320 19342.6445\n[2,] 333.25662 332.1675 -230.9639 196.7810 292.8945 -187.2845\n[3,] 2150.21826 10106.9551 437801.5625 212176.1562 124294.3594 45068.3008\n[4,] -34.90987 165.7988 675.0156 136.3076 482.8665 133.0948\n[5,] 639.77527 6034.0200 244022.6094 118871.4609 68616.9688 24067.7949\n B8-A B9-A B10-A B11-A B12-A B13-A\n[1,] 10507.24219 9498.1270 4465.50928 1668.048096 2199.9475 1581.7345\n[2,] 70.90886 -334.3563 188.05545 -663.359619 -163.2331 27.9856\n[3,] 24289.59180 22500.1914 10624.99219 4684.497559 3471.7749 2727.3904\n[4,] 432.28091 246.8794 -94.44906 2.905877 106.8489 283.3633\n[5,] 14182.12793 13019.7100 5577.33984 2753.355957 1279.3009 1423.0276\n B14-A R1-A R2-A R3-A R4-A R5-A\n[1,] 1487.56860 147.1335 129.867630 35.90353 267.23999 49.79849\n[2,] 205.82298 -142.9224 66.516052 113.63218 -94.41375 98.13978\n[3,] 2371.95850 -128.3749 -105.482544 726.48547 18.87000 95.47879\n[4,] 33.24665 127.5455 122.607941 37.83584 -82.87500 -343.83768\n[5,] 1565.72742 -266.4482 -3.350622 -178.39566 -117.10875 -100.10384\n R6-A R7-A R8-A\n[1,] -732.7097 42.83144 248.56728\n[2,] 143.4497 -263.28741 -85.83299\n[3,] -194.4526 -84.08820 -301.46066\n[4,] 82.3745 60.27896 -94.38461\n[5,] -182.0066 184.36417 186.17207\n\n\nThis is much more workable, especially on a small laptop screen. We can see that there are names for each column corresponding to detector/fluorophore/metal depending on the .fcs file we are accessing. Lets retrieve these column names using the colnames() function.\n\nColumnNames <- colnames(MFI_Matrix)\nColumnNames\n\n $P1N $P2N $P3N $P4N $P5N $P6N $P7N $P8N \n \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \"UV7-A\" \n $P9N $P10N $P11N $P12N $P13N $P14N $P15N $P16N \n \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \"UV14-A\" \"UV15-A\" \n $P17N $P18N $P19N $P20N $P21N $P22N $P23N $P24N \n \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \"V3-A\" \"V4-A\" \"V5-A\" \n $P25N $P26N $P27N $P28N $P29N $P30N $P31N $P32N \n \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \n $P33N $P34N $P35N $P36N $P37N $P38N $P39N $P40N \n \"V14-A\" \"V15-A\" \"V16-A\" \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \n $P41N $P42N $P43N $P44N $P45N $P46N $P47N $P48N \n \"B2-A\" \"B3-A\" \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \n $P49N $P50N $P51N $P52N $P53N $P54N $P55N $P56N \n \"B10-A\" \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n $P57N $P58N $P59N $P60N $P61N \n \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\nSomething interesting occurred when this occurred, we can see in addition to the detector names directly above each a “$P#N” pattern appear, with # standing for increasing numbers. If we recall, we saw something similar in the first output column when we first ran read.FCS().\n\nLets break out the str() and class() functions from last week and see what we can find out about why this is occuring.\n\nstr(ColumnNames)\n\n Named chr [1:61] \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" ...\n - attr(*, \"names\")= chr [1:61] \"$P1N\" \"$P2N\" \"$P3N\" \"$P4N\" ...\n\n\nIn this case we can see that we don’t just have a vector (list) similar to what we saw with Fluorophores object last week, because instead of a chr [1:61] we get back a Named chr [1:61] designation. What we see is that in this case, each value has a corresponding index name as well. (ex. $P1N, $P2N, etc.) Let’s double check with class() function.\n\nclass(ColumnNames)\n\n[1] \"character\"\n\n\nWe can see that everything is character, but it doesn’t inform us that each index was named. This is one of the reasons it is best when trying to see what type of an object something is, to use multiple functions, to avoid missing some important details.\nIf we were trying to remove the names, being left with just the values (similar to what we saw with the vector-style list last week), we could use the unname() function:\n\nunname(ColumnNames)\n\n [1] \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \n [8] \"UV7-A\" \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \n[15] \"UV14-A\" \"UV15-A\" \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \n[22] \"V3-A\" \"V4-A\" \"V5-A\" \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \n[29] \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \"V14-A\" \"V15-A\" \"V16-A\" \n[36] \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \"B2-A\" \"B3-A\" \n[43] \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \"B10-A\" \n[50] \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n[57] \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\n\n\nLet’s return to the right sidebar to continue our exploration, by clicking on the dropdown arrow for exprs in the side-bar\n\nThe output is less user-friendly than what we saw when clicking on the little grid. If we scroll down far enough, we get down as far as [,61], which corresponds to the total number of columns.\n\nIn base R, column order can be defined by placing the corresponding column index number after a comma “,”. So for this case, the first column would be designated would be [,1] while the last column would be designated [,61].\n\nMFI_Matrix[,1]\n\n [1] 38823 39780 267292 128101 255221 79210 196643 83855 109315 26128\n [11] 114423 120001 71831 70551 197021 239994 252611 223012 152780 171822\n [21] 172611 168464 191503 253015 73885 82221 176641 128533 4117 191632\n [31] 191229 58093 141776 265894 55593 227555 233212 248578 95165 171934\n [41] 1360 251847 195764 147503 118723 1060 90033 253553 268268 74610\n [51] 23531 150119 226391 201568 179264 79944 196686 252667 117309 3903\n [61] 77690 195142 229873 254472 179943 236618 68193 87154 28541 78622\n [71] 155664 50115 40866 70753 260118 12033 96149 20740 37461 73998\n [81] 231939 192329 88649 197664 86006 142486 159539 251298 104864 164090\n [91] 102380 218968 145182 239323 261272 118979 17202 194277 229284 258723\n\n\n\nMFI_Matrix[,61]\n\n [1] 248.567276 -85.832993 -301.460663 -94.384613 186.172073 -461.407745\n [7] 843.507080 277.516113 -106.166855 281.633545 195.927261 818.865723\n [13] 734.996460 209.356476 206.442596 279.859894 518.165222 56.947498\n [19] 285.751007 857.126343 -94.384613 -213.030518 62.585236 138.409653\n [25] 118.012444 328.255768 -61.635056 185.285233 464.384979 5.637739\n [31] -66.385956 31.229273 1198.241211 185.475266 873.279419 457.607025\n [37] -73.353951 37.880539 729.168640 221.772171 -169.512238 348.272888\n [43] -338.391022 845.534119 -4.434176 620.024597 610.269409 -193.900208\n [49] 230.830566 -23.754517 607.102112 14.949510 -34.333195 -169.132172\n [55] -96.158287 220.631958 125.297165 -15.202891 -126.057304 193.393448\n [61] 90.203819 -277.706146 590.505615 911.096619 -92.230873 347.259369\n [67] 135.559113 369.430267 -62.015125 -180.597672 -146.517868 810.440796\n [73] 134.038818 -165.268097 727.711731 -88.746880 62.901962 203.275330\n [79] 436.196289 -242.676147 -40.857769 222.278946 -170.272385 525.513245\n [85] -41.491222 176.670258 201.501648 175.530045 329.839386 474.140167\n [91] -48.142490 -174.833252 46.052090 357.584656 -26.541714 191.493088\n [97] 211.320190 124.790398 -113.324883 343.268616\n\n\nWhat would happen if used a column index number that didn’t exist? Let’s check.\n\nMFI_Matrix[,350]\n\nError in `MFI_Matrix[, 350]`:\n! subscript out of bounds\n\n\nWe get back an error message telling us the subscript is out of bounds.\nSo if columns are specified by a number after the comma (ex. [,1]), how are rows specified? In R, rows would be specified by a number before the comma [1,]\n\nMFI_Matrix[1,]\n\n Time UV1-A UV2-A UV3-A UV4-A \n 38823.00000 37.79983 -184.48000 353.87714 1106.22998 \n UV5-A UV6-A UV7-A UV8-A UV9-A \n 1145.18140 2130.21899 4376.34277 3246.79517 32050.65039 \n UV10-A UV11-A UV12-A UV13-A UV14-A \n 8123.26367 1992.57849 1070.33228 956.43573 290.86853 \n UV15-A UV16-A SSC-H SSC-A V1-A \n 385.49921 670.97687 657613.00000 750760.12500 1171.13904 \n V2-A V3-A V4-A V5-A V6-A \n 154.56281 1346.44885 1706.92603 1923.50940 898.25269 \n V7-A V8-A V9-A V10-A V11-A \n 3162.55371 83596.50781 32506.76172 27161.51367 6236.07275 \n V12-A V13-A V14-A V15-A V16-A \n 2220.30322 2023.39966 753.58936 510.95404 228.34962 \n FSC-H FSC-A SSC-B-H SSC-B-A B1-A \n1055905.00000 1217097.50000 716733.00000 815959.06250 606.66833 \n B2-A B3-A B4-A B5-A B6-A \n 416.98294 4172.47119 192400.09375 93929.93750 54236.33203 \n B7-A B8-A B9-A B10-A B11-A \n 19342.64453 10507.24219 9498.12695 4465.50928 1668.04810 \n B12-A B13-A B14-A R1-A R2-A \n 2199.94751 1581.73450 1487.56860 147.13348 129.86763 \n R3-A R4-A R5-A R6-A R7-A \n 35.90353 267.23999 49.79849 -732.70966 42.83144 \n R8-A \n 248.56728 \n\n\nAnd while not the focus of today, we could retrieve individual values from a matrix by specifying both a row and a column index number. So for example, if we wanted the MFI value for the UV1-A detector for the first acquired cell (knowing that UV1-A is the 2nd column):\n\nMFI_Matrix[1,2]\n\n UV1-A \n37.79983 \n\n\nFrom our exploration, this looks to be all the information contained within the “exprs” slot, so let’s back up and check on the next slot.\n\n\n\n\nparameters\nAs we look at the next slot in the flowFrame object, we can see that parameters looks like it is going to be another more complex object, as it is showing up as an AnnotatedDataFrame object (defined by the Biobase R package, and itself contains 4 slots).\n\n\nHaving carved our way this far into the heart of an .fcs file, we are not about to call it quits now, so CHARGE my fellow cytometrist!!! Click that drop-down arrow!\n\nHaving survived our charge into the unknown, the four parameter slots appear to be “varMetadata”, “data”, “dimLabels” and “._classVersion_”.\n\n\nvarMetadata\nFortunately for us, both “varMetadata” and “data” at least appear to be table-like objects of a type known as a “data.frame”, so lets click on the grid to open in our editor window.\nIn the case of varMetadata, we seem to have retrieved a column of metadata names.\n\nThese look reminiscent of what we saw at the top of the read.FCS() column outputs previously\n\n\n\ndata\nClicking on the grid for parameters’s data slot will end opening the actual content that was displayed.\n\nLet’s try to retrieve the data contained within this slot and save it as it’s own variable/object within our R session. First, we need to open flowFrame object, then use @ to get inside its parameters slot. Since parameters is also a complex object (AnnotatedDataFrame specifically), we will need to use another @ to get inside its data slot:\n\nParameterData <- flowFrame@parameters@data\n\nhead(ParameterData, 10)\n\n name desc range minRange maxRange\n$P1 Time <NA> 272140 0.00000 272139\n$P2 UV1-A <NA> 4194304 -111.00000 4194303\n$P3 UV2-A <NA> 4194304 -111.00000 4194303\n$P4 UV3-A <NA> 4194304 -111.00000 4194303\n$P5 UV4-A <NA> 4194304 -111.00000 4194303\n$P6 UV5-A <NA> 4194304 -111.00000 4194303\n$P7 UV6-A <NA> 4194304 -111.00000 4194303\n$P8 UV7-A <NA> 4194304 -26.34649 4194303\n$P9 UV8-A <NA> 4194304 -111.00000 4194303\n$P10 UV9-A <NA> 4194304 0.00000 4194303\n\n\nAnd similarly, we could access with the Bioconductor helper function parameters(), but we would need to specify the accessor for data outside the parenthesis.\n\nParameterData_Alternate <- parameters(flowFrame)@data\n\nIf we ran the str() function, we get the following insight into ParameterData’s object type\n\nstr(ParameterData)\n\n'data.frame': 61 obs. of 5 variables:\n $ name : 'AsIs' Named chr \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" ...\n ..- attr(*, \"names\")= chr [1:61] \"$P1N\" \"$P2N\" \"$P3N\" \"$P4N\" ...\n $ desc : 'AsIs' Named chr NA NA NA NA ...\n ..- attr(*, \"names\")= chr [1:61] NA NA NA NA ...\n $ range : num 272140 4194304 4194304 4194304 4194304 ...\n $ minRange: num 0 -111 -111 -111 -111 ...\n $ maxRange: num 272139 4194303 4194303 4194303 4194303 ...\n\n\nWe can see this class of object is a “data.frame”. This is one of the more common object types in R, and we will be seeing these extensively throughout the course. We see that each of the columns appears to be designated by a $ followed by the column name, and then type of column (numeric, character, etc).\n\nIf we are trying to see these columns in R, we notice that data.frame is not like the previous S4 class objets we interacted with, as the @ symbol after doesn’t bring up any suggestions\n\nParameterData@\n\nBy contrast, adding the $ we saw when using the str() function does retrieve the underlying information\n\nParameterData$\n\n\nAs you become more familiar with R, remembering to check what kind of object you are working with, and how to access the contents will with practice become more familiar to you.\nSimilar to what we saw with a matrix, we can subset a data.frame based on the column or row index using square brackets [].\n\nParameterData[,1]\n\n $P1N $P2N $P3N $P4N $P5N $P6N $P7N $P8N \n \"Time\" \"UV1-A\" \"UV2-A\" \"UV3-A\" \"UV4-A\" \"UV5-A\" \"UV6-A\" \"UV7-A\" \n $P9N $P10N $P11N $P12N $P13N $P14N $P15N $P16N \n \"UV8-A\" \"UV9-A\" \"UV10-A\" \"UV11-A\" \"UV12-A\" \"UV13-A\" \"UV14-A\" \"UV15-A\" \n $P17N $P18N $P19N $P20N $P21N $P22N $P23N $P24N \n \"UV16-A\" \"SSC-H\" \"SSC-A\" \"V1-A\" \"V2-A\" \"V3-A\" \"V4-A\" \"V5-A\" \n $P25N $P26N $P27N $P28N $P29N $P30N $P31N $P32N \n \"V6-A\" \"V7-A\" \"V8-A\" \"V9-A\" \"V10-A\" \"V11-A\" \"V12-A\" \"V13-A\" \n $P33N $P34N $P35N $P36N $P37N $P38N $P39N $P40N \n \"V14-A\" \"V15-A\" \"V16-A\" \"FSC-H\" \"FSC-A\" \"SSC-B-H\" \"SSC-B-A\" \"B1-A\" \n $P41N $P42N $P43N $P44N $P45N $P46N $P47N $P48N \n \"B2-A\" \"B3-A\" \"B4-A\" \"B5-A\" \"B6-A\" \"B7-A\" \"B8-A\" \"B9-A\" \n $P49N $P50N $P51N $P52N $P53N $P54N $P55N $P56N \n \"B10-A\" \"B11-A\" \"B12-A\" \"B13-A\" \"B14-A\" \"R1-A\" \"R2-A\" \"R3-A\" \n $P57N $P58N $P59N $P60N $P61N \n \"R4-A\" \"R5-A\" \"R6-A\" \"R7-A\" \"R8-A\" \n\n\nThe individual detectors or fluorophore appear under “name”. For now, based on what we know, the $P# appears to be some sort of name being used as an internal consistent reference to the respective.\n“desc” is appearing empty for this raw spectral fcs file, but if you were to checked an unmixed file, this would be occupied the marker/ligand name assigned to it during the experiment setup.\n“range”, “minRange” and “maxRange” are beyond the scope of today, but are used by both instrument manufacturers and software vendors when setting appropiate scaling for a plot. For the actual details, see the Flow Cytometry Standard documentation.\nHaving exhausted our options under parameters “varMetadata” and “data” slots, let’s continue to the next slot.\n\n\ndimLabels\n\nIn this case, not much is returned. Yey!\n\nflowFrame@parameters@dimLabels\n\n[1] \"rowNames\" \"columnNames\"\n\n\n\n\nclassVersion\nContinuing on to the last slot “.__classVersion__”\n\nflowFrame@parameters@.__classVersion__\n\nAnnotatedDataFrame \n \"1.1.0\" \n\n\nAlso mercifully short, both of these seem to be more involved in defining the S4 class object, and don’t contain anything we need to retrieve today.\n\n\n\n\nDescription\nAt this point, we have explored both “exprs” and “parameter” slots for the flowFrame object we created. Let’s tackle the final slot, named description.\n\nWhen doing so, a very large list is opened within the Positron variables window. While we could scroll through it, it might be easier to retrieve certain number of rows via the console to make interpreting this more structured.\n\nTo retrieve the list itself, we would need to access the description slot of the flowFrame object. Since it is a slot, we will need to use the @ accessor.\n\n\nDescriptionList <- flowFrame@description\n\n\nDescriptionList \n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n$`$CYT`\n[1] \"Aurora\"\n\n$`$CYTOLIB_VERSION`\n[1] \"2.22.0\"\n\n$`$CYTSN`\n[1] \"V0333\"\n\n$`$DATATYPE`\n[1] \"F\"\n\n$`$DATE`\n[1] \"04-Aug-2025\"\n\n$`$ENDANALYSIS`\n[1] \"0\"\n\n$`$ENDDATA`\n[1] \"57711\"\n\n$`$ENDSTEXT`\n[1] \"0\"\n\n$`$ETIM`\n[1] \"13:55:57.02\"\n\n$`$FIL`\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$`$INST`\n[1] \"UMBC\"\n\n$`$MODE`\n[1] \"L\"\n\n$`$NEXTDATA`\n[1] \"0\"\n\n$`$OP`\n[1] \"David Rach\"\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"\n\n$ORIGINALGUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"\n\n$THRESHOLD\n[1] \"(FSC,50000)\"\n\n$TUBENAME\n[1] \"05\"\n\n$USERSETTINGNAME\n[1] \"DTR_CellCounts\"\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n\nThe returned list is a little too large to reasonably explore. We can attempt to subset using the head() function as shown below\n\nhead(DescriptionList, 5)\n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n\nAlternatively, it might be better to subset based on position index\n\nDescriptionList[1:10]\n\n$`$BEGINANALYSIS`\n[1] \"0\"\n\n$`$BEGINDATA`\n[1] \"33312\"\n\n$`$BEGINSTEXT`\n[1] \"0\"\n\n$`$BTIM`\n[1] \"13:55:29.85\"\n\n$`$BYTEORD`\n[1] \"4,3,2,1\"\n\n$`$CYT`\n[1] \"Aurora\"\n\n$`$CYTOLIB_VERSION`\n[1] \"2.22.0\"\n\n$`$CYTSN`\n[1] \"V0333\"\n\n$`$DATATYPE`\n[1] \"F\"\n\n$`$DATE`\n[1] \"04-Aug-2025\"\n\n\nAnd just as we saw for exprs and parameters, there is also a Bioconductor helper keyword() function to access this same information directly from the flowFrame.\n\nDescriptionList_Alternate <- keyword(flowFrame)\n\nIf we run the class() function, we can see that DescriptionList is an actual “list”.\n\nclass(DescriptionList)\n\n[1] \"list\"\n\n\nThis is in contrast to the vectors we have previously generated. While these are also list like, they are what are known as as atomic list, which contain values that are all either characters, numerics or logicals.\n\nFluorophores <- c(\"BV421\", \"FITC\", \"PE\", \"APC\")\nclass(Fluorophores)\n\n[1] \"character\"\n\n\n\nPanelAntibodyCounts <- c(5, 12, 19, 26, 34, 46, 51)\nclass(PanelAntibodyCounts)\n\n[1] \"numeric\"\n\n\n\nSpecimenIndexToKeep <- c(TRUE, TRUE, FALSE, TRUE)\nclass(SpecimenIndexToKeep)\n\n[1] \"logical\"\n\n\nA list on the other hand is not restricted to contain objects composed entirely of a certain atomic type. For example, I could include the three previous vectors into a list using the list() function.\n\nMyListofVectors <- list(Fluorophores, PanelAntibodyCounts, SpecimenIndexToKeep)\nstr(MyListofVectors)\n\nList of 3\n $ : chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n $ : num [1:7] 5 12 19 26 34 46 51\n $ : logi [1:4] TRUE TRUE FALSE TRUE\n\n\nWe can see that with the Description/Keyword list we retrieved from our flowFrame shares a somewhat similar format.\n\nstr(DescriptionList[1:10])\n\nList of 10\n $ $BEGINANALYSIS : chr \"0\"\n $ $BEGINDATA : chr \"33312\"\n $ $BEGINSTEXT : chr \"0\"\n $ $BTIM : chr \"13:55:29.85\"\n $ $BYTEORD : chr \"4,3,2,1\"\n $ $CYT : chr \"Aurora\"\n $ $CYTOLIB_VERSION: chr \"2.22.0\"\n $ $CYTSN : chr \"V0333\"\n $ $DATATYPE : chr \"F\"\n $ $DATE : chr \"04-Aug-2025\"\n\n\nBut in this case, there are also names present ($BEGINANALYSIS, $BEGINDATA, etc). What if we had tried to provide names to our List of Vectors? Would the format match?\nWhen we assigned a name to each of the vectors (by providing an equal to = ), we get the same kind of structure format to what we see in Description.\n\nMyNamedListofVectors <- list(FluorophoresNamed=Fluorophores,\n PanelAntibodyCountsNamed=PanelAntibodyCounts,\n SpecimenIndexToKeepNamed=SpecimenIndexToKeep)\n\nstr(MyNamedListofVectors)\n\nList of 3\n $ FluorophoresNamed : chr [1:4] \"BV421\" \"FITC\" \"PE\" \"APC\"\n $ PanelAntibodyCountsNamed: num [1:7] 5 12 19 26 34 46 51\n $ SpecimenIndexToKeepNamed: logi [1:4] TRUE TRUE FALSE TRUE\n\n\nWe could then subsequently be able to isolate items from that list using the $ operator.\n\nMyNamedListofVectors$\n\n\nAlternatively, we could also access by list index position\n\nMyNamedListofVectors[1]\n\n$FluorophoresNamed\n[1] \"BV421\" \"FITC\" \"PE\" \"APC\" \n\n\nRemembering back to the original output from read.FCS() we remember that it mentioned 599 keywords being in the description slot, so now we know that this is what was being referenced.", + "objectID": "course/04_IntroToTidyverse/index.html#select-columns", + "href": "course/04_IntroToTidyverse/index.html#select-columns", + "title": "04 - Introduction to Tidyverse", + "section": "select (Columns)", + "text": "select (Columns)\nNow that we have read in our data, and have a general picture of the structure and contents, lets start learning the main dplyr functions we will be using throughout the course. To do this, lets go ahead and attach dplyr to our local environment via the library() call.\n\nlibrary(dplyr)\n\nWe will start with the select() function. It is used to “select” a column from a data.frame type object. In the simplest usage, we provide the name of our data.frame variable/object as the first argument after the opening parenthesis. This is then followed by the name of the column we want to select as the second argument (let’s place around the “” around the column name for now)\n\nDateColumn <- select(Data, \"Date\")\nDateColumn[1:10,]\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nThis results in the column being selected, resulting in the new object containing only that subsetted out column from the original Data object.\n\nPipe Operators\nWhile the above line of code works to select a column, when you encounter select() out in the wild, it will more often be in a line of code that looks like this:\n\nDateColumn <- Data |> select(\"Date\")\nDateColumn[1:10,]\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\n… “What in the world is that thing |> ?” …\nGlad you asked! An useful feature of the tidyverse packages is their use of pipes (either the original magrittr package’s “%>%” or base R version >4.1.0's “|>”“), usually appearing like this:\n\n# magrittr %>% pipe\n\nDateColumn <- Data %>% select(\"Date\")\n\n# base R |> pipe\nDateColumn <- Data |> select(\"Date\")\n\n… “How do we interpret/read that line of code?” …\nLet’s break it down, starting off just to the right of the assignment arrow (<-) with our data.frame “Data”.\n\nData\n\nWe then proceed to read to the right, adding in our pipe operator. The pipe essentially serves as an intermediate passing the contents of data onward to the subsequent function.\n\nData |> \n\nIn our case, this subsequent function is the select() function, which will select a particular column from the available data. When using the pipe, the first argument slot we saw for “select(Data,”Date”)” is occupied by the contents Data that are being passed by the pipe.\n\nData |> select()\n\nTo complete the transfer, we provide the desired column name to select() to act on (“Date” in this case)\n\nData |> select(\"Date\")\n\nIn summary, contents of Data are passed to the pipe, and select runs on those contents to select the Date column\n\nData |> select(\"Date\")\n\nOne of the main advantages for using pipes, is they can be linked together, passing resulting objects of one operation on to the next pipe and subsequent function. We can see this in operation in the example below where we hand off the isolated “Date” column to the nrow() function to determine number of rows. We will use pipes throughout the course, so you will gradually gain familiarity as you encounter them.\n\nData |> select(\"Date\") |> nrow()\n\n[1] 196\n\n\nFor those with prior R experience, you will be more familiar with the older magrittr %>% pipe. The base R |> pipe operator was introduced starting with R version 4.1.0. While mostly interchangeable, they have a few nuances that come into play for more advance use cases. You are welcome to use whichever you prefer (my current preference is |> as it’s one less key to press).\n\n\nR Quirks\n\n\n\n\n\n\nOdd R Behavior # 1\n\n\n\nWhile we used “” around the column name in our previous example, unlike what we encountered with install.packages() when we forget to include quotation marks, select() still retrieves the correct column despite Date not being an environment variable:\n\n\n\nData |> select(Date) |> head(3)\n\n Date\n1 2025-07-26\n2 2025-07-26\n3 2025-07-26\n\n\n\n\n\n\n\n\n.\n\n\n\nThe reasons for this Odd R behaviour are nuanced and for another day. For now, think of it as dplyr R package is picking up the slack, and using context to infer it’s a column name and not an environmental variable/object.\n\n\n\n\nSelecting multiple columns\nSince we are able to select one column, can we select multiple (similar to a [Data[,2:5]] approach in base R)? We can, and they can be positioned anywhere within the data.frame:\n\nSubset <- Data |> select(bid, timepoint, Condition, Tcells, `CD8+`, `CD4+`)\n\nhead(Subset, 3)\n\n bid timepoint Condition Tcells CD8+ CD4+\n1 INF0052 0 Ctrl 0.2804264 0.2734826 0.6341164\n2 INF0100 0 Ctrl 0.6748298 0.3357696 0.6119112\n3 INF0100 4 Ctrl 0.6119129 0.2862104 0.6639621\n\n\nYou will notice that the order in which we selected the columns will dictate their position in the subsetted data.frame object:\n\nSubset <- Data |> select(bid, Tcells, `CD8+`, `CD4+`, timepoint, Condition, )\n\nhead(Subset, 3)\n\n bid Tcells CD8+ CD4+ timepoint Condition\n1 INF0052 0.2804264 0.2734826 0.6341164 0 Ctrl\n2 INF0100 0.6748298 0.3357696 0.6119112 0 Ctrl\n3 INF0100 0.6119129 0.2862104 0.6639621 4 Ctrl", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#early-metadata", - "href": "course/03_InsideFCSFile/index.html#early-metadata", - "title": "03 - Inside an FCS File", - "section": "Early Metadata", - "text": "Early Metadata\nWithin the initial portion, we are getting back metadata keywords related to where and how the particular file was acquired. Keywords of potential interest include:\n\n\n\n\n\n\nStart Time\n\n\n\nWhat time was the .fcs file acquired\n\n\n\n\nDescriptionList$`$BTIM`\n\n[1] \"13:55:29.85\"\n\n\n\n\n\n\n\n\n\nCytometer\n\n\n\nWhat type of cytometer was the .fcs file acquired on\n\n\n\n\nDescriptionList$`$CYT`\n\n[1] \"Aurora\"\n\n\n\n\n\n\n\n\n\n\n\nCytometer Serial Number\n\n\n\nManufacturer Serial Number of the Cytometer\n\n\n\n\nDescriptionList$`$CYTSN`\n\n[1] \"V0333\"\n\n\n\n\n\n\n\n\n\nFCS File Acquisition Date\n\n\n\nWhat was the date of acquisition\n\n\n\n\nDescriptionList$`$DATE`\n\n[1] \"04-Aug-2025\"\n\n\n\n\n\n\n\n\n\n\n\nAcquisition End Time\n\n\n\nWhat time was acquisition stopped\n\n\n\n\nDescriptionList$`$ETIM`\n\n[1] \"13:55:57.02\"\n\n\n\n\n\n\n\n\n\nFile Name\n\n\n\nName of the .fcs file\n\n\n\n\nDescriptionList$`$FIL`\n\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\n\n\n\n\n\n\n\n\n\nOperator\n\n\n\nWho acquired the .fcs file\n\n\n\n\nDescriptionList$`$OP`\n\n[1] \"David Rach\"", + "objectID": "course/04_IntroToTidyverse/index.html#relocate", + "href": "course/04_IntroToTidyverse/index.html#relocate", + "title": "04 - Introduction to Tidyverse", + "section": "relocate", + "text": "relocate\nAlternatively, we occasionally want to move one column. While we could respecify the location using select(), specifying the names of all the other columns out in a line of code to just to rearrange one does not sound like a good use of time. For this reason, the second dplyr function we will be learning is the relocate() function.\nLooking at our Data object, let’s say we wanted to move the Tcells column from its current location to the second column position (right after the bid column). The line of code to do so would look like:\n\nData |> relocate(Tcells, .after=bid) |> head(3)\n\n bid Tcells timepoint Condition Date infant_sex ptype root\n1 INF0052 0.2804264 0 Ctrl 2025-07-26 Male HEU-hi 2098368\n2 INF0100 0.6748298 0 Ctrl 2025-07-26 Male HEU-lo 2020184\n3 INF0100 0.6119129 4 Ctrl 2025-07-26 Male HEU-lo 1155040\n singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nSimilar to what we saw with select(), this approach can also be used for more than 1 column:\n\nData |> relocate(Tcells, Monocytes, .after=bid) |> head(3)\n\n bid Tcells Monocytes timepoint Condition Date infant_sex ptype\n1 INF0052 0.2804264 0.11796509 0 Ctrl 2025-07-26 Male HEU-hi\n2 INF0100 0.6748298 0.09477437 0 Ctrl 2025-07-26 Male HEU-lo\n3 INF0100 0.6119129 0.01545999 4 Ctrl 2025-07-26 Male HEU-lo\n root singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 2098368 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 2020184 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1155040 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Debris CD45_count\n1 587573 0.13723513 915203\n2 308583 0.13973396 1438047\n3 607477 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nWe can also modify the argument so that columns are placed before a certain column\n\nData |> relocate(Tcells, .before=Date) |> head(3)\n\n bid timepoint Condition Tcells Date infant_sex ptype root\n1 INF0052 0 Ctrl 0.2804264 2025-07-26 Male HEU-hi 2098368\n2 INF0100 0 Ctrl 0.6748298 2025-07-26 Male HEU-lo 2020184\n3 INF0100 4 Ctrl 0.6119129 2025-07-26 Male HEU-lo 1155040\n singletsFSC singletsSSC singletsSSCB CD45 NotMonocytes nonDebris\n1 1894070 1666179 1537396 0.5952943 0.8820349 0.8627649\n2 1791890 1697083 1579098 0.9106762 0.9052256 0.8602660\n3 1033320 875465 845446 0.9705765 0.9845400 0.9578793\n lymphocytes live Dump+ Dump- Vd2+ Vd2- Va7.2+\n1 0.6420138 0.9020581 0.21090996 0.6911482 0.008120361 0.9918796 0.01448070\n2 0.2145848 0.8908981 0.06252775 0.8283703 0.007265620 0.9927344 0.01577499\n3 0.7403110 0.8757665 0.20023803 0.6755285 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D\n\nAnd as we might suspect, we could specify a column index location rather than using a column name.\n\nData |> relocate(Date, .before=1) |> head(3)\n\n Date bid timepoint Condition infant_sex ptype root singletsFSC\n1 2025-07-26 INF0052 0 Ctrl Male HEU-hi 2098368 1894070\n2 2025-07-26 INF0100 0 Ctrl Male HEU-lo 2020184 1791890\n3 2025-07-26 INF0100 4 Ctrl Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570\n\n# |> head(3) is used only to make the website output visualization manageable :D", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#detector-values", - "href": "course/03_InsideFCSFile/index.html#detector-values", - "title": "03 - Inside an FCS File", - "section": "Detector Values", - "text": "Detector Values\nThe next major stretch of keywords encode parameter values associated with the individual detectors for at the time of acquisition.\n\nDetectors <- DescriptionList[20:384]\nDetectors\n\n$`$P10B`\n[1] \"32\"\n\n$`$P10E`\n[1] \"0,0\"\n\n$`$P10N`\n[1] \"UV9-A\"\n\n$`$P10R`\n[1] \"4194304\"\n\n$`$P10TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P10V`\n[1] \"710\"\n\n$`$P11B`\n[1] \"32\"\n\n$`$P11E`\n[1] \"0,0\"\n\n$`$P11N`\n[1] \"UV10-A\"\n\n$`$P11R`\n[1] \"4194304\"\n\n$`$P11TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P11V`\n[1] \"377\"\n\n$`$P12B`\n[1] \"32\"\n\n$`$P12E`\n[1] \"0,0\"\n\n$`$P12N`\n[1] \"UV11-A\"\n\n$`$P12R`\n[1] \"4194304\"\n\n$`$P12TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P12V`\n[1] \"469\"\n\n$`$P13B`\n[1] \"32\"\n\n$`$P13E`\n[1] \"0,0\"\n\n$`$P13N`\n[1] \"UV12-A\"\n\n$`$P13R`\n[1] \"4194304\"\n\n$`$P13TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P13V`\n[1] \"434\"\n\n$`$P14B`\n[1] \"32\"\n\n$`$P14E`\n[1] \"0,0\"\n\n$`$P14N`\n[1] \"UV13-A\"\n\n$`$P14R`\n[1] \"4194304\"\n\n$`$P14TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P14V`\n[1] \"564\"\n\n$`$P15B`\n[1] \"32\"\n\n$`$P15E`\n[1] \"0,0\"\n\n$`$P15N`\n[1] \"UV14-A\"\n\n$`$P15R`\n[1] \"4194304\"\n\n$`$P15TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P15V`\n[1] \"975\"\n\n$`$P16B`\n[1] \"32\"\n\n$`$P16E`\n[1] \"0,0\"\n\n$`$P16N`\n[1] \"UV15-A\"\n\n$`$P16R`\n[1] \"4194304\"\n\n$`$P16TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P16V`\n[1] \"737\"\n\n$`$P17B`\n[1] \"32\"\n\n$`$P17E`\n[1] \"0,0\"\n\n$`$P17N`\n[1] \"UV16-A\"\n\n$`$P17R`\n[1] \"4194304\"\n\n$`$P17TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P17V`\n[1] \"1069\"\n\n$`$P18B`\n[1] \"32\"\n\n$`$P18E`\n[1] \"0,0\"\n\n$`$P18N`\n[1] \"SSC-H\"\n\n$`$P18R`\n[1] \"4194304\"\n\n$`$P18TYPE`\n[1] \"Side_Scatter\"\n\n$`$P18V`\n[1] \"334\"\n\n$`$P19B`\n[1] \"32\"\n\n$`$P19E`\n[1] \"0,0\"\n\n$`$P19N`\n[1] \"SSC-A\"\n\n$`$P19R`\n[1] \"4194304\"\n\n$`$P19TYPE`\n[1] \"Side_Scatter\"\n\n$`$P19V`\n[1] \"334\"\n\n$`$P1B`\n[1] \"32\"\n\n$`$P1E`\n[1] \"0,0\"\n\n$`$P1N`\n[1] \"Time\"\n\n$`$P1R`\n[1] \"272140\"\n\n$`$P1TYPE`\n[1] \"Time\"\n\n$`$P20B`\n[1] \"32\"\n\n$`$P20E`\n[1] \"0,0\"\n\n$`$P20N`\n[1] \"V1-A\"\n\n$`$P20R`\n[1] \"4194304\"\n\n$`$P20TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P20V`\n[1] \"352\"\n\n$`$P21B`\n[1] \"32\"\n\n$`$P21E`\n[1] \"0,0\"\n\n$`$P21N`\n[1] \"V2-A\"\n\n$`$P21R`\n[1] \"4194304\"\n\n$`$P21TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P21V`\n[1] \"412\"\n\n$`$P22B`\n[1] \"32\"\n\n$`$P22E`\n[1] \"0,0\"\n\n$`$P22N`\n[1] \"V3-A\"\n\n$`$P22R`\n[1] \"4194304\"\n\n$`$P22TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P22V`\n[1] \"304\"\n\n$`$P23B`\n[1] \"32\"\n\n$`$P23E`\n[1] \"0,0\"\n\n$`$P23N`\n[1] \"V4-A\"\n\n$`$P23R`\n[1] \"4194304\"\n\n$`$P23TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P23V`\n[1] \"217\"\n\n$`$P24B`\n[1] \"32\"\n\n$`$P24E`\n[1] \"0,0\"\n\n$`$P24N`\n[1] \"V5-A\"\n\n$`$P24R`\n[1] \"4194304\"\n\n$`$P24TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P24V`\n[1] \"257\"\n\n$`$P25B`\n[1] \"32\"\n\n$`$P25E`\n[1] \"0,0\"\n\n$`$P25N`\n[1] \"V6-A\"\n\n$`$P25R`\n[1] \"4194304\"\n\n$`$P25TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P25V`\n[1] \"218\"\n\n$`$P26B`\n[1] \"32\"\n\n$`$P26E`\n[1] \"0,0\"\n\n$`$P26N`\n[1] \"V7-A\"\n\n$`$P26R`\n[1] \"4194304\"\n\n$`$P26TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P26V`\n[1] \"303\"\n\n$`$P27B`\n[1] \"32\"\n\n$`$P27E`\n[1] \"0,0\"\n\n$`$P27N`\n[1] \"V8-A\"\n\n$`$P27R`\n[1] \"4194304\"\n\n$`$P27TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P27V`\n[1] \"461\"\n\n$`$P28B`\n[1] \"32\"\n\n$`$P28E`\n[1] \"0,0\"\n\n$`$P28N`\n[1] \"V9-A\"\n\n$`$P28R`\n[1] \"4194304\"\n\n$`$P28TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P28V`\n[1] \"320\"\n\n$`$P29B`\n[1] \"32\"\n\n$`$P29E`\n[1] \"0,0\"\n\n$`$P29N`\n[1] \"V10-A\"\n\n$`$P29R`\n[1] \"4194304\"\n\n$`$P29TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P29V`\n[1] \"359\"\n\n$`$P2B`\n[1] \"32\"\n\n$`$P2E`\n[1] \"0,0\"\n\n$`$P2N`\n[1] \"UV1-A\"\n\n$`$P2R`\n[1] \"4194304\"\n\n$`$P2TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P2V`\n[1] \"1008\"\n\n$`$P30B`\n[1] \"32\"\n\n$`$P30E`\n[1] \"0,0\"\n\n$`$P30N`\n[1] \"V11-A\"\n\n$`$P30R`\n[1] \"4194304\"\n\n$`$P30TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P30V`\n[1] \"271\"\n\n$`$P31B`\n[1] \"32\"\n\n$`$P31E`\n[1] \"0,0\"\n\n$`$P31N`\n[1] \"V12-A\"\n\n$`$P31R`\n[1] \"4194304\"\n\n$`$P31TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P31V`\n[1] \"234\"\n\n$`$P32B`\n[1] \"32\"\n\n$`$P32E`\n[1] \"0,0\"\n\n$`$P32N`\n[1] \"V13-A\"\n\n$`$P32R`\n[1] \"4194304\"\n\n$`$P32TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P32V`\n[1] \"236\"\n\n$`$P33B`\n[1] \"32\"\n\n$`$P33E`\n[1] \"0,0\"\n\n$`$P33N`\n[1] \"V14-A\"\n\n$`$P33R`\n[1] \"4194304\"\n\n$`$P33TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P33V`\n[1] \"318\"\n\n$`$P34B`\n[1] \"32\"\n\n$`$P34E`\n[1] \"0,0\"\n\n$`$P34N`\n[1] \"V15-A\"\n\n$`$P34R`\n[1] \"4194304\"\n\n$`$P34TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P34V`\n[1] \"602\"\n\n$`$P35B`\n[1] \"32\"\n\n$`$P35E`\n[1] \"0,0\"\n\n$`$P35N`\n[1] \"V16-A\"\n\n$`$P35R`\n[1] \"4194304\"\n\n$`$P35TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P35V`\n[1] \"372\"\n\n$`$P36B`\n[1] \"32\"\n\n$`$P36E`\n[1] \"0,0\"\n\n$`$P36N`\n[1] \"FSC-H\"\n\n$`$P36R`\n[1] \"4194304\"\n\n$`$P36TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P36V`\n[1] \"55\"\n\n$`$P37B`\n[1] \"32\"\n\n$`$P37E`\n[1] \"0,0\"\n\n$`$P37N`\n[1] \"FSC-A\"\n\n$`$P37R`\n[1] \"4194304\"\n\n$`$P37TYPE`\n[1] \"Forward_Scatter\"\n\n$`$P37V`\n[1] \"55\"\n\n$`$P38B`\n[1] \"32\"\n\n$`$P38E`\n[1] \"0,0\"\n\n$`$P38N`\n[1] \"SSC-B-H\"\n\n$`$P38R`\n[1] \"4194304\"\n\n$`$P38TYPE`\n[1] \"Side_Scatter\"\n\n$`$P38V`\n[1] \"241\"\n\n$`$P39B`\n[1] \"32\"\n\n$`$P39E`\n[1] \"0,0\"\n\n$`$P39N`\n[1] \"SSC-B-A\"\n\n$`$P39R`\n[1] \"4194304\"\n\n$`$P39TYPE`\n[1] \"Side_Scatter\"\n\n$`$P39V`\n[1] \"241\"\n\n$`$P3B`\n[1] \"32\"\n\n$`$P3E`\n[1] \"0,0\"\n\n$`$P3N`\n[1] \"UV2-A\"\n\n$`$P3R`\n[1] \"4194304\"\n\n$`$P3TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P3V`\n[1] \"286\"\n\n$`$P40B`\n[1] \"32\"\n\n$`$P40E`\n[1] \"0,0\"\n\n$`$P40N`\n[1] \"B1-A\"\n\n$`$P40R`\n[1] \"4194304\"\n\n$`$P40TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P40V`\n[1] \"1013\"\n\n$`$P41B`\n[1] \"32\"\n\n$`$P41E`\n[1] \"0,0\"\n\n$`$P41N`\n[1] \"B2-A\"\n\n$`$P41R`\n[1] \"4194304\"\n\n$`$P41TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P41V`\n[1] \"483\"\n\n$`$P42B`\n[1] \"32\"\n\n$`$P42E`\n[1] \"0,0\"\n\n$`$P42N`\n[1] \"B3-A\"\n\n$`$P42R`\n[1] \"4194304\"\n\n$`$P42TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P42V`\n[1] \"471\"\n\n$`$P43B`\n[1] \"32\"\n\n$`$P43E`\n[1] \"0,0\"\n\n$`$P43N`\n[1] \"B4-A\"\n\n$`$P43R`\n[1] \"4194304\"\n\n$`$P43TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P43V`\n[1] \"473\"\n\n$`$P44B`\n[1] \"32\"\n\n$`$P44E`\n[1] \"0,0\"\n\n$`$P44N`\n[1] \"B5-A\"\n\n$`$P44R`\n[1] \"4194304\"\n\n$`$P44TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P44V`\n[1] \"467\"\n\n$`$P45B`\n[1] \"32\"\n\n$`$P45E`\n[1] \"0,0\"\n\n$`$P45N`\n[1] \"B6-A\"\n\n$`$P45R`\n[1] \"4194304\"\n\n$`$P45TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P45V`\n[1] \"284\"\n\n$`$P46B`\n[1] \"32\"\n\n$`$P46E`\n[1] \"0,0\"\n\n$`$P46N`\n[1] \"B7-A\"\n\n$`$P46R`\n[1] \"4194304\"\n\n$`$P46TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P46V`\n[1] \"531\"\n\n$`$P47B`\n[1] \"32\"\n\n$`$P47E`\n[1] \"0,0\"\n\n$`$P47N`\n[1] \"B8-A\"\n\n$`$P47R`\n[1] \"4194304\"\n\n$`$P47TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P47V`\n[1] \"432\"\n\n$`$P48B`\n[1] \"32\"\n\n$`$P48E`\n[1] \"0,0\"\n\n$`$P48N`\n[1] \"B9-A\"\n\n$`$P48R`\n[1] \"4194304\"\n\n$`$P48TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P48V`\n[1] \"675\"\n\n$`$P49B`\n[1] \"32\"\n\n$`$P49E`\n[1] \"0,0\"\n\n$`$P49N`\n[1] \"B10-A\"\n\n$`$P49R`\n[1] \"4194304\"\n\n$`$P49TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P49V`\n[1] \"490\"\n\n$`$P4B`\n[1] \"32\"\n\n$`$P4E`\n[1] \"0,0\"\n\n$`$P4N`\n[1] \"UV3-A\"\n\n$`$P4R`\n[1] \"4194304\"\n\n$`$P4TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P4V`\n[1] \"677\"\n\n$`$P50B`\n[1] \"32\"\n\n$`$P50E`\n[1] \"0,0\"\n\n$`$P50N`\n[1] \"B11-A\"\n\n$`$P50R`\n[1] \"4194304\"\n\n$`$P50TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P50V`\n[1] \"286\"\n\n$`$P51B`\n[1] \"32\"\n\n$`$P51E`\n[1] \"0,0\"\n\n$`$P51N`\n[1] \"B12-A\"\n\n$`$P51R`\n[1] \"4194304\"\n\n$`$P51TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P51V`\n[1] \"407\"\n\n$`$P52B`\n[1] \"32\"\n\n$`$P52E`\n[1] \"0,0\"\n\n$`$P52N`\n[1] \"B13-A\"\n\n$`$P52R`\n[1] \"4194304\"\n\n$`$P52TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P52V`\n[1] \"700\"\n\n$`$P53B`\n[1] \"32\"\n\n$`$P53E`\n[1] \"0,0\"\n\n$`$P53N`\n[1] \"B14-A\"\n\n$`$P53R`\n[1] \"4194304\"\n\n$`$P53TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P53V`\n[1] \"693\"\n\n$`$P54B`\n[1] \"32\"\n\n$`$P54E`\n[1] \"0,0\"\n\n$`$P54N`\n[1] \"R1-A\"\n\n$`$P54R`\n[1] \"4194304\"\n\n$`$P54TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P54V`\n[1] \"158\"\n\n$`$P55B`\n[1] \"32\"\n\n$`$P55E`\n[1] \"0,0\"\n\n$`$P55N`\n[1] \"R2-A\"\n\n$`$P55R`\n[1] \"4194304\"\n\n$`$P55TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P55V`\n[1] \"245\"\n\n$`$P56B`\n[1] \"32\"\n\n$`$P56E`\n[1] \"0,0\"\n\n$`$P56N`\n[1] \"R3-A\"\n\n$`$P56R`\n[1] \"4194304\"\n\n$`$P56TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P56V`\n[1] \"338\"\n\n$`$P57B`\n[1] \"32\"\n\n$`$P57E`\n[1] \"0,0\"\n\n$`$P57N`\n[1] \"R4-A\"\n\n$`$P57R`\n[1] \"4194304\"\n\n$`$P57TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P57V`\n[1] \"238\"\n\n$`$P58B`\n[1] \"32\"\n\n$`$P58E`\n[1] \"0,0\"\n\n$`$P58N`\n[1] \"R5-A\"\n\n$`$P58R`\n[1] \"4194304\"\n\n$`$P58TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P58V`\n[1] \"191\"\n\n$`$P59B`\n[1] \"32\"\n\n$`$P59E`\n[1] \"0,0\"\n\n$`$P59N`\n[1] \"R6-A\"\n\n$`$P59R`\n[1] \"4194304\"\n\n$`$P59TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P59V`\n[1] \"274\"\n\n$`$P5B`\n[1] \"32\"\n\n$`$P5E`\n[1] \"0,0\"\n\n$`$P5N`\n[1] \"UV4-A\"\n\n$`$P5R`\n[1] \"4194304\"\n\n$`$P5TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P5V`\n[1] \"1022\"\n\n$`$P60B`\n[1] \"32\"\n\n$`$P60E`\n[1] \"0,0\"\n\n$`$P60N`\n[1] \"R7-A\"\n\n$`$P60R`\n[1] \"4194304\"\n\n$`$P60TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P60V`\n[1] \"524\"\n\n$`$P61B`\n[1] \"32\"\n\n$`$P61E`\n[1] \"0,0\"\n\n$`$P61N`\n[1] \"R8-A\"\n\n$`$P61R`\n[1] \"4194304\"\n\n$`$P61TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P61V`\n[1] \"243\"\n\n$`$P6B`\n[1] \"32\"\n\n$`$P6E`\n[1] \"0,0\"\n\n$`$P6N`\n[1] \"UV5-A\"\n\n$`$P6R`\n[1] \"4194304\"\n\n$`$P6TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P6V`\n[1] \"616\"\n\n$`$P7B`\n[1] \"32\"\n\n$`$P7E`\n[1] \"0,0\"\n\n$`$P7N`\n[1] \"UV6-A\"\n\n$`$P7R`\n[1] \"4194304\"\n\n$`$P7TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P7V`\n[1] \"506\"\n\n$`$P8B`\n[1] \"32\"\n\n$`$P8E`\n[1] \"0,0\"\n\n$`$P8N`\n[1] \"UV7-A\"\n\n$`$P8R`\n[1] \"4194304\"\n\n$`$P8TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P8V`\n[1] \"661\"\n\n$`$P9B`\n[1] \"32\"\n\n$`$P9E`\n[1] \"0,0\"\n\n$`$P9N`\n[1] \"UV8-A\"\n\n$`$P9R`\n[1] \"4194304\"\n\n$`$P9TYPE`\n[1] \"Raw_Fluorescence\"\n\n$`$P9V`\n[1] \"514\"\n\n\nFortunately for all involved, there is a consistently repeating pattern for the keywords corresponding to each detector. We can see that here for $P7B, $P7E, $P7N, $P7R, $P7TYPE, $P7V\n\nWhen referencing to the Flow Cytometry Standard documentation, here are what the particular keyword letters mean:\n\n\n\n\n\n\nB\n\n\n\nNumber of bits reserved for parameter number n\n\n\n\n\nDescriptionList$`$P7B`\n\n[1] \"32\"\n\n\n\n\n\n\n\n\n\nE\n\n\n\nAmplification type for parameter n. \n\n\n\n\nDescriptionList$`$P7E`\n\n[1] \"0,0\"\n\n\n\n\n\n\n\n\n\n\n\nN\n\n\n\nShort Name for parameter n. \n\n\n\n\nDescriptionList$`$P7N`\n\n[1] \"UV6-A\"\n\n\n\n\n\n\n\n\n\nR\n\n\n\nRange for parameter number n. \n\n\n\n\nDescriptionList$`$P7R`\n\n[1] \"4194304\"\n\n\n\n\n\n\n\n\n\n\n\nTYPE\n\n\n\nDetector type for parameter n. \n\n\n\n\nDescriptionList$`$P7TYPE`\n\n[1] \"Raw_Fluorescence\"\n\n\n\n\n\n\n\n\n\nV\n\n\n\nDetector voltage for parameter n. \n\n\n\n\nDescriptionList$`$P7V`\n\n[1] \"506\"\n\n\n\n\n\nWhile not immediately obvious, understanding what these keywords encoded has proven useful for our core. In our case, we have built an automated InstrumentQC dashboard for all the instruments at our core.\n\n\n\nBy extracting out from our daily QC bead .fcs files the stored N (Detector Name) and V (Gain/Voltage) values for all the individual detectors, it allows us to plot Levey-Jennings Plots for our individual instruments, giving us usually around a months warning before an individual laser begins to fail. This helps with scheduling the Field-Service Engineer visit before it starts impacting the actual data.\n\n\n\nWhile most of the detectors keywords are similar (only changing there individual name and voltage) there are a couple exceptions.\nFor the FSC/SSC parameters, instead of Raw_Fluorescence value for Type, we see the corresponding Scatter value get return. This in term is what is used by various commercial softwares to show those axis as linear instead of biexponential when selected.\n\n\n\nThis is similarly the case for the Time parameter, where in addition to Type being set to Time, the range also appears different to Raw/Scatters value.", + "objectID": "course/04_IntroToTidyverse/index.html#rename", + "href": "course/04_IntroToTidyverse/index.html#rename", + "title": "04 - Introduction to Tidyverse", + "section": "rename", + "text": "rename\nAt this point, we are able to both move and select particular columns, allowing us to rearrange and subset a larger data.frame object however we want it to appear. However, as we encountered, some of the names contain special characters and spaces, requiring use of tick marks (``) to avoid issues. How can we change a column name?\nIn base R, we could change individual column names by assigning a new value with the assignment arrow to the corresponding column name index. For example, looking at our Subset object, wen could rename CD8+ as follows:\n\ncolnames(Subset)\n\n[1] \"bid\" \"Tcells\" \"CD8+\" \"CD4+\" \"timepoint\" \"Condition\"\n\ncolnames(Subset)[3]\n\n[1] \"CD8+\"\n\n\n\ncolnames(Subset)[3] <- \"CD8Positive\"\ncolnames(Subset)\n\n[1] \"bid\" \"Tcells\" \"CD8Positive\" \"CD4+\" \"timepoint\" \n[6] \"Condition\" \n\n\nWith the tidyverse, we can use the rename() function which removes the need to look up the column index number. The way we write the argument is placing within the parenthesis the old name to the right of the equals sign, with the new name to the left\n\nRenamed <- Subset |> rename(CD4_Positive = `CD4+`)\ncolnames(Renamed)\n\n[1] \"bid\" \"Tcells\" \"CD8Positive\" \"CD4_Positive\" \"timepoint\" \n[6] \"Condition\" \n\n\nIf we wanted to rename multiple column names at once, we would just need to include a comma between the individual rename arguments within the parenthesis.\n\nRenamed_Multiple <- Subset |> rename(specimen = bid, timepoint_months = timepoint, stimulation = Condition, CD4Positive=`CD4+`)\ncolnames(Renamed_Multiple)\n\n[1] \"specimen\" \"Tcells\" \"CD8Positive\" \"CD4Positive\" \n[5] \"timepoint_months\" \"stimulation\"", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#middle-metadata", - "href": "course/03_InsideFCSFile/index.html#middle-metadata", - "title": "03 - Inside an FCS File", - "section": "Middle Metadata", - "text": "Middle Metadata\nOnce we are out of the detector keywords, we find the last of the $Metadata associated keywords.\n\nDetectors <- DescriptionList[385:398]\nDetectors\n\n$`$PAR`\n[1] \"61\"\n\n$`$PROJ`\n[1] \"CellCounts4L_AB_05\"\n\n$`$SPILLOVER`\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n$`$TIMESTEP`\n[1] \"0.0001\"\n\n$`$TOT`\n[1] \"100\"\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\nAmong those of potential interest\n\n\n\n\n\n\nProj\n\n\n\nOften corresponding to the experiment file name\n\n\n\n\nDescriptionList$`$PROJ`\n\n[1] \"CellCounts4L_AB_05\"\n\n\n\n\n\n\n\n\n\nSpillover\n\n\n\nWhere the internal spillover matrix is stored (we will revisit during compensation)\n\n\n\n\nDescriptionList$`$SPILLOVER`\n\n UV1-A UV2-A UV3-A UV4-A UV5-A UV6-A UV7-A UV8-A UV9-A UV10-A UV11-A\n [1,] 1e+00 0 0 0 0 0 0 0 0 0 0\n [2,] 1e-06 1 0 0 0 0 0 0 0 0 0\n [3,] 0e+00 0 1 0 0 0 0 0 0 0 0\n [4,] 0e+00 0 0 1 0 0 0 0 0 0 0\n [5,] 0e+00 0 0 0 1 0 0 0 0 0 0\n [6,] 0e+00 0 0 0 0 1 0 0 0 0 0\n [7,] 0e+00 0 0 0 0 0 1 0 0 0 0\n [8,] 0e+00 0 0 0 0 0 0 1 0 0 0\n [9,] 0e+00 0 0 0 0 0 0 0 1 0 0\n[10,] 0e+00 0 0 0 0 0 0 0 0 1 0\n[11,] 0e+00 0 0 0 0 0 0 0 0 0 1\n[12,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[13,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[14,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[15,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[16,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[17,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[18,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[19,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[20,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[21,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[22,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[23,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[24,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[25,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[26,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[27,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[28,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[29,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[30,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[31,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[32,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[33,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[34,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[35,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[36,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[37,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[38,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[39,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[40,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[41,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[42,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[43,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[44,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[45,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[46,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[47,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[48,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[49,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[50,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[51,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[52,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[53,] 0e+00 0 0 0 0 0 0 0 0 0 0\n[54,] 0e+00 0 0 0 0 0 0 0 0 0 0\n UV12-A UV13-A UV14-A UV15-A UV16-A V1-A V2-A V3-A V4-A V5-A V6-A V7-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 1 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 1 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 1 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 1 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 1 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 1 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 1 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 1 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 1 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 1 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 1 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 1\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0\n V8-A V9-A V10-A V11-A V12-A V13-A V14-A V15-A V16-A B1-A B2-A B3-A B4-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[37,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n B5-A B6-A B7-A B8-A B9-A B10-A B11-A B12-A B13-A B14-A R1-A R2-A R3-A\n [1,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [2,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [3,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [4,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [5,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [6,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [7,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [8,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n [9,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[10,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[11,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[12,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[13,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[14,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[15,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[16,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[17,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[18,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[19,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[20,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[21,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[22,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[23,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[24,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[25,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[26,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[27,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[28,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[29,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[30,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[31,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[32,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[33,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[34,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[35,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[36,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[37,] 1 0 0 0 0 0 0 0 0 0 0 0 0\n[38,] 0 1 0 0 0 0 0 0 0 0 0 0 0\n[39,] 0 0 1 0 0 0 0 0 0 0 0 0 0\n[40,] 0 0 0 1 0 0 0 0 0 0 0 0 0\n[41,] 0 0 0 0 1 0 0 0 0 0 0 0 0\n[42,] 0 0 0 0 0 1 0 0 0 0 0 0 0\n[43,] 0 0 0 0 0 0 1 0 0 0 0 0 0\n[44,] 0 0 0 0 0 0 0 1 0 0 0 0 0\n[45,] 0 0 0 0 0 0 0 0 1 0 0 0 0\n[46,] 0 0 0 0 0 0 0 0 0 1 0 0 0\n[47,] 0 0 0 0 0 0 0 0 0 0 1 0 0\n[48,] 0 0 0 0 0 0 0 0 0 0 0 1 0\n[49,] 0 0 0 0 0 0 0 0 0 0 0 0 1\n[50,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[51,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[52,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[53,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n[54,] 0 0 0 0 0 0 0 0 0 0 0 0 0\n R4-A R5-A R6-A R7-A R8-A\n [1,] 0 0 0 0 0\n [2,] 0 0 0 0 0\n [3,] 0 0 0 0 0\n [4,] 0 0 0 0 0\n [5,] 0 0 0 0 0\n [6,] 0 0 0 0 0\n [7,] 0 0 0 0 0\n [8,] 0 0 0 0 0\n [9,] 0 0 0 0 0\n[10,] 0 0 0 0 0\n[11,] 0 0 0 0 0\n[12,] 0 0 0 0 0\n[13,] 0 0 0 0 0\n[14,] 0 0 0 0 0\n[15,] 0 0 0 0 0\n[16,] 0 0 0 0 0\n[17,] 0 0 0 0 0\n[18,] 0 0 0 0 0\n[19,] 0 0 0 0 0\n[20,] 0 0 0 0 0\n[21,] 0 0 0 0 0\n[22,] 0 0 0 0 0\n[23,] 0 0 0 0 0\n[24,] 0 0 0 0 0\n[25,] 0 0 0 0 0\n[26,] 0 0 0 0 0\n[27,] 0 0 0 0 0\n[28,] 0 0 0 0 0\n[29,] 0 0 0 0 0\n[30,] 0 0 0 0 0\n[31,] 0 0 0 0 0\n[32,] 0 0 0 0 0\n[33,] 0 0 0 0 0\n[34,] 0 0 0 0 0\n[35,] 0 0 0 0 0\n[36,] 0 0 0 0 0\n[37,] 0 0 0 0 0\n[38,] 0 0 0 0 0\n[39,] 0 0 0 0 0\n[40,] 0 0 0 0 0\n[41,] 0 0 0 0 0\n[42,] 0 0 0 0 0\n[43,] 0 0 0 0 0\n[44,] 0 0 0 0 0\n[45,] 0 0 0 0 0\n[46,] 0 0 0 0 0\n[47,] 0 0 0 0 0\n[48,] 0 0 0 0 0\n[49,] 0 0 0 0 0\n[50,] 1 0 0 0 0\n[51,] 0 1 0 0 0\n[52,] 0 0 1 0 0\n[53,] 0 0 0 1 0\n[54,] 0 0 0 0 1\n\n\n\n\n\n\n\n\n\nTOT\n\n\n\nTotal events (in this case my downsampled 100 cells)\n\n\n\n\nDescriptionList$`$TOT`\n\n[1] \"100\"\n\n\n\n\n\n\n\n\n\nVolume\n\n\n\nVolume amount acquired during acquisition.\n\n\n\n\nDescriptionList$`$VOL`\n\n[1] \"30.31\"\n\n\n\n\n\n\n\n\n\nSoftware\n\n\n\nSoftware used and version\n\n\n\n\nDescriptionList$CREATOR\n\n[1] \"SpectroFlo 3.3.0\"\n\n\n\nYou will notice at this point, the keyword names including a “$” symbol have stopped, so tick marks are no longer required (except when there is a space in the name). The only $ remaining is being used as a selector for a particular item in the list.\n\nDetectors <- DescriptionList[390:398]\nDetectors\n\n$`$VOL`\n[1] \"30.31\"\n\n$`APPLY COMPENSATION`\n[1] \"FALSE\"\n\n$CHARSET\n[1] \"utf-8\"\n\n$CREATOR\n[1] \"SpectroFlo 3.3.0\"\n\n$FCSversion\n[1] \"3\"\n\n$FILENAME\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n$`FSC ASF`\n[1] \"1.21\"\n\n$GROUPNAME\n[1] \"ND050\"\n\n$GUID\n[1] \"CellCounts4L_AB_05-ND050-05.fcs\"\n\n\n\n\n\n\n\n\nFILENAME\n\n\n\nBasically the full file.path to the .fcs file of interest.\n\n\n\n\nDescriptionList$FILENAME\n\n[1] \"data/CellCounts4L_AB_05_ND050_05.fcs\"\n\n\n\n\n\n\n\n\n\nGROUPNAME\n\n\n\nThe Name assigned to the acquisition Group.\n\n\n\n\nDescriptionList$GROUPNAME\n\n[1] \"ND050\"", + "objectID": "course/04_IntroToTidyverse/index.html#pull", + "href": "course/04_IntroToTidyverse/index.html#pull", + "title": "04 - Introduction to Tidyverse", + "section": "pull", + "text": "pull\nSometimes, we may want to retrieve individual values present in a column, to use within either a vector or a list. We can do this using the pull() function, which will retrieve the column contents and strip the column formatting\n\nData |> pull(Date) |> head(5)\n\n[1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nThis can be useful when we are doing data exploration, and trying to determine how many unique variants might be present. For example, if we wanted to see what days individual samples were acquired, we could pull() the data and pass it to the unique() function:\n\nData |> pull(Date) |> unique()\n\n[1] \"2025-07-26\" \"2025-07-29\" \"2025-07-31\" \"2025-08-05\" \"2025-08-07\"\n[6] \"2025-08-22\" \"2025-08-28\" \"2025-08-30\"", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#laser-metadata", - "href": "course/03_InsideFCSFile/index.html#laser-metadata", - "title": "03 - Inside an FCS File", - "section": "Laser Metadata", - "text": "Laser Metadata\nNext up, there is a small stretch of keywords containing the values associated with the individual lasers as far as delays and area scaling factors for a particular day (also useful when plotted).\n\nDetectors <- DescriptionList[399:410]\nDetectors\n\n$LASER1ASF\n[1] \"1.09\"\n\n$LASER1DELAY\n[1] \"-19.525\"\n\n$LASER1NAME\n[1] \"Violet\"\n\n$LASER2ASF\n[1] \"1.14\"\n\n$LASER2DELAY\n[1] \"0\"\n\n$LASER2NAME\n[1] \"Blue\"\n\n$LASER3ASF\n[1] \"1.02\"\n\n$LASER3DELAY\n[1] \"20.15\"\n\n$LASER3NAME\n[1] \"Red\"\n\n$LASER4ASF\n[1] \"0.92\"\n\n$LASER4DELAY\n[1] \"40.725\"\n\n$LASER4NAME\n[1] \"UV\"", + "objectID": "course/04_IntroToTidyverse/index.html#filter-rows", + "href": "course/04_IntroToTidyverse/index.html#filter-rows", + "title": "04 - Introduction to Tidyverse", + "section": "filter (Rows)", + "text": "filter (Rows)\nSo far, we have been working with dplyr functions primarily used when working with and subsetting columns (including select(), pull(), rename() and relocate()). What if we wanted to work with rows of a data.frame? This is where the filter() function is used.\nThe Condition column in this Dataset appears to be indicating whether the samples were stimulated. Let’s see how many unique values are contained within that column\n\nData |> pull(Condition) |> unique() \n\n[1] \"Ctrl\" \"PPD\" \"SEB\" \n\n\nIn the case of this dataset, looks like the .fcs files where treated with either left alone, treated with PPD (Purified Protein Derrivative) or SEB. What if we wanted to subset only those treated with PPD?\nWithin filter(), we would specify the column name as the first argument, and ask that only values equal to (==) “PPD” be returned. Notice in this case, “” are needed, as we are asking for a matching character value.\n\nPPDOnly <- Data |> filter(Condition == \"PPD\")\nhead(PPDOnly, 5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nWhile this works, using “==” to match can glitch, especially with character values. Using the %in% operator is a better way of identifying and extracting only the rows whose Condition column contains “PPD”\n\nData |> filter(Condition %in% \"PPD\") |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nSimilar to what we saw for select(), we can grab rows that contain various values at once. We would just need to modify the second part of the argument. If we wanted to grab rows whose Condition column contained either PPD or SEB, we would need to provide that argument as a vector, placing both within c()/\n\nData |> filter(Condition %in% c(\"PPD\", \"SEB\")) |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nAlternatively, we could have set up the vector externally, and then provided it to filter()\n\nTheseConditions <- c(\"PPD\", \"SEB\")\nData |> filter(Condition %in% TheseConditions) |> head(5)\n\n bid timepoint Condition Date infant_sex ptype root singletsFSC\n1 INF0052 0 PPD 2025-07-26 Male HEU-hi 2363512 2136616\n2 INF0100 0 PPD 2025-07-26 Male HEU-lo 2049112 1821676\n3 INF0100 4 PPD 2025-07-26 Male HEU-lo 1063496 946587\n4 INF0100 9 PPD 2025-07-26 Male HEU-lo 788368 714198\n5 INF0179 0 PPD 2025-07-26 Male HU 1380336 1242311\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1875394 1732620 0.5873838 0.8619837 0.8429685 0.6408044\n2 1717636 1597085 0.9063081 0.9251961 0.8771889 0.2174284\n3 796056 767297 0.9709891 0.9848719 0.9556049 0.7313503\n4 626387 600011 0.9822803 0.9842139 0.8123041 0.6223228\n5 1047081 1000877 0.9470275 0.9575685 0.9134438 0.6996502\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9009254 0.20743228 0.6934931 0.2835676 0.007408209 0.9925918 0.01507057\n2 0.8929673 0.06181426 0.8311531 0.6735798 0.007137230 0.9928628 0.01671801\n3 0.8782307 0.20727202 0.6709587 0.5989873 0.005254643 0.9947454 0.01609790\n4 0.9566639 0.23164587 0.7250180 0.6489405 0.011935922 0.9880641 0.01855298\n5 0.8856898 0.33186111 0.5538287 0.4441538 0.004382972 0.9956170 0.01297237\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9775212 0.6340345 0.3434867 0.2744119 0.06907479 184930\n2 0.9761448 0.6145707 0.3615741 0.3312279 0.03034620 211987\n3 0.9786475 0.6559480 0.3226994 0.2912084 0.03149109 326378\n4 0.9695111 0.4306889 0.5388222 0.4908558 0.04796636 238021\n5 0.9826447 0.7499194 0.2327253 0.1850897 0.04763554 294549\n lymphocytes_count Monocytes Debris CD45_count\n1 652155 0.13801632 0.15703150 1017713\n2 314717 0.07480391 0.12281107 1447451\n3 544883 0.01512811 0.04439511 745037\n4 366784 0.01578611 0.18769586 589379\n5 663169 0.04243146 0.08655621 947858\n\n\nWhile this works when we have a limited number of variant condition values, what if had many more but only wanted to exclude one value? As we saw when learning about Conditionals, when we add a ! in front of a logical value, we get the opposite logical value returned\n\nIsThisASpectralInstrument <- TRUE\n\n!IsThisASpectralInstrument\n\n[1] FALSE\n\n\nIn the context of the dplyr package, we can use ! within the filter() to remove rows that contain a certain value\n\nSubset <- Data |> filter(!Condition %in% \"SEB\")\nSubset |> pull(Condition) |> unique()\n\n[1] \"Ctrl\" \"PPD\" \n\n\nLikewise, we can also use it with the select() to exclude columns we don’t want to include\n\nSubset <- Data |> select(!timepoint)\nSubset[1:3,]\n\n bid Condition Date infant_sex ptype root singletsFSC\n1 INF0052 Ctrl 2025-07-26 Male HEU-hi 2098368 1894070\n2 INF0100 Ctrl 2025-07-26 Male HEU-lo 2020184 1791890\n3 INF0100 Ctrl 2025-07-26 Male HEU-lo 1155040 1033320\n singletsSSC singletsSSCB CD45 NotMonocytes nonDebris lymphocytes\n1 1666179 1537396 0.5952943 0.8820349 0.8627649 0.6420138\n2 1697083 1579098 0.9106762 0.9052256 0.8602660 0.2145848\n3 875465 845446 0.9705765 0.9845400 0.9578793 0.7403110\n live Dump+ Dump- Tcells Vd2+ Vd2- Va7.2+\n1 0.9020581 0.21090996 0.6911482 0.2804264 0.008120361 0.9918796 0.01448070\n2 0.8908981 0.06252775 0.8283703 0.6748298 0.007265620 0.9927344 0.01577499\n3 0.8757665 0.20023803 0.6755285 0.6119129 0.004651313 0.9953487 0.01579402\n Va7.2- CD4+ CD4- CD8+ CD8- Tcells_count\n1 0.9773989 0.6341164 0.3432825 0.2734826 0.06979990 164771\n2 0.9769594 0.6119112 0.3650482 0.3357696 0.02927858 208241\n3 0.9795547 0.6639621 0.3155925 0.2862104 0.02938209 371723\n lymphocytes_count Monocytes Debris CD45_count\n1 587573 0.11796509 0.13723513 915203\n2 308583 0.09477437 0.13973396 1438047\n3 607477 0.01545999 0.04212072 820570", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#display", - "href": "course/03_InsideFCSFile/index.html#display", - "title": "03 - Inside an FCS File", - "section": "Display", - "text": "Display\nThen there is a stretch matching whether a particular detector needs to be displayed as linear (in the case of time and scatter) or as log (for individual detectors).\n\nDetectors <- DescriptionList[412:472]\nDetectors\n\n$P10DISPLAY\n[1] \"LOG\"\n\n$P11DISPLAY\n[1] \"LOG\"\n\n$P12DISPLAY\n[1] \"LOG\"\n\n$P13DISPLAY\n[1] \"LOG\"\n\n$P14DISPLAY\n[1] \"LOG\"\n\n$P15DISPLAY\n[1] \"LOG\"\n\n$P16DISPLAY\n[1] \"LOG\"\n\n$P17DISPLAY\n[1] \"LOG\"\n\n$P18DISPLAY\n[1] \"LIN\"\n\n$P19DISPLAY\n[1] \"LIN\"\n\n$P1DISPLAY\n[1] \"LOG\"\n\n$P20DISPLAY\n[1] \"LOG\"\n\n$P21DISPLAY\n[1] \"LOG\"\n\n$P22DISPLAY\n[1] \"LOG\"\n\n$P23DISPLAY\n[1] \"LOG\"\n\n$P24DISPLAY\n[1] \"LOG\"\n\n$P25DISPLAY\n[1] \"LOG\"\n\n$P26DISPLAY\n[1] \"LOG\"\n\n$P27DISPLAY\n[1] \"LOG\"\n\n$P28DISPLAY\n[1] \"LOG\"\n\n$P29DISPLAY\n[1] \"LOG\"\n\n$P2DISPLAY\n[1] \"LOG\"\n\n$P30DISPLAY\n[1] \"LOG\"\n\n$P31DISPLAY\n[1] \"LOG\"\n\n$P32DISPLAY\n[1] \"LOG\"\n\n$P33DISPLAY\n[1] \"LOG\"\n\n$P34DISPLAY\n[1] \"LOG\"\n\n$P35DISPLAY\n[1] \"LOG\"\n\n$P36DISPLAY\n[1] \"LIN\"\n\n$P37DISPLAY\n[1] \"LIN\"\n\n$P38DISPLAY\n[1] \"LIN\"\n\n$P39DISPLAY\n[1] \"LIN\"\n\n$P3DISPLAY\n[1] \"LOG\"\n\n$P40DISPLAY\n[1] \"LOG\"\n\n$P41DISPLAY\n[1] \"LOG\"\n\n$P42DISPLAY\n[1] \"LOG\"\n\n$P43DISPLAY\n[1] \"LOG\"\n\n$P44DISPLAY\n[1] \"LOG\"\n\n$P45DISPLAY\n[1] \"LOG\"\n\n$P46DISPLAY\n[1] \"LOG\"\n\n$P47DISPLAY\n[1] \"LOG\"\n\n$P48DISPLAY\n[1] \"LOG\"\n\n$P49DISPLAY\n[1] \"LOG\"\n\n$P4DISPLAY\n[1] \"LOG\"\n\n$P50DISPLAY\n[1] \"LOG\"\n\n$P51DISPLAY\n[1] \"LOG\"\n\n$P52DISPLAY\n[1] \"LOG\"\n\n$P53DISPLAY\n[1] \"LOG\"\n\n$P54DISPLAY\n[1] \"LOG\"\n\n$P55DISPLAY\n[1] \"LOG\"\n\n$P56DISPLAY\n[1] \"LOG\"\n\n$P57DISPLAY\n[1] \"LOG\"\n\n$P58DISPLAY\n[1] \"LOG\"\n\n$P59DISPLAY\n[1] \"LOG\"\n\n$P5DISPLAY\n[1] \"LOG\"\n\n$P60DISPLAY\n[1] \"LOG\"\n\n$P61DISPLAY\n[1] \"LOG\"\n\n$P6DISPLAY\n[1] \"LOG\"\n\n$P7DISPLAY\n[1] \"LOG\"\n\n$P8DISPLAY\n[1] \"LOG\"\n\n$P9DISPLAY\n[1] \"LOG\"\n\n\nAnd a few final keywords with threshold, window scaling and other user selected settings.\n\nDetectors <- DescriptionList[473:476]\nDetectors\n\n$THRESHOLD\n[1] \"(FSC,50000)\"\n\n$TUBENAME\n[1] \"05\"\n\n$USERSETTINGNAME\n[1] \"DTR_CellCounts\"\n\n$`WINDOW EXTENSION`\n[1] \"3\"", + "objectID": "course/04_IntroToTidyverse/index.html#mutate", + "href": "course/04_IntroToTidyverse/index.html#mutate", + "title": "04 - Introduction to Tidyverse", + "section": "mutate", + "text": "mutate\nAs we can see, with just these handful of functions, we have the building blocks to rearrange and subset a larger data.frame into a format that we prefer. But what if we wanted to alter the content of a column, or add new columns to an existing data.frame? This is where the mutate() function can be used.\nLet’s start by slimming down our current Data to a smaller workable example, highlighting the functions and pipes we learned about today\n\nTidyData <- Data |> filter(Condition %in% \"Ctrl\") |> filter(timepoint %in% \"0\") |>\n select(bid, timepoint, Condition, Date, Tcells_count, CD45_count) |>\n rename(specimen=bid, condition=Condition) |> relocate(Date, .after=specimen)\n\n\nTidyData\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n\n\nThe mutate() function can be used to modify existing columns, as well as to create new ones. For example, let’s derrive the proportion of T cells from the overall CD45 gate. To do so, within the parenthesis, we would specify a new column name, and then divide the original columns:\n\nTidyData <- TidyData |> mutate(Tcells_ProportionCD45 = Tcells_count / CD45_count)\nTidyData\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n Tcells_ProportionCD45\n1 0.18003765\n2 0.14480820\n3 0.31015921\n4 0.18540010\n5 0.23110302\n6 0.07796568\n7 0.10221747\n8 0.12578030\n9 0.08839285\n10 0.23815220\n11 0.47942008\n12 0.27147570\n13 0.26442564\n14 0.22484948\n15 0.38022498\n16 0.21845195\n17 0.22564783\n18 0.11678076\n19 0.30514067\n20 0.15261613\n21 0.04313730\n22 0.14301785\n23 0.17238666\n\n\nWe can see that we have many significant digits being returned. Let’s round this new column to 2 significant digits by applying the round() function\n\nTidyData <- TidyData |> mutate(TcellsRounded = round(Tcells_ProportionCD45, 2))\nTidyData \n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0052 2025-07-26 0 Ctrl 164771 915203\n2 INF0100 2025-07-26 0 Ctrl 208241 1438047\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0134 2025-07-29 0 Ctrl 127866 689676\n5 INF0148 2025-07-29 0 Ctrl 234335 1013985\n6 INF0191 2025-07-29 0 Ctrl 55780 715443\n7 INF0124 2025-07-31 0 Ctrl 70297 687720\n8 INF0149 2025-07-31 0 Ctrl 107900 857845\n9 INF0169 2025-07-31 0 Ctrl 75540 854594\n10 INF0019 2025-08-05 0 Ctrl 208055 873622\n11 INF0032 2025-08-05 0 Ctrl 361034 753064\n12 INF0180 2025-08-05 0 Ctrl 284958 1049663\n13 INF0155 2025-08-07 0 Ctrl 281626 1065048\n14 INF0158 2025-08-07 0 Ctrl 280913 1249338\n15 INF0159 2025-08-07 0 Ctrl 452551 1190219\n16 INF0013 2025-08-22 0 Ctrl 182751 836573\n17 INF0023 2025-08-22 0 Ctrl 218435 968035\n18 INF0030 2025-08-22 0 Ctrl 85521 732321\n19 INF0166 2025-08-28 0 Ctrl 225650 739495\n20 INF0199 2025-08-28 0 Ctrl 169736 1112176\n21 INF0207 2025-08-28 0 Ctrl 39055 905365\n22 INF0614 2025-08-30 0 Ctrl 224396 1569007\n23 INF0622 2025-08-30 0 Ctrl 161924 939307\n Tcells_ProportionCD45 TcellsRounded\n1 0.18003765 0.18\n2 0.14480820 0.14\n3 0.31015921 0.31\n4 0.18540010 0.19\n5 0.23110302 0.23\n6 0.07796568 0.08\n7 0.10221747 0.10\n8 0.12578030 0.13\n9 0.08839285 0.09\n10 0.23815220 0.24\n11 0.47942008 0.48\n12 0.27147570 0.27\n13 0.26442564 0.26\n14 0.22484948 0.22\n15 0.38022498 0.38\n16 0.21845195 0.22\n17 0.22564783 0.23\n18 0.11678076 0.12\n19 0.30514067 0.31\n20 0.15261613 0.15\n21 0.04313730 0.04\n22 0.14301785 0.14\n23 0.17238666 0.17", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, { - "objectID": "course/03_InsideFCSFile/index.html#flowcore-parameters", - "href": "course/03_InsideFCSFile/index.html#flowcore-parameters", - "title": "03 - Inside an FCS File", - "section": "flowCore Parameters", - "text": "flowCore Parameters\nDepending on the arguments selected during read.FCS(), we might also encounter additional keywords that are added in by flowCore. For example, we do not see these keywords when “transformation” is set to FALSE.\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = FALSE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n476 keywords are stored in the 'description' slot\n\n\n\nNoChange <- keyword(flowCoreCheck)\nDetectors <- NoChange [476:500]\nDetectors\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n$<NA>\nNULL\n\n\nBy contrast, if we had set “transformation” to TRUE:\n\nflowCoreCheck <- read.FCS(filename=firstfile,\n transformation = TRUE, truncate_max_range = FALSE)\n\nflowCoreCheck\n\nflowFrame object 'CellCounts4L_AB_05-ND050-05.fcs'\nwith 100 cells and 61 observables:\n name desc range minRange maxRange\n$P1 Time NA 272140 0 272139\n$P2 UV1-A NA 4194304 -111 4194303\n$P3 UV2-A NA 4194304 -111 4194303\n$P4 UV3-A NA 4194304 -111 4194303\n$P5 UV4-A NA 4194304 -111 4194303\n... ... ... ... ... ...\n$P57 R4-A NA 4194304 -111 4194303\n$P58 R5-A NA 4194304 -111 4194303\n$P59 R6-A NA 4194304 -111 4194303\n$P60 R7-A NA 4194304 -111 4194303\n$P61 R8-A NA 4194304 -111 4194303\n599 keywords are stored in the 'description' slot\n\n\n\nYesChange <- keyword(flowCoreCheck)\nDetectors <- YesChange [476:500]\nDetectors\n\n$`WINDOW EXTENSION`\n[1] \"3\"\n\n$transformation\n[1] \"applied\"\n\n$`flowCore_$P1Rmax`\n[1] \"272140\"\n\n$`flowCore_$P1Rmin`\n[1] \"0\"\n\n$`flowCore_$P2Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P2Rmin`\n[1] \"-111\"\n\n$`flowCore_$P3Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P3Rmin`\n[1] \"-111\"\n\n$`flowCore_$P4Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P4Rmin`\n[1] \"-111\"\n\n$`flowCore_$P5Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P5Rmin`\n[1] \"-111\"\n\n$`flowCore_$P6Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P6Rmin`\n[1] \"-111\"\n\n$`flowCore_$P7Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P7Rmin`\n[1] \"-111\"\n\n$`flowCore_$P8Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P8Rmin`\n[1] \"-26.3464946746826\"\n\n$`flowCore_$P9Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P9Rmin`\n[1] \"-111\"\n\n$`flowCore_$P10Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P10Rmin`\n[1] \"0\"\n\n$`flowCore_$P11Rmax`\n[1] \"4194304\"\n\n$`flowCore_$P11Rmin`\n[1] \"-111\"\n\n$`flowCore_$P12Rmax`\n[1] \"4194304\"\n\n\n\n\nFor some flow cytometry R packages, you will notice when opening their exported .fcs outputs in commercial software that these flowCore keywords have ended up integrated. It is likely somewhere in the package code the author forgot to add set transformation to FALSE, which is why we are seeing these flowCore keywords after the fact.", + "objectID": "course/04_IntroToTidyverse/index.html#arrange", + "href": "course/04_IntroToTidyverse/index.html#arrange", + "title": "04 - Introduction to Tidyverse", + "section": "arrange", + "text": "arrange\nAnd while we are here, let’s rearrange the rows so that they are descending based on the Tcell proportion. We can use this by using the desc() and arrange() functions from dplyr:\n\nTidyData <- TidyData |> arrange(desc(TcellsRounded))\n\nAnd let’s go ahead and filter() and identify the specimens that had more than 30% T cells as part of the overall CD45 gate (context, these samples were Cord Blood):\n\nTidyData |> filter(TcellsRounded > 0.3)\n\n specimen Date timepoint condition Tcells_count CD45_count\n1 INF0032 2025-08-05 0 Ctrl 361034 753064\n2 INF0159 2025-08-07 0 Ctrl 452551 1190219\n3 INF0179 2025-07-26 0 Ctrl 291777 940733\n4 INF0166 2025-08-28 0 Ctrl 225650 739495\n Tcells_ProportionCD45 TcellsRounded\n1 0.4794201 0.48\n2 0.3802250 0.38\n3 0.3101592 0.31\n4 0.3051407 0.31\n\n\nWhich is we had wanted to just retrieve the specimen IDs, we could add pull() after a new pipe argument.\n\nTidyData |> filter(TcellsRounded > 0.3) |> pull(specimen)\n\n[1] \"INF0032\" \"INF0159\" \"INF0179\" \"INF0166\"\n\n\nAnd finally, since I may want to send the data to a supervisor, let’s go ahead and export this “tidyed” version of our data.frame out to it’s own .csv file. Working within our project folder, this would look like this:\n\nNewName <- paste0(\"MyNewDataset\", \".csv\")\nStorageLocation <- file.path(\"data\", NewName)\nStorageLocation\n\n[1] \"data/MyNewDataset.csv\"\n\n\n\nwrite.csv(TidyData, StorageLocation, row.names=FALSE)", "crumbs": [ "About", "Intro to R", - "03 - Inside a .FCS file" + "04 - Intro to Tidyverse" ] }, - { - "objectID": "course/04_IntroToTidyverse/BonusContent.html", - "href": "course/04_IntroToTidyverse/BonusContent.html", - "title": "Bonus Content", - "section": "", - "text": "thefilepath <- file.path(\"data\", \"Dataset.csv\")\n\nthefilepath\n\n[1] \"data/Dataset.csv\"\nData <- read.csv(file=thefilepath, check.names=FALSE)\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\"" - }, - { - "objectID": "course/04_IntroToTidyverse/BonusContent.html#pull", - "href": "course/04_IntroToTidyverse/BonusContent.html#pull", - "title": "Bonus Content", - "section": "Pull", - "text": "Pull" - }, - { - "objectID": "course/04_IntroToTidyverse/BonusContent.html#case-when", - "href": "course/04_IntroToTidyverse/BonusContent.html#case-when", - "title": "Bonus Content", - "section": "Case-When", - "text": "Case-When\nCase-when is an useful function, but may be a bit much to try to teach in the main segment. Basically, when the condition on the left side of the ~ is fulfilled, it will execute what is being specified on the right hand side.\nIn turn, we can combine these together by adding a “,”. I tend to use this mutate str_detect case_when combination when encountering messy data out in the while where I need to selectively change particular cell values in a consistent reproducible manner" - }, - { - "objectID": "course/04_IntroToTidyverse/BonusContent.html#selecting-columns-base-r", - "href": "course/04_IntroToTidyverse/BonusContent.html#selecting-columns-base-r", - "title": "Bonus Content", - "section": "Selecting Columns (Base R)", - "text": "Selecting Columns (Base R)\nAs we saw last week, there are multiple ways to select values from particular columns in base R. If we had wanted to retrieve the “Date” column, why not first identify its index position, and use [,] to extract the underlying data?\n\ncolnames(Data)\n\n [1] \"bid\" \"timepoint\" \"Condition\" \n [4] \"Date\" \"infant_sex\" \"ptype\" \n [7] \"root\" \"singletsFSC\" \"singletsSSC\" \n[10] \"singletsSSCB\" \"CD45\" \"NotMonocytes\" \n[13] \"nonDebris\" \"lymphocytes\" \"live\" \n[16] \"Dump+\" \"Dump-\" \"Tcells\" \n[19] \"Vd2+\" \"Vd2-\" \"Va7.2+\" \n[22] \"Va7.2-\" \"CD4+\" \"CD4-\" \n[25] \"CD8+\" \"CD8-\" \"Tcells_count\" \n[28] \"lymphocytes_count\" \"Monocytes\" \"Debris\" \n[31] \"CD45_count\" \n\n\n\ncolnames(Data)[4]\n\n[1] \"Date\"\n\n\n\nDataColumn <- Data[,4] # Column specified after the ,\nDataColumn\n\n [1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [6] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [11] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [16] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [21] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n [26] \"2025-07-26\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [31] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [36] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [41] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-29\"\n [46] \"2025-07-29\" \"2025-07-29\" \"2025-07-29\" \"2025-07-31\" \"2025-07-31\"\n [51] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [56] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [61] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [66] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [71] \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\" \"2025-07-31\"\n [76] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [81] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [86] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [91] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-05\"\n [96] \"2025-08-05\" \"2025-08-05\" \"2025-08-05\" \"2025-08-07\" \"2025-08-07\"\n[101] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[106] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[111] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[116] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\"\n[121] \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-07\" \"2025-08-22\"\n[126] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[131] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[136] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[141] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[146] \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\" \"2025-08-22\"\n[151] \"2025-08-22\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[156] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[161] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[166] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[171] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-28\"\n[176] \"2025-08-28\" \"2025-08-28\" \"2025-08-28\" \"2025-08-30\" \"2025-08-30\"\n[181] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[186] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[191] \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\" \"2025-08-30\"\n[196] \"2025-08-30\"\n\n\nHowever, looking at the output, we see this looks like the values, not a column. Our suspicions are confirmed when running DataColumn\n\nstr(DataColumn)\n\n chr [1:196] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n\n\nThis is similarly the case when we use the $ accessor.\n\nDataColumn <- Data$Date\nstr(DataColumn)\n\n chr [1:196] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" \"2025-07-26\" ...\n\n\n\nhead(DataColumn, 3)\n\n[1] \"2025-07-26\" \"2025-07-26\" \"2025-07-26\"\n\n\nBy contrast, when selecting two columns, the structure is maintained.\n\nTwoColumns <- Data[,4:5]\n\nWhy is the data.frame column structure lost in base R when isolating a single data.frame column? And who thought to make it that convoluted? If we were an R course in early 2010s, we might go into an explanation, but fortunately, we don’t need to understand why, we have the dplyr R package to rescue us." - }, { "objectID": "course/05_GatingSets/Downsampling.html", "href": "course/05_GatingSets/Downsampling.html", From 922896f35e340090ce34363279be26afa507ea71 Mon Sep 17 00:00:00 2001 From: David Rach Date: Tue, 3 Mar 2026 12:57:08 -0500 Subject: [PATCH 3/8] Windows use of ps package to locate total/free RAM --- course/05_GatingSets/index.qmd | 11 +++++++---- course/05_GatingSets/slides.qmd | 7 +++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/course/05_GatingSets/index.qmd b/course/05_GatingSets/index.qmd index 9381538..1a798fd 100644 --- a/course/05_GatingSets/index.qmd +++ b/course/05_GatingSets/index.qmd @@ -51,9 +51,9 @@ Let's start off by recalling the approach we first saw during [Week 03](/course/ To do this, we first identified the .fcs files we were interested using `file.path()` to specify the folder, and `list.files()` to find contents containing ".fcs". ```{r} -# Folder <- file.path("course", "05_GatingSets", "data") # For Testing + Folder <- file.path("course", "05_GatingSets", "data") # For Testing - Folder <- file.path("data") # For Quarto Rendering +# Folder <- file.path("data") # For Quarto Rendering fcs_files <- list.files(Folder, pattern=".fcs", full.names=TRUE) @@ -179,7 +179,7 @@ If we were curious how much memory total we are using within R at the current mo mem_used() ``` -Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer's operating system. +Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the `ps` R package's `ps_system_memory()` function is one of the easier ways for Windows users. To simplify the process, here is an additional example of where a [conditional](/course/02_FilePaths/index.qmd#conditionals) can prove useful, allowing us to check in an operating system specific manner. It takes the output of the `Sys.info()` function, namely the "sysname" argument and then retrieves the relavent function. @@ -188,7 +188,10 @@ To simplify the process, here is an additional example of where a [conditional]( OperatingSystem <- Sys.info()[["sysname"]] if (OperatingSystem == "Windows") { # Windows - memory.limit() + # install.packages("ps") # CRAN + Memory <- ps::ps_system_memory() + message("Total GB ", round(Memory$total / 1024^3, 2)) + message("Free GB ", round(Memory$free / 1024^3, 2)) } else if (OperatingSystem == "Darwin") { # MacOS system("top -l 1 | grep PhysMem") diff --git a/course/05_GatingSets/slides.qmd b/course/05_GatingSets/slides.qmd index ba70aa3..6ee6e95 100644 --- a/course/05_GatingSets/slides.qmd +++ b/course/05_GatingSets/slides.qmd @@ -334,7 +334,7 @@ mem_used() ::: {.fragment} ::: {.callout-tip title="."} -Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer's operating system. +Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the `ps` R package's `ps_system_memory()` function is one of the easier ways for Windows users. ::: ::: @@ -352,7 +352,10 @@ To simplify the process, here is an additional example of where a [conditional]( OperatingSystem <- Sys.info()[["sysname"]] if (OperatingSystem == "Windows") { # Windows - memory.limit() + # install.packages("ps") # CRAN + Memory <- ps::ps_system_memory() + message("Total GB ", round(Memory$total / 1024^3, 2)) + message("Free GB ", round(Memory$free / 1024^3, 2)) } else if (OperatingSystem == "Darwin") { # MacOS system("top -l 1 | grep PhysMem") From 9de3f9166d2a9fd071d6498a5bcc1c9abd808453 Mon Sep 17 00:00:00 2001 From: David Rach Date: Tue, 3 Mar 2026 13:25:32 -0500 Subject: [PATCH 4/8] ps package for Total/Free RAM --- course/05_GatingSets/index.qmd | 21 +- course/05_GatingSets/slides.qmd | 11 +- docs/course/03_InsideFCSFile/index.html | 8 +- docs/course/03_InsideFCSFile/slides.html | 8 +- docs/course/05_GatingSets/index.html | 230 ++++++++++-------- ...-chunk-52-1.png => unnamed-chunk-53-1.png} | Bin .../figure-html/unnamed-chunk-65-1.png | Bin 66869 -> 0 bytes .../figure-html/unnamed-chunk-66-1.png | Bin 60336 -> 66869 bytes .../figure-html/unnamed-chunk-67-1.png | Bin 53732 -> 60336 bytes .../figure-html/unnamed-chunk-68-1.png | Bin 63805 -> 53732 bytes .../figure-html/unnamed-chunk-69-1.png | Bin 0 -> 63805 bytes docs/course/05_GatingSets/slides.html | 229 +++++++++-------- ...-chunk-52-1.png => unnamed-chunk-53-1.png} | Bin .../figure-revealjs/unnamed-chunk-65-1.png | Bin 73679 -> 0 bytes .../figure-revealjs/unnamed-chunk-66-1.png | Bin 65982 -> 73679 bytes .../figure-revealjs/unnamed-chunk-67-1.png | Bin 59275 -> 65982 bytes .../figure-revealjs/unnamed-chunk-68-1.png | Bin 71697 -> 59275 bytes .../figure-revealjs/unnamed-chunk-69-1.png | Bin 0 -> 71697 bytes docs/search.json | 10 +- 19 files changed, 267 insertions(+), 250 deletions(-) rename docs/course/05_GatingSets/index_files/figure-html/{unnamed-chunk-52-1.png => unnamed-chunk-53-1.png} (100%) delete mode 100644 docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-65-1.png create mode 100644 docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-69-1.png rename docs/course/05_GatingSets/slides_files/figure-revealjs/{unnamed-chunk-52-1.png => unnamed-chunk-53-1.png} (100%) delete mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png create mode 100644 docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-69-1.png diff --git a/course/05_GatingSets/index.qmd b/course/05_GatingSets/index.qmd index 1a798fd..56a2ab5 100644 --- a/course/05_GatingSets/index.qmd +++ b/course/05_GatingSets/index.qmd @@ -51,9 +51,9 @@ Let's start off by recalling the approach we first saw during [Week 03](/course/ To do this, we first identified the .fcs files we were interested using `file.path()` to specify the folder, and `list.files()` to find contents containing ".fcs". ```{r} - Folder <- file.path("course", "05_GatingSets", "data") # For Testing +# Folder <- file.path("course", "05_GatingSets", "data") # For Testing -# Folder <- file.path("data") # For Quarto Rendering + Folder <- file.path("data") # For Quarto Rendering fcs_files <- list.files(Folder, pattern=".fcs", full.names=TRUE) @@ -184,14 +184,12 @@ Ultimately, how many .fcs files you are able to read in and interact with before To simplify the process, here is an additional example of where a [conditional](/course/02_FilePaths/index.qmd#conditionals) can prove useful, allowing us to check in an operating system specific manner. It takes the output of the `Sys.info()` function, namely the "sysname" argument and then retrieves the relavent function. ```{r} - OperatingSystem <- Sys.info()[["sysname"]] if (OperatingSystem == "Windows") { # Windows - # install.packages("ps") # CRAN - Memory <- ps::ps_system_memory() - message("Total GB ", round(Memory$total / 1024^3, 2)) - message("Free GB ", round(Memory$free / 1024^3, 2)) + Memory <- ps::ps_system_memory() + message("Total GB ", round(Memory$total / 1024^3, 2)) + message("Free GB ", round(Memory$free / 1024^3, 2)) } else if (OperatingSystem == "Darwin") { # MacOS system("top -l 1 | grep PhysMem") @@ -202,8 +200,13 @@ if (OperatingSystem == "Windows") { # Windows } else {message("A wild FreeBSD-User appears")} ``` -When evaluating the returned outputs, primarily consider the total, used and free outputs. - +```{r} +# install.packages("ps") # CRAN +library(ps) +Memory <- ps::ps_system_memory() +message("Total GB ", round(Memory$total / 1024^3, 2)) +message("Free GB ", round(Memory$free / 1024^3, 2)) +``` ## cytoframe diff --git a/course/05_GatingSets/slides.qmd b/course/05_GatingSets/slides.qmd index 6ee6e95..e51edc0 100644 --- a/course/05_GatingSets/slides.qmd +++ b/course/05_GatingSets/slides.qmd @@ -371,9 +371,14 @@ if (OperatingSystem == "Windows") { # Windows --- ::: {.fragment} -::: {.callout-tip title="."} -When evaluating the returned outputs, primarily consider the total, used and free outputs. -::: +```{r} +# install.packages("ps") # CRAN +library(ps) +Memory <- ps::ps_system_memory() +message("Total GB ", round(Memory$total / 1024^3, 2)) +message("Free GB ", round(Memory$free / 1024^3, 2)) +``` + ::: --- diff --git a/docs/course/03_InsideFCSFile/index.html b/docs/course/03_InsideFCSFile/index.html index 3f937ea..28825e6 100644 --- a/docs/course/03_InsideFCSFile/index.html +++ b/docs/course/03_InsideFCSFile/index.html @@ -546,8 +546,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+
@@ -593,8 +593,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+

flowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:

diff --git a/docs/course/03_InsideFCSFile/slides.html b/docs/course/03_InsideFCSFile/slides.html index 174333a..f04bfa0 100644 --- a/docs/course/03_InsideFCSFile/slides.html +++ b/docs/course/03_InsideFCSFile/slides.html @@ -485,8 +485,8 @@

flowCore


-
- +
+
@@ -497,8 +497,8 @@

flowCore


-
- +
+
diff --git a/docs/course/05_GatingSets/index.html b/docs/course/05_GatingSets/index.html index e860126..d4940eb 100644 --- a/docs/course/05_GatingSets/index.html +++ b/docs/course/05_GatingSets/index.html @@ -535,7 +535,7 @@

flowSet

str(flowSet)
Formal class 'flowSet' [package "flowCore"] with 2 slots
-  ..@ frames   :<environment: 0x562242979388> 
+  ..@ frames   :<environment: 0x563aececb920> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr "Name"
@@ -596,33 +596,47 @@ 

Memory Usage

mem_used()
-
146.98 MB
+
146.99 MB
-

Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer’s operating system.

+

Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the ps R package’s ps_system_memory() function is one of the easier ways for Windows users.

To simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.

OperatingSystem <- Sys.info()[["sysname"]]
 
 if (OperatingSystem == "Windows") { # Windows
-    memory.limit()
-
-  } else if (OperatingSystem == "Darwin") { # MacOS
-    system("top -l 1 | grep PhysMem")
-
-  } else if (OperatingSystem == "Linux") { # Linux
-    system("free -h")
-
-  } else {message("A wild FreeBSD-User appears")}
-
-

When evaluating the returned outputs, primarily consider the total, used and free outputs.

+ Memory <- ps::ps_system_memory() + message("Total GB ", round(Memory$total / 1024^3, 2)) + message("Free GB ", round(Memory$free / 1024^3, 2)) + + } else if (OperatingSystem == "Darwin") { # MacOS + system("top -l 1 | grep PhysMem") + + } else if (OperatingSystem == "Linux") { # Linux + system("free -h") + + } else {message("A wild FreeBSD-User appears")}
+ +
+
# install.packages("ps") # CRAN
+library(ps)
+Memory <- ps::ps_system_memory()
+message("Total GB ", round(Memory$total / 1024^3, 2))
+
+
Total GB 62.5
+
+
message("Free GB ", round(Memory$free / 1024^3, 2))
+
+
Free GB 54.36
+
+

cytoframe

In addition to the flowCore R package, additional flow cytometry infrastructure support is provided by the flowWorkspace package. Instead of the reading all the .fcs files contents into active RAM, flowWorkspace reduces the memory overhead by using “pointers” to interact with the object in it’s current storage location (either on your harddrive, SSD, etc.), only reading in components to RAM as needed.

-
# BiocManager::install("flowWorkspace") #Bioconductor
-library(flowWorkspace)
+
# BiocManager::install("flowWorkspace") #Bioconductor
+library(flowWorkspace)
As part of improvements to flowWorkspace, some behavior of
 GatingSet objects has changed. For details, please read the section
@@ -633,9 +647,9 @@ 

cytoframe

Because of these differences in how data is interracted with, we end up with parallel equivalents to the traditional flowFrame and flowSet type objects. These include “cytoframe” for single .fcs files

-
cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
-
-cytoframe
+
cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
+
+cytoframe
cytoframe object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
 with 10000 cells and 43 observables:
@@ -656,7 +670,7 @@ 

cytoframe

-
class(cytoframe)
+
class(cytoframe)
[1] "cytoframe"
 attr(,"package")
@@ -665,7 +679,7 @@ 

cytoframe

Which also still errors out when not given a scalar object

-
load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
Error:
 ! Expected string vector of length 1
@@ -676,9 +690,9 @@

cytoframe

cytoset

As well as “cytoset” to handle multiple .fcs files.

-
cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
-
-cytoset
+
cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
+cytoset
A cytoset with 6 samples.
 
@@ -687,7 +701,7 @@ 

cytoset

-
class(cytoset)
+
class(cytoset)
[1] "cytoset"
 attr(,"package")
@@ -696,7 +710,7 @@ 

cytoset

Unlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.

-
str(cytoframe)
+
str(cytoframe)
Formal class 'cytoframe' [package "flowWorkspace"] with 5 slots
   ..@ pointer    :<externalptr> 
@@ -721,11 +735,11 @@ 

cytoset

-
str(cytoset)
+
str(cytoset)
Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
   ..@ pointer  :<externalptr> 
-  ..@ frames   :<environment: 0x56224cc6eed0> 
+  ..@ frames   :<environment: 0x563af7c4ddd8> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr(0) 
@@ -741,26 +755,26 @@ 

cytoset

Due to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:

-
obj_size(flowFrame)
+
obj_size(flowFrame)
3.53 MB
-
obj_size(cytoframe)
+
obj_size(cytoframe)
5.40 kB

And similarly the case for flowSet and cytoset:

-
obj_size(flowSet)
+
obj_size(flowSet)
20.99 MB
-
obj_size(cytoset)
+
obj_size(cytoset)
3.88 kB
@@ -772,10 +786,10 @@

Interconverting

Despite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.

To go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function

-
ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
-ConvertedToCytoframe
+
ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
+ConvertedToCytoframe
-
cytoframe object 'file5caf7fc9092c'
+
cytoframe object 'file20997f38fefd'
 with 10000 cells and 43 observables:
                name      desc       range  minRange    maxRange
 $P1            Time        NA     878.809         0     878.809
@@ -794,15 +808,15 @@ 

Interconverting

-
obj_size(ConvertedToCytoframe)
+
obj_size(ConvertedToCytoframe)
5.40 kB

To go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function

-
ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)
-ConvertedToFlowframe
+
ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)
+ConvertedToFlowframe
flowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
 with 10000 cells and 43 observables:
@@ -822,15 +836,15 @@ 

Interconverting

-
obj_size(ConvertedToFlowframe)
+
obj_size(ConvertedToFlowframe)
3.53 MB

To go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton

-
ConvertedToCytoset <- flowSet_to_cytoset(flowSet)
-ConvertedToCytoset
+
ConvertedToCytoset <- flowSet_to_cytoset(flowSet)
+ConvertedToCytoset
A cytoset with 6 samples.
 
@@ -839,15 +853,15 @@ 

Interconverting

-
obj_size(ConvertedToCytoset)
+
obj_size(ConvertedToCytoset)
3.88 kB

To go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.

-
ConvertedToFlowset <- cytoset_to_flowSet(flowSet)
-ConvertedToFlowset
+
ConvertedToFlowset <- cytoset_to_flowSet(flowSet)
+ConvertedToFlowset
A flowSet with 6 experiments.
 
@@ -855,7 +869,7 @@ 

Interconverting

-
obj_size(ConvertedToFlowset)
+
obj_size(ConvertedToFlowset)
20.99 MB
@@ -865,14 +879,14 @@

Interconverting

Gating Sets

Fortunately, regardless of whether we are using flowFrame/flowSet (RAM) and cytoframe/cytoset (memory pointers), both routes end up converging at the next step, where the underlying .fcs files are passed off to the GatingSet() function.

-
GatingSet1 <- GatingSet(flowSet)
-GatingSet1 
+
GatingSet1 <- GatingSet(flowSet)
+GatingSet1 
A GatingSet with 6 samples
-
class(GatingSet1)
+
class(GatingSet1)
[1] "GatingSet"
 attr(,"package")
@@ -880,14 +894,14 @@ 

Gating Sets

-
GatingSet2 <- GatingSet(cytoset)
-GatingSet2
+
GatingSet2 <- GatingSet(cytoset)
+GatingSet2
A GatingSet with 6 samples
-
class(GatingSet1)
+
class(GatingSet1)
[1] "GatingSet"
 attr(,"package")
@@ -905,34 +919,34 @@ 

CytoML

Since our goal is to examine a fully assembled GatingSet object, we will be using it today to bring in a FlowJo workspace to R. However, since this is a free Cytometry in R course, and not about to have everyone pay for a license for a one-off topic, in the pre-course Floreada walkthrough I documented how to convert a free Floreada.io workspae into a FlowJo.wsp that can also be used (please note that as of early 2026, some scaling bugs may be present and require troubleshooting).

To get started, let’s first attach CytoML to our local environment via the library() call.

-
# BiocManager::install("CytoML") #Bioconductor
-library(CytoML)
+
# BiocManager::install("CytoML") #Bioconductor
+library(CytoML)

The .wsp files within this week’s data where created via Floreada.io. The main difference between the two files is one is a copy of the original that was opened within FlowJo, and subsequently swtiched from logicle to bi-exponential transformation.

We will need to provide the appropiate file path for our desired .wsp file. We can start by identifying which are present using list.files()

-
Folder # Defined Above
+
Folder # Defined Above
[1] "data"
-
FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE)
-FlowJoWsp
+
FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE)
+FlowJoWsp
[1] "data/FlowJoWSP_OpenedCopy.wsp" "data/FlowJoWSP_Unopened.wsp"  

In our case, we will proceed by using str_detect() to select the .wsp that contains the pattern “Opened”

-
ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")]
-ThisWorkspace
+
ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")]
+ThisWorkspace
[1] "data/FlowJoWSP_OpenedCopy.wsp"

With our single .wsp filepath now identified, we can now proceed to set up the intermediate object using open_flowjo_xml()

-
ws <- open_flowjo_xml(ThisWorkspace)
-ws
+
ws <- open_flowjo_xml(ThisWorkspace)
+ws
File location:  data/FlowJoWSP_OpenedCopy.wsp 
 
@@ -942,7 +956,7 @@ 

CytoML

-
class(ws)
+
class(ws)
[1] "flowjo_workspace"
 attr(,"package")
@@ -952,7 +966,7 @@ 

CytoML

Having set up the intermediate flowjo_workspace object, we can attempt to read in the actual data from the .wsp into a GatingSet using the flowjo_to_gatingset() function.

However, due to how I named the original .fcs files (“GROUPNAME” being individual specimens, “TUBENAME” being either Ctrl or SEB), and downsampled to the same number of cells, we will encounter the following error

-
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder)
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder)
Error:
 ! Multiple FCS files match sample 00_Ctrl.fcs by filename, event count, and keywords.
@@ -962,7 +976,7 @@ 

CytoML

/home/david/Documents/CytometryInR/course/05_GatingSets/data/2025_07_26_AB_02_INF179_00_Ctrl.fcs Please move incorrect files out of this directory or its subdirectories.
-
gs
+
gs
Error:
 ! object 'gs' not found
@@ -970,20 +984,20 @@

CytoML

As with any error, my first move is to check the help documentation. In this case, my initial response is to see if I can identify an argument that will help differentiate between the names for each specimen.

-
?flowjo_to_gatingset
+
?flowjo_to_gatingset

In this case, I find that the “additional.keys” argument would likely work for this troubleshooting

-
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
-gs
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+gs
A GatingSet with 6 samples
-
class(gs)
+
class(gs)
[1] "GatingSet"
 attr(,"package")
@@ -996,31 +1010,31 @@ 

System Time

Especially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.

One, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}

-
system.time({
-
-flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
-
-})
+
system.time({
+
+flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+
+})
   user  system elapsed 
-  0.491   0.016   0.507 
+ 0.466 0.004 0.471

Alternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.

-
# install.packages("bench") # CRAN
-library(bench)
+
# install.packages("bench") # CRAN
+library(bench)
-
mark(
-  Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"),
-  iterations= 5
-  )
+
mark(
+  Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"),
+  iterations= 5
+  )
# A tibble: 1 × 6
   expression                             min median `itr/sec` mem_alloc `gc/sec`
   <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
-1 Test <- flowjo_to_gatingset(ws = ws… 497ms  511ms      1.97    13.3KB        0
+1 Test <- flowjo_to_gatingset(ws = ws… 461ms 466ms 2.13 13.3KB 0
@@ -1029,18 +1043,18 @@

Gates

Now that we have loaded the contents of the FlowJo/Floreada workspace, we can start exploring the various infrastructural capabilities of a GatingSet object.

Let’s start by evaluating whether the manually-drawn gates I drew survived the journey. To do this, I can generate a visual gating treee using the plot() function.

-
plot(gs)
+
plot(gs)
-

+

We can also retrieve the individual gates and their gaing paths using the gs_get_pop_paths() function.

-
gs_get_pop_paths(gs)
+
gs_get_pop_paths(gs)
 [1] "root"                                             
  [2] "/Scatter"                                         
@@ -1069,8 +1083,8 @@ 

Gates

Counts

If we wanted to retrieve counts of cells found within the individual gates, we could do so with gs_pop_get_count_fast()

-
Data <- gs_pop_get_count_fast(gs)
-head(Data, 5)
+
Data <- gs_pop_get_count_fast(gs)
+head(Data, 5)
                 name                         Population
                <char>                             <char>
@@ -1093,7 +1107,7 @@ 

Counts

Metadata

Since GatingSets contain multiple .fcs files, we may want to be able to subset them based on metadata for a particular variable. We can check to see current metadata using the pData() function.

-
pData(gs)
+
pData(gs)
                          name
 00_Ctrl.fcs_INF052 00_Ctrl.fcs
@@ -1106,10 +1120,10 @@ 

Metadata

It currently doesn’t have much, but we will explore how to change this more over the next few weeks. For now, just know that we could add additional metadata via either a .csv file, or by retrieving additional description keywords from within the .fcs files themselves (as shown below)

-
AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder,
- additional.keys="GROUPNAME",
- keywords=c("$DATE", "$CYT", "GROUPNAME"))
-pData(AlternateGS)
+
AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder,
+ additional.keys="GROUPNAME",
+ keywords=c("$DATE", "$CYT", "GROUPNAME"))
+pData(AlternateGS)
                   GROUPNAME   $CYT       $DATE        name
 00_Ctrl.fcs_INF052    INF052 Aurora 26-Jul-2025 00_Ctrl.fcs
@@ -1168,13 +1182,13 @@ 

ggcyto

packageVersion

Let’s start off by checking what version of both the ggplot2 and ggcyto packages you currently have installed on your computer.

-
packageVersion("ggplot2")
+
packageVersion("ggplot2")
[1] '4.0.2'
-
packageVersion("ggcyto")
+
packageVersion("ggcyto")
[1] '1.39.1'
@@ -1187,8 +1201,8 @@

packageVersion

remove.packages

Since ggcyto has a hard-coded dependency on ggplot2, if you have the older versions, I would recommend uninstaling both first, using the remove.packages() function.

-
remove.packages("ggplot2")
-remove.packages("ggcyto")
+
remove.packages("ggplot2")
+remove.packages("ggcyto")

Once this is done, I recommend exiting and then reopening Positron. This will ensure all currently-loaded R packages are unattached from the environment. However, you will loose all your environmental variables, so will need to reload them to get back to this point. If you are working with code chunks inside a Quarto Markdown File (.qmd), you can quickly accomplish this by scrolling down to the point of the document where you left off, and selecting the “Run Above” option showin on the code chunk.

@@ -1197,11 +1211,11 @@

remove.packages

Installing correct versions

To reinstall ggplot2, you just need to install again from CRAN (as with it’s rolling-release model any changes the developers make become immediately available to everyone)

-
install.packages("ggplot2")
+
install.packages("ggplot2")

If you need to reinstall ggcyto, because of Bioconductor’s twice yearly release cycle, you will need to install the “developmental” version to take advantage of the fixes. Since this is for a one-off package, the easiest installation approach if to go via the GitHub using the remotes package’s install_github()

-
remotes::install_github("RGLab/ggcyto")
+
remotes::install_github("RGLab/ggcyto")
@@ -1209,8 +1223,8 @@

Installing cor

Plotting

Once you have the current versions of both ggplot2 and ggcyto, we can proceed to attach them to your local environment via the library() function.

-
library(ggplot2)
-library(ggcyto)
+
library(ggplot2)
+library(ggcyto)
Loading required package: ncdfFlow
@@ -1220,54 +1234,54 @@

Plotting

As was mentioned, ggcyto follows the ggplot2 grammar of graphics syntax, which we will learn more extensively next week. For now, lets look at a simple example

-
ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 

The function responsible for plotting is the ggcyto() function. The first argument (“gs[1]”) is designating which .fcs file in our GatingSet we are trying to visualize.

The second argument (“subset”) corresponds to which gating node we want to visualize. In this case, when set to “root”, we are seeing all cells present in the .fcs file. If we however wanted to visualize the cells within the CD4+ gate, we would swap the value provided to this argument.

-
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 

The next argument “aes” stands for aesthetics (more on this next week). You will notice it has its own set of parenthesis, in which we designate the markers/fluorophores we want to visualize on the x and y axis.

The final argument (“+ geom_hex(bins=100)”) specifies we want to generate a flow cytometry style plot, with it’s bin arguments value setting the resolution.

Now that we have walked through the arguments, let’s visualize the data

-
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
-

+

Alternatively, if we switched things around

-
ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) 
-

+

Briefly, if we didn’t remember the marker, we could specify the fluorophore

-
ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) 
-

+

-
ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100)
+
ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100)
-

+

diff --git a/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-52-1.png b/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-53-1.png similarity index 100% rename from docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-52-1.png rename to docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-53-1.png diff --git a/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-65-1.png b/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-65-1.png deleted file mode 100644 index 3453133e435cfc5193a3b570026b56c87f30bd6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66869 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

^8JN+1cmwh%;#dj?S6o{Bfq-d+WadaVCLi literal 60336 zcmc$`2{_e#yEeR}qGTvVMM;IqloXLEDkM~tnMzTaip(0y|D*ElnYckB?I9_iI;n0KKHOq| zMZG6SblliqW{)3J{<`OvG6d3HdH0Uieojcg^T|3U>+@%Q)(^k6x7{DQ$R}X-DS`jy zrSmcA7DZ8)i`IRxyL4*ZsgtvkoH7cn(!DuWee|3m*SUqQzV}Vl{|qrMp9&ZDxSA{0 zHy@#CW@d(qAx-L>OrRnDaa6?>KV4~=+Np3oYu4J~caKR_yYXYM%>U7!ULL5YZm6lL zt8?)xkAeM&)m z2l@F&YUApi7f0$pnbdDhqs9F%apoJ#n3;|Eh_>2w`G{V=d|9N~GT)VIuGy;M<;e$w ze5#W9JnT;6UzoYi9pL4So2&Km@@g{AGVA{Sj8`M!oWB0~^Wy>JrS65H#IeQ{s{^YnY5Y2dE_+$6OGTL!Ycgfj?E`!wtjVzmyK|Yth z2wRoo9qwbfiwSN*#2vHh-MgUXxE6=f*qWqNzm8Sc&%uF_Q~lB<`d#AFEw*iD=~`*~ zb<8tvgo&7mm ztBV_W!p|Fbyz09`bLh$I8w&8qc*lj*(ZUqi2Tdd4gD3Sez*x9$CZ5O4mxh&~Pl_G4Mp%^jCIZ zftzib%vc3kKc4r_I2LWw*t&ITj7HBql zYu%3HeNTR^%eW`@_U+rP4ny(XTzQlt!JUz+&R;k1e9+4hnMiGA`x^cF?>(e4x;&EB zCbiK2MvfMb?*6r_*48svSBWe6uHAD926-!Ot1Gsh19(b}cMPz^tHB1&J6xQwZ5Vfn zr`j8?$Eql=aT312H1W-ouD)w0eHs@RmofRi%^8O_s|v{g>Lq-N!{smzcpt$~^;U5r z+Bm|x4q?=k<2XmDK4wy<>o5?7czPl|^6QO!L{_8O&0nuiPxY30ODDv}{`lUGgmZH} zRc?q;MWmjwB3bHwa-Achz@J=BmX@BN{F3KrvB+EQ{Tae6`{Kxrv-s1~jm`}^! zt~pwjd{FJ((y*~KvFy8L-+%bv)al7Hn0-Gw!X|TdWpQY0EwORQ2d~wiD-9M@b^h0Xmxs^dg%F^#4bG6WkjIP_3K!h)J?dJvr0+<=vqsrHSeK?wmAMEK?7n3k!@S;wYDF^=XZ2$Suh%`ic*@a zzEK(!j}Q}6NP92dx61s$etD+8LaZ-5G&Gb_ot&J^W|2LCbkbk>ssOuDAL*4&F#GU@ z!qMEt(V?cau|(&YI7)S5-ipI?|1WEC?bMqWIwzP_C4|g=r*>;BP7hci0U4Xd;j9hE zan*R+1>=%>1DBjqfvoG%bAq{)z4HS>I_5iE?u>k@=Wg4$f?L=wVyd}x7lHm%V)FYc z#dmf4;VUwoYgfKM+vhUjZBUrV{Q?XAc=NuU{nMU2k?(~gR$e|}*g`CEask(L*-^xa zzrTMs*XmNAG@EnjaAS(?;_4-2*~B?4$bRV-lf)cZ+R`9?rQLFg`Z-$$B(GvSo#=gG zxJ5OXUuU*A%tFLs6E6CC0IBU9?q!FB-JMB)gz;Q$Z7qFvPgJn}f~`N1Im^kUi>Y@y zzIKP@doXqGn@1`NU^PeCnaREHvCBrmIW+w>%A2cGFLwWlk<@B#mGBpK;wE(;@|H&| zjKlAq$?=Jci^HZ^>E?Q{p8mFeURtxI(xmkywgAm;yDPMu8Rzt9Iq#OviFc+wR=rvM zPI>8MeS)5^_~3hS9|OmcPpA!)F4Q@*q4+cv=VK;n*iR&;_OP*U(kl~z8v0@ut=WbC zs|$&%zs<8oW|7Cm`AtkrT;@v+a*@bN=!i;ZbZ-G!he)2*b=3%OCRscf9C?cd)j6`% za)fPbj8#a!KbI1AaYi@S^1_U_bc20g1R42Fyk#W4>#65gYYpAIMT$HTHBW?y+%FYe zDQbX(Vv#xUuA2*WOJY2q8Y|w3#CpKl->Eg*zCwC+2?ftQZ+W&m2z9F9?zdg_Z%1>N zCQC~N^Ojy1K2^*;pNCY2YkMLsz|X(jI+q)47xVe^ti1HXg~?-UkhJG3U&#fmc2;Is z^)1h}%n2VdZR_aeUk63!0jmy1Kd+A(^jVzsBtl zX^&0E%-Y(zB2toB70)JEKu>!tRsa=7&$i{*#I$JMe3_D9&T~6)$Jt>yM#+14)U8Hg zX4nQ|xXm?&z=x^=4rrTqa7 z`yH8rxaHX<3$_u5#GKj8(aa(L;Ni43XAOP(o-)z4@a#L~;bPXkIp20!e&-CW;uWJo>6f8fCJp${pM4uc1y+ptMq%eq#$;?_~gdjeFY#HM}<0}*Ijgz4Ed_Efm6 zOhuEOfA?q1J=%u4kkJ>ZDlt)r<D>mAuKY3u!8eLgNT+8M?`3OaswY1~-4<@QL68Le-mGuAlpUyuYqB>QD zMb=SM3mCdUT#Q+c!_3*7BvKnYl7Uv9^Zf*Qtc?tB=N1S2`M-yX|09<6vXmr|Ue4nz zQ^ab72uI8N?p|J;8^co-FAKdsKiR`^fBM&7>*!GLGi}FOQ;aL5?k^m5G~>Pe!EUmI zC+psTCE&Gavt@}tR{*!NcG9&XP7n6vA{L#aS@NXE>_G6Z2N4yNG7IOFD_{PiRBQ6t z)M*(S)!x`Q9+cxzUz< z@nAs%DO3vQ<%MJH?Z)Nd_8kvdFRQD&Gc8OH?8~RFjKyj)DH1y$U{m+frDHcMUlNcE z+XlfoNzEwn(P@5?jO?#$7L*Bm%*Y|-1T=t*io0$D6gNz2KuosYpKB=z;4!%O>$J;4 zHTg4g=&8jhrQq@~(ZtM5aq1@aukIU|4;?zhaJ=31m7GW2yb=}3bP`?5yDNuwVFM>SU?%nYO*cJfsAZ(o3K>YR@d(5Sq<8gd2Z6~o zkE6cfChs5#CuUEc4G4`I?eO4;6gF0A%e}uk?jc>1;gs{?!>~r)!X;FSz6$c{Xx7*x zCY(jY=;sSc)S{~N^7IQK!yrDb9+%cT^Qjr`?{vFf6&o9i{1n6VHN-elOI^J} z^>Jrs=RQENS`CBcvDK9^B4hqez4b=k_i5fVu+X=~k%pwM{$Fnxu{ioU4)j>#fvPAh zu=K#&fSn`v5$>L!a&Y0C?trJxc;X2$G4}nhJc^&}P}9+2bNPh25-q(v@bPNFma+Sb zBWVCxvk&Q5xr6SFHqR%Q3N+ca-B)XKB7GMl;@cS5@Xw)g%O@%Rh$^%u#n+OyhD9|D z$aCCR2l7Vj5SM9aRxXb8ST4@HLh+DZ>OjER&eUqC0@0v>yT3R)(ws51G(ROr8>f-D zf-R$V`LYdw;p|YoU|{PUk|WU-;jIKJu&&pu&vRJ?7-RbS{=%C`M7>Ic_%7?33rL2M zz(L61sKd4iz;ROkSRs9vM*T!jhh2-g>KK%aVt@;QlqZD;7$Zi0o zwhjBoB6q&GCi(~KsxO7oWfF!^LK@J#e0dg6HU?>CA_$-+6RSXUPq@?!915VaIP{pw zBZgfLNdMp1mJqVp{ja^>sYEOwkcsw2^)4!&71H&oiox1AIohbGDC;2G;RYcVqD@cG z&&fm_9TZVYs>U;a#Dt_3IodBr%NdSxKERsECTgy$tXu|Qz>FU2<4{7@DArRL!7u4J z3yhNn$o}z*fsg>w1yPkMX*H?BH6)UY75iP&qL&jkb^Id;l(JIGo1OQ?hv%eI|OQv{vzDDw2%I2IMM9 z)V&RyrkdtCsJfp&e}4J$Wp=j2jL|_aa$)2NTXXS!zD?*IHf}s}hd11gb3uG&e2DUe z(Rm#C?c9sQ9Y`ql$SNq2>A=myhzgor_s%1ZsyV1h*L|A4Q^`!<8~J_A{o}PFFY(eY ztsETQd6dXNzj3#6v=eL@W5Fs}aR2yix8u=UWo30pVN74M#&UIx=Ycw$ zz{`AFRhb~rF*@OM&1-Xk|4@VKZv^YH$Rbn)lZ91C-)V_WAFYw7e_}Mf3(trHOHlY# zE5#@WAA9)lAvQK+SPh>wf#HD{ksYkQtYdXT9w`yLq^`a+o0bVED!3HWO zey;{9nf-cqa01X+Z7Z{BKYsi`$y*Gw$hAk;%*)H`!LVy*qFz1mNU%rgvDxQ)f-7DK zbzw0ZZ$(ESG_#O6{^U9AS+8xpSS**BI0LS>Pyzi9qeLl9F)9;jG7WGr*mvg13kmzl z-HyXT*9sr|e8K{>`*F$ui}G*}^Q zLStlEY8nR9`h*rVu|$`^^i}8^dvy(RDyovg@yD&~2>-!4EVMAaqoAZWRJ zND@U)FQa=wWuwFovmM4AVDTN7C=)1Qo`MGt9TK0ZQ6tI}rJA6okPpicyR(x7w4E%S zc!&*hd~rAhziQY@Lrt3B6O_)(7qbXPNxT1|4C$sn9zHIq3^2j)+f&@-FtX%7fD|5K zC~^#T4$%@L@*ENs6653VBSYgawMedV3}X9PynQ&NbFKQyt;?MgHIq6^c*w(8HINXy z3?_YDmJCtxbu4mbz?X&Ioc(Q*SQaU{NR$#pQ^?Zn{8XPR7z~h?Em^j0S3P!#WG6Lu z7I{nKDd2D5$83h`%}?<8)@b(+75?FG6g@~EEufX0a6vnVg#Q47_*u9 zum3uaOOUmX-=dU(U(odhUF~}Ll&i(lzyA75lP_rK!YP?sw{D$0`DL=F)JoE?E($E| z`}YUjKO$NG{{35*F?!plM&MlB$>ZYyXC+7K>p7jQ?iLcZI6vj#8za2FGk1oxSEWsyBW5^vO99>)@wco-g|CME1ax3Ay5d-w9?75qoWZiONLBPtn4N6#T2vop6)xvHnT|2L&FlIwvT&gFCy zG&q+;+CD0hHXAN?XYltC>!8OIB$+zm3_FvqI;c9wxM@)R!Cy$z|GQwf^OsCi=7l+q zgr~bme!GYZ?%Hy&#jKm;s*9rVaznQbRHXkF2SZRMB=?TKY$lh(gDVAAC$>PA&{-ql zr{vkM-xsqV9F8@v_PY<>a-Jur-u_tF11e~1JVcHA-x;6oGX*yWwZjs9((a|O-plCiObrXNG}^*7Jq@zFov(s{U9jE-KQ+zW=0`8$m%+Cc0SpG?@%8Uc6`tO^Y4kqjl8^ngik6HSfXbx-%g!+5Wy2?Jbab zbE-_VqMVzQs?xZL=WJU*8hbeD?ZG3#l^T~WVY;TgwvaLzm}VR_6pkyW{xxfX}}BaYmf5jRgFMVwVTt|G^a6E9t1(+VXs4 z$60iiY)Fj|vW@sl{Q6KN!CfuHaOQHfIz7 zqA{d1CxnQ%JZ;oVfURP7np>=hz#S?V@ zi2rAWSb3S1m30i*)l-A&=I8g%Yo7i%e#;EW@a2Vh=MBqX3U=p_q}=Ze#zdp~Tq{89 zlA??@=yRh{n0P5#A~{+h`Nz@`$4o9$$m(QMU~o_|X=qy_ez{Snvdmw;nAKV}XMJG% z8I|tw+)X6Yos*LJ(VfrLRAOxBp>#3%Z*k0)xo>Z8A7KkMS{6lCBvTkHE@drOrI6bilqQ@khp6SRn;k~YEHC$+i`00~{CqzH<+Alp zC90KA_4;9m1foSsvuNYHr=g=m5Z**o6%`e&&XZSn z7^I`0W|IB(bl1>PfL!Hl?QdXix_U+jUmU-CO=32{3#GW%fi_+p?Wm=sd);>`GGCbE zn?{3DspNa$w8ZM=ZblI#LWk;3ZEY^>b=jqarI)6Z^SzI7Dv zn^x$U)~#E|s&98yY3>+$C$x2a2uhRccV&>38qtAKCV}LcWU&E;pQu7s6g+x5Vp zAjt0x8d{h2^>^ppC;+NjD*yftLJuf6v3BM&z!faBXV4kly?dATYHjSLnU$IAHOn5N zx;CxybrOgUkYiBSrl-seiQ-dCR}=W0c)2qn4b*?o3TOuPF1GFc-V zGIH`k6rboU;&g{tV_;drg^jJ4lI1f$m$!Pq#kxKolmPno6X>G5R?})XOMhE|>^K6C zK}l&>&(Ken^*3Yx-q4LlyPNLsAT>OHyRF^$=La31y|93q+UyvT0H)$y?`ju$WnjBOXiMgfnIjOKo( z+?sGZNj$skx(W_fju!h&x%o6Vi#H)xA?iR6s2t7e4K)F3h7|IdVmkH25r!aHTHxBn z_fpV$y+xZqx)4M;s9q4b^iWC+z{Y|hUTSJv0hu@p4dU@C6|y*KQcXL!@>{80O$Pk{ zHWae`m=lO+&yC{<5rW3TV_2Q=bzuj8IWV363WqF=ZX_%gGa~(v-a4ZQkIhtH#VXho zLj6Q*k$3J2XmO=xUIMD%1XM%{W#s%BaYEGoDpH3WEmZNm0KuDMEm?CoJ{IwriY-oN zNXVaT8Hu_Xmce>9x7zi9{FNol(Y}M68i&ki1wIF^2ZB;=|MEajf{~PZl)0Ts!2sug zbWTg0V-9t%*=2RPi>@nX1#X=@)LUl$F4m?rlX`)O(S*#wSbA1-WPI>la)Z1Fp>+1c z3n1SA^4^&>06~kpNR?Gp8^;OK9e#zMA;KQ?Y&I|)v0MEV>gnkL?WaN80gcmfb$PDK zmteFZV@NNlex@NcxNjICrTV3MH6X7v->X*UbYDlu67IY((Dluik<%291>AOQOpF+U zuKak{lWNE+j%|zj=)l04tY_RE9&&+zl)M3TJ3#qC8Bc{+0#bz#Dm)(&YBbzS*?%iA zg~3Q&Pj()Q1+jh02601*SJO6b?<$8KgCN<#_MMonljhroV2WjcOEaTbQw!X%5!;$taQ5X3twZy)Q}v;?-z2|g;( znNykQoJphsldn4{1P2B$Bk?aW&Xj%DZIn)?v5AK9JaV70x^O7Dy!KD z2FTU@$vVQy_p;~Tbk>h0JJDxk>|WE@D@Q{Txf+t;!!EO;@br%7H=^~BFW^)X5bp}1 zP;-cbN7~ZvrYuiwY|tgBcrPq+O2xs{P;kDI%2oLZ`uhKkVR~6&)n1=yAPrrNK3GFT z!-MJa2h9s(ad#1M2z2F<&A67EmaYcrcdq*GmK2#C1RGCK^5(;}Fs$if(ea)=r#&ri zSjRRVGz_v3;S+5buIO*QOUUOQOe)f|ubzBh0y7dL%V_$Sd)iXX>$DB&hSR?$Oumpv zBA1kD$3go^bUhKS8Zd3ocN@swg;Q$BbFZbKhBCm_)bohgkfu)#{Tr8}^;+blEOifl zD{=-j$YuTq>pIjn8`wLya_^zb+MD5B*d@{EMB1}@j5FUC0>*Gd(!jl0IMDjv2B@4h zrYBuL<;~)5p{{?r?u_l}?}e^bSp|4Pa?ER%Qg2mrpL^k_VvIfv@iujoGe0;ma0X&e z%q~8?%v2=*m@(pd{Bdj|T@$W?!4W{|6PDfI+04^9S5lRN1wf`+RG%S2&z(s-VdF9+ zKq*L#af!K^v9X8T3CH1eU_0zhO*&+@vg-bBtCVUgB)IuQ)7~un3s6GEKzmZEQ508D z?xnC7kF;(kS-;hnmrRl!sL#uVtr7%XSd74AA^1(<^fr;JSYe zXRq!Xkr2Jq5>r}|%=%++mI3kT!HP#DR*9Us;YKS$L+3u{*Gk-Y6p?nIV*V+1T}a7< zsDgFRTY*X*mHUXG1fu*WvG9+z0r5MamY4*>>Eer))TbLuTM#xbR^O| zH(@rpRt;k)GC_1T0R};WiJN?92F6mkpZCe=?|_-e+U9o*8Gk}Y_SCeDkNNzB_`bF~ z4Zm7aoi4-JqN~d;tNGbfOKmma_VhlJ!JVOL{*Mp+lTB8HYa!uVmDe9!1z>eKK{o?* z{vXB}{s2LMIj4Cz4*HHZQKHWwxy@cZ&GW`=N=CZCl zoUbzuEUu-5KX!2S4WF)P`yBbbeoN@)cDCj3JC{#Y85D5KxK?bSlG4C?nA)vQyH+G~ zucL7PbTa_L1P=}r44Ykb_enfn(yg0c*(roBg-~OIWv$eQz~b+N(UbpALRUt3jGED} zqAF1!GPCfpkgcOrq~*Zj{`Stc9%YumbR1y*eI7+={Tdt zVZV39^XU1DQZwLQ{MLc#{l4Fmf#k|k)h#>@)VvDsTUfmox+Pd{L+A8y&YNYS?Co&l zHViN3`)(KNgpy&_>iB01Sp7}*$^=y8qv2UW&vi@Rn9ymaT50{fYUsYo$(k$uh%;2p zaq^@(pU6!^0mKG~yw5MR)%BdBI_q3qaLtYRnagc5icW?sn&6pmELa+Tw5} zfNK@{#KC{1PrNLF_Tf6sb(X&_E4;4c0+mcbC{sJOLOmSbpFlJ6i|!=dytGzWa%W>@dOqM4BGPhE^S+hY4fN?Zf%+INC>InX%HpmUcs zV&dHSX*yEF+YI;JuFBtvJ0(f^SX=@j{*zuy-r6n=ix{Et5=I>rA`^V{yw$kZ2A8!9 z{b2gtE@;@BWw#4mJLPRdBcoCiVxN1JE8`5?(NEs=EkX0{FQT?SI%)Y#0KE-HMFL4PCMk;?Qn`9|qZv&I_zEo@c8 z#~>`9=cZnQRd>F@(ANhA2{vSF{hcu3!Z6`H89=`N@dRm7%Vy)(wiBa;N9!y5j}t1u zCPq^CgH3BGFi1$xHW*^pMo8FOMg-&EzA$Rhvx%U6b{?=LsE+u{Q`Adv;FIk-J%J`v zLXQH*e=d(Bd_la4*;NRP=|_L+QRNd-9)SJ?kQbZiC_v$dm>5Mq-=b>-%*XXWQFcad zvmR~Mav+}Qxm&WXt4J%>Ftp|^48|cmRr#J2T|U%*<{fK_I^dYv^O`o^ADwxQ+l8@i* z#5Hbl(LI0uBfPwfY$C&G9NJ)S(>5|C`MekH;?g*7k$SS!hriTPQ$ELy)GX8GQ=)BN z(Hp9xuyA@s^s|56ltp3C8YcdAWp))Xol2QEr`N*{#hOQXIL**~_E1qlwdu!_?*aT} z-<7+*zpP6sFgr*Jd(^v@0@uPypUa9dWWa>%$shD%+ll9NT^DEowkzVc#}Kd+(P%MN zTE?73QO6@}eh)zK4i_>!Q~HF7*qvuxF+I>nIBW)>LqkV}^n3$H>?}q7s*X#@ybY@a zvFBD%&G>cGKb}5AOr6AQnilA!N1MZkO|VSRPDNlb6&IWtsO|%l9)hRbp`cWa$iK#U zpLYMNf?XNPP;dj#;E7O--n0)orfi5t)sX^yIR&EuuCkJQP z0<{fhM#s77bL~wI{9AgSl)N#eyRdku4~-OFvb5-j2{pSo)NGATs0DniKT3fZ3<#T& zu5Z+~TVO1}f6%^y7MYxUgwP?bC20Z=X~b(IMF&EM*cfK^S!>XzdgJ(A6i%3-7SQgA zL#2k{ggY-4y%iC)Jdt*tXzj>Gg7#4}-LH>s7#I7sk=m(w+)7`8i{+h`e7sv4&l;zc zdcTt~rngv%EAKqmy85K*PRf(D6er5}s^Arm*0;w_3FY&27fAc{D&ilfY?Y>bNMzv(`X5@vCps>fe((ZyaDQiC`~{y=XN)mBMk)1P2C-`X?z0|9iE7LRVePg@RtSW zE%l(`=jG!w^(5wxUIrex{p*wMV9mf!;R*>DOhJu~V|x&t4F7N9D5kMT#AtG74u3j+ zx;H=iO?h^6O?11+Ee5BpCg#Q`r#2q1kC7!auItcIP-86b9jVyLSiZhDUsSxjPA$GY zc}`!|d0{b!@pkdqL8raF`F-wU;~Cc&oK#*=lX-jdjkU_X8j3ImbQ_i(Tq%0Lis8^H z4-$DVRjz#%-{Xk0u5Cwe<3s@)k6YNWWf*Bom!|z64^BFlkn=&rT94JmLUbM z64C4|^TpCR&n6Jk1$FT^n7u2@4GZ@z_}Au&HB&ekb!8Sz6pnNN977gH+*kS}JmD@ADgKooobw zhXpJfxuPA2mR%CZDbH0ehN7gl7!3w4gGq;87yU0#&uvZ~E~8#~_B&n3AO z)tz~y6uzXiUE^XMY*NxUav!(+qlNxQkuM`2_FkKV7Yh>_s}g_jl1-m++qYBdylBUf z0kNc{y*B)@jkdfE4QI9AzjYFqyPfXcz1N1QkOgtd`ieFp`#EY(Fy|^h?AN)};hG(| zbnr>YozT5DTJIj~sT{Z#%CJRHDIz#!#v8$~V@k}7 zP6iP>PKpQF*W1fWmX70ne4qKn7>iq_>nIW#bhd8_9!J#YcC7b#S7&5;D}vP4-<0yE zV|q91%qH?RSH`f)w3AW@X1q46ajHXd#d>*>$TyTXjw@%mJHyuj2|_7nITl?q6$Ym|t_qIbfLDC%@1F@gX@0vfk3yjI(@ph;iXFAw zkCMZK5gXdx&bP7+CA7wu4zp9HOWj%;g?Hcr~KWo9v#@H zROeuB`0OCko|o9T*i{Cn1f;zi{F;RVjp&yILEHh>@VXOIix{|j4~E}UW1Zb!B=Tu7 zL0YnOR32MkZ|?0YO2TaIVLMv_ZVaX<7;oxu=`<0K`h79Rhy0Axc5`4+{p=6XkN%W| z_sE0yevR+kX~twxU9)p#K!IW0^I=G41Qpx9Kg;pYQWZtwASM_wn59L>!gqk5KL>8u z3Rqz&mQ;~@@{N^-4$_iySz0u9Y#P7C-RI}YD7h?j{rYyFv(ov|$x%Km4HkRC`vNyP z@10psQK$Ski+qh#t3pfUU1P0)HBKkHly}}EXn1(uShht&?Oj$qw}=!u05R8R8pgu%xZjoP|XH03~CR~$Z5F9 zN@_w8M6T~z&LmtVW>VfN1|&cd!?Z-vTF&o(O-K8G{=B7t^V~4cXeAwe1{G# zsp^^e<}8PtnK~U%=PjJS(Kv5W@$XyPT3;6^+%*+M1Nr{h_aF zfJ;qYh4Qy6Wm%t7yl+_zvuk8H@8- zM;U(pyh7m@W!mG}J3iCX-@~>n`~3KNyn0~o?sir1V`p?0q)PVuuZ?M{z$=3c%N~M# zAUF^(ND1%XYvwpugMU47ufGzS5n+VK(8?eh1o0sPw04H>XeThbNkT?12mr?dm%v8A z`qiPll_BuZPm8XV4H0wzZCRY`Dke=}5nY8N_SST$7lgtwSosKu+E*4<|Dl7}{hUV) z8J56l+tyr=f5-&Z;tmKe=#JOD`9D)|Kn&a@z`h5)!vu{H>Lyg!QB3ztBV7pSXTwhh z3FKVJ5yE-GpS)Sin8C>l);BTwt#UG0<_7e5!VcDI) z>M=>d*8~TGpH~czY|=J=WN*YcHZ5KKj%CRrk|lO7^1w9>On+3g@szCkx#Z2A6l0Tr z^fzAlCwvL|bY*iEBsCQD@<_=nD3t(AMzC527>I-XA!cl-sMljKm}X+>Bd{#^rTI{k zgbkd;m?<&Pb#aUr(?E2*Ybjl?6t$~6Q%N0jYSaS(GGG=s>$jzs}`;G;yU*YsPz+?X(7MW$!IN{$u zNwaIKtQ}^a7%+Auo(MiVM*NScb4y^9T zxMkH&^d?NQ;23h}a>mRkw^8O-7RNYb?M5?J$AUf*u?L3$F|T-krk0zKU`U0>`11vI zKJ&R(X4#JUTnZe6ib8u8Cd(2!B>7CFDGw$LhPGs1081*vTc1kG!)%K?6WU6BJv}{( z2k;E+h4Xu)jg?<}t871f2v)^JOvdY1k5Y5w$>w4f1hJUY{ukX~_5vZbcko$4;_&>b>_Lx8Cbcg8* zEF=Yj7e-ewc9{=FhmMX;ID1{jOA$@4tx2VxOPE%DJyVjh4@RNo4Dw2l$oV_Gfgd+> z$Vd#;@v13GnPl8I>{OJ>2)1*DP^k0y17>NKcdpo5-sx2poAW7|+G|sCamj;y!{5nB z>>s%a_3NRO`#7N!LLCDgP0vXTB@;v_@Y2oM>E@zXB}3NtzCnr3K1moS;6?e zcGC-+H;#vG`48a@a_ya-EQc)Qutn%O_c6Z;6SX0@4`c&n=NSSZVDfZ}YFFD`cuyQK zv<^Y0rY0A`;F|t!Taq_1t1E?xLy!Z>!~g^r%>QB_!im*@kAJ^2_kMy)a)fO`YIVtK zfM|xQet|-}3ve&m0-Z^;B^8cVECqIWZPRd-lAyAoDc+U8THP%+?yjrK|CGt9J%CF! z%k0;V&-4{;6|!X`-8))7%_X#c{K75v<+z7%2eY09I+QmlZDIHBh-95}c=JvF8e@36 zm86HVLhR{0U~tyFW#7Wd-oV|aRlTB%3gsSEa|c_;UQ+#wZmN_e$)o|I>=Z}}&~Vm- zJ=rv=2(q23_`qAtAsT=5cG{C4t>DU-all5;!nNY-;ho>fp4;;j&&;_a2FVc;xxb7; z&Q8)hy_?wI_O@AHe$Y)~*chv+#wR^c>LJQw{PEqnZ?{y$=61TgP_^Xi>!@e$Js`>Z1fi& zu^r8f@=4&_N29-x#fz&k?hc~4`%gUb&pzbF+Ci)2$0bNZ!y&PgB4eBaf-F3tW`P)AcpmuKD<9qy4YAeT-YiX^G}k(bFCGNfTuE3+V0`wIw#!zVxI@19TLQ=$Q5B+=?wKQfn{Qb8SH$WbnoSKSv zae^5~AZPkwaRcUN?m$p{Z1Bl?s18F@-a?;m*B;{i$#deTn+Do?mc)$2^=F4iv+YBi zy6${yKb9lHz-4o&r{g+V%f8H(Eq%7&U{J%sr*8H?N4fjl7bU$C1-H&I*^Q=6(dmt` z_gyzFQTf2K(0RjKPqb1nXJOc?YVSJ#i^CYg=C+@1zH58) z<=0uY(<@!^j4*M<(9$>Js}^8IM?>LwtQNM`K_cuiJpfTL);YaF)>XruRB^#{qz+#c za%al#bhpulU5^5p_Ft&(_U*ksBbwnB(RBK<|6E|@($g{5eEBt0Qio{A zAB8ZCgWSpla0JM@msO}T4VS|exCIC=7!qjwKQD`8Ltw*|cACx?_smTm9q7$T&s0wS zu4SnhwA-42wf$1=snvwT`xw3iW?!x*=K_U)o2v5yGxYCHHNSD3^QW6MQu21grZkJh z_?e}9H!&vtBq=~eTygcz-)l^|b>NDtZElM*kQR(a83_rakcvEpid|rSW7sY6eLImn z{@V4=kSLqip=qr{ETAJJe0jv&XQnk9>J8XnVu!$)0JQieqvsz!hajOkKu3)EJv>Z& z1p;2K)691mvV$T1Vd6o@CE>#dcFd3f_8BW{*&`4!V)#L*X8RX*yVF?N4RH^h3)|Nv zteV&ziW#b@JO1S4LrImyEm`M{@|xron+r`RnQT;dHyU#{dfFXN6x=ko{!Y1DUJm8h zjGUh+Pb1ml3bo*)xZl*${nv$Ft#DS+{~ad#+{DH&;2Z^8G_Mg}1=F_N(D)u@aol5S@uEFVOU~B;BQ*m)`UAd21OWy1Aa9{I(HsOJ(%DO>=y-~BLkIr;1Zm(PQUTtB z8i~1_7giU~D=L;0dNOkW5<_TJg|e`STfC;+c$WT!_6J(4_I=NuShdgSj5>{Q-oYmH zcqN>>_&}pHVrAIY;MhR-h3t2{apzoveNRSQPrdGuk#n+OSUc}T+V=E0*@JiY(`{8& zq2sZTP%QXsS>fTLt^&vZk{^V%uVEfB>Ewg;%gbXfX)B>2At7O5n4!EuL%~q7aIwSO zXb$WiOG{1>hDGvQdS2h;%$MKmxyI>0;O}1og*QeD%SZO|nh#{hU#YI}@R!q6)R#J7wwl}hmpuQ& zsv8~6C(Jy=F!Odp>=$RW%9xp+f?pKMr6$!%z8f`0sX~PeAARb9mFlh42g+j?0WSoN z!hR)JQ8ikNb{t9`DkPm7o zy1GWfp4Mck=UAzAue!$({^nS5ItgZdm)R`qdvOkBCKlZ)!xKYC(}ap0`WU7|*IO9P zo|xadUC7SOiF(mxrj)y9QKMOL;angLbH!fbyNCwjw_71{*2=@XyF0L=L5DfN=^1r)qFtAiSOXMO${ zj<7~oBI^<>g^PFN3!M-s<_#aOqI?jZP%LL$Z0vSJVniBtr?*jq`(nD?t+w zpCzUC=AR%2V6jUekHTuw1X(aSB?al)hWPF*43z_cy<*2`wfXJ4>biaTZ|INzx^|o< z(y6l6IPUD{n!Gn3s*b!n+|gJnEV%sD`p7f>!jha<=cwz*8&p4g5B-e!{Alj0QN=)y zn!{XaX=y-(n+E%%`u#S^h2>Ieiz}Pg2_&VQ*12XZG<8&+<58R7rjK#kzp~qDtana@ zNkjn*qWWQ)*24x??Q(SEDrhLm%FD}t{MdNELTEEtcdJ!7iGw09G|nqUrQZ|1ltJi~tW$pY3U-{cPK}KNt$4+W*UT?^?U3Nn`<(D>o9ywzYNzuNlV= z3Qp=i=Nl%GW6km>wg!+mJOoU(`Kv1PUw@MJZD3nFGiyshi{gQtY0upcj&I7N(!a6Y zC`fpZZ)aeunbEcE;PCKplruoyn)-VAiB-FklCuzc-Nu}?QBi9A@bLb`7fq*aj?!m4vso2tBxXxmm&@?N zgOQzYLOsN&|M1SBVx)wc;Ow@KR$141^ch2bM71;YeLAVRpGxYvt!dJe@VKLlB|eDzSO0~e72ZgxwB&9VY2Swzz-b}j}(zx@~KLdYeO&u8}?Qt;MbE@~gN;8L)= zq207g&hu)&0q>SZQ&l57?y^>vBgFyrx0_?x=hrU;|MhU;b@#S*dcLfemMjxa_v?bo zsib~?gF5+-0NBJ&xaWvhOtHLY#8dP{=!%K2_cLv*`nmZZyZEAK9nUxjXG)2xvn9s3 z&6_?e=k`FD1O+5wxPHd_$=}BywVyFz$Zk<0lgZN1t3evnnUn%Q;)}*u_@@WBd;0QI zG(Qi0`&cOOTu}k;@yKn@C|aEe-C&V6{VZ7a2z_hlpla(C|6Ah=%aBn<9M(#q}aUk z%(A7~+_^rnalWdtjDNTEMhS)G86S1eoGHe)3r>MXGcw9tdi;Pyj;!L$Z|ba0;Fv#R z*`dENSza%%QR;A?ufJN~rssV7zHJR1q37Gjny%L-_BmhaO$<3^<%p%e`tO~sF&YcPv5&7#z&CqTY$pIY zjQEB47M~(V>${}=W4*4>8SlsdTp{#hVju+`7JNC)ee@VVBPCBfm;6VWC(+sNq7dI@M7Yzy zZ&_j*r){ZM6kH0k^8jIc#B0yitLyEGHDPWbtY(Bm?MV_eSGX(XvDr4wF_HWjihXqj z$RtyvHA|Fdr9EmFXGHgWD!K32`qjw4eE!KVW#KcTfvWE>?}&EVPCR&3_1)qRUVLfg zo*NO#uuu}&!;>HEbK{1gHII5gSNQo{al?CR^PJrulVtZl;dFM)8ATv~{P@R% zgd-~RBCq_&3I}HB7e1{MI;roY^C<78(SFE=s+`XoV3RS0q*m^Nhnj`2uK*EQzTKoT zxd-qr?M{a*@&?{@dT)%l=Fx?*?z4KcM=bFT0`@mrHW$Q=NIUkNvkW}G z%=K+paDTAzl=x<2#q|W@|IDq`HY!~cVo{BCZ*h^ z6QziUJ6Wh4RP*$h%+oySski_9HP&s<8+I6FKGfed9)vFkamE*v0FVRrf1?>!RpO-1mKM%bp-hh`Ekck`1?4L&(hm+T!6 zYP=zOc8!GE_HMecfr_S*p@Bdzvu;m6R^7Z$kq4isNfy)4j$ai@5s+hlTM<&svBqit zAH-|%Vt~a#5TIWt%Z4yp4-O6S9y+wecF&*1Cb>S3-qsEXBo5mP3c7>Y9SjZRK`qcQ zxc{mA!ryNq?a}G;hAfF!cT;y?Umk=(2ou_7X7T$6{}EfR?se>x)WCac-f#SCP!>Ww z{4*YQufH&Hf<}s)XN$*%@ot4_rQz*{zCkyR6hGC_Kgi+w)}}SqCE({{?mk%^p1nKX zN~--fIdkuF>&78Q6JCivX`Pf@E}m;;-FZpTeK$+&yDq=cxz)kM&7Tx-Zs{}QNs$Vr zgjj1yu7Hse=DVZc0$0}BIrjPA^=EF65M)JZqR)=Tu)(p)h%%L>>vQnQc!oBhrD4?{n#ZSL7x7TYC$yiI+~br!#r#FYA(ROaMss6CDhQR(H@;pN+j@-r2*Rg0?i=a8pcFx@h)G2|AVjh0H^x@|G14% zNy?TYJ3Ev;GD=32y_J!Q2-$llifnO6OC?9hICh!GI7D^q)v@=n_x(DJ-|zRo?(4ok z*Y~=uPKDu&(MI;gaa$1+DYf`)sDKSlY# zC;tAtfB(s1K3vq4U(1;V?F-aO!uCupvr+qLJi?vZ);F0%rNe?9QM6lxy+f;I%)ir z4YfPL9^JghwXLe($Tv(XO`fC@*ROTXN=W30K)#7K=2!}gqASYp_GaH>A9Xbu8^@_* zJ{~^a?XFwe`pBG0m-+DaYfX7A&m3PU5(oGkyn+YBr+ClgEr$6jM$w4xWkN!S5H^d* zxhgeIM`bJ6Y0g9-uoL|(PUl4O2+i83h;006_URh_x0d-3$JNIfMh!v;2caD(2utpK z<7n&w)(fGI4mWNbhXW&-4Q%`C$-$a)B~F9e(2F759FS}k?%S=;^@0G%(`jWq#cCfK z`{jF5ieuCA%+y&qNQoZgafdpwTMt;e99_sY=AQqt7(AjjAyK`ct;>A)(Oki5zgpNpJ~wWIsGO@tPx85 zfvd0BfPbZD9|;B3z}$JJZ3wos z#wRRIO#N`n;8&{g^Ir0th0@lK=>uCkJCqYh9a$TV!5)bUB!E!n4-AI?`z=haJRQF4 zu@1!qsLRNM>jB`;$4^~&2WMB5RNOcus4)c-?dfg@PJ1m+)@o+brRTvA^(BOCtY#Q2 zuGi9MlDXc5&dtrm#2j0G9(oInKf%=?#T^>+gNiNT)>Je)YKodOj8+ui|H`FoWR;0d z__Axpqrl$Y;XT|>Sh=7N3a<`avKC4hfY*?5+62KH*1Ern1YvHJ+51zKI2^7gU-|^w z5x=Xj!hgaBNq|;C2MSKss{_FwrEiXvs?QoN%%`zDhSvsOCfImr4*X%^{~QRoKDuH0 zgsCz}RKi*PhIK@O--HlfAu>w9;c0$=FHg?@`&b7&`;946C#ooG$GTTrUIgE?<7)&I$dUlad29nvJt!#h3F>OsyWr3KH~O(Rh9qY z1Mnk$LMS-4yFswdQ3r0SOkxn=7kXcv)(!73+zsxhw&11Q+S&@%IaFD;&lR?qC^5OV ztRd(TcD-$$V~=uSplEie`S9p2f5U(oa+m6Yn#&kAO!@d=&gaJr-rm0{yn1r66PvkV*}&-RP7Sgm@aBt!SR zJEN;;^Pl{XJS=x?^3C~#ev5Ed`R?nwe#1HgrJ97o1WDz~h=>SK1LuJx8a8n_N)A`D zgzQr>8%A z26&BYPSPIrxp=DEZ52GPmAI?=vAY)4Uj_sMZx3dH6@1wzq-iuH!RGAy@2?d-zUkmt z;;;z=q5DyB`eJ_PsBrItD}B)v2=ka)2Y31Omj2V*9fcPoqkI=%`i-5C5g`KwTuXa< z9#C}hb5dxu2F_bI)JDO&Hm<>fN5dDmOzl;d&zZ2U+A`aJD73U^vVm&G@VjVuSizQc_Y(0i=FgeQkUqBKeRAjMadK zi!J)myLb8d9c^vL#!W{p5tdSGt7vUq=?z4hDo)CndkA3UuPw-tsO$sRX^NulD zK#8-n8;9V-!G8%^&8%uYlMx(zAUUWtJt(qtz|SGF2{}tstU0oX*gNsP8+klS9IvL+ z`2d{jmiah~@6Tjxv-a!C+bF*fpT?=Tc+|Fv{T+IYSu&ES?` zoNU_lY9HmTdseR=AF57~=5F2Cvt{NbdQCm}yQX0Yb|>UD=a;`x3E(>#vGGpo5p5g- zeK)q-*(p~VZQ^q$j|zM8zFKl2yUryQ%bmu4A zjpf7voiCI?0bv(Y3?6bgq98^6n4j+qp9fWCW*aL&JVHg8*#?wtXC$2lz)<_bO;A0^ zJ_ZV8I|Ru;ET{W>Yd{^}hrkHxAPkP;(uce*e<6{(gQp*%f4{4L?Qxxs97M~3Oc*)^ zYF0@FVcH?<*&gY#Bp8ApEwa~OT_?D=-y?M4z@au@;6Yj08&eD&p zHK{Ks*^xb#s^3(-iYCgUgB_dl=+WbB3NhLuP-}x`lyho6QT~tLu{D6kMH{aGbrveI zx9#i*SWd8vqX7E&aX8IB24Ef|1pfmN4yrU+R=}>XQviR^qSz$SkDd!Ec7TBe7_F@6az6TPx z3&7X|kB!3#~|vW#4nEj8$CK-`e)iOcZypvuJvm*1pB zNpFmt>O+t@TE5Q|Ty=eGUbrZ4yjF!Bb;POsEFBCaClpJu@;fuW)Nd-ZUl-1WJoz}a z(Ra2-Y;5AUwMOb1C`c+f5{MNB zI#a*XoEf2KzVp)Xy*jVTDd}URvzn23Q8DIUIUBr3bH~{tiq3ynL`TN#QXOV!d~#B- zeCMTZf_7KzG8cmJN)i!uHYaIiFxD~&@tPHSWzdNyBZithvE{7MIe;SrN13s)2cmJ1 zzXeWpvN!esr?-~L3@my;m&$7g(6Gg92Uu*%F{6LiN>{RB5FA63dM6YCAfmP3)4Y9q0_02S7aiVugWQX71+BjBS8iisk#@zw=?ZNLiepSS z_gcdlEjQsYByj%0H{tN@Wdj76<={^rt&5yxqpa0DJ@JcM(;z=seegEVtr^M21llCD zgF&B2(dVqW@XxnAgrvnY1jBfF-Dizj*zzlN1LSu~S`#~78l|Ci6gcqihf=?CiaFmZ z`YKT<8I3-&WNYJhE@Lko**yCmFPNbCt$D^b3Hw>ztR_+3cL0oY|4*sUcNsEA2E}^^GNE!{A)1ypnoQ`-!KW?z)}(p?2h6 zjAtV|)@!1YjvqC+HXLnqkkj6JF$glc=aFb-FZ=z6?eo73$IG6!uazPF7ctS(f{`0C z8lNuCHy@hyQ~9!X(uLJ?NI9jm8tPSh_DN$hSeNY&Ok4>yvnH~O#)Wl?J+xsv{CK`g z)gPy8GMT(CTQB?i|C}_iPIcP0l=AdI`v(?CmP;dZU+AGfUvt${$tRXT?+59_+SE52aEqr) zI!|=T+RVY1!fu-Z6i*;LOZ#mu0cMClCi`!B_O-|`@jfK33Lqc{;>gDuNaD)@{{iM< z0@oh$_-&|{TuVKl{pnNZzWhFP`#`@t3u^5nZr_QPYzOsD9XFCit=>qJ}63S?=hY(#958&HnTm8=q<)iifuindn~0z8LPflwV&3A zQ*FEY*m+j;nSv+TrGZU>0$H!6n{c)qKn+N|k$`UiIRL>xS3FZF1ttq%s+Ykj4MtDW z-`T39^H4@s7TeFVSK&0Wm-(!$C+V_2SmxF{fnH@S(B(+*?k#!a;G&h>kR*#8nG6A8 zM11%X7uMki&&K_ojxVkiMbS?M!|a`&IGHC^IqaP2B~_DHN@!TaG(DSZ^z@f1o8=_; zO=@a2xific4iV{5Rs40{i_=Y3&-g;HV-jx`ClWR2ZI10v_j7WMedJ|V7K~cxMA4Go ze}3CCgVxl4@rQB;&C>mIYcjk3qey!X4++z$wB?F_<%lDW*)O2mdPI`&5#1&Sqwfbi;)5)Xie#T0;`K!>|ZyirVC{I}5@SktyK@^B)T z{c9hDET0@9bc<(Z?llsCR5|fOHL{m(Pr!#wOwfZit@0^8IQe&>24xW)K=HvWunYt= zerM{2_QCqGvKIdLnYjtyYh%8@i3tP=&|^a7+u$Z9K+pDAbRFm=JKM@ZbO{O;)%-s; zwpW(aaay)l-ktMBB4EtpAtPxFIX?qy{2mV#!6RPYl!M1M~<-bK<6~L(^N6?N0hgFc&GO=-c zfZl^2sHvb!f_lat>jXhAUu3WIM?JF_aQ|3#z4l3sImfY%l$YqD zQ{n1J;x=ZN&~XnZoV7d?^Y`8;mu7e0$u#m@T{qUR5G>F3TDZxU1`Q0fV9ThEuV?YI zG07HmYS&a?E?$x8e(&H^bJvJ^(n=+2fum4#$UFB?>pbo&)qqO_?WoN02H)8JP=_4^ zlxvGsG^eOp+)g(^?3XcCRI7o5?edq?V%QMVxq|4U8gs`q^(o~^DyfJqPm)xo zu?ep!`im{y@;ayXEx#I@Q+Pf#KjYV9zv$rIX8$4OG0u%plX_NDK@&Ji__)0HWFvPE zd5t_fgQr?AW#b$^o7m5zw0K-<%k+!zlJ;ugtNL1Td6Roxw97)Z4}vII{?lkMerZZT zkPxo3puPL^5s~`Y{zXP;T|)*syl8YrF<@XZ|Y&qs3U1*Up5R_q~<@CU&!_+k$IyO;4=Wx60=_|-&=aIPr zx3xRW%ku9Y;*YyNmc{DxayUD?nwIVRzroXSMrPMg;8mM<9t)1P5+cC){DZG|Uhp9N zn)MCol}HtV;eqjtLSVjJw@z`oZas<1Z8dsx=lL$b=yJT`a6%G30QJ^M?6OoWizBsp z*ol>-VX+5TPMP#_-^t@`?d|uwUZV*jpTLKij~p(HZP(V{FLQYerOU@I_dRSq5wp4v zFl0D$w~CeRvI!65Bg>eD0rEEqTLaaVmyIT^EZCIn8U2^{EE=dXJj-V1=PQTJ*&a^j zjX&>4c|K@%XRf#BMg<>*Um!h!)AE7S%`v?nSaAf|lZtHY>xAftL&gSN^*^2dZGsKi zr6S?k^};m&T?l)C3fTo^G});xPlAb?fTfo4eMHz_4lfa>-nGUae2i5MxQQI@yS5PQ z{V`%(mB%~jm2o{$zEs5ZIQ7ikvUKwXgr91215TZ+UxB-nUC|X=Q-!u?-b$UxS3Plb zkM^5Ye&&`p&E@7cQFt27JSg#5s-XpndQ%|KRf**oZt+D>+F%= zgGUG-as@Au`oS;+NZ1@4Xcg)h&T>!dSY^01j9kA$6S(bWh;H1x9#`}Tz14*y=N}xw zQ3*cHBy#HGd{>4{$={YGP^ay;9M>9EZJwU(-Zn={lNXvP zy}^ds-kkCJ={t;Zn{ z?M(fk(AxAIj(2vfZYMmq?rqgA<#1mE>{*Shc^BdYggo1|F$xb{NwEV9l?q7a*xcu| zuVg(%N$YtRP9RZ;wi!(R(d2%V+2u<0-3S>MUu2DiVo!yFt?h8dJ_+qW)T54*3lgba z6;}U|jzP1|qV%M6mMW6PtwYR(rN-Zj_|z|p8VwGm+{a!8rc=x|<|nJl5`)qt&vjF1 z%y9(MRJ?mpkNKop+$jKXYQn>rK|EA`BlPlE=k&(p&NV*bsd_KjT9&er?X2o}o5SOz zmXqa9$Yv&;fDbzOic}N*V{&i#zh|jJ-zW?pjLOi6!5%crANM`cOI%%8hzFsP)+nbZ z*Vgs_ifrK=Nd?Zx?%uk<9MRq6cYI85)IHBuD(cZ%ll#fBCGe?HTeo7MO108CRv}Ky11P4m#4#ph5V1Y}X{EqE9F*awZ7JXydYx%1=zM6#7pE5` zXL+zKwHt@Ef+Pj)suxKwIfh$VOM=}TjQ-lG=WhWAZFE6e0kX1l_ciCf&Yxb_6of|Y z^2JN6OFOUBKNTIXYJWOc$j}i@>24le*|3#R;NUcQw5Ptl^@k$xzvG-^DS|w z(6Jx;$$^|rBhN1*c*o#@6sKo<(S?@H2&6hOxL4APTA!SER&3lan!P`98a4aotVqf* z*;aEYb$#^v!otwtN3#aj_O#Kn7bOpukX#<2mnT_duWc}5OEQM-ddO1sA$3Y+y>Q>+ z4&SlA9gCBtojIh0gP#es9v8LZ4|$o%^(RSZKSWVnRXgqC!lOOxQJz&@VqBtbqvAyry1+Ac$7hnlY zmoiZ7-_UteukC8Sb$+!!2`$b|Iofcu&i_an!uZA1LTS6xeX^{}D60BTEybO~8J@*n ziCqB)z3QI^Fc&{Z)s47Hp@JXn&@A7c(Aa_F+>?%U(0$C5bU=mYX>djA82JEV!iTZy zQ}6JZ%tuev@#^(YS}yj;mfqkSKfY8x>6tH&+!+)EDUZ2MauJ&9nGxlG3G z5yAZ-oRxSe0@57>Y30kCid$%Ss%GjQk>Yj3bj?N78olW4Y@(?2heA8)TAbOY0&&_y zzPLA6Rh<}Jn1L>GZaX?49Pgv75OsCC)bL#Bg*e=rqARbCsvITgoa5lW6aNYNvj4O3 z{`l|4OZ*!G4mT`_3r0Sj;C79$ZTURH)e2G8z}lp;Th*N#>>Uq5-hroT?wz)NV#T$Z zW1D~=<9l^&q5lT8(h=zzc^*owxHh8&;xKNLJ~tv=YK^%N=r;%~zwz_veR8fqkI^vr zeh`i9n&{?U#JmqfK&^F2wpFFIM%e1G?+JP{`|vdU(NR7shDh9*Ox{6^S?^et1aL@xDyY3zj_Ey>V{Y1-8i9f&F8cNH&0-P zvfmER$yF=iW0f4-*5Be_0v$n*j;8kgBj)=bEf){OP6V+&Oo};iP=!Q374^V1pF|)0 z4Y4nsuO{7vg4AGvjavQz0y@{wF{(UY2(!P5E3Cc%$XoHl9A zMc$3Wl{KJ{?&~a;__db%Vd-`Sleku4xc^Keuj&^7S!x1v0WevM~&xbXXl5x5Gk9d5pUtA1HSRxU(qt8q9UVlw-Ld~Z- zb>Up?iv&%6vd!zyZMw4qex@dxyhb>_> zWxbm4gZ{|MAt_- zYXd>p`;(2(#dJL|FgEU~@N{nMff5wm&*s0MRXf313zp9(qR9xv;43xi?iqrW%ie8c>QBRS0?LN&(>eOa|v@uTF#6fipDjs z=wG;(zRUNjKgT#8(9|iG(iX^N;j_o%Yy{Yk^I{5ATwfqeu17pSl8&(L(XDB&wg>m zejWEXiLyOYdI@pv_W@wcq;6TWXyHd1qSCloOwaz2RL8PoY-fwBL-dn12_@$l5Ur3B z3)YsWb3oPvNR z`&Vo(!pO3?-TXIy)N8B0s(8HGPkeryPl_B+Q@t*>?_IIYM%TxQR zUi(H%N>4AzL$vFjx^>0HUW**DV>Kk-H4+9#%wMteQohkWdaXpqMaYF;Xw{s#tcRwF zz9edVR4Do5!~M01%3L^Pqd8ea;1&MO^IXBcju%hAHG7CPBMMP|Ay*T)XNfJjXdUAF( z>ox6PR6ONYr>xo^r=M1w;-|Q#dgQd}6zBisHzF40t57MTzVLdHVD0>ni|p!E(K=fz zppiwCkGT}=#*v&tJDn2Aa;HvsK826m^l2)o^nixV%N&?q?H9@!njhzULW8nAl}j2l z{dH%l+21-n-Lxdi@p6|(B@jsuEV4FJSk#DSqAq(LM;TTQgSLT9uj{iy3KmP7A`oBV zQDf5?`<8!Ir(P>4wr*UbKAlWPnR@BPU!mTg>e@cME{!LfR77_}v=&cD+KwCwQWakj zK2Jn+D3pOPz7nqALD!!T;|}?ib|yfT`6;XXb1)@*e!tKr^XH$4K5ar2bpfdRU`~In zHCic<*uw{D>a`5r=3<>`$#N8Hg9s8IIoC|@fU93X61A_}@`?6xw$qomT-(%o_g*oz zA@=b{Q2|6{=uXPE5btj5<7(0}s?~n1>VN_%!MRo#Zuzl^_IDg5tbGMrgrZV7Xz0e& zIC(psD<$?`YZiTkcrc(#GWLVk*$Am}6Zu}PFDFv}rcBNMS13z3rJ)pYQzeKuFa}CA z7mgRNkO%N!mjrk z)zut2RYyNxA4>~9zM@(wm40lA=Ls7s!`y&9(X*WNzp6*5V2Dz%p4IraFJ&Dcyy_Go zN2rqeo|p~bJ!?6^@lOjt>57&V>*k>ptI9dH2g+<3)xf*DL_rsxaVQ4-eS%+0{GUMk z-#z~-QosUH-q&zSUai#gkjg&TIL!t(o2~MdGh*m)SNw! z!wl(akNtSwgMEXK6r8+X(Fj}fSV^N?43j|hL0IqNzR$_zb9+341DVj!F|G&i01-&(K7t>j_u}!q27X08jG1nIrL#V%eYWy0Uwb~G zZIFF?Jnw9J6`D)u?Hw`mY0qB?HdFn=37Uf(3)iSlq9~Gz$#E=lP~&A9L=e`e^+QjY z?^P_l{37HxYgSW^oMX{E_R6_JYYUWAqq3#Zt88LoXq~|A4=y#9{KJj4ni?Dok+d6U zhj|j6IdGhK+nTSi?-zvs#}dlmPbr^ylj!90id16{fsH;m~DM@m~oUgg_W+ryws%>swE7!C(IND5k0{v1&TvBT%f-0 z46ZHUFCCpd@%Nd&D_|DLc(7A*Ap4t_r{hHpe2jab)&^BO0ILbM0st#@Nc}ptXY+3j z@eUFlK!4gC=)};AzGx#TATSFUiW%TggQO3{-S89FLFz;putxxpfR%9=gd@p9W)Y%) zl>kAXUzu407`i5K_ZM4C0Zf~a17bFar9Af+!6gW!$RW_JXNr3KFfgiuc^fiKk7Gdw zctt)8*9pH&TU#5nw%$>=hR8Z`EYzuGG2=X`18Tws6nbt50@bv)w>PE$v;r9Wo`HPD`(cgFIdCO2gMCO5=hYipW*!hax$x>6%?x4pNDSE zWykiY`$9&X3H6~BB0*3LBA1m zf=%q{Y&5G$a^t+=06L+=0_FgS@3>zXs9ls&Ik}mn=TA+3{7Y4cXz30PJ&6PzajI?U zcK&2k99`%`kXro!+XuWEFwfy#Q~VV`n|-hJc5Cc`0V#TBnt_}VpKNVyfmaUrp49LP37ZoWF#n;_}|$rS+{o|YyoKErbA6cX5pfD!HO+lQH`NBzn+?|@LFx%rU~ z-3tfkap9>x3U7q5hRfAI`a-!HNsuM_g@W<%dF0Kb_K<>ti=uGRXGr;_Xl8T;hl{*; z0Fy;W@?uy_r=88#07hDD^JrnMmU&0p;`yuo{dSK<``>?laJ6niJ)Y|E;v&CD4_hgJ zWa~VK7&<|ppr<^klvy_*wc zYQl*|+N8}c3?gQNfw#D!k?d|Q&&F_$J11q2M?vX7uKJ_wKIRVYsU!F`bJ+Pyt#X9DUw5#g! zm5UGF;`+I5eI!HuD1$CMB)4&}WBF`c7{7Mrg*TnQZDwMQXQS~n?o1@p0dX;H+THfD zb6H+A=x*5^*1db_({R0x(t`yg(`oRRmTn@wX*&dRbfGi%*@OU-pPAfS4? z(Uf=}%I&r>2$s3^hinQJu!q|BL3$_vLj&Hw!KkKv9tB)yJ50p%YbwG(Xrubdo z`k-+Z5(Jm=YlTQTVPCnsLY($h79a2dsm0eIpm#t1H-C&P`Ap&mqE2QT7-T(M=JLw6 z2;R~_7H~0*nuKDhoOj@~N zoICE<7I#J)cnrLA>KhkZ^y#wFoL6-Ac6?Vx+#6!KT%|i{b+EiG1eqqf#`tgtl~%?q z=8XQwYLTAx_bd5h{6zfCkN1aA^+hoiESkJ4o(=o!HW`8RS*io#=LDR|N{Kz+B4hbV z6Y!_@rN7dDOQ4i|)SF8?`5mmrrI9=>(|7uJ2e6kodKUq{wVVwOQ=CVTqj6uUGdi z#(v8HHDh`8nUUAthok*&eflcVPEzlf6RhSD_wAWneM0U5|M19EXidEHr;?YJL$5r# zk*t^j;XZuNbx|(2$Pw3y)*Bxhn7&)4?^Xtih5$iLFKw3255yVx#87+L{O9aE&w=$rvp9!*$~nf22yqXOOY=< z?>xE$px~dNT6(x1WcfE}C!&XEJpv{Ij7G40Jw<^15-zWALIs*S%X|ezW!hJt)(MuC zCH0t)=#M<-yW+vxuyz91=H}G38Qy+$Z|GeBZz+XCt!uJl#m|Q>74*5^nsuEDuRTfU zYhOc(Hzv>LCOe9-hUdO0jazdE?Typ{KPGy@v@=(Y-i>89do+w=Tdj4IcJ%0I1Am1_ z7UGjm0WRy8sr)6&2T!Huvt+x$YUjq{w;!E@2t=GSKf0haVDzi-0iXAxG)jRAwS8sz z_@oT3L0lgCW-IxiluM)z^+O;1sXjWO{)w9(C$x&^EZ4ZM=zaS6yb80*l#$fQ6prIY zvPxw%vPt6HHF=~*{^rnE%%<+cMuiJohcf^l7^c#U{Q#wJ&O7R@5YiD-Ddsj-Bf_i(OZ5O3{~2(GM3Q;vP15uZ{sF}0D9D|qA9FOtgb^ZJ&)Dpq&87n#1kRE$xr6d&_E#&7NV zg|_MVl8ss=e{ak#5+0r1UmM4tXeI7|F?PqkIF~Q;T zzU}R|i-Sb2z0zX7kzK;t3#t$vepPGF4cyQSw4o^zre8>bY+*EXg9uk(a`{{?QC!{G zR~MuFPQ{mco;y}~Z(0P(Cf*nvoFi{!ZeiD*Fr!z`95RvdH=_u8cc(qrK8Aq0 zqGS|4X7`WrF>+a;7G}JoH5P#>Bn)GEK@0@)A>rO?uu}am)q$9xrnZl=VLgy%(eIdki$AE1HWrzHAwcS$v_JnY|j2E8IY-ZFn!51%zzi zvPtAwPks38loYb8u8HxOg3tGH5B$Z~ojQsiD4l{T!!x%IkW~K?PPni8gxL*phZUNF`o=KfEMi^Jdld+h@N}{PXc}#N*V}D{HXS_(d}v>vYxe$h%D*VCTT= zZnn>lu{Pr$c)yXeaRk#AK1?Fp?_%#OVd30~3)Wu6OhpKIf*G*lZl*&o9nNtd;1Tb* zyuH~6Ue_eMq7dD9FFmZJf+Ih|1KK*-AGo}?Bybkl9Esfg7Z|^$?ynjkiH8_k1ngg? z_s~Zwi9JXhAYA5+#xS@gAH2w)ZeG)9^b)Q$TdlDRJ^e?n2JSpiKL$4TfRu7MCgkCZ z15)dAYV49_W40!hN61ijPNyvyG~7)Y2(far=HBpGKhkuVUD-VF^vX zmvLr9T!k15^L>Qd`RK9@eOA4sQhr=>m`?SgO+;{`qj-MC3(TcVtt<+Q12YMtAQ(ba z4YLNpQz8c-B6v?>L^bQr)W54N=v76`Kn$}u0bv8gQ|M4kgS~1Nkd~H~nb<~6*c{La9mViV_dm99>1zD;=vR zdDGl-crqC!zhq{-%}koaE30YScvuQxHI=lTCbx&s@8@2Q{otjGk?+1sS+KX~$0x6M zr^M564<$@nEC19sQV~s9jE~BG(#CIOiXd$!Jiv;2;$sWOTZP;# zA%2_fFBP#7R8$NE;}T(5+H=D5y$`^@S&%3Fk?g+Ir&=mW{oESQ-No;F^`Xe%cWKp% z%_s5>4p%Wnj8($=ez zl9xlyPK?(U1NHYGfl(s1a^phN($|T%cto5g|M_CB#qBHc*X%6Fy(6>o4aCP=o6)f^ zw_4uEqiHS7^EbOrZEqYFt(}e43!k{5FC4z>eabst?LP_-aYn*WIBD2P!Iehv76V7X zV`Pu(40O8r*hXxW4<_{sw`CIzz4tZ_Hy>NvzVSL=K92oyr6EDP(dFfu?Jic=3hVap z60^m$k$WK?K^H0Ju}732Vjg?GCqHn~xAC zz>FyNC;vJ!=CCa*!Yp3M?w{IS=veQj*-|C8s2*iKShW+(ZE^#tLmE&!^(X!KmTezStvM+eO0&bNjE0xv1|T zD)`(5&1X~)m8?V*%e%G!Pglf|MLB>0(fnB-?d0IAC$cnhHH zdH{ef!hkQ3%z(sI4gObIvIv%5Z~>682`d2o0xZkcyUpWZZ5Ew=qG4Fv8hDe#Y&OrF z%X{#1fNDZYahAg7x)|1^7Tbi(7tt@PUvnm&iPHZAfpyaQY9 z^Dje9it(&pAP^X5u>}hqTaHFNs8rKF-|2k3jK`pg>DTZw8?bBRL-wZkVp~MQ;olc6 zdFIKBBpf4QPSm80nYqs&Sq$?*k#h1NuIA(wU7;GFu9pVK5%vaT1#WK>0}#&*}T ze>CIZ`8F7j2TQgqc>w$(+$a)1xkXE>HnL5K1z>34JLg#Uk!~vJ^Bp~U6#N`%SAy(s z(P0x5z0fwKdRLG0=l-1SUTk#s&S1*9?Ni#k!lh^IW;y(5w47JDy88>Am|QPE+gzz! zM%zcj7Y7%(rmY0%$r-+0?b7f*DUC6q%uk{4x*7*u5y6*}hhcXI%U@AXW zS`p`O1_MEkN|VpKn#Y{5>Ju2$ERsdacfulPH33#HwrS1Ul`&56_ybt18GQ3T4qN<& zah|kdv1v;Iv+N=ARBQ0lB1cWHDk)I0S)K2JqOnt*{2|+Gp|k4K9RZ$QR(W-cCoMc* z>iO#=_b7$D-aYN5soyH>_2u;DJ1#8zVPFC7LsE}4M4Wkmxg)@%VERe1gAqjTz^sMM zaRXBDO0bI(U_`$cVtRIO)qAVOHYP%%WaPvMHQ-%89m8QWuIyG=J1*Mitgachv{Ebq zeP-6$rUWu4b4KSP6Lrh35T|)7T~{Z>tKE|LO^FxEIZlz#t=jG}Fj^QIxO0=$R2H4uR*PfdHrl zCHKh#80v>4APk>K4!!eEG*%*z6`ikyFvzSIQ_z!tSPb>Ioxznim(Vhgq+O^oCTHzs zA0`xd@l?3kNYU^PA$40?S<3C`Bh_)tmNna!D^J)dw;tW8u4_;>^TQM+6m5}0YK@tccs&skZbtsR`!JPw>kYTF@V2Yur zrp!c`zX#VPQ&`S0S%hGQW3~Y}a354U7Xf$+l}dX%J5hpQ8Om~AO=mnEL3tk|j=32# z2u|eU;_{lVBY(a}Tqf|Vpkwsilp+ACtH7hh_sv1@`+489x6lsQ!zQnS1pZJoqZk$r zY3>Ew#y&CVLuDj1T1+-=&n&nikaHO?wG4|ZFasV7UmPM(Zprv3@)jj7nHIAmStlgR zK)<^Kp7k-uX1DnQH&$$MWxMoMEbWcE)}AFt;snUzVh?-2MV{G*72P};>=1MunWKz1bST~Or>Gie6So$lz*65L8+OIVp53D z`jq57FHlY8Q6Z;x-UGy6|D*~jL3Q#TJW{D&GWAB1qK0++0EW@1Wr&+2R}-Xi)6HU~V6&zG0wXl){d=`CR!x#k9fZsl-W81G~s(=C<%&@rtzPLZ%{k2e@G+3H|$>N5Q&UyJVM3jID z1vLCy@UVgHJ^$Ui9w5LG;L4thmW{?R{{hBFpHbKIcO{@c?_Q)By40JWe|Hj2XtIhM zYi8pJtIHDo722d8m`fgr5VO8TMP~(ue2+yrPG1y)SIoAu4_f%V(ea5rx7K}?VO9edA^b=sbxuXm z$hLwtli)?4E`Z!&66TL3Y1Amjf?VzlNo8=MReQNqgXok|ODnaiM1KlaFhw%bMDd%< zE7>Luye(g;EoqV_LiG8RFJTcUk%%Ll&I`c0OG%>UW|?a8YV3gpXkPTDT>~HAYS(aA z?CMU-{7bu?594G3{OXng&c^DQbG{o%{n9_*tS9wf=I^j>_pK{GEMwvHSo3E6Yi~=A zL?aAXd{J0h(b~u^B*p)%m2TopQ9~;$MHqbyqklvQ=M`9V*J455u>k07NN^rUM~jOW z2N)?j5y)kJL6R#jkpaUM0iuQb?8@JuZMQ|fb5Hn(To|UyQ)2J9TVb!+K}cl$Xq919 zDH0OLa*4xkDabm$MS@Gv}M!trQL0A~COt>`$GoZNmBR$o_W? zTM;YBCaOTS76y63CEf^gj8;K@lmVq{C~9WU{f#Dwz8+c9hQD~U@Mql-jdoEj!JOl3 z;Fl;1%#e1w4c=>EpliTQF>r%na=))yl8)eEz)!$N&LCnb2V+%Xp6G)EU!V(t+e4a@ z^Oa7P0;B?qFO)*RGTn=LJ#%`q)Azex!0}3Mmxkui^{QF6r#N>h-wqtPWxtf<1H_6J zCctw&^4a{D$`GGsY5Mey9bDw@GBd>xkNVt${^4CZzVfyB_;`!+dG$vNE&gv(-%Wl+Z;AKE8 zM21;mkXV7mWhl{&8hH$%$4~7>;BY~F>}~nHt0HS6ji1L`eK?)InLEeEKhL4BG%xR+ z=aVrBSjk66KZ63Hryv?I8-RqmmQ^$^!?&U44!|MP{B?P^e1=bC~t*VF4QU$o_cy%%fk>7Z03NQzPMN5DV z4{C``8HT^h67)`+AP9p)B}FtjJ)Pj77eJPU?5ge&hLA#fgGfnfV)6wV>_hUuHQhK2 zd<}sf4Nm)*0-!VNRasU8QwB*CiWLbKST&&FeV)+jJhAks>b*3P_^z{@pkYQ6b|24xvd^4y+qEsN(5Uq4FLLp3oa>mgWDrkaeos+k7S@}0O!|#<$4Mbf6dGQ z_xc^)!EP*LquvaemsuHE$>F7Kx=_2%20tD@YZNFk`MAV$m(fTIAOFQz7JHYm^tjT5 z2hW*2_cP5?!qdJ*)rN(^NjS8)`-I0+`d{OcvF>NM?C){gsz;*S`OJsw3yjr=+^M9a z*HRfg_@QMe^Y9%KiCH|G<{FQ^>%o{BiVl%3x|jLY*9m9OZj8i|WMZNB80b_vmSj-{tcn zi7ms^`mY?IS?8a>u++U+8|iAqb)k;)KZr2Ul2=1JC8mHV-yGs*5Q;6yLc`>dL=jm4jAaK28=QvQuCYR5Qht-MCVVcU->0EX;`Km!$(IDSanK#kZZdq~^SUbNDRzdf5H^04XrfzphQNnV;DDH-IC*pXitvhi%?t@*rvDS6kI4^dgS?*{Vkah3`WM$S)- z$tfwkX{7lIN7CkQP*)0vww(4&pUoSuG;8kN+;*!mAeVzqWUbo>edK5ZE9+JWt=F+p z?Kj6a&hbf8Snhe>n_zbfmtJ}XaM^cI)VUSKUtkk+M$YRKgri_JfPOW&O}-xN1Riue zXIi`mV0MVyV57KT^ASXOVBwV;Pt^M!OK<<19Im3q@YRg{_2&nNUpeXTG2ChRaL>pv zK7}sN`PT^dl(ws~;AdJzNADTUqu$a*5n6Db;=VT5(td z5A4$S`hi8XZnA2kjjawOd0dNrBcNu|_GapRg)9>eg=$}+lTf~-kFi|5-`&wTsEqkD z;chlFo^BB3k~tLNny7ztNv1{+TDsZ-)>dV!xDA)2{SHgyxF#lUlrW`e|mcpa4gq0T=$=X9vv<#*&N)a!(H@dx_m*TCsry8(P57zL(Z3?k%y+4*2F>+2>*mqAR1pEKKzPki=h6%*kP_4 zYT)`vqH*`_BVNDHL&^8(x0M8eaWT#^TCp!dEoaaJ6e0+ptzxG^qeE-!S*ljTQ^jLy(lsT6KV7yoI;{`h_Y#?4 zuiT~7eLw8)E$lqn%C)swqr{wFQgl9S2es&YtJ7S{cuE+p3UX1a*0NLi&c~-p7M>)G zb8J#KcrRhWr~i@vZcbi})Z;{rU;>u!em}dqjB4nsZytxx`GwaQ4z3 z1lDNT%N!^>Dc1Y?#28QNlwW%n+gmx>nWdTvSez4+rZP0yUSqDPvP1xmO| ztB(JklAv1Q*p+APxEIwae4ouO$ZIoudFdZkhdzYL)jJQY<9pXQvGg{eHE7KgvB{o3 zG3^M5JlgU`e@>ro!|48J^CybeNZzk&IP^YJX!Bx--{FERq1|2n-OA6<47_n4Q^&oY zTmHXToL$$lgo%`)&0!7X}5Tx)NPz24S&Rwt>INRRdjuWK{-E*eE` zgCP>p(Z4YJNl*{7(2V{W(kySdnDK3`;sq8_Yg!(KpHYqpoGby)Yt?Dx4a2hc%yRE_ z%Fxvz9BN_x-HRJ7^%`#}#dWvLX-~p@1QjUdhdcXoo%>9$?Q>izc5Xx@K{{3}N&1ph zAbKakt}kao`|fV)lM6d3_oF}LzXG{^P!Ls{afj&E&A;kVM?Fs;hAr4j?Yi;VbQ+qV z3{6ZjSGUK{fwMHCrQ*G(vHC{ABgNf1L2Z0uyvUzS5L+FuJ8pBENv1e<_Z@2 zce4iq5k);g&TQQbR76%-aWDN1gdRWi&sk#<)jy_65lYd4#QKBlCbxxo)h&Vt*M;A# z6+Z%^ab^RTp;uB_4Fv;Zk4C0+gw@?w^V#n#)Ckb^@gv`zoabS*)jQZZ|6+bv4zr~j z>=_nO@E#TkayQ@gTN|MvnQ?d(yyr|V3b(Fv!N`Wq+hm1y2LMHl7@iwmGz9>EKjGTU1P^Umv4VVC<-G!C39Mxczl&j_meq8vV$J zltR||HC`S8-yBvuM*s5)@v^1nUu*sy(i$^c{sv={3gt21K8j49C8jH=4?C*lwryKD=RHd(+!7>tedpu>C3` zErq!<+y-$TrK?kGI!e7Cj?PJ+-n<~mM^Ek7*e7~}{o}?58*Dmm13W(pmU-?9FIpkr z#x*;r^dMTCuu6Bjv4oWRbFuhEQ5^a9Qj1>D2^}_}VD@{i9sPx-0-pyOYuH0iDhtR} zC5^fr%Ew~%cIx!$AFJFc&6G9XGye8{yGnym_qDWl=Y00>HkmPq`L}2PwYs-R`pR_u zY~He-v^2|lcC?p7B*s5_EV`Ao`8L?}xQIHmpDZ8fJI4KaJbaF=>vnQ98w-nRPP2-N z%1#=Ejyqe$7BcGp8d*PjjH84VoKp;|T<@O!H4W(L`xi0efmZYlzo!iZy?lk&Nl8jd zii+lgR7FIbqIng`HopDU_ez(4ttc%}O(0egh^@4BXEdP4>!2%}Q zhFI=-DMl^Y_I5XigB6oiy3>LRy2}jCsYYwcb>AwTK2&t~TXx1`T5$+0bof+;cToNp z4_l7}Rje?dNC&h!kAZNWLl(Lp|?AEBLza?F3NCdGDDK__veI0-x#J@t!RX8{EAF`Wc7VpjkBVQ8r1 z+=MClq2LACV)y0c>3(p$;Lge`D^mdV0Z4&VSTIzdn3<=W%u@;QdXCoQosOXo9qlN` zjP$``K}*l+#hpJTD|7QHi9hdlMn^|q5k3cEH166M+RC!cvVk6{6+xYD%w`eC8Kp|R zzqhYnRd5ypNbAwoO!<9h^wy zwli}eGIC*ymc!E0`ntZ%fkdE$iD9&{u^lw_Z-RPqxXW;Ee0)6Ab;89RDm_zHJ}2@t zrT`KW5-3~g=~XW0w^}fhuc$8o)0FE5xSgZDyqt8$-@gD9D%lDv$;bLrjGat#V2Seq zDX9YF$w7FZD6EH8OJpjPFX-dV?m0G2$i8NM zk?)zem3_ASIxnrzqz$e^52%D=Ys?}VMOQcnC#TV9$1BkI`Ir$w_Qb>laEmOny7I|B zg1~YKy5dCpC5T!|r$B<^fo`23g{-faQ$l`rDuKE!S=}6*$JIN34u4e;NnmGMF!xNC z{2A72p&>sA_V!hCn^MBE46AO9r{|Fa@)zNE~8E7J>Ge+I>v8F2_G0% zy??7gqkr;-i7^i&&MYonl+KqCbDur3U&)W2H)5TIlL2SnB5*yjM>V>#Kg)lX=e}Ea^w*S(23$Lmsk#5^)vMTc3?Db&!KN9o)Inp85c&sD*UPhTf}kh6 z%iw{b2(+VPWYPm$k@b&D9ZiG4$`2Y>#A~Fs5fIH~f~NCq&#>>;A~zQh-!3#bl(@F& zj@CLRpDr3KdbKp5L~?SADRNo9ceZHy)qqmLnDhNzJ7j6w^E<`c-xr7WYQP%axZ`WJ zsqjsw=1Z$iRHtz02=jx3%d3&%3Pva7c$+tEVwH5xs#lb&y}4aOEm4(BE;_w3EPo>d zvQ-+%+UT>@Cq$ATqU+gy{uTJ4Kv7?WQw9rxNi7XIXhljgH3U7;(`ufnkbMTf zG@#>j$#|9~w7hfYjw9vb*UpOXo+45nNy*lL)TpS8<{|Z@U>in5yizlo1z=zpNn_c( z`L@22JYA)UPk~Ws-i4fIFqFyfIe4%}N1ypG+gapMkh=jJchMeG#lG5|IShH>> zD=X{ClO2AgUkaSY4QLbiG*Wb~iiIU^y*?K=VEvO4bpQSyi&YXlw5fKrpJZJ)yu!H# zbEPtU4!3{$DY&K4{FZg<%>g%$kG8|F1cHYoBY0D@>)rNyC7CdK?(??Sekbq5cW-!- zn~mmaaYkW!sr#a4cX12n++=}~^V|kiRb!TA<327D{Q) zOEf|`ugP+ZI!1CjE#}5-8@lE06w}jotG9xE=T6BBZ^f$ezpxt=PRX3UnA%&TOU+j{ z@4jANFC$z)D~os3)YP;{$BXuJJYDNYZYFabe-Do}3$nUir%#>g+2|^0s?mXC&eO^0 zNd3MzZ&gHicuMa^*B=YvkHYNNNQsL-<{f?YETzQ6*w}iF)Zud5HEk1AdUDW|jDh_p z6u{B4l+vuGJBRu_m`ZIZL7|~DZ|P4XZdftj<_+psDkG$qk-3Alk54yG^;3HFbyBK| z&pOBUXjPx}H<_bMZVg&1$lUfGcq2wj{%pgzbLW-JugWSag)cV0KKFgn(7ESiQ|-*s z1E(Gr&*_gpCUv==R0tuki4t1pcyYP0Z}TX}n3M7ax{lijmokLb%=o5-&Z4XM&6_uf zVsM~e!}}1v0^b7#LX4?#qBM;+F+M&Xuv1*vyncUNjT02G z`%aG#!4he8L|<=--*Gg*go8W0)Q=fbTRAN2|C2FsD_|gm z&eD_ca6McSj_iKknO{X3ju^BY(Mo+U8DRKk(@~m3vFA|M7G~I6V(u!?+;w4l+M}SM zc8XPxdkP$zSZ|5T@L!dcj;*=jYNT@Ay}DhUeB&CQR?&W{tqy4w(e&pvi1V)8x~SKl zaW^r)3=yyDchOOUAE_ky!OZ~iqLFxh;L#=LckIRm=cx3eJx*oN%_a>VS}I&FS@&T_@c&k%~rNTC451zSO>6BvAD|SpQgR zYzt>kVUf|(v@uSqHo9Pm67y@zyk}xbsWa2#&#WmWtcYU_SI>CjiiT0xDcm~4Q%&BS z?6mj_IU#uFy2_x&@?*Usl78&b)y`Z}8-Fa4x6_6sFt%ST7@2s!iq1@}=c6ylk_d~+ z$sL{IE8&rhdSBwNLEAHE5?cu>1gUWlR1}f7F=(ZmfG3tcTDS@Zy&F`ZY5j5pRnuc z&j-P*P^9>^dTn%o$u}aX^{3bqX;XsiTE|n|s$Trrv|gJ=pPuoOK74bafUR}fsJnpe zb(m1;3_g4Ke&5YY)rH&m$^`N)(|V1%H}5D+`Ln2Ygjp62fOk~^$G=7PAlJd#zq742x|Q_f zxcCK|+B^@z}?oH*OGh|5TrS)y> zlOv1c{jrEHt5@(lT(MeABCSqdc**Y9nEPeUl0{>#$yAS7iMPE|CpSE4?2uK%OU0~f z_Tc5S$Z_E}=uK3NZW!R*LXP=vzkJ76`Rvf34rQ{(6moMDd7B{Ka(|_Y>Fhti=r;iIFGgkFEdNbpGjeiv3@LC&}U( zb0^C~Of833|46me@@ouEeVuIHnn71K6l38~^f-EP$LHnY)loiSyvsC|CDm(>eYO^t zAH2USBr(<}>@2r|$$ILf&%DO7^c@Zi>6?TSKd*ao%Q`R}xq;wC&uQk10=WaUqff2O zJ@xq+or}8pWj5UNq8YXFCRu(E5c>VVY#qFO|2130q4D(H{WE%DbU7+u~ z@R;G(%l+jcu`gDVurt+v0|5W9gV@n$uFh!QZx$%1tV|Z{$+)i4-9Es!bhQBmtTzsN z`p3C9E2YXlW7TsSiqq0t@3}GZ^@5hS)|s~{5T}8hQ|gQ*(mYjQ2U!;=N3}k zJ6fq|--Z0>#Ls@mwY8fv=Zk7zu&Q+zD>8PqW`ixmLuPZTZ0hP+kyfkUCzxE0Y^@?< z5~rH~L%b}zRj>qep8|0xr9M*-{ zWmU=f)wKKqvv(7!tbRn}IRS5^7-&?`tnzJSq5J`}wK0siGC6-&^hURmKtEf&C15Z2 zfBd-g_|t<&kIZZpctXn0Y&rY~xns-OJEW=+AAMM1@*GuB6s6?lD9 zvwADE&q-MJ*~Ow?H-A%)$0B#IBXVW0{_`vubVu#lh3)lvwPTH%(%ur*u?G;hd;MCr zc%;~MLdTLen@UF=mT_ilN9U&h%~Q1gtZ@W~&W4{4Obfy{Rx*-E+}>8v;v|xVDTnvB zGUHe0Vmpa4dhzZOYC$T4fWFZOribxUCHgOaGguKvk?=+5SN*GVTI$wLuNWi%f+NSD z`s^glc$r7lyHB}HW&|lbJ+d9&?vVk27~%MG+i;cr%4 zT_|I4;~`8Lc#fW1`}>3MZBQz7Sj;-g>?cN*tlOJ?$Y$GIkg)Eu_yvpq3pn~OhRd0ew{P|8Ef)zFE=v|a zLdz#*Dt)GHgG|Sx=DMoQ5_s5he-iD>p3V#|(~VR;7K1+-w_?SN-u;#r4E-Bm{|{?V zvG+Wu9hPRmSQ^j%*O803K~m(NRT3RL6E++pZkKfA&HvV?kj^A9^4bchR$?vJtKrqg z`=9teWk5^r!e_{C`NwkUcnJiAhHi__KTorgb^|aX&JyzANowjtA6~zC1N`kK%c!vv zM`!2q;!&oZJBMt=2rR-NTU&n5-o1a-uqifixvHwF%E{eG4@*$p&*bMLr=TFdgC=@j z`Br=t3;CA6f9+c7YwwIR6P7D>1MdF##vnbu>Z+qrx@H!w{%RHzsSmYWM{kM_;VMmW z>2+qDf3Cf^ont{}v(V6Gjc2D>RnC}%*RUBjef?g+daZ`-(fZMzKq9lHpG+f?<3q@l zf80^!M_k$es2d6Lw)j^JE2$1og{R2JP3g@;_;E_m!-rY~ZsNcb_>bgxP1$+hJH!`L zAewIr3M7!o-@4)L{l2u+$jFG1fnghR;5`%yMOau}4l-7mnVGkTl{kUES>*M_LRA#w zM0n19Z{NQku*4?wEI*!fmf44ALiGjk_4TU}(5RZZ``7>aBe(G(Y?}Z1u;Cm3M2x9? z8>vVOyCZ{#h?k9BJHv8yCk_GKe?PGQ{u%!%j3Tc4A9h~nF$Y}U_acm5%JP$GJ?Us? z@S^ds5g$>+gUW>kR~hzD`_e6)7L;Kk*B9_YA^ z>N&Thr0&cOS}`D3p0rxaZk8m~ZNN7_+@j}_GeomQb#?VIhjr_pL)`juTY;7w)Q7I4 zv75DZ=dQE|NNyorMh0ePjLF>F!!&f71oMKJU80Y~RO3a6v)!m}rIKCs4{PxMVx=^X z(ZpZcx^-)<@@SZtU555-5DjAsG?P@6mF1qHaRAL5hw{XaoL@wz7Dkqt0tqdx_wQG3 z3;+ZO%Xukw1NB!vM|!Q?!`}wBqyJYj{$KXldXYS8Qh6V+NZ->a8OzXE*a7_X276pQOH zy7*89l%r}C`URQ}P!Xdi-&zrf6oZTzAQLFQAHc;L8#R-ONp?Nxuz=GpEiDbOe=2A$ zp!_3+;sd}JJ|@4bt?O(Fpw_~|0@{6L-k7Oj0#fcWZ9#?sWaihI0Y4fo+Ed3q3J~DU z^G}{4$1H9~bBfIkBh(}Qf5^Dj{pTEx7r!}JedMqZ_G z2^L1iLl@uq*ClBz59lvzXI(lA5E`H{(|*lJz74LRyyZOk;BZ(ahLeby7}Nvs)9Az0 zOgk@QU|^7@x3MFvmuiFujcz}`mBvWn347!`*H!eQwT~i%t~H#ucs}6d5XKAgAs$Nx+WMbq%XW)P1edZzAfXnuHZ1*`7ql_$i1MuSvj@P@3@SN zR~|Jn<8O(wm(SaG@1#H=4`RKSP*y}$sJwQw;2CxGdi|xb5CYv=UKj^8EN}KHclRY! zY2*x{vw}mpanmOHKuoa~gB%4r0u_^dtIlg?s6=X$S%fcZ;tald{TjY)EzJ%`w4O0D zGC~hm>bSrLtJ77U4n4MFC}u^3gfQ>isXKOdtppF(Dv9$_{VqMA6nJUz9LozRQbtBb zSvjaF!?In9+*g+rGSE5(AQpv;mpDLpTif39Q#;2zd-g=yqpi>O-Me>xd51_<5mUo3 zfj@u##9^rsR!>ll!C4#|_|VXfM{{>~mz9;Zx3|B1`EuFU!Ezi-Oow%S`zB^T_#>|n z9qiaT41oX~eUD=qP+JqA0BW?p61(ICl8GT%$@2`7)NOUB4V->*_<-w-Rf7{{BQ;wv z6BV0a1itI%^JsH|sK=5ku7quQN~CoU1)4oPQ3Nl4$|o!d2#0tnXm#487eIyQ8F=wc z15#TG30G8g_6fg`e+K4>Z$dBZgsC^H7CPHqDZ$Ijs}+W_7#=C6z9&&R#@FZY4jS?- z&KyhzUWiJLg>Hi|`Ws(-y^Nnj9hk~-%@LL#ETfO`ATU^YI2NeK@XvA+cPc+f8h85f z)SG6<;WYdOFl|)-Kugr$U3L$;!_snwsC4!74gsi#zwj%K8Y|$hje8YUF*b^? z4`LGL=9G8#CrPo`ccnWX!~?vXvz`HJ8d9E!VA#9 zlBKyH_5oZ=o^vMZ>JNP0zI}WDxv*tUv-}=$ad98rwF`f4u{;!{o4}_OcaV#Vi$an8 zbxS#*ufTPTOiXf2YmNmwo{8u`aNqzZYxB?)sF1&RcdyP5IpV~pm9gi*fuEpFPQ=Db z*s=|`f{;is0`jxi4STq_&h38y!1xbTOp)mK*+Nt%MEh$UNK*)#$}?-5eLz4!Ak=N` z0yiqECs^AM686j9-rgqmm@3w0th)@y-VJ9KFA$ivI&13|NAlS?{qR=Yp=wDe z0Rf2bO4&lZAdL>HajgQ!pIGuX2rlBc6O`?t?+0^4hAMUB8%6i%Q(Mn=<#u~A z2Q=__ow0#~0~=B%s)O`gN)w;`sRB;;!EaQ+n&n(+MoCKwQ{njAgxjd;5NxOb(gAZ9 zz_Jsah$t`71y)oj!eb5c&*4AF2{3V^;ZTx?7xV3q*OV@2MWXI^(K&ZwRPr7NiR1Erdp_-DSp8Uw$c(bFb_G-rxL!t<7 zD+cPV_!x&zsBsgtEC)?0eU97O+QMMq$Z2b9r#}yW^oVES!u5v<9LdKrk_H-5{XRC< zf88v2lM#v~TAA<6ve5e8Ff0{077|9Dx1XUb%Po?yh2WzO@y{KkX28 zp171gWOfqI2$QpR-IW288_OXSpkI$L1C%<2fB03V}x(UC&IB~C>%eSVl1>8mTN8~I} z$;T}Xea(D-sDxe0^)MG#9FBNO)tZW)oZ`jgPsaJMohV;rQH|J&fo({D0&i*g@DUY9 z3N&gktk2}vgC{nvj=Gs|jI)9_Pt1kGGqAai%3PU8l~ukQLyr8p+#Bew8CO2hvhE^^ zWO^&U260CMAMvtOpRQAUXORPy%c@Q*NSx2(XUw{gKDEJj-MDcBG+cOIg)4*LLr_(% zMGpar=g(f~z|?*cX=ez8@8AB#sYKwi@MG-*SBG125mnHU<7#G!sb;PsaGKARIf^MCqYW&x3OokXOUYLHxWl(}nPdMlZlC@_b1&YAe*=>B-~+E>nYH zP|s`09mk7@ha+^YTJt7Rsq*FXt3$yO^B!*aCVDoAUK@hF2VER-9?MH|%%Nd(e43Ei z#f`f|RqV%)A1K1x;Pjx;K|tZ)uKVbW?z5DDASXoXFM|UDmrzg2#`eSXazBE=j=Xi- z5Kx}@5Y=k`i)vn$$>x79$o!wpx{&K2rJ@SFe?JQ`FYGny*%;<0dWi9qewfM1)2Fh9 ztAgWuFn0zf0H@*+_7Q|F;k2%JfHwu5D)NS?;=)Fa7A#}b2~TuN4%=rtBV$kT9adwE ze;^WJ4jdgFB`Uh%EQ@W>mhSF0eEew&n$nk8Yieqk5yWAXa&at2Z;RC8gbJBO+T9f~$H(d`Bu^HtCrWYEZh*rgULbx!vdyoB||D1 zrQU!MO9RMPAb-GAZk;spJR;V%9*o1vKrJ-D&oAG7G4BPUP`~2YPnNdBod`kucRs|r zA|>Fb*yk^Lv%8;3C{o3wFpIeTbDte(uRu|?=Z7$<#2<%?6p!fSJ>1MVsIg4X;Ru%+ zAS59N!WlyX0+FmOA_Z(^;grWz8aVMlOok#5BcZhj|D;$$(*XMv`r}Cm+$chbu~x|F zxa$~sCspYxS8MAroD4{gCSTb= zOUn-SPS}m8=;%q?NL4g_efa{)tchxco=v0SxF}M}Pd1Oy^1{#z!PcMXq5wl=<;Wrx zDReur%^Ba{*g&u991su?0g)^CKXlllAp|Cb@Pc>`x^hB7LZD-Ra{s=etqJudNP21L zAadx1t|qnxb}5mNBfJD7Atwd9#Ju@MvX3izPx_}E9qLo{Q{A^g8C`3>%eiz+RHs_p{`~$Csj1BpP;`}GFEO@pU zAA-~X9@MN0LT8V@SHsH7Ka;t>w(EUBgMG}Z1x&ks8`dhGZym{chv5}MITKknTmYJv zg3w^Mbt@4LAuPD{0dMyZ%pDj`kc+P%5O7_Sqi<;aJ|Jq>5g21V>DKcTY7z+VSX-G% zN7i!yZ|1p%?hP1YzvD=#=tShHqWCaG{9< zD2OvoBzYE^8p2o$HNzC#BF4~E?(JGy=#`F(iwo&eeXd`uR~Uuq%6L|Kxo#{A&-;{B zorrCi0-6MF39Muk17UH&?64el@bww_98i3_UM2_alU8Lh}O>FwnBZ@^|N< zE3pl>0{_DnG=rQt4mvt3Lt3f`_#r~76$e_%ZEnw=JX1hj*IkyXv-VwCXyE>z94u{PN`CWnXzMB-eo zb&L->LLF9mPm3=In_gt1a!bCRoS({Y1{BxNgX}&l#fl^Zd%qB; zy|eS(^2iT@SQWqsVn1=Dv@pGxrB6{jeOgIr32+cSJ$+XffxWc8yn2!RP{a~!hu=G1 zU2o1Zr4QAkCatR4K=Pc0psFrqD+@Jch53UJ>c`+T1k9CR_4sFXqx^lD*d z({4V)=wq$dmztWw;clcp{Xz3^!Y7ABj5@{F(SLSYa#9tkH?n-WZp_u}AK0{-bc2SdTZHO?L-SGfikgMF0hr9(KyQMV z&9Cm`j<*U|gW1l%d|JSUhApZ7(-dSM;H=e1vSA*_;Bx#WP_K@|XD02NhPi;exjx_z zxKjcBq822=a8L<@_d`Pu8@%-)Y)PX#o5#Y{?AV+-GlZe0C<6E(u#$ii(+j!DOCML0 zYgo3GjQqYF+5z!b*fC3(ceSuK{|8bGbf}LlEWJf5*!NDOZ>4qC;^5X<~@GY)zZmp;V zm~FpXw}2R)M);czzk^7h2p{Ff#>R+--O$ibOciqO*#l!ayD&TMG4qC94n|Af$W8-R z3!R%l1B$T9Xj#L~!rdOVt9I#peUlg#pVhn1i{>d{gLp^`VKGz2(CM7(UUL@DihSN4lJH-`eY{z zQ?k2NPGnwF%HFb&TX|bvAwL*t*T2#S@HA1r7&@B>5Hf}Zk03CzL$>Vq0jesYPo4~B zFJf~b^4morTAg9s0Ju3}(Wuwa)Fx?I0!9o@`$0`ol~`F?07CKXEu4~704dS&#z{^< z%PD*skW}?-$-R4xzgIjYm`dckaiU;gcxGD=l>iGlv$zAPu4S9V6{;yn3HKt)QI}Sb zmnVQe4e1C8r;KiQ;CX^>bGCNW#h;9khBhKjsa3mbcPL-+*qt3;OG=Tv>|kN}8YRDJ zvao~zZ?RGgF1~q8Lso}0(4%dp%AoM9hz+b>Nhttzfc_C(58qYfl*j5X0>6=cU zfB?&um+5(@mk?>g)Gae7+uE>Fibj>Dv{{XU`wb2(oi+}2Fs|7p4zJUig zRCdfq5XAZFrV^KL3dlQI+;}u)Q}R9p7)gn=#YjJqG==mr;>GCLU+pOm25vHWMn>ip z!km-*vr;hilXXYa^M6baevRHfP~hQ?!;W5dgnXu3d8gI&VW3VuV* z5I11PDeZu$JSC9_%F(%+I$&x{81RQ@aAMInK?$4PG`ROf+fuUkiIH!6qtUEEyG`&s zXlS$#61=^2br&_v>T`H5tB-LE8B=K>hB-Ul=I4ayNaMLC2PN)wg!;|5cH2d*4bz22 zfJp7z*9W2}kkIO-oqvTzhpOz!24TD*9O!u>qd|HDd_ZfSN3K=cGF@|`MY%+;|Cs$5*0_VqH4L`XksBFd$!uwlBa4nJ2< zdeI%8-*28c>b2nfV)97@Afb2-UED-ayHG8r4EXr?cJIE3xGd4wYXo_Bq|(V;WQ3Ps zU=h)X3rjEDCXqJL5WE2J2L$vD@19+2Y_<($r4Z*gvgvEcB+_1aluSeQ@Ed4Rg^|w| z&yr-tE5PY^u0DX|dncJ37#hk=A+j_lQQc~O1-PFCL@!JIFJci;4Bs(N*Lt**0C(f-T7Ebo z(7m*A)ct_dST}$$gogzv^I+*MtE1%0gv~m|941#4q*Rhff@@X`!Jz#-C<0ypK!A_W zYg^JygcE}iP)%Npwa`f=l3{q4To+&AvszVKs(LzxE0+^z!$ z(urLEv53a9sy^jDhGIC$rZ}o|-{q@j&rbI4rcm7Ho7*4cRRK}LHpDJQVcj%`v@PXC zFc0h$L8*!&g9sAto#OWQFRLV}^IhHdL(@Nhh(xmal`RnQHY%7n8gPz8Q@><28K?GhG3Yk7CK*tAz(GR9{yC_T-N1v~q?R&>A+Yggg`{&}#{a7TrTGcDy$h z9?74}HZ#iB-bwQwZ<^h0qT1j#@cp9YC6}xFL^>uHkZ4c9CC~*z&h$avw?dzVzSADg zz{t@#AabSY4-g&Fx@^jTpO!`m7U?;`2J%1vP32y5MO_H*W0X3Ufec-%K8f-_F)~kycV5xbd=!o`r_`k_a`*Saa>k4WKQiypJznZfjwz~l~ig|EBB~a7-lkrki za;l!S*b#*Hsxn@O%>xoOwQ*W9}(JwJF*?YTQ>vWJ^09vw=;3q%5Om3c3!gL^1I zH#Jg4`1zHBGuktZPL^G>CuV0FK_z4oZ97XjSJ?GY2pgSj4Vnm{xo2Wa>N-7aLHdxsnsKvlG3ykE8$~+BgbhK6!T*f>O~;hZ-SFP$tgcuZD~d z5tZ);xI1F5h{^PdgD#!3?d{XLvg-2lBm4K zsPEO_Y{x@sPZt4;a_)~v;4B|`*+oMeJUb7V5m^UWE6=tMNN~3K2UIf?j27p{x|sK3lqvvl6IZ!Cc(bDX+Xg_$Ziw0kUQtRm3S{w?|GtXoUUc6T2eh=cV9^( zppA+3k#%N6kg7+?AxqMBpq@`a;B;?UHPgFh_|4u2X5WjQ^(O|kPQ3Y&27$zPkhCnD_tAp;{gN}S6(h$_NkTE3oeTvygOB(@h3MAd| z9z=ly{tF=+f`#PTLpcim+o}^(xEgrt9swKKvQ03uw&xp0zP@H<{b6^jC={><4J5U& zB8Oe3o};b@jcb$-RqBl@#2kio`X{V8_wJ2F%wQMlpUM1nPjIb*PJ*aF2Ej66sq_pH{5oY#Av z{(ae$Hz*fv9$+Vxu&?MSpCN;RYX&sg=oY;K{Eg^1`N)T2^LQ1aeD#4|s6V0y|D*ElnYckB?I9_iI;n0KKHOq| zMZG6SblliqW{)3J{<`OvG6d3HdH0Uieojcg^T|3U>+@%Q)(^k6x7{DQ$R}X-DS`jy zrSmcA7DZ8)i`IRxyL4*ZsgtvkoH7cn(!DuWee|3m*SUqQzV}Vl{|qrMp9&ZDxSA{0 zHy@#CW@d(qAx-L>OrRnDaa6?>KV4~=+Np3oYu4J~caKR_yYXYM%>U7!ULL5YZm6lL zt8?)xkAeM&)m z2l@F&YUApi7f0$pnbdDhqs9F%apoJ#n3;|Eh_>2w`G{V=d|9N~GT)VIuGy;M<;e$w ze5#W9JnT;6UzoYi9pL4So2&Km@@g{AGVA{Sj8`M!oWB0~^Wy>JrS65H#IeQ{s{^YnY5Y2dE_+$6OGTL!Ycgfj?E`!wtjVzmyK|Yth z2wRoo9qwbfiwSN*#2vHh-MgUXxE6=f*qWqNzm8Sc&%uF_Q~lB<`d#AFEw*iD=~`*~ zb<8tvgo&7mm ztBV_W!p|Fbyz09`bLh$I8w&8qc*lj*(ZUqi2Tdd4gD3Sez*x9$CZ5O4mxh&~Pl_G4Mp%^jCIZ zftzib%vc3kKc4r_I2LWw*t&ITj7HBql zYu%3HeNTR^%eW`@_U+rP4ny(XTzQlt!JUz+&R;k1e9+4hnMiGA`x^cF?>(e4x;&EB zCbiK2MvfMb?*6r_*48svSBWe6uHAD926-!Ot1Gsh19(b}cMPz^tHB1&J6xQwZ5Vfn zr`j8?$Eql=aT312H1W-ouD)w0eHs@RmofRi%^8O_s|v{g>Lq-N!{smzcpt$~^;U5r z+Bm|x4q?=k<2XmDK4wy<>o5?7czPl|^6QO!L{_8O&0nuiPxY30ODDv}{`lUGgmZH} zRc?q;MWmjwB3bHwa-Achz@J=BmX@BN{F3KrvB+EQ{Tae6`{Kxrv-s1~jm`}^! zt~pwjd{FJ((y*~KvFy8L-+%bv)al7Hn0-Gw!X|TdWpQY0EwORQ2d~wiD-9M@b^h0Xmxs^dg%F^#4bG6WkjIP_3K!h)J?dJvr0+<=vqsrHSeK?wmAMEK?7n3k!@S;wYDF^=XZ2$Suh%`ic*@a zzEK(!j}Q}6NP92dx61s$etD+8LaZ-5G&Gb_ot&J^W|2LCbkbk>ssOuDAL*4&F#GU@ z!qMEt(V?cau|(&YI7)S5-ipI?|1WEC?bMqWIwzP_C4|g=r*>;BP7hci0U4Xd;j9hE zan*R+1>=%>1DBjqfvoG%bAq{)z4HS>I_5iE?u>k@=Wg4$f?L=wVyd}x7lHm%V)FYc z#dmf4;VUwoYgfKM+vhUjZBUrV{Q?XAc=NuU{nMU2k?(~gR$e|}*g`CEask(L*-^xa zzrTMs*XmNAG@EnjaAS(?;_4-2*~B?4$bRV-lf)cZ+R`9?rQLFg`Z-$$B(GvSo#=gG zxJ5OXUuU*A%tFLs6E6CC0IBU9?q!FB-JMB)gz;Q$Z7qFvPgJn}f~`N1Im^kUi>Y@y zzIKP@doXqGn@1`NU^PeCnaREHvCBrmIW+w>%A2cGFLwWlk<@B#mGBpK;wE(;@|H&| zjKlAq$?=Jci^HZ^>E?Q{p8mFeURtxI(xmkywgAm;yDPMu8Rzt9Iq#OviFc+wR=rvM zPI>8MeS)5^_~3hS9|OmcPpA!)F4Q@*q4+cv=VK;n*iR&;_OP*U(kl~z8v0@ut=WbC zs|$&%zs<8oW|7Cm`AtkrT;@v+a*@bN=!i;ZbZ-G!he)2*b=3%OCRscf9C?cd)j6`% za)fPbj8#a!KbI1AaYi@S^1_U_bc20g1R42Fyk#W4>#65gYYpAIMT$HTHBW?y+%FYe zDQbX(Vv#xUuA2*WOJY2q8Y|w3#CpKl->Eg*zCwC+2?ftQZ+W&m2z9F9?zdg_Z%1>N zCQC~N^Ojy1K2^*;pNCY2YkMLsz|X(jI+q)47xVe^ti1HXg~?-UkhJG3U&#fmc2;Is z^)1h}%n2VdZR_aeUk63!0jmy1Kd+A(^jVzsBtl zX^&0E%-Y(zB2toB70)JEKu>!tRsa=7&$i{*#I$JMe3_D9&T~6)$Jt>yM#+14)U8Hg zX4nQ|xXm?&z=x^=4rrTqa7 z`yH8rxaHX<3$_u5#GKj8(aa(L;Ni43XAOP(o-)z4@a#L~;bPXkIp20!e&-CW;uWJo>6f8fCJp${pM4uc1y+ptMq%eq#$;?_~gdjeFY#HM}<0}*Ijgz4Ed_Efm6 zOhuEOfA?q1J=%u4kkJ>ZDlt)r<D>mAuKY3u!8eLgNT+8M?`3OaswY1~-4<@QL68Le-mGuAlpUyuYqB>QD zMb=SM3mCdUT#Q+c!_3*7BvKnYl7Uv9^Zf*Qtc?tB=N1S2`M-yX|09<6vXmr|Ue4nz zQ^ab72uI8N?p|J;8^co-FAKdsKiR`^fBM&7>*!GLGi}FOQ;aL5?k^m5G~>Pe!EUmI zC+psTCE&Gavt@}tR{*!NcG9&XP7n6vA{L#aS@NXE>_G6Z2N4yNG7IOFD_{PiRBQ6t z)M*(S)!x`Q9+cxzUz< z@nAs%DO3vQ<%MJH?Z)Nd_8kvdFRQD&Gc8OH?8~RFjKyj)DH1y$U{m+frDHcMUlNcE z+XlfoNzEwn(P@5?jO?#$7L*Bm%*Y|-1T=t*io0$D6gNz2KuosYpKB=z;4!%O>$J;4 zHTg4g=&8jhrQq@~(ZtM5aq1@aukIU|4;?zhaJ=31m7GW2yb=}3bP`?5yDNuwVFM>SU?%nYO*cJfsAZ(o3K>YR@d(5Sq<8gd2Z6~o zkE6cfChs5#CuUEc4G4`I?eO4;6gF0A%e}uk?jc>1;gs{?!>~r)!X;FSz6$c{Xx7*x zCY(jY=;sSc)S{~N^7IQK!yrDb9+%cT^Qjr`?{vFf6&o9i{1n6VHN-elOI^J} z^>Jrs=RQENS`CBcvDK9^B4hqez4b=k_i5fVu+X=~k%pwM{$Fnxu{ioU4)j>#fvPAh zu=K#&fSn`v5$>L!a&Y0C?trJxc;X2$G4}nhJc^&}P}9+2bNPh25-q(v@bPNFma+Sb zBWVCxvk&Q5xr6SFHqR%Q3N+ca-B)XKB7GMl;@cS5@Xw)g%O@%Rh$^%u#n+OyhD9|D z$aCCR2l7Vj5SM9aRxXb8ST4@HLh+DZ>OjER&eUqC0@0v>yT3R)(ws51G(ROr8>f-D zf-R$V`LYdw;p|YoU|{PUk|WU-;jIKJu&&pu&vRJ?7-RbS{=%C`M7>Ic_%7?33rL2M zz(L61sKd4iz;ROkSRs9vM*T!jhh2-g>KK%aVt@;QlqZD;7$Zi0o zwhjBoB6q&GCi(~KsxO7oWfF!^LK@J#e0dg6HU?>CA_$-+6RSXUPq@?!915VaIP{pw zBZgfLNdMp1mJqVp{ja^>sYEOwkcsw2^)4!&71H&oiox1AIohbGDC;2G;RYcVqD@cG z&&fm_9TZVYs>U;a#Dt_3IodBr%NdSxKERsECTgy$tXu|Qz>FU2<4{7@DArRL!7u4J z3yhNn$o}z*fsg>w1yPkMX*H?BH6)UY75iP&qL&jkb^Id;l(JIGo1OQ?hv%eI|OQv{vzDDw2%I2IMM9 z)V&RyrkdtCsJfp&e}4J$Wp=j2jL|_aa$)2NTXXS!zD?*IHf}s}hd11gb3uG&e2DUe z(Rm#C?c9sQ9Y`ql$SNq2>A=myhzgor_s%1ZsyV1h*L|A4Q^`!<8~J_A{o}PFFY(eY ztsETQd6dXNzj3#6v=eL@W5Fs}aR2yix8u=UWo30pVN74M#&UIx=Ycw$ zz{`AFRhb~rF*@OM&1-Xk|4@VKZv^YH$Rbn)lZ91C-)V_WAFYw7e_}Mf3(trHOHlY# zE5#@WAA9)lAvQK+SPh>wf#HD{ksYkQtYdXT9w`yLq^`a+o0bVED!3HWO zey;{9nf-cqa01X+Z7Z{BKYsi`$y*Gw$hAk;%*)H`!LVy*qFz1mNU%rgvDxQ)f-7DK zbzw0ZZ$(ESG_#O6{^U9AS+8xpSS**BI0LS>Pyzi9qeLl9F)9;jG7WGr*mvg13kmzl z-HyXT*9sr|e8K{>`*F$ui}G*}^Q zLStlEY8nR9`h*rVu|$`^^i}8^dvy(RDyovg@yD&~2>-!4EVMAaqoAZWRJ zND@U)FQa=wWuwFovmM4AVDTN7C=)1Qo`MGt9TK0ZQ6tI}rJA6okPpicyR(x7w4E%S zc!&*hd~rAhziQY@Lrt3B6O_)(7qbXPNxT1|4C$sn9zHIq3^2j)+f&@-FtX%7fD|5K zC~^#T4$%@L@*ENs6653VBSYgawMedV3}X9PynQ&NbFKQyt;?MgHIq6^c*w(8HINXy z3?_YDmJCtxbu4mbz?X&Ioc(Q*SQaU{NR$#pQ^?Zn{8XPR7z~h?Em^j0S3P!#WG6Lu z7I{nKDd2D5$83h`%}?<8)@b(+75?FG6g@~EEufX0a6vnVg#Q47_*u9 zum3uaOOUmX-=dU(U(odhUF~}Ll&i(lzyA75lP_rK!YP?sw{D$0`DL=F)JoE?E($E| z`}YUjKO$NG{{35*F?!plM&MlB$>ZYyXC+7K>p7jQ?iLcZI6vj#8za2FGk1oxSEWsyBW5^vO99>)@wco-g|CME1ax3Ay5d-w9?75qoWZiONLBPtn4N6#T2vop6)xvHnT|2L&FlIwvT&gFCy zG&q+;+CD0hHXAN?XYltC>!8OIB$+zm3_FvqI;c9wxM@)R!Cy$z|GQwf^OsCi=7l+q zgr~bme!GYZ?%Hy&#jKm;s*9rVaznQbRHXkF2SZRMB=?TKY$lh(gDVAAC$>PA&{-ql zr{vkM-xsqV9F8@v_PY<>a-Jur-u_tF11e~1JVcHA-x;6oGX*yWwZjs9((a|O-plCiObrXNG}^*7Jq@zFov(s{U9jE-KQ+zW=0`8$m%+Cc0SpG?@%8Uc6`tO^Y4kqjl8^ngik6HSfXbx-%g!+5Wy2?Jbab zbE-_VqMVzQs?xZL=WJU*8hbeD?ZG3#l^T~WVY;TgwvaLzm}VR_6pkyW{xxfX}}BaYmf5jRgFMVwVTt|G^a6E9t1(+VXs4 z$60iiY)Fj|vW@sl{Q6KN!CfuHaOQHfIz7 zqA{d1CxnQ%JZ;oVfURP7np>=hz#S?V@ zi2rAWSb3S1m30i*)l-A&=I8g%Yo7i%e#;EW@a2Vh=MBqX3U=p_q}=Ze#zdp~Tq{89 zlA??@=yRh{n0P5#A~{+h`Nz@`$4o9$$m(QMU~o_|X=qy_ez{Snvdmw;nAKV}XMJG% z8I|tw+)X6Yos*LJ(VfrLRAOxBp>#3%Z*k0)xo>Z8A7KkMS{6lCBvTkHE@drOrI6bilqQ@khp6SRn;k~YEHC$+i`00~{CqzH<+Alp zC90KA_4;9m1foSsvuNYHr=g=m5Z**o6%`e&&XZSn z7^I`0W|IB(bl1>PfL!Hl?QdXix_U+jUmU-CO=32{3#GW%fi_+p?Wm=sd);>`GGCbE zn?{3DspNa$w8ZM=ZblI#LWk;3ZEY^>b=jqarI)6Z^SzI7Dv zn^x$U)~#E|s&98yY3>+$C$x2a2uhRccV&>38qtAKCV}LcWU&E;pQu7s6g+x5Vp zAjt0x8d{h2^>^ppC;+NjD*yftLJuf6v3BM&z!faBXV4kly?dATYHjSLnU$IAHOn5N zx;CxybrOgUkYiBSrl-seiQ-dCR}=W0c)2qn4b*?o3TOuPF1GFc-V zGIH`k6rboU;&g{tV_;drg^jJ4lI1f$m$!Pq#kxKolmPno6X>G5R?})XOMhE|>^K6C zK}l&>&(Ken^*3Yx-q4LlyPNLsAT>OHyRF^$=La31y|93q+UyvT0H)$y?`ju$WnjBOXiMgfnIjOKo( z+?sGZNj$skx(W_fju!h&x%o6Vi#H)xA?iR6s2t7e4K)F3h7|IdVmkH25r!aHTHxBn z_fpV$y+xZqx)4M;s9q4b^iWC+z{Y|hUTSJv0hu@p4dU@C6|y*KQcXL!@>{80O$Pk{ zHWae`m=lO+&yC{<5rW3TV_2Q=bzuj8IWV363WqF=ZX_%gGa~(v-a4ZQkIhtH#VXho zLj6Q*k$3J2XmO=xUIMD%1XM%{W#s%BaYEGoDpH3WEmZNm0KuDMEm?CoJ{IwriY-oN zNXVaT8Hu_Xmce>9x7zi9{FNol(Y}M68i&ki1wIF^2ZB;=|MEajf{~PZl)0Ts!2sug zbWTg0V-9t%*=2RPi>@nX1#X=@)LUl$F4m?rlX`)O(S*#wSbA1-WPI>la)Z1Fp>+1c z3n1SA^4^&>06~kpNR?Gp8^;OK9e#zMA;KQ?Y&I|)v0MEV>gnkL?WaN80gcmfb$PDK zmteFZV@NNlex@NcxNjICrTV3MH6X7v->X*UbYDlu67IY((Dluik<%291>AOQOpF+U zuKak{lWNE+j%|zj=)l04tY_RE9&&+zl)M3TJ3#qC8Bc{+0#bz#Dm)(&YBbzS*?%iA zg~3Q&Pj()Q1+jh02601*SJO6b?<$8KgCN<#_MMonljhroV2WjcOEaTbQw!X%5!;$taQ5X3twZy)Q}v;?-z2|g;( znNykQoJphsldn4{1P2B$Bk?aW&Xj%DZIn)?v5AK9JaV70x^O7Dy!KD z2FTU@$vVQy_p;~Tbk>h0JJDxk>|WE@D@Q{Txf+t;!!EO;@br%7H=^~BFW^)X5bp}1 zP;-cbN7~ZvrYuiwY|tgBcrPq+O2xs{P;kDI%2oLZ`uhKkVR~6&)n1=yAPrrNK3GFT z!-MJa2h9s(ad#1M2z2F<&A67EmaYcrcdq*GmK2#C1RGCK^5(;}Fs$if(ea)=r#&ri zSjRRVGz_v3;S+5buIO*QOUUOQOe)f|ubzBh0y7dL%V_$Sd)iXX>$DB&hSR?$Oumpv zBA1kD$3go^bUhKS8Zd3ocN@swg;Q$BbFZbKhBCm_)bohgkfu)#{Tr8}^;+blEOifl zD{=-j$YuTq>pIjn8`wLya_^zb+MD5B*d@{EMB1}@j5FUC0>*Gd(!jl0IMDjv2B@4h zrYBuL<;~)5p{{?r?u_l}?}e^bSp|4Pa?ER%Qg2mrpL^k_VvIfv@iujoGe0;ma0X&e z%q~8?%v2=*m@(pd{Bdj|T@$W?!4W{|6PDfI+04^9S5lRN1wf`+RG%S2&z(s-VdF9+ zKq*L#af!K^v9X8T3CH1eU_0zhO*&+@vg-bBtCVUgB)IuQ)7~un3s6GEKzmZEQ508D z?xnC7kF;(kS-;hnmrRl!sL#uVtr7%XSd74AA^1(<^fr;JSYe zXRq!Xkr2Jq5>r}|%=%++mI3kT!HP#DR*9Us;YKS$L+3u{*Gk-Y6p?nIV*V+1T}a7< zsDgFRTY*X*mHUXG1fu*WvG9+z0r5MamY4*>>Eer))TbLuTM#xbR^O| zH(@rpRt;k)GC_1T0R};WiJN?92F6mkpZCe=?|_-e+U9o*8Gk}Y_SCeDkNNzB_`bF~ z4Zm7aoi4-JqN~d;tNGbfOKmma_VhlJ!JVOL{*Mp+lTB8HYa!uVmDe9!1z>eKK{o?* z{vXB}{s2LMIj4Cz4*HHZQKHWwxy@cZ&GW`=N=CZCl zoUbzuEUu-5KX!2S4WF)P`yBbbeoN@)cDCj3JC{#Y85D5KxK?bSlG4C?nA)vQyH+G~ zucL7PbTa_L1P=}r44Ykb_enfn(yg0c*(roBg-~OIWv$eQz~b+N(UbpALRUt3jGED} zqAF1!GPCfpkgcOrq~*Zj{`Stc9%YumbR1y*eI7+={Tdt zVZV39^XU1DQZwLQ{MLc#{l4Fmf#k|k)h#>@)VvDsTUfmox+Pd{L+A8y&YNYS?Co&l zHViN3`)(KNgpy&_>iB01Sp7}*$^=y8qv2UW&vi@Rn9ymaT50{fYUsYo$(k$uh%;2p zaq^@(pU6!^0mKG~yw5MR)%BdBI_q3qaLtYRnagc5icW?sn&6pmELa+Tw5} zfNK@{#KC{1PrNLF_Tf6sb(X&_E4;4c0+mcbC{sJOLOmSbpFlJ6i|!=dytGzWa%W>@dOqM4BGPhE^S+hY4fN?Zf%+INC>InX%HpmUcs zV&dHSX*yEF+YI;JuFBtvJ0(f^SX=@j{*zuy-r6n=ix{Et5=I>rA`^V{yw$kZ2A8!9 z{b2gtE@;@BWw#4mJLPRdBcoCiVxN1JE8`5?(NEs=EkX0{FQT?SI%)Y#0KE-HMFL4PCMk;?Qn`9|qZv&I_zEo@c8 z#~>`9=cZnQRd>F@(ANhA2{vSF{hcu3!Z6`H89=`N@dRm7%Vy)(wiBa;N9!y5j}t1u zCPq^CgH3BGFi1$xHW*^pMo8FOMg-&EzA$Rhvx%U6b{?=LsE+u{Q`Adv;FIk-J%J`v zLXQH*e=d(Bd_la4*;NRP=|_L+QRNd-9)SJ?kQbZiC_v$dm>5Mq-=b>-%*XXWQFcad zvmR~Mav+}Qxm&WXt4J%>Ftp|^48|cmRr#J2T|U%*<{fK_I^dYv^O`o^ADwxQ+l8@i* z#5Hbl(LI0uBfPwfY$C&G9NJ)S(>5|C`MekH;?g*7k$SS!hriTPQ$ELy)GX8GQ=)BN z(Hp9xuyA@s^s|56ltp3C8YcdAWp))Xol2QEr`N*{#hOQXIL**~_E1qlwdu!_?*aT} z-<7+*zpP6sFgr*Jd(^v@0@uPypUa9dWWa>%$shD%+ll9NT^DEowkzVc#}Kd+(P%MN zTE?73QO6@}eh)zK4i_>!Q~HF7*qvuxF+I>nIBW)>LqkV}^n3$H>?}q7s*X#@ybY@a zvFBD%&G>cGKb}5AOr6AQnilA!N1MZkO|VSRPDNlb6&IWtsO|%l9)hRbp`cWa$iK#U zpLYMNf?XNPP;dj#;E7O--n0)orfi5t)sX^yIR&EuuCkJQP z0<{fhM#s77bL~wI{9AgSl)N#eyRdku4~-OFvb5-j2{pSo)NGATs0DniKT3fZ3<#T& zu5Z+~TVO1}f6%^y7MYxUgwP?bC20Z=X~b(IMF&EM*cfK^S!>XzdgJ(A6i%3-7SQgA zL#2k{ggY-4y%iC)Jdt*tXzj>Gg7#4}-LH>s7#I7sk=m(w+)7`8i{+h`e7sv4&l;zc zdcTt~rngv%EAKqmy85K*PRf(D6er5}s^Arm*0;w_3FY&27fAc{D&ilfY?Y>bNMzv(`X5@vCps>fe((ZyaDQiC`~{y=XN)mBMk)1P2C-`X?z0|9iE7LRVePg@RtSW zE%l(`=jG!w^(5wxUIrex{p*wMV9mf!;R*>DOhJu~V|x&t4F7N9D5kMT#AtG74u3j+ zx;H=iO?h^6O?11+Ee5BpCg#Q`r#2q1kC7!auItcIP-86b9jVyLSiZhDUsSxjPA$GY zc}`!|d0{b!@pkdqL8raF`F-wU;~Cc&oK#*=lX-jdjkU_X8j3ImbQ_i(Tq%0Lis8^H z4-$DVRjz#%-{Xk0u5Cwe<3s@)k6YNWWf*Bom!|z64^BFlkn=&rT94JmLUbM z64C4|^TpCR&n6Jk1$FT^n7u2@4GZ@z_}Au&HB&ekb!8Sz6pnNN977gH+*kS}JmD@ADgKooobw zhXpJfxuPA2mR%CZDbH0ehN7gl7!3w4gGq;87yU0#&uvZ~E~8#~_B&n3AO z)tz~y6uzXiUE^XMY*NxUav!(+qlNxQkuM`2_FkKV7Yh>_s}g_jl1-m++qYBdylBUf z0kNc{y*B)@jkdfE4QI9AzjYFqyPfXcz1N1QkOgtd`ieFp`#EY(Fy|^h?AN)};hG(| zbnr>YozT5DTJIj~sT{Z#%CJRHDIz#!#v8$~V@k}7 zP6iP>PKpQF*W1fWmX70ne4qKn7>iq_>nIW#bhd8_9!J#YcC7b#S7&5;D}vP4-<0yE zV|q91%qH?RSH`f)w3AW@X1q46ajHXd#d>*>$TyTXjw@%mJHyuj2|_7nITl?q6$Ym|t_qIbfLDC%@1F@gX@0vfk3yjI(@ph;iXFAw zkCMZK5gXdx&bP7+CA7wu4zp9HOWj%;g?Hcr~KWo9v#@H zROeuB`0OCko|o9T*i{Cn1f;zi{F;RVjp&yILEHh>@VXOIix{|j4~E}UW1Zb!B=Tu7 zL0YnOR32MkZ|?0YO2TaIVLMv_ZVaX<7;oxu=`<0K`h79Rhy0Axc5`4+{p=6XkN%W| z_sE0yevR+kX~twxU9)p#K!IW0^I=G41Qpx9Kg;pYQWZtwASM_wn59L>!gqk5KL>8u z3Rqz&mQ;~@@{N^-4$_iySz0u9Y#P7C-RI}YD7h?j{rYyFv(ov|$x%Km4HkRC`vNyP z@10psQK$Ski+qh#t3pfUU1P0)HBKkHly}}EXn1(uShht&?Oj$qw}=!u05R8R8pgu%xZjoP|XH03~CR~$Z5F9 zN@_w8M6T~z&LmtVW>VfN1|&cd!?Z-vTF&o(O-K8G{=B7t^V~4cXeAwe1{G# zsp^^e<}8PtnK~U%=PjJS(Kv5W@$XyPT3;6^+%*+M1Nr{h_aF zfJ;qYh4Qy6Wm%t7yl+_zvuk8H@8- zM;U(pyh7m@W!mG}J3iCX-@~>n`~3KNyn0~o?sir1V`p?0q)PVuuZ?M{z$=3c%N~M# zAUF^(ND1%XYvwpugMU47ufGzS5n+VK(8?eh1o0sPw04H>XeThbNkT?12mr?dm%v8A z`qiPll_BuZPm8XV4H0wzZCRY`Dke=}5nY8N_SST$7lgtwSosKu+E*4<|Dl7}{hUV) z8J56l+tyr=f5-&Z;tmKe=#JOD`9D)|Kn&a@z`h5)!vu{H>Lyg!QB3ztBV7pSXTwhh z3FKVJ5yE-GpS)Sin8C>l);BTwt#UG0<_7e5!VcDI) z>M=>d*8~TGpH~czY|=J=WN*YcHZ5KKj%CRrk|lO7^1w9>On+3g@szCkx#Z2A6l0Tr z^fzAlCwvL|bY*iEBsCQD@<_=nD3t(AMzC527>I-XA!cl-sMljKm}X+>Bd{#^rTI{k zgbkd;m?<&Pb#aUr(?E2*Ybjl?6t$~6Q%N0jYSaS(GGG=s>$jzs}`;G;yU*YsPz+?X(7MW$!IN{$u zNwaIKtQ}^a7%+Auo(MiVM*NScb4y^9T zxMkH&^d?NQ;23h}a>mRkw^8O-7RNYb?M5?J$AUf*u?L3$F|T-krk0zKU`U0>`11vI zKJ&R(X4#JUTnZe6ib8u8Cd(2!B>7CFDGw$LhPGs1081*vTc1kG!)%K?6WU6BJv}{( z2k;E+h4Xu)jg?<}t871f2v)^JOvdY1k5Y5w$>w4f1hJUY{ukX~_5vZbcko$4;_&>b>_Lx8Cbcg8* zEF=Yj7e-ewc9{=FhmMX;ID1{jOA$@4tx2VxOPE%DJyVjh4@RNo4Dw2l$oV_Gfgd+> z$Vd#;@v13GnPl8I>{OJ>2)1*DP^k0y17>NKcdpo5-sx2poAW7|+G|sCamj;y!{5nB z>>s%a_3NRO`#7N!LLCDgP0vXTB@;v_@Y2oM>E@zXB}3NtzCnr3K1moS;6?e zcGC-+H;#vG`48a@a_ya-EQc)Qutn%O_c6Z;6SX0@4`c&n=NSSZVDfZ}YFFD`cuyQK zv<^Y0rY0A`;F|t!Taq_1t1E?xLy!Z>!~g^r%>QB_!im*@kAJ^2_kMy)a)fO`YIVtK zfM|xQet|-}3ve&m0-Z^;B^8cVECqIWZPRd-lAyAoDc+U8THP%+?yjrK|CGt9J%CF! z%k0;V&-4{;6|!X`-8))7%_X#c{K75v<+z7%2eY09I+QmlZDIHBh-95}c=JvF8e@36 zm86HVLhR{0U~tyFW#7Wd-oV|aRlTB%3gsSEa|c_;UQ+#wZmN_e$)o|I>=Z}}&~Vm- zJ=rv=2(q23_`qAtAsT=5cG{C4t>DU-all5;!nNY-;ho>fp4;;j&&;_a2FVc;xxb7; z&Q8)hy_?wI_O@AHe$Y)~*chv+#wR^c>LJQw{PEqnZ?{y$=61TgP_^Xi>!@e$Js`>Z1fi& zu^r8f@=4&_N29-x#fz&k?hc~4`%gUb&pzbF+Ci)2$0bNZ!y&PgB4eBaf-F3tW`P)AcpmuKD<9qy4YAeT-YiX^G}k(bFCGNfTuE3+V0`wIw#!zVxI@19TLQ=$Q5B+=?wKQfn{Qb8SH$WbnoSKSv zae^5~AZPkwaRcUN?m$p{Z1Bl?s18F@-a?;m*B;{i$#deTn+Do?mc)$2^=F4iv+YBi zy6${yKb9lHz-4o&r{g+V%f8H(Eq%7&U{J%sr*8H?N4fjl7bU$C1-H&I*^Q=6(dmt` z_gyzFQTf2K(0RjKPqb1nXJOc?YVSJ#i^CYg=C+@1zH58) z<=0uY(<@!^j4*M<(9$>Js}^8IM?>LwtQNM`K_cuiJpfTL);YaF)>XruRB^#{qz+#c za%al#bhpulU5^5p_Ft&(_U*ksBbwnB(RBK<|6E|@($g{5eEBt0Qio{A zAB8ZCgWSpla0JM@msO}T4VS|exCIC=7!qjwKQD`8Ltw*|cACx?_smTm9q7$T&s0wS zu4SnhwA-42wf$1=snvwT`xw3iW?!x*=K_U)o2v5yGxYCHHNSD3^QW6MQu21grZkJh z_?e}9H!&vtBq=~eTygcz-)l^|b>NDtZElM*kQR(a83_rakcvEpid|rSW7sY6eLImn z{@V4=kSLqip=qr{ETAJJe0jv&XQnk9>J8XnVu!$)0JQieqvsz!hajOkKu3)EJv>Z& z1p;2K)691mvV$T1Vd6o@CE>#dcFd3f_8BW{*&`4!V)#L*X8RX*yVF?N4RH^h3)|Nv zteV&ziW#b@JO1S4LrImyEm`M{@|xron+r`RnQT;dHyU#{dfFXN6x=ko{!Y1DUJm8h zjGUh+Pb1ml3bo*)xZl*${nv$Ft#DS+{~ad#+{DH&;2Z^8G_Mg}1=F_N(D)u@aol5S@uEFVOU~B;BQ*m)`UAd21OWy1Aa9{I(HsOJ(%DO>=y-~BLkIr;1Zm(PQUTtB z8i~1_7giU~D=L;0dNOkW5<_TJg|e`STfC;+c$WT!_6J(4_I=NuShdgSj5>{Q-oYmH zcqN>>_&}pHVrAIY;MhR-h3t2{apzoveNRSQPrdGuk#n+OSUc}T+V=E0*@JiY(`{8& zq2sZTP%QXsS>fTLt^&vZk{^V%uVEfB>Ewg;%gbXfX)B>2At7O5n4!EuL%~q7aIwSO zXb$WiOG{1>hDGvQdS2h;%$MKmxyI>0;O}1og*QeD%SZO|nh#{hU#YI}@R!q6)R#J7wwl}hmpuQ& zsv8~6C(Jy=F!Odp>=$RW%9xp+f?pKMr6$!%z8f`0sX~PeAARb9mFlh42g+j?0WSoN z!hR)JQ8ikNb{t9`DkPm7o zy1GWfp4Mck=UAzAue!$({^nS5ItgZdm)R`qdvOkBCKlZ)!xKYC(}ap0`WU7|*IO9P zo|xadUC7SOiF(mxrj)y9QKMOL;angLbH!fbyNCwjw_71{*2=@XyF0L=L5DfN=^1r)qFtAiSOXMO${ zj<7~oBI^<>g^PFN3!M-s<_#aOqI?jZP%LL$Z0vSJVniBtr?*jq`(nD?t+w zpCzUC=AR%2V6jUekHTuw1X(aSB?al)hWPF*43z_cy<*2`wfXJ4>biaTZ|INzx^|o< z(y6l6IPUD{n!Gn3s*b!n+|gJnEV%sD`p7f>!jha<=cwz*8&p4g5B-e!{Alj0QN=)y zn!{XaX=y-(n+E%%`u#S^h2>Ieiz}Pg2_&VQ*12XZG<8&+<58R7rjK#kzp~qDtana@ zNkjn*qWWQ)*24x??Q(SEDrhLm%FD}t{MdNELTEEtcdJ!7iGw09G|nqUrQZ|1ltJi~tW$pY3U-{cPK}KNt$4+W*UT?^?U3Nn`<(D>o9ywzYNzuNlV= z3Qp=i=Nl%GW6km>wg!+mJOoU(`Kv1PUw@MJZD3nFGiyshi{gQtY0upcj&I7N(!a6Y zC`fpZZ)aeunbEcE;PCKplruoyn)-VAiB-FklCuzc-Nu}?QBi9A@bLb`7fq*aj?!m4vso2tBxXxmm&@?N zgOQzYLOsN&|M1SBVx)wc;Ow@KR$141^ch2bM71;YeLAVRpGxYvt!dJe@VKLlB|eDzSO0~e72ZgxwB&9VY2Swzz-b}j}(zx@~KLdYeO&u8}?Qt;MbE@~gN;8L)= zq207g&hu)&0q>SZQ&l57?y^>vBgFyrx0_?x=hrU;|MhU;b@#S*dcLfemMjxa_v?bo zsib~?gF5+-0NBJ&xaWvhOtHLY#8dP{=!%K2_cLv*`nmZZyZEAK9nUxjXG)2xvn9s3 z&6_?e=k`FD1O+5wxPHd_$=}BywVyFz$Zk<0lgZN1t3evnnUn%Q;)}*u_@@WBd;0QI zG(Qi0`&cOOTu}k;@yKn@C|aEe-C&V6{VZ7a2z_hlpla(C|6Ah=%aBn<9M(#q}aUk z%(A7~+_^rnalWdtjDNTEMhS)G86S1eoGHe)3r>MXGcw9tdi;Pyj;!L$Z|ba0;Fv#R z*`dENSza%%QR;A?ufJN~rssV7zHJR1q37Gjny%L-_BmhaO$<3^<%p%e`tO~sF&YcPv5&7#z&CqTY$pIY zjQEB47M~(V>${}=W4*4>8SlsdTp{#hVju+`7JNC)ee@VVBPCBfm;6VWC(+sNq7dI@M7Yzy zZ&_j*r){ZM6kH0k^8jIc#B0yitLyEGHDPWbtY(Bm?MV_eSGX(XvDr4wF_HWjihXqj z$RtyvHA|Fdr9EmFXGHgWD!K32`qjw4eE!KVW#KcTfvWE>?}&EVPCR&3_1)qRUVLfg zo*NO#uuu}&!;>HEbK{1gHII5gSNQo{al?CR^PJrulVtZl;dFM)8ATv~{P@R% zgd-~RBCq_&3I}HB7e1{MI;roY^C<78(SFE=s+`XoV3RS0q*m^Nhnj`2uK*EQzTKoT zxd-qr?M{a*@&?{@dT)%l=Fx?*?z4KcM=bFT0`@mrHW$Q=NIUkNvkW}G z%=K+paDTAzl=x<2#q|W@|IDq`HY!~cVo{BCZ*h^ z6QziUJ6Wh4RP*$h%+oySski_9HP&s<8+I6FKGfed9)vFkamE*v0FVRrf1?>!RpO-1mKM%bp-hh`Ekck`1?4L&(hm+T!6 zYP=zOc8!GE_HMecfr_S*p@Bdzvu;m6R^7Z$kq4isNfy)4j$ai@5s+hlTM<&svBqit zAH-|%Vt~a#5TIWt%Z4yp4-O6S9y+wecF&*1Cb>S3-qsEXBo5mP3c7>Y9SjZRK`qcQ zxc{mA!ryNq?a}G;hAfF!cT;y?Umk=(2ou_7X7T$6{}EfR?se>x)WCac-f#SCP!>Ww z{4*YQufH&Hf<}s)XN$*%@ot4_rQz*{zCkyR6hGC_Kgi+w)}}SqCE({{?mk%^p1nKX zN~--fIdkuF>&78Q6JCivX`Pf@E}m;;-FZpTeK$+&yDq=cxz)kM&7Tx-Zs{}QNs$Vr zgjj1yu7Hse=DVZc0$0}BIrjPA^=EF65M)JZqR)=Tu)(p)h%%L>>vQnQc!oBhrD4?{n#ZSL7x7TYC$yiI+~br!#r#FYA(ROaMss6CDhQR(H@;pN+j@-r2*Rg0?i=a8pcFx@h)G2|AVjh0H^x@|G14% zNy?TYJ3Ev;GD=32y_J!Q2-$llifnO6OC?9hICh!GI7D^q)v@=n_x(DJ-|zRo?(4ok z*Y~=uPKDu&(MI;gaa$1+DYf`)sDKSlY# zC;tAtfB(s1K3vq4U(1;V?F-aO!uCupvr+qLJi?vZ);F0%rNe?9QM6lxy+f;I%)ir z4YfPL9^JghwXLe($Tv(XO`fC@*ROTXN=W30K)#7K=2!}gqASYp_GaH>A9Xbu8^@_* zJ{~^a?XFwe`pBG0m-+DaYfX7A&m3PU5(oGkyn+YBr+ClgEr$6jM$w4xWkN!S5H^d* zxhgeIM`bJ6Y0g9-uoL|(PUl4O2+i83h;006_URh_x0d-3$JNIfMh!v;2caD(2utpK z<7n&w)(fGI4mWNbhXW&-4Q%`C$-$a)B~F9e(2F759FS}k?%S=;^@0G%(`jWq#cCfK z`{jF5ieuCA%+y&qNQoZgafdpwTMt;e99_sY=AQqt7(AjjAyK`ct;>A)(Oki5zgpNpJ~wWIsGO@tPx85 zfvd0BfPbZD9|;B3z}$JJZ3wos z#wRRIO#N`n;8&{g^Ir0th0@lK=>uCkJCqYh9a$TV!5)bUB!E!n4-AI?`z=haJRQF4 zu@1!qsLRNM>jB`;$4^~&2WMB5RNOcus4)c-?dfg@PJ1m+)@o+brRTvA^(BOCtY#Q2 zuGi9MlDXc5&dtrm#2j0G9(oInKf%=?#T^>+gNiNT)>Je)YKodOj8+ui|H`FoWR;0d z__Axpqrl$Y;XT|>Sh=7N3a<`avKC4hfY*?5+62KH*1Ern1YvHJ+51zKI2^7gU-|^w z5x=Xj!hgaBNq|;C2MSKss{_FwrEiXvs?QoN%%`zDhSvsOCfImr4*X%^{~QRoKDuH0 zgsCz}RKi*PhIK@O--HlfAu>w9;c0$=FHg?@`&b7&`;946C#ooG$GTTrUIgE?<7)&I$dUlad29nvJt!#h3F>OsyWr3KH~O(Rh9qY z1Mnk$LMS-4yFswdQ3r0SOkxn=7kXcv)(!73+zsxhw&11Q+S&@%IaFD;&lR?qC^5OV ztRd(TcD-$$V~=uSplEie`S9p2f5U(oa+m6Yn#&kAO!@d=&gaJr-rm0{yn1r66PvkV*}&-RP7Sgm@aBt!SR zJEN;;^Pl{XJS=x?^3C~#ev5Ed`R?nwe#1HgrJ97o1WDz~h=>SK1LuJx8a8n_N)A`D zgzQr>8%A z26&BYPSPIrxp=DEZ52GPmAI?=vAY)4Uj_sMZx3dH6@1wzq-iuH!RGAy@2?d-zUkmt z;;;z=q5DyB`eJ_PsBrItD}B)v2=ka)2Y31Omj2V*9fcPoqkI=%`i-5C5g`KwTuXa< z9#C}hb5dxu2F_bI)JDO&Hm<>fN5dDmOzl;d&zZ2U+A`aJD73U^vVm&G@VjVuSizQc_Y(0i=FgeQkUqBKeRAjMadK zi!J)myLb8d9c^vL#!W{p5tdSGt7vUq=?z4hDo)CndkA3UuPw-tsO$sRX^NulD zK#8-n8;9V-!G8%^&8%uYlMx(zAUUWtJt(qtz|SGF2{}tstU0oX*gNsP8+klS9IvL+ z`2d{jmiah~@6Tjxv-a!C+bF*fpT?=Tc+|Fv{T+IYSu&ES?` zoNU_lY9HmTdseR=AF57~=5F2Cvt{NbdQCm}yQX0Yb|>UD=a;`x3E(>#vGGpo5p5g- zeK)q-*(p~VZQ^q$j|zM8zFKl2yUryQ%bmu4A zjpf7voiCI?0bv(Y3?6bgq98^6n4j+qp9fWCW*aL&JVHg8*#?wtXC$2lz)<_bO;A0^ zJ_ZV8I|Ru;ET{W>Yd{^}hrkHxAPkP;(uce*e<6{(gQp*%f4{4L?Qxxs97M~3Oc*)^ zYF0@FVcH?<*&gY#Bp8ApEwa~OT_?D=-y?M4z@au@;6Yj08&eD&p zHK{Ks*^xb#s^3(-iYCgUgB_dl=+WbB3NhLuP-}x`lyho6QT~tLu{D6kMH{aGbrveI zx9#i*SWd8vqX7E&aX8IB24Ef|1pfmN4yrU+R=}>XQviR^qSz$SkDd!Ec7TBe7_F@6az6TPx z3&7X|kB!3#~|vW#4nEj8$CK-`e)iOcZypvuJvm*1pB zNpFmt>O+t@TE5Q|Ty=eGUbrZ4yjF!Bb;POsEFBCaClpJu@;fuW)Nd-ZUl-1WJoz}a z(Ra2-Y;5AUwMOb1C`c+f5{MNB zI#a*XoEf2KzVp)Xy*jVTDd}URvzn23Q8DIUIUBr3bH~{tiq3ynL`TN#QXOV!d~#B- zeCMTZf_7KzG8cmJN)i!uHYaIiFxD~&@tPHSWzdNyBZithvE{7MIe;SrN13s)2cmJ1 zzXeWpvN!esr?-~L3@my;m&$7g(6Gg92Uu*%F{6LiN>{RB5FA63dM6YCAfmP3)4Y9q0_02S7aiVugWQX71+BjBS8iisk#@zw=?ZNLiepSS z_gcdlEjQsYByj%0H{tN@Wdj76<={^rt&5yxqpa0DJ@JcM(;z=seegEVtr^M21llCD zgF&B2(dVqW@XxnAgrvnY1jBfF-Dizj*zzlN1LSu~S`#~78l|Ci6gcqihf=?CiaFmZ z`YKT<8I3-&WNYJhE@Lko**yCmFPNbCt$D^b3Hw>ztR_+3cL0oY|4*sUcNsEA2E}^^GNE!{A)1ypnoQ`-!KW?z)}(p?2h6 zjAtV|)@!1YjvqC+HXLnqkkj6JF$glc=aFb-FZ=z6?eo73$IG6!uazPF7ctS(f{`0C z8lNuCHy@hyQ~9!X(uLJ?NI9jm8tPSh_DN$hSeNY&Ok4>yvnH~O#)Wl?J+xsv{CK`g z)gPy8GMT(CTQB?i|C}_iPIcP0l=AdI`v(?CmP;dZU+AGfUvt${$tRXT?+59_+SE52aEqr) zI!|=T+RVY1!fu-Z6i*;LOZ#mu0cMClCi`!B_O-|`@jfK33Lqc{;>gDuNaD)@{{iM< z0@oh$_-&|{TuVKl{pnNZzWhFP`#`@t3u^5nZr_QPYzOsD9XFCit=>qJ}63S?=hY(#958&HnTm8=q<)iifuindn~0z8LPflwV&3A zQ*FEY*m+j;nSv+TrGZU>0$H!6n{c)qKn+N|k$`UiIRL>xS3FZF1ttq%s+Ykj4MtDW z-`T39^H4@s7TeFVSK&0Wm-(!$C+V_2SmxF{fnH@S(B(+*?k#!a;G&h>kR*#8nG6A8 zM11%X7uMki&&K_ojxVkiMbS?M!|a`&IGHC^IqaP2B~_DHN@!TaG(DSZ^z@f1o8=_; zO=@a2xific4iV{5Rs40{i_=Y3&-g;HV-jx`ClWR2ZI10v_j7WMedJ|V7K~cxMA4Go ze}3CCgVxl4@rQB;&C>mIYcjk3qey!X4++z$wB?F_<%lDW*)O2mdPI`&5#1&Sqwfbi;)5)Xie#T0;`K!>|ZyirVC{I}5@SktyK@^B)T z{c9hDET0@9bc<(Z?llsCR5|fOHL{m(Pr!#wOwfZit@0^8IQe&>24xW)K=HvWunYt= zerM{2_QCqGvKIdLnYjtyYh%8@i3tP=&|^a7+u$Z9K+pDAbRFm=JKM@ZbO{O;)%-s; zwpW(aaay)l-ktMBB4EtpAtPxFIX?qy{2mV#!6RPYl!M1M~<-bK<6~L(^N6?N0hgFc&GO=-c zfZl^2sHvb!f_lat>jXhAUu3WIM?JF_aQ|3#z4l3sImfY%l$YqD zQ{n1J;x=ZN&~XnZoV7d?^Y`8;mu7e0$u#m@T{qUR5G>F3TDZxU1`Q0fV9ThEuV?YI zG07HmYS&a?E?$x8e(&H^bJvJ^(n=+2fum4#$UFB?>pbo&)qqO_?WoN02H)8JP=_4^ zlxvGsG^eOp+)g(^?3XcCRI7o5?edq?V%QMVxq|4U8gs`q^(o~^DyfJqPm)xo zu?ep!`im{y@;ayXEx#I@Q+Pf#KjYV9zv$rIX8$4OG0u%plX_NDK@&Ji__)0HWFvPE zd5t_fgQr?AW#b$^o7m5zw0K-<%k+!zlJ;ugtNL1Td6Roxw97)Z4}vII{?lkMerZZT zkPxo3puPL^5s~`Y{zXP;T|)*syl8YrF<@XZ|Y&qs3U1*Up5R_q~<@CU&!_+k$IyO;4=Wx60=_|-&=aIPr zx3xRW%ku9Y;*YyNmc{DxayUD?nwIVRzroXSMrPMg;8mM<9t)1P5+cC){DZG|Uhp9N zn)MCol}HtV;eqjtLSVjJw@z`oZas<1Z8dsx=lL$b=yJT`a6%G30QJ^M?6OoWizBsp z*ol>-VX+5TPMP#_-^t@`?d|uwUZV*jpTLKij~p(HZP(V{FLQYerOU@I_dRSq5wp4v zFl0D$w~CeRvI!65Bg>eD0rEEqTLaaVmyIT^EZCIn8U2^{EE=dXJj-V1=PQTJ*&a^j zjX&>4c|K@%XRf#BMg<>*Um!h!)AE7S%`v?nSaAf|lZtHY>xAftL&gSN^*^2dZGsKi zr6S?k^};m&T?l)C3fTo^G});xPlAb?fTfo4eMHz_4lfa>-nGUae2i5MxQQI@yS5PQ z{V`%(mB%~jm2o{$zEs5ZIQ7ikvUKwXgr91215TZ+UxB-nUC|X=Q-!u?-b$UxS3Plb zkM^5Ye&&`p&E@7cQFt27JSg#5s-XpndQ%|KRf**oZt+D>+F%= zgGUG-as@Au`oS;+NZ1@4Xcg)h&T>!dSY^01j9kA$6S(bWh;H1x9#`}Tz14*y=N}xw zQ3*cHBy#HGd{>4{$={YGP^ay;9M>9EZJwU(-Zn={lNXvP zy}^ds-kkCJ={t;Zn{ z?M(fk(AxAIj(2vfZYMmq?rqgA<#1mE>{*Shc^BdYggo1|F$xb{NwEV9l?q7a*xcu| zuVg(%N$YtRP9RZ;wi!(R(d2%V+2u<0-3S>MUu2DiVo!yFt?h8dJ_+qW)T54*3lgba z6;}U|jzP1|qV%M6mMW6PtwYR(rN-Zj_|z|p8VwGm+{a!8rc=x|<|nJl5`)qt&vjF1 z%y9(MRJ?mpkNKop+$jKXYQn>rK|EA`BlPlE=k&(p&NV*bsd_KjT9&er?X2o}o5SOz zmXqa9$Yv&;fDbzOic}N*V{&i#zh|jJ-zW?pjLOi6!5%crANM`cOI%%8hzFsP)+nbZ z*Vgs_ifrK=Nd?Zx?%uk<9MRq6cYI85)IHBuD(cZ%ll#fBCGe?HTeo7MO108CRv}Ky11P4m#4#ph5V1Y}X{EqE9F*awZ7JXydYx%1=zM6#7pE5` zXL+zKwHt@Ef+Pj)suxKwIfh$VOM=}TjQ-lG=WhWAZFE6e0kX1l_ciCf&Yxb_6of|Y z^2JN6OFOUBKNTIXYJWOc$j}i@>24le*|3#R;NUcQw5Ptl^@k$xzvG-^DS|w z(6Jx;$$^|rBhN1*c*o#@6sKo<(S?@H2&6hOxL4APTA!SER&3lan!P`98a4aotVqf* z*;aEYb$#^v!otwtN3#aj_O#Kn7bOpukX#<2mnT_duWc}5OEQM-ddO1sA$3Y+y>Q>+ z4&SlA9gCBtojIh0gP#es9v8LZ4|$o%^(RSZKSWVnRXgqC!lOOxQJz&@VqBtbqvAyry1+Ac$7hnlY zmoiZ7-_UteukC8Sb$+!!2`$b|Iofcu&i_an!uZA1LTS6xeX^{}D60BTEybO~8J@*n ziCqB)z3QI^Fc&{Z)s47Hp@JXn&@A7c(Aa_F+>?%U(0$C5bU=mYX>djA82JEV!iTZy zQ}6JZ%tuev@#^(YS}yj;mfqkSKfY8x>6tH&+!+)EDUZ2MauJ&9nGxlG3G z5yAZ-oRxSe0@57>Y30kCid$%Ss%GjQk>Yj3bj?N78olW4Y@(?2heA8)TAbOY0&&_y zzPLA6Rh<}Jn1L>GZaX?49Pgv75OsCC)bL#Bg*e=rqARbCsvITgoa5lW6aNYNvj4O3 z{`l|4OZ*!G4mT`_3r0Sj;C79$ZTURH)e2G8z}lp;Th*N#>>Uq5-hroT?wz)NV#T$Z zW1D~=<9l^&q5lT8(h=zzc^*owxHh8&;xKNLJ~tv=YK^%N=r;%~zwz_veR8fqkI^vr zeh`i9n&{?U#JmqfK&^F2wpFFIM%e1G?+JP{`|vdU(NR7shDh9*Ox{6^S?^et1aL@xDyY3zj_Ey>V{Y1-8i9f&F8cNH&0-P zvfmER$yF=iW0f4-*5Be_0v$n*j;8kgBj)=bEf){OP6V+&Oo};iP=!Q374^V1pF|)0 z4Y4nsuO{7vg4AGvjavQz0y@{wF{(UY2(!P5E3Cc%$XoHl9A zMc$3Wl{KJ{?&~a;__db%Vd-`Sleku4xc^Keuj&^7S!x1v0WevM~&xbXXl5x5Gk9d5pUtA1HSRxU(qt8q9UVlw-Ld~Z- zb>Up?iv&%6vd!zyZMw4qex@dxyhb>_> zWxbm4gZ{|MAt_- zYXd>p`;(2(#dJL|FgEU~@N{nMff5wm&*s0MRXf313zp9(qR9xv;43xi?iqrW%ie8c>QBRS0?LN&(>eOa|v@uTF#6fipDjs z=wG;(zRUNjKgT#8(9|iG(iX^N;j_o%Yy{Yk^I{5ATwfqeu17pSl8&(L(XDB&wg>m zejWEXiLyOYdI@pv_W@wcq;6TWXyHd1qSCloOwaz2RL8PoY-fwBL-dn12_@$l5Ur3B z3)YsWb3oPvNR z`&Vo(!pO3?-TXIy)N8B0s(8HGPkeryPl_B+Q@t*>?_IIYM%TxQR zUi(H%N>4AzL$vFjx^>0HUW**DV>Kk-H4+9#%wMteQohkWdaXpqMaYF;Xw{s#tcRwF zz9edVR4Do5!~M01%3L^Pqd8ea;1&MO^IXBcju%hAHG7CPBMMP|Ay*T)XNfJjXdUAF( z>ox6PR6ONYr>xo^r=M1w;-|Q#dgQd}6zBisHzF40t57MTzVLdHVD0>ni|p!E(K=fz zppiwCkGT}=#*v&tJDn2Aa;HvsK826m^l2)o^nixV%N&?q?H9@!njhzULW8nAl}j2l z{dH%l+21-n-Lxdi@p6|(B@jsuEV4FJSk#DSqAq(LM;TTQgSLT9uj{iy3KmP7A`oBV zQDf5?`<8!Ir(P>4wr*UbKAlWPnR@BPU!mTg>e@cME{!LfR77_}v=&cD+KwCwQWakj zK2Jn+D3pOPz7nqALD!!T;|}?ib|yfT`6;XXb1)@*e!tKr^XH$4K5ar2bpfdRU`~In zHCic<*uw{D>a`5r=3<>`$#N8Hg9s8IIoC|@fU93X61A_}@`?6xw$qomT-(%o_g*oz zA@=b{Q2|6{=uXPE5btj5<7(0}s?~n1>VN_%!MRo#Zuzl^_IDg5tbGMrgrZV7Xz0e& zIC(psD<$?`YZiTkcrc(#GWLVk*$Am}6Zu}PFDFv}rcBNMS13z3rJ)pYQzeKuFa}CA z7mgRNkO%N!mjrk z)zut2RYyNxA4>~9zM@(wm40lA=Ls7s!`y&9(X*WNzp6*5V2Dz%p4IraFJ&Dcyy_Go zN2rqeo|p~bJ!?6^@lOjt>57&V>*k>ptI9dH2g+<3)xf*DL_rsxaVQ4-eS%+0{GUMk z-#z~-QosUH-q&zSUai#gkjg&TIL!t(o2~MdGh*m)SNw! z!wl(akNtSwgMEXK6r8+X(Fj}fSV^N?43j|hL0IqNzR$_zb9+341DVj!F|G&i01-&(K7t>j_u}!q27X08jG1nIrL#V%eYWy0Uwb~G zZIFF?Jnw9J6`D)u?Hw`mY0qB?HdFn=37Uf(3)iSlq9~Gz$#E=lP~&A9L=e`e^+QjY z?^P_l{37HxYgSW^oMX{E_R6_JYYUWAqq3#Zt88LoXq~|A4=y#9{KJj4ni?Dok+d6U zhj|j6IdGhK+nTSi?-zvs#}dlmPbr^ylj!90id16{fsH;m~DM@m~oUgg_W+ryws%>swE7!C(IND5k0{v1&TvBT%f-0 z46ZHUFCCpd@%Nd&D_|DLc(7A*Ap4t_r{hHpe2jab)&^BO0ILbM0st#@Nc}ptXY+3j z@eUFlK!4gC=)};AzGx#TATSFUiW%TggQO3{-S89FLFz;putxxpfR%9=gd@p9W)Y%) zl>kAXUzu407`i5K_ZM4C0Zf~a17bFar9Af+!6gW!$RW_JXNr3KFfgiuc^fiKk7Gdw zctt)8*9pH&TU#5nw%$>=hR8Z`EYzuGG2=X`18Tws6nbt50@bv)w>PE$v;r9Wo`HPD`(cgFIdCO2gMCO5=hYipW*!hax$x>6%?x4pNDSE zWykiY`$9&X3H6~BB0*3LBA1m zf=%q{Y&5G$a^t+=06L+=0_FgS@3>zXs9ls&Ik}mn=TA+3{7Y4cXz30PJ&6PzajI?U zcK&2k99`%`kXro!+XuWEFwfy#Q~VV`n|-hJc5Cc`0V#TBnt_}VpKNVyfmaUrp49LP37ZoWF#n;_}|$rS+{o|YyoKErbA6cX5pfD!HO+lQH`NBzn+?|@LFx%rU~ z-3tfkap9>x3U7q5hRfAI`a-!HNsuM_g@W<%dF0Kb_K<>ti=uGRXGr;_Xl8T;hl{*; z0Fy;W@?uy_r=88#07hDD^JrnMmU&0p;`yuo{dSK<``>?laJ6niJ)Y|E;v&CD4_hgJ zWa~VK7&<|ppr<^klvy_*wc zYQl*|+N8}c3?gQNfw#D!k?d|Q&&F_$J11q2M?vX7uKJ_wKIRVYsU!F`bJ+Pyt#X9DUw5#g! zm5UGF;`+I5eI!HuD1$CMB)4&}WBF`c7{7Mrg*TnQZDwMQXQS~n?o1@p0dX;H+THfD zb6H+A=x*5^*1db_({R0x(t`yg(`oRRmTn@wX*&dRbfGi%*@OU-pPAfS4? z(Uf=}%I&r>2$s3^hinQJu!q|BL3$_vLj&Hw!KkKv9tB)yJ50p%YbwG(Xrubdo z`k-+Z5(Jm=YlTQTVPCnsLY($h79a2dsm0eIpm#t1H-C&P`Ap&mqE2QT7-T(M=JLw6 z2;R~_7H~0*nuKDhoOj@~N zoICE<7I#J)cnrLA>KhkZ^y#wFoL6-Ac6?Vx+#6!KT%|i{b+EiG1eqqf#`tgtl~%?q z=8XQwYLTAx_bd5h{6zfCkN1aA^+hoiESkJ4o(=o!HW`8RS*io#=LDR|N{Kz+B4hbV z6Y!_@rN7dDOQ4i|)SF8?`5mmrrI9=>(|7uJ2e6kodKUq{wVVwOQ=CVTqj6uUGdi z#(v8HHDh`8nUUAthok*&eflcVPEzlf6RhSD_wAWneM0U5|M19EXidEHr;?YJL$5r# zk*t^j;XZuNbx|(2$Pw3y)*Bxhn7&)4?^Xtih5$iLFKw3255yVx#87+L{O9aE&w=$rvp9!*$~nf22yqXOOY=< z?>xE$px~dNT6(x1WcfE}C!&XEJpv{Ij7G40Jw<^15-zWALIs*S%X|ezW!hJt)(MuC zCH0t)=#M<-yW+vxuyz91=H}G38Qy+$Z|GeBZz+XCt!uJl#m|Q>74*5^nsuEDuRTfU zYhOc(Hzv>LCOe9-hUdO0jazdE?Typ{KPGy@v@=(Y-i>89do+w=Tdj4IcJ%0I1Am1_ z7UGjm0WRy8sr)6&2T!Huvt+x$YUjq{w;!E@2t=GSKf0haVDzi-0iXAxG)jRAwS8sz z_@oT3L0lgCW-IxiluM)z^+O;1sXjWO{)w9(C$x&^EZ4ZM=zaS6yb80*l#$fQ6prIY zvPxw%vPt6HHF=~*{^rnE%%<+cMuiJohcf^l7^c#U{Q#wJ&O7R@5YiD-Ddsj-Bf_i(OZ5O3{~2(GM3Q;vP15uZ{sF}0D9D|qA9FOtgb^ZJ&)Dpq&87n#1kRE$xr6d&_E#&7NV zg|_MVl8ss=e{ak#5+0r1UmM4tXeI7|F?PqkIF~Q;T zzU}R|i-Sb2z0zX7kzK;t3#t$vepPGF4cyQSw4o^zre8>bY+*EXg9uk(a`{{?QC!{G zR~MuFPQ{mco;y}~Z(0P(Cf*nvoFi{!ZeiD*Fr!z`95RvdH=_u8cc(qrK8Aq0 zqGS|4X7`WrF>+a;7G}JoH5P#>Bn)GEK@0@)A>rO?uu}am)q$9xrnZl=VLgy%(eIdki$AE1HWrzHAwcS$v_JnY|j2E8IY-ZFn!51%zzi zvPtAwPks38loYb8u8HxOg3tGH5B$Z~ojQsiD4l{T!!x%IkW~K?PPni8gxL*phZUNF`o=KfEMi^Jdld+h@N}{PXc}#N*V}D{HXS_(d}v>vYxe$h%D*VCTT= zZnn>lu{Pr$c)yXeaRk#AK1?Fp?_%#OVd30~3)Wu6OhpKIf*G*lZl*&o9nNtd;1Tb* zyuH~6Ue_eMq7dD9FFmZJf+Ih|1KK*-AGo}?Bybkl9Esfg7Z|^$?ynjkiH8_k1ngg? z_s~Zwi9JXhAYA5+#xS@gAH2w)ZeG)9^b)Q$TdlDRJ^e?n2JSpiKL$4TfRu7MCgkCZ z15)dAYV49_W40!hN61ijPNyvyG~7)Y2(far=HBpGKhkuVUD-VF^vX zmvLr9T!k15^L>Qd`RK9@eOA4sQhr=>m`?SgO+;{`qj-MC3(TcVtt<+Q12YMtAQ(ba z4YLNpQz8c-B6v?>L^bQr)W54N=v76`Kn$}u0bv8gQ|M4kgS~1Nkd~H~nb<~6*c{La9mViV_dm99>1zD;=vR zdDGl-crqC!zhq{-%}koaE30YScvuQxHI=lTCbx&s@8@2Q{otjGk?+1sS+KX~$0x6M zr^M564<$@nEC19sQV~s9jE~BG(#CIOiXd$!Jiv;2;$sWOTZP;# zA%2_fFBP#7R8$NE;}T(5+H=D5y$`^@S&%3Fk?g+Ir&=mW{oESQ-No;F^`Xe%cWKp% z%_s5>4p%Wnj8($=ez zl9xlyPK?(U1NHYGfl(s1a^phN($|T%cto5g|M_CB#qBHc*X%6Fy(6>o4aCP=o6)f^ zw_4uEqiHS7^EbOrZEqYFt(}e43!k{5FC4z>eabst?LP_-aYn*WIBD2P!Iehv76V7X zV`Pu(40O8r*hXxW4<_{sw`CIzz4tZ_Hy>NvzVSL=K92oyr6EDP(dFfu?Jic=3hVap z60^m$k$WK?K^H0Ju}732Vjg?GCqHn~xAC zz>FyNC;vJ!=CCa*!Yp3M?w{IS=veQj*-|C8s2*iKShW+(ZE^#tLmE&!^(X!KmTezStvM+eO0&bNjE0xv1|T zD)`(5&1X~)m8?V*%e%G!Pglf|MLB>0(fnB-?d0IAC$cnhHH zdH{ef!hkQ3%z(sI4gObIvIv%5Z~>682`d2o0xZkcyUpWZZ5Ew=qG4Fv8hDe#Y&OrF z%X{#1fNDZYahAg7x)|1^7Tbi(7tt@PUvnm&iPHZAfpyaQY9 z^Dje9it(&pAP^X5u>}hqTaHFNs8rKF-|2k3jK`pg>DTZw8?bBRL-wZkVp~MQ;olc6 zdFIKBBpf4QPSm80nYqs&Sq$?*k#h1NuIA(wU7;GFu9pVK5%vaT1#WK>0}#&*}T ze>CIZ`8F7j2TQgqc>w$(+$a)1xkXE>HnL5K1z>34JLg#Uk!~vJ^Bp~U6#N`%SAy(s z(P0x5z0fwKdRLG0=l-1SUTk#s&S1*9?Ni#k!lh^IW;y(5w47JDy88>Am|QPE+gzz! zM%zcj7Y7%(rmY0%$r-+0?b7f*DUC6q%uk{4x*7*u5y6*}hhcXI%U@AXW zS`p`O1_MEkN|VpKn#Y{5>Ju2$ERsdacfulPH33#HwrS1Ul`&56_ybt18GQ3T4qN<& zah|kdv1v;Iv+N=ARBQ0lB1cWHDk)I0S)K2JqOnt*{2|+Gp|k4K9RZ$QR(W-cCoMc* z>iO#=_b7$D-aYN5soyH>_2u;DJ1#8zVPFC7LsE}4M4Wkmxg)@%VERe1gAqjTz^sMM zaRXBDO0bI(U_`$cVtRIO)qAVOHYP%%WaPvMHQ-%89m8QWuIyG=J1*Mitgachv{Ebq zeP-6$rUWu4b4KSP6Lrh35T|)7T~{Z>tKE|LO^FxEIZlz#t=jG}Fj^QIxO0=$R2H4uR*PfdHrl zCHKh#80v>4APk>K4!!eEG*%*z6`ikyFvzSIQ_z!tSPb>Ioxznim(Vhgq+O^oCTHzs zA0`xd@l?3kNYU^PA$40?S<3C`Bh_)tmNna!D^J)dw;tW8u4_;>^TQM+6m5}0YK@tccs&skZbtsR`!JPw>kYTF@V2Yur zrp!c`zX#VPQ&`S0S%hGQW3~Y}a354U7Xf$+l}dX%J5hpQ8Om~AO=mnEL3tk|j=32# z2u|eU;_{lVBY(a}Tqf|Vpkwsilp+ACtH7hh_sv1@`+489x6lsQ!zQnS1pZJoqZk$r zY3>Ew#y&CVLuDj1T1+-=&n&nikaHO?wG4|ZFasV7UmPM(Zprv3@)jj7nHIAmStlgR zK)<^Kp7k-uX1DnQH&$$MWxMoMEbWcE)}AFt;snUzVh?-2MV{G*72P};>=1MunWKz1bST~Or>Gie6So$lz*65L8+OIVp53D z`jq57FHlY8Q6Z;x-UGy6|D*~jL3Q#TJW{D&GWAB1qK0++0EW@1Wr&+2R}-Xi)6HU~V6&zG0wXl){d=`CR!x#k9fZsl-W81G~s(=C<%&@rtzPLZ%{k2e@G+3H|$>N5Q&UyJVM3jID z1vLCy@UVgHJ^$Ui9w5LG;L4thmW{?R{{hBFpHbKIcO{@c?_Q)By40JWe|Hj2XtIhM zYi8pJtIHDo722d8m`fgr5VO8TMP~(ue2+yrPG1y)SIoAu4_f%V(ea5rx7K}?VO9edA^b=sbxuXm z$hLwtli)?4E`Z!&66TL3Y1Amjf?VzlNo8=MReQNqgXok|ODnaiM1KlaFhw%bMDd%< zE7>Luye(g;EoqV_LiG8RFJTcUk%%Ll&I`c0OG%>UW|?a8YV3gpXkPTDT>~HAYS(aA z?CMU-{7bu?594G3{OXng&c^DQbG{o%{n9_*tS9wf=I^j>_pK{GEMwvHSo3E6Yi~=A zL?aAXd{J0h(b~u^B*p)%m2TopQ9~;$MHqbyqklvQ=M`9V*J455u>k07NN^rUM~jOW z2N)?j5y)kJL6R#jkpaUM0iuQb?8@JuZMQ|fb5Hn(To|UyQ)2J9TVb!+K}cl$Xq919 zDH0OLa*4xkDabm$MS@Gv}M!trQL0A~COt>`$GoZNmBR$o_W? zTM;YBCaOTS76y63CEf^gj8;K@lmVq{C~9WU{f#Dwz8+c9hQD~U@Mql-jdoEj!JOl3 z;Fl;1%#e1w4c=>EpliTQF>r%na=))yl8)eEz)!$N&LCnb2V+%Xp6G)EU!V(t+e4a@ z^Oa7P0;B?qFO)*RGTn=LJ#%`q)Azex!0}3Mmxkui^{QF6r#N>h-wqtPWxtf<1H_6J zCctw&^4a{D$`GGsY5Mey9bDw@GBd>xkNVt${^4CZzVfyB_;`!+dG$vNE&gv(-%Wl+Z;AKE8 zM21;mkXV7mWhl{&8hH$%$4~7>;BY~F>}~nHt0HS6ji1L`eK?)InLEeEKhL4BG%xR+ z=aVrBSjk66KZ63Hryv?I8-RqmmQ^$^!?&U44!|MP{B?P^e1=bC~t*VF4QU$o_cy%%fk>7Z03NQzPMN5DV z4{C``8HT^h67)`+AP9p)B}FtjJ)Pj77eJPU?5ge&hLA#fgGfnfV)6wV>_hUuHQhK2 zd<}sf4Nm)*0-!VNRasU8QwB*CiWLbKST&&FeV)+jJhAks>b*3P_^z{@pkYQ6b|24xvd^4y+qEsN(5Uq4FLLp3oa>mgWDrkaeos+k7S@}0O!|#<$4Mbf6dGQ z_xc^)!EP*LquvaemsuHE$>F7Kx=_2%20tD@YZNFk`MAV$m(fTIAOFQz7JHYm^tjT5 z2hW*2_cP5?!qdJ*)rN(^NjS8)`-I0+`d{OcvF>NM?C){gsz;*S`OJsw3yjr=+^M9a z*HRfg_@QMe^Y9%KiCH|G<{FQ^>%o{BiVl%3x|jLY*9m9OZj8i|WMZNB80b_vmSj-{tcn zi7ms^`mY?IS?8a>u++U+8|iAqb)k;)KZr2Ul2=1JC8mHV-yGs*5Q;6yLc`>dL=jm4jAaK28=QvQuCYR5Qht-MCVVcU->0EX;`Km!$(IDSanK#kZZdq~^SUbNDRzdf5H^04XrfzphQNnV;DDH-IC*pXitvhi%?t@*rvDS6kI4^dgS?*{Vkah3`WM$S)- z$tfwkX{7lIN7CkQP*)0vww(4&pUoSuG;8kN+;*!mAeVzqWUbo>edK5ZE9+JWt=F+p z?Kj6a&hbf8Snhe>n_zbfmtJ}XaM^cI)VUSKUtkk+M$YRKgri_JfPOW&O}-xN1Riue zXIi`mV0MVyV57KT^ASXOVBwV;Pt^M!OK<<19Im3q@YRg{_2&nNUpeXTG2ChRaL>pv zK7}sN`PT^dl(ws~;AdJzNADTUqu$a*5n6Db;=VT5(td z5A4$S`hi8XZnA2kjjawOd0dNrBcNu|_GapRg)9>eg=$}+lTf~-kFi|5-`&wTsEqkD z;chlFo^BB3k~tLNny7ztNv1{+TDsZ-)>dV!xDA)2{SHgyxF#lUlrW`e|mcpa4gq0T=$=X9vv<#*&N)a!(H@dx_m*TCsry8(P57zL(Z3?k%y+4*2F>+2>*mqAR1pEKKzPki=h6%*kP_4 zYT)`vqH*`_BVNDHL&^8(x0M8eaWT#^TCp!dEoaaJ6e0+ptzxG^qeE-!S*ljTQ^jLy(lsT6KV7yoI;{`h_Y#?4 zuiT~7eLw8)E$lqn%C)swqr{wFQgl9S2es&YtJ7S{cuE+p3UX1a*0NLi&c~-p7M>)G zb8J#KcrRhWr~i@vZcbi})Z;{rU;>u!em}dqjB4nsZytxx`GwaQ4z3 z1lDNT%N!^>Dc1Y?#28QNlwW%n+gmx>nWdTvSez4+rZP0yUSqDPvP1xmO| ztB(JklAv1Q*p+APxEIwae4ouO$ZIoudFdZkhdzYL)jJQY<9pXQvGg{eHE7KgvB{o3 zG3^M5JlgU`e@>ro!|48J^CybeNZzk&IP^YJX!Bx--{FERq1|2n-OA6<47_n4Q^&oY zTmHXToL$$lgo%`)&0!7X}5Tx)NPz24S&Rwt>INRRdjuWK{-E*eE` zgCP>p(Z4YJNl*{7(2V{W(kySdnDK3`;sq8_Yg!(KpHYqpoGby)Yt?Dx4a2hc%yRE_ z%Fxvz9BN_x-HRJ7^%`#}#dWvLX-~p@1QjUdhdcXoo%>9$?Q>izc5Xx@K{{3}N&1ph zAbKakt}kao`|fV)lM6d3_oF}LzXG{^P!Ls{afj&E&A;kVM?Fs;hAr4j?Yi;VbQ+qV z3{6ZjSGUK{fwMHCrQ*G(vHC{ABgNf1L2Z0uyvUzS5L+FuJ8pBENv1e<_Z@2 zce4iq5k);g&TQQbR76%-aWDN1gdRWi&sk#<)jy_65lYd4#QKBlCbxxo)h&Vt*M;A# z6+Z%^ab^RTp;uB_4Fv;Zk4C0+gw@?w^V#n#)Ckb^@gv`zoabS*)jQZZ|6+bv4zr~j z>=_nO@E#TkayQ@gTN|MvnQ?d(yyr|V3b(Fv!N`Wq+hm1y2LMHl7@iwmGz9>EKjGTU1P^Umv4VVC<-G!C39Mxczl&j_meq8vV$J zltR||HC`S8-yBvuM*s5)@v^1nUu*sy(i$^c{sv={3gt21K8j49C8jH=4?C*lwryKD=RHd(+!7>tedpu>C3` zErq!<+y-$TrK?kGI!e7Cj?PJ+-n<~mM^Ek7*e7~}{o}?58*Dmm13W(pmU-?9FIpkr z#x*;r^dMTCuu6Bjv4oWRbFuhEQ5^a9Qj1>D2^}_}VD@{i9sPx-0-pyOYuH0iDhtR} zC5^fr%Ew~%cIx!$AFJFc&6G9XGye8{yGnym_qDWl=Y00>HkmPq`L}2PwYs-R`pR_u zY~He-v^2|lcC?p7B*s5_EV`Ao`8L?}xQIHmpDZ8fJI4KaJbaF=>vnQ98w-nRPP2-N z%1#=Ejyqe$7BcGp8d*PjjH84VoKp;|T<@O!H4W(L`xi0efmZYlzo!iZy?lk&Nl8jd zii+lgR7FIbqIng`HopDU_ez(4ttc%}O(0egh^@4BXEdP4>!2%}Q zhFI=-DMl^Y_I5XigB6oiy3>LRy2}jCsYYwcb>AwTK2&t~TXx1`T5$+0bof+;cToNp z4_l7}Rje?dNC&h!kAZNWLl(Lp|?AEBLza?F3NCdGDDK__veI0-x#J@t!RX8{EAF`Wc7VpjkBVQ8r1 z+=MClq2LACV)y0c>3(p$;Lge`D^mdV0Z4&VSTIzdn3<=W%u@;QdXCoQosOXo9qlN` zjP$``K}*l+#hpJTD|7QHi9hdlMn^|q5k3cEH166M+RC!cvVk6{6+xYD%w`eC8Kp|R zzqhYnRd5ypNbAwoO!<9h^wy zwli}eGIC*ymc!E0`ntZ%fkdE$iD9&{u^lw_Z-RPqxXW;Ee0)6Ab;89RDm_zHJ}2@t zrT`KW5-3~g=~XW0w^}fhuc$8o)0FE5xSgZDyqt8$-@gD9D%lDv$;bLrjGat#V2Seq zDX9YF$w7FZD6EH8OJpjPFX-dV?m0G2$i8NM zk?)zem3_ASIxnrzqz$e^52%D=Ys?}VMOQcnC#TV9$1BkI`Ir$w_Qb>laEmOny7I|B zg1~YKy5dCpC5T!|r$B<^fo`23g{-faQ$l`rDuKE!S=}6*$JIN34u4e;NnmGMF!xNC z{2A72p&>sA_V!hCn^MBE46AO9r{|Fa@)zNE~8E7J>Ge+I>v8F2_G0% zy??7gqkr;-i7^i&&MYonl+KqCbDur3U&)W2H)5TIlL2SnB5*yjM>V>#Kg)lX=e}Ea^w*S(23$Lmsk#5^)vMTc3?Db&!KN9o)Inp85c&sD*UPhTf}kh6 z%iw{b2(+VPWYPm$k@b&D9ZiG4$`2Y>#A~Fs5fIH~f~NCq&#>>;A~zQh-!3#bl(@F& zj@CLRpDr3KdbKp5L~?SADRNo9ceZHy)qqmLnDhNzJ7j6w^E<`c-xr7WYQP%axZ`WJ zsqjsw=1Z$iRHtz02=jx3%d3&%3Pva7c$+tEVwH5xs#lb&y}4aOEm4(BE;_w3EPo>d zvQ-+%+UT>@Cq$ATqU+gy{uTJ4Kv7?WQw9rxNi7XIXhljgH3U7;(`ufnkbMTf zG@#>j$#|9~w7hfYjw9vb*UpOXo+45nNy*lL)TpS8<{|Z@U>in5yizlo1z=zpNn_c( z`L@22JYA)UPk~Ws-i4fIFqFyfIe4%}N1ypG+gapMkh=jJchMeG#lG5|IShH>> zD=X{ClO2AgUkaSY4QLbiG*Wb~iiIU^y*?K=VEvO4bpQSyi&YXlw5fKrpJZJ)yu!H# zbEPtU4!3{$DY&K4{FZg<%>g%$kG8|F1cHYoBY0D@>)rNyC7CdK?(??Sekbq5cW-!- zn~mmaaYkW!sr#a4cX12n++=}~^V|kiRb!TA<327D{Q) zOEf|`ugP+ZI!1CjE#}5-8@lE06w}jotG9xE=T6BBZ^f$ezpxt=PRX3UnA%&TOU+j{ z@4jANFC$z)D~os3)YP;{$BXuJJYDNYZYFabe-Do}3$nUir%#>g+2|^0s?mXC&eO^0 zNd3MzZ&gHicuMa^*B=YvkHYNNNQsL-<{f?YETzQ6*w}iF)Zud5HEk1AdUDW|jDh_p z6u{B4l+vuGJBRu_m`ZIZL7|~DZ|P4XZdftj<_+psDkG$qk-3Alk54yG^;3HFbyBK| z&pOBUXjPx}H<_bMZVg&1$lUfGcq2wj{%pgzbLW-JugWSag)cV0KKFgn(7ESiQ|-*s z1E(Gr&*_gpCUv==R0tuki4t1pcyYP0Z}TX}n3M7ax{lijmokLb%=o5-&Z4XM&6_uf zVsM~e!}}1v0^b7#LX4?#qBM;+F+M&Xuv1*vyncUNjT02G z`%aG#!4he8L|<=--*Gg*go8W0)Q=fbTRAN2|C2FsD_|gm z&eD_ca6McSj_iKknO{X3ju^BY(Mo+U8DRKk(@~m3vFA|M7G~I6V(u!?+;w4l+M}SM zc8XPxdkP$zSZ|5T@L!dcj;*=jYNT@Ay}DhUeB&CQR?&W{tqy4w(e&pvi1V)8x~SKl zaW^r)3=yyDchOOUAE_ky!OZ~iqLFxh;L#=LckIRm=cx3eJx*oN%_a>VS}I&FS@&T_@c&k%~rNTC451zSO>6BvAD|SpQgR zYzt>kVUf|(v@uSqHo9Pm67y@zyk}xbsWa2#&#WmWtcYU_SI>CjiiT0xDcm~4Q%&BS z?6mj_IU#uFy2_x&@?*Usl78&b)y`Z}8-Fa4x6_6sFt%ST7@2s!iq1@}=c6ylk_d~+ z$sL{IE8&rhdSBwNLEAHE5?cu>1gUWlR1}f7F=(ZmfG3tcTDS@Zy&F`ZY5j5pRnuc z&j-P*P^9>^dTn%o$u}aX^{3bqX;XsiTE|n|s$Trrv|gJ=pPuoOK74bafUR}fsJnpe zb(m1;3_g4Ke&5YY)rH&m$^`N)(|V1%H}5D+`Ln2Ygjp62fOk~^$G=7PAlJd#zq742x|Q_f zxcCK|+B^@z}?oH*OGh|5TrS)y> zlOv1c{jrEHt5@(lT(MeABCSqdc**Y9nEPeUl0{>#$yAS7iMPE|CpSE4?2uK%OU0~f z_Tc5S$Z_E}=uK3NZW!R*LXP=vzkJ76`Rvf34rQ{(6moMDd7B{Ka(|_Y>Fhti=r;iIFGgkFEdNbpGjeiv3@LC&}U( zb0^C~Of833|46me@@ouEeVuIHnn71K6l38~^f-EP$LHnY)loiSyvsC|CDm(>eYO^t zAH2USBr(<}>@2r|$$ILf&%DO7^c@Zi>6?TSKd*ao%Q`R}xq;wC&uQk10=WaUqff2O zJ@xq+or}8pWj5UNq8YXFCRu(E5c>VVY#qFO|2130q4D(H{WE%DbU7+u~ z@R;G(%l+jcu`gDVurt+v0|5W9gV@n$uFh!QZx$%1tV|Z{$+)i4-9Es!bhQBmtTzsN z`p3C9E2YXlW7TsSiqq0t@3}GZ^@5hS)|s~{5T}8hQ|gQ*(mYjQ2U!;=N3}k zJ6fq|--Z0>#Ls@mwY8fv=Zk7zu&Q+zD>8PqW`ixmLuPZTZ0hP+kyfkUCzxE0Y^@?< z5~rH~L%b}zRj>qep8|0xr9M*-{ zWmU=f)wKKqvv(7!tbRn}IRS5^7-&?`tnzJSq5J`}wK0siGC6-&^hURmKtEf&C15Z2 zfBd-g_|t<&kIZZpctXn0Y&rY~xns-OJEW=+AAMM1@*GuB6s6?lD9 zvwADE&q-MJ*~Ow?H-A%)$0B#IBXVW0{_`vubVu#lh3)lvwPTH%(%ur*u?G;hd;MCr zc%;~MLdTLen@UF=mT_ilN9U&h%~Q1gtZ@W~&W4{4Obfy{Rx*-E+}>8v;v|xVDTnvB zGUHe0Vmpa4dhzZOYC$T4fWFZOribxUCHgOaGguKvk?=+5SN*GVTI$wLuNWi%f+NSD z`s^glc$r7lyHB}HW&|lbJ+d9&?vVk27~%MG+i;cr%4 zT_|I4;~`8Lc#fW1`}>3MZBQz7Sj;-g>?cN*tlOJ?$Y$GIkg)Eu_yvpq3pn~OhRd0ew{P|8Ef)zFE=v|a zLdz#*Dt)GHgG|Sx=DMoQ5_s5he-iD>p3V#|(~VR;7K1+-w_?SN-u;#r4E-Bm{|{?V zvG+Wu9hPRmSQ^j%*O803K~m(NRT3RL6E++pZkKfA&HvV?kj^A9^4bchR$?vJtKrqg z`=9teWk5^r!e_{C`NwkUcnJiAhHi__KTorgb^|aX&JyzANowjtA6~zC1N`kK%c!vv zM`!2q;!&oZJBMt=2rR-NTU&n5-o1a-uqifixvHwF%E{eG4@*$p&*bMLr=TFdgC=@j z`Br=t3;CA6f9+c7YwwIR6P7D>1MdF##vnbu>Z+qrx@H!w{%RHzsSmYWM{kM_;VMmW z>2+qDf3Cf^ont{}v(V6Gjc2D>RnC}%*RUBjef?g+daZ`-(fZMzKq9lHpG+f?<3q@l zf80^!M_k$es2d6Lw)j^JE2$1og{R2JP3g@;_;E_m!-rY~ZsNcb_>bgxP1$+hJH!`L zAewIr3M7!o-@4)L{l2u+$jFG1fnghR;5`%yMOau}4l-7mnVGkTl{kUES>*M_LRA#w zM0n19Z{NQku*4?wEI*!fmf44ALiGjk_4TU}(5RZZ``7>aBe(G(Y?}Z1u;Cm3M2x9? z8>vVOyCZ{#h?k9BJHv8yCk_GKe?PGQ{u%!%j3Tc4A9h~nF$Y}U_acm5%JP$GJ?Us? z@S^ds5g$>+gUW>kR~hzD`_e6)7L;Kk*B9_YA^ z>N&Thr0&cOS}`D3p0rxaZk8m~ZNN7_+@j}_GeomQb#?VIhjr_pL)`juTY;7w)Q7I4 zv75DZ=dQE|NNyorMh0ePjLF>F!!&f71oMKJU80Y~RO3a6v)!m}rIKCs4{PxMVx=^X z(ZpZcx^-)<@@SZtU555-5DjAsG?P@6mF1qHaRAL5hw{XaoL@wz7Dkqt0tqdx_wQG3 z3;+ZO%Xukw1NB!vM|!Q?!`}wBqyJYj{$KXldXYS8Qh6V+NZ->a8OzXE*a7_X276pQOH zy7*89l%r}C`URQ}P!Xdi-&zrf6oZTzAQLFQAHc;L8#R-ONp?Nxuz=GpEiDbOe=2A$ zp!_3+;sd}JJ|@4bt?O(Fpw_~|0@{6L-k7Oj0#fcWZ9#?sWaihI0Y4fo+Ed3q3J~DU z^G}{4$1H9~bBfIkBh(}Qf5^Dj{pTEx7r!}JedMqZ_G z2^L1iLl@uq*ClBz59lvzXI(lA5E`H{(|*lJz74LRyyZOk;BZ(ahLeby7}Nvs)9Az0 zOgk@QU|^7@x3MFvmuiFujcz}`mBvWn347!`*H!eQwT~i%t~H#ucs}6d5XKAgAs$Nx+WMbq%XW)P1edZzAfXnuHZ1*`7ql_$i1MuSvj@P@3@SN zR~|Jn<8O(wm(SaG@1#H=4`RKSP*y}$sJwQw;2CxGdi|xb5CYv=UKj^8EN}KHclRY! zY2*x{vw}mpanmOHKuoa~gB%4r0u_^dtIlg?s6=X$S%fcZ;tald{TjY)EzJ%`w4O0D zGC~hm>bSrLtJ77U4n4MFC}u^3gfQ>isXKOdtppF(Dv9$_{VqMA6nJUz9LozRQbtBb zSvjaF!?In9+*g+rGSE5(AQpv;mpDLpTif39Q#;2zd-g=yqpi>O-Me>xd51_<5mUo3 zfj@u##9^rsR!>ll!C4#|_|VXfM{{>~mz9;Zx3|B1`EuFU!Ezi-Oow%S`zB^T_#>|n z9qiaT41oX~eUD=qP+JqA0BW?p61(ICl8GT%$@2`7)NOUB4V->*_<-w-Rf7{{BQ;wv z6BV0a1itI%^JsH|sK=5ku7quQN~CoU1)4oPQ3Nl4$|o!d2#0tnXm#487eIyQ8F=wc z15#TG30G8g_6fg`e+K4>Z$dBZgsC^H7CPHqDZ$Ijs}+W_7#=C6z9&&R#@FZY4jS?- z&KyhzUWiJLg>Hi|`Ws(-y^Nnj9hk~-%@LL#ETfO`ATU^YI2NeK@XvA+cPc+f8h85f z)SG6<;WYdOFl|)-Kugr$U3L$;!_snwsC4!74gsi#zwj%K8Y|$hje8YUF*b^? z4`LGL=9G8#CrPo`ccnWX!~?vXvz`HJ8d9E!VA#9 zlBKyH_5oZ=o^vMZ>JNP0zI}WDxv*tUv-}=$ad98rwF`f4u{;!{o4}_OcaV#Vi$an8 zbxS#*ufTPTOiXf2YmNmwo{8u`aNqzZYxB?)sF1&RcdyP5IpV~pm9gi*fuEpFPQ=Db z*s=|`f{;is0`jxi4STq_&h38y!1xbTOp)mK*+Nt%MEh$UNK*)#$}?-5eLz4!Ak=N` z0yiqECs^AM686j9-rgqmm@3w0th)@y-VJ9KFA$ivI&13|NAlS?{qR=Yp=wDe z0Rf2bO4&lZAdL>HajgQ!pIGuX2rlBc6O`?t?+0^4hAMUB8%6i%Q(Mn=<#u~A z2Q=__ow0#~0~=B%s)O`gN)w;`sRB;;!EaQ+n&n(+MoCKwQ{njAgxjd;5NxOb(gAZ9 zz_Jsah$t`71y)oj!eb5c&*4AF2{3V^;ZTx?7xV3q*OV@2MWXI^(K&ZwRPr7NiR1Erdp_-DSp8Uw$c(bFb_G-rxL!t<7 zD+cPV_!x&zsBsgtEC)?0eU97O+QMMq$Z2b9r#}yW^oVES!u5v<9LdKrk_H-5{XRC< zf88v2lM#v~TAA<6ve5e8Ff0{077|9Dx1XUb%Po?yh2WzO@y{KkX28 zp171gWOfqI2$QpR-IW288_OXSpkI$L1C%<2fB03V}x(UC&IB~C>%eSVl1>8mTN8~I} z$;T}Xea(D-sDxe0^)MG#9FBNO)tZW)oZ`jgPsaJMohV;rQH|J&fo({D0&i*g@DUY9 z3N&gktk2}vgC{nvj=Gs|jI)9_Pt1kGGqAai%3PU8l~ukQLyr8p+#Bew8CO2hvhE^^ zWO^&U260CMAMvtOpRQAUXORPy%c@Q*NSx2(XUw{gKDEJj-MDcBG+cOIg)4*LLr_(% zMGpar=g(f~z|?*cX=ez8@8AB#sYKwi@MG-*SBG125mnHU<7#G!sb;PsaGKARIf^MCqYW&x3OokXOUYLHxWl(}nPdMlZlC@_b1&YAe*=>B-~+E>nYH zP|s`09mk7@ha+^YTJt7Rsq*FXt3$yO^B!*aCVDoAUK@hF2VER-9?MH|%%Nd(e43Ei z#f`f|RqV%)A1K1x;Pjx;K|tZ)uKVbW?z5DDASXoXFM|UDmrzg2#`eSXazBE=j=Xi- z5Kx}@5Y=k`i)vn$$>x79$o!wpx{&K2rJ@SFe?JQ`FYGny*%;<0dWi9qewfM1)2Fh9 ztAgWuFn0zf0H@*+_7Q|F;k2%JfHwu5D)NS?;=)Fa7A#}b2~TuN4%=rtBV$kT9adwE ze;^WJ4jdgFB`Uh%EQ@W>mhSF0eEew&n$nk8Yieqk5yWAXa&at2Z;RC8gbJBO+T9f~$H(d`Bu^HtCrWYEZh*rgULbx!vdyoB||D1 zrQU!MO9RMPAb-GAZk;spJR;V%9*o1vKrJ-D&oAG7G4BPUP`~2YPnNdBod`kucRs|r zA|>Fb*yk^Lv%8;3C{o3wFpIeTbDte(uRu|?=Z7$<#2<%?6p!fSJ>1MVsIg4X;Ru%+ zAS59N!WlyX0+FmOA_Z(^;grWz8aVMlOok#5BcZhj|D;$$(*XMv`r}Cm+$chbu~x|F zxa$~sCspYxS8MAroD4{gCSTb= zOUn-SPS}m8=;%q?NL4g_efa{)tchxco=v0SxF}M}Pd1Oy^1{#z!PcMXq5wl=<;Wrx zDReur%^Ba{*g&u991su?0g)^CKXlllAp|Cb@Pc>`x^hB7LZD-Ra{s=etqJudNP21L zAadx1t|qnxb}5mNBfJD7Atwd9#Ju@MvX3izPx_}E9qLo{Q{A^g8C`3>%eiz+RHs_p{`~$Csj1BpP;`}GFEO@pU zAA-~X9@MN0LT8V@SHsH7Ka;t>w(EUBgMG}Z1x&ks8`dhGZym{chv5}MITKknTmYJv zg3w^Mbt@4LAuPD{0dMyZ%pDj`kc+P%5O7_Sqi<;aJ|Jq>5g21V>DKcTY7z+VSX-G% zN7i!yZ|1p%?hP1YzvD=#=tShHqWCaG{9< zD2OvoBzYE^8p2o$HNzC#BF4~E?(JGy=#`F(iwo&eeXd`uR~Uuq%6L|Kxo#{A&-;{B zorrCi0-6MF39Muk17UH&?64el@bww_98i3_UM2_alU8Lh}O>FwnBZ@^|N< zE3pl>0{_DnG=rQt4mvt3Lt3f`_#r~76$e_%ZEnw=JX1hj*IkyXv-VwCXyE>z94u{PN`CWnXzMB-eo zb&L->LLF9mPm3=In_gt1a!bCRoS({Y1{BxNgX}&l#fl^Zd%qB; zy|eS(^2iT@SQWqsVn1=Dv@pGxrB6{jeOgIr32+cSJ$+XffxWc8yn2!RP{a~!hu=G1 zU2o1Zr4QAkCatR4K=Pc0psFrqD+@Jch53UJ>c`+T1k9CR_4sFXqx^lD*d z({4V)=wq$dmztWw;clcp{Xz3^!Y7ABj5@{F(SLSYa#9tkH?n-WZp_u}AK0{-bc2SdTZHO?L-SGfikgMF0hr9(KyQMV z&9Cm`j<*U|gW1l%d|JSUhApZ7(-dSM;H=e1vSA*_;Bx#WP_K@|XD02NhPi;exjx_z zxKjcBq822=a8L<@_d`Pu8@%-)Y)PX#o5#Y{?AV+-GlZe0C<6E(u#$ii(+j!DOCML0 zYgo3GjQqYF+5z!b*fC3(ceSuK{|8bGbf}LlEWJf5*!NDOZ>4qC;^5X<~@GY)zZmp;V zm~FpXw}2R)M);czzk^7h2p{Ff#>R+--O$ibOciqO*#l!ayD&TMG4qC94n|Af$W8-R z3!R%l1B$T9Xj#L~!rdOVt9I#peUlg#pVhn1i{>d{gLp^`VKGz2(CM7(UUL@DihSN4lJH-`eY{z zQ?k2NPGnwF%HFb&TX|bvAwL*t*T2#S@HA1r7&@B>5Hf}Zk03CzL$>Vq0jesYPo4~B zFJf~b^4morTAg9s0Ju3}(Wuwa)Fx?I0!9o@`$0`ol~`F?07CKXEu4~704dS&#z{^< z%PD*skW}?-$-R4xzgIjYm`dckaiU;gcxGD=l>iGlv$zAPu4S9V6{;yn3HKt)QI}Sb zmnVQe4e1C8r;KiQ;CX^>bGCNW#h;9khBhKjsa3mbcPL-+*qt3;OG=Tv>|kN}8YRDJ zvao~zZ?RGgF1~q8Lso}0(4%dp%AoM9hz+b>Nhttzfc_C(58qYfl*j5X0>6=cU zfB?&um+5(@mk?>g)Gae7+uE>Fibj>Dv{{XU`wb2(oi+}2Fs|7p4zJUig zRCdfq5XAZFrV^KL3dlQI+;}u)Q}R9p7)gn=#YjJqG==mr;>GCLU+pOm25vHWMn>ip z!km-*vr;hilXXYa^M6baevRHfP~hQ?!;W5dgnXu3d8gI&VW3VuV* z5I11PDeZu$JSC9_%F(%+I$&x{81RQ@aAMInK?$4PG`ROf+fuUkiIH!6qtUEEyG`&s zXlS$#61=^2br&_v>T`H5tB-LE8B=K>hB-Ul=I4ayNaMLC2PN)wg!;|5cH2d*4bz22 zfJp7z*9W2}kkIO-oqvTzhpOz!24TD*9O!u>qd|HDd_ZfSN3K=cGF@|`MY%+;|Cs$5*0_VqH4L`XksBFd$!uwlBa4nJ2< zdeI%8-*28c>b2nfV)97@Afb2-UED-ayHG8r4EXr?cJIE3xGd4wYXo_Bq|(V;WQ3Ps zU=h)X3rjEDCXqJL5WE2J2L$vD@19+2Y_<($r4Z*gvgvEcB+_1aluSeQ@Ed4Rg^|w| z&yr-tE5PY^u0DX|dncJ37#hk=A+j_lQQc~O1-PFCL@!JIFJci;4Bs(N*Lt**0C(f-T7Ebo z(7m*A)ct_dST}$$gogzv^I+*MtE1%0gv~m|941#4q*Rhff@@X`!Jz#-C<0ypK!A_W zYg^JygcE}iP)%Npwa`f=l3{q4To+&AvszVKs(LzxE0+^z!$ z(urLEv53a9sy^jDhGIC$rZ}o|-{q@j&rbI4rcm7Ho7*4cRRK}LHpDJQVcj%`v@PXC zFc0h$L8*!&g9sAto#OWQFRLV}^IhHdL(@Nhh(xmal`RnQHY%7n8gPz8Q@><28K?GhG3Yk7CK*tAz(GR9{yC_T-N1v~q?R&>A+Yggg`{&}#{a7TrTGcDy$h z9?74}HZ#iB-bwQwZ<^h0qT1j#@cp9YC6}xFL^>uHkZ4c9CC~*z&h$avw?dzVzSADg zz{t@#AabSY4-g&Fx@^jTpO!`m7U?;`2J%1vP32y5MO_H*W0X3Ufec-%K8f-_F)~kycV5xbd=!o`r_`k_a`*Saa>k4WKQiypJznZfjwz~l~ig|EBB~a7-lkrki za;l!S*b#*Hsxn@O%>xoOwQ*W9}(JwJF*?YTQ>vWJ^09vw=;3q%5Om3c3!gL^1I zH#Jg4`1zHBGuktZPL^G>CuV0FK_z4oZ97XjSJ?GY2pgSj4Vnm{xo2Wa>N-7aLHdxsnsKvlG3ykE8$~+BgbhK6!T*f>O~;hZ-SFP$tgcuZD~d z5tZ);xI1F5h{^PdgD#!3?d{XLvg-2lBm4K zsPEO_Y{x@sPZt4;a_)~v;4B|`*+oMeJUb7V5m^UWE6=tMNN~3K2UIf?j27p{x|sK3lqvvl6IZ!Cc(bDX+Xg_$Ziw0kUQtRm3S{w?|GtXoUUc6T2eh=cV9^( zppA+3k#%N6kg7+?AxqMBpq@`a;B;?UHPgFh_|4u2X5WjQ^(O|kPQ3Y&27$zPkhCnD_tAp;{gN}S6(h$_NkTE3oeTvygOB(@h3MAd| z9z=ly{tF=+f`#PTLpcim+o}^(xEgrt9swKKvQ03uw&xp0zP@H<{b6^jC={><4J5U& zB8Oe3o};b@jcb$-RqBl@#2kio`X{V8_wJ2F%wQMlpUM1nPjIb*PJ*aF2Ej66sq_pH{5oY#Av z{(ae$Hz*fv9$+Vxu&?MSpCN;RYX&sg=oY;K{Eg^1`N)T2^LQ1aeD#4|s6V>9gEHbF% z3?ey6&N&pRxO3_5?$iC8)Azgm^`BeMv$qOWtJZqgeCHfv%rTe0qP+A;lCvZz6zZhR zy}L>%)G=`silCYpAAaIOcsB(8IAL{9-4=yn@I(H?3!PefhC(r;WbR5la*A6VcJzES zRl&c?TSi*O$;p{W{m_h%hE&B&&GIy!DSl_o?8!XYtUPx9>66p9>fWD`)o0NOqAW{0 zb1pLTAyuA!1zR7bVlwend-bQy`}IRY(T>fFi!F#0lCl$DkH3}#tqd30R2eyX;|3D~ZU*S6|hxqMk*wVFUda4uO{L8Pd# zuyD$S$z?I`V~F6Dcpd$`z66(L=l*9=a__HQpbbp1DA)V`DoWRVw_;}`Gd(>$Bjc=~ z-Rx}V$NilZ^zUjLaPP-@w2?Hi4#Ey2`F#{%<p zGxLE$jKYFC|@L{LfzAR70P4@#V zyKH3gneRVUb=`2gGmeGQuo&Myyw?75Q7$IJ{RM@0VouI-pFybG)H_ur{&NveVP%I) z?M?d)+u{VmITS3utQEA2?oabqMYB}Y*IRu(MmOXzXg)`A4u$fx+C46Ml|mFdhFzP8 zH9weFt$I;MZ?uRRbwAwO(kypcD_g1DU(h`&Ro5Ri&8^UJSt_bw+cq4nj(YbFuH2Z=?Z93Qd-WmoSZi7Dy)9PIXqF@lP6COT2>u?^ChLyggeM|gstao z7cO`>~KzD^a!`}Lr4o*(@EOB77^^2Pve{j zu{Zi)k|X=m4l}X)M(ilE9*vrYtugN;QtQv#wv@~y#FkINK{N^s#%17>i-#BW6{H+x}dzcoxSE;NZ+hgxHo_v63TYjw^xOrD@r9DJd!87v=7ctk<2h zeA=_}EJ|BNX+4+10@l4lVt+xX=-wJ9k} z;r#R2s*Prc9Y^JciWz$?inFt_gtxktZM*j2L-FUwbRjOVK5tp2mtm!Nst#-p<}Rnk ztDBa?d|Oa=#jKTPdUb0 z_`LIjq2`xPfesp(495zf$Z)OjX8RX%OvAnTr8^hch0y znJTOEN?Z8`T~}O2oBJO^RCVyddBaYA zR=`C{$2|o3Y~#m15tHki13O46YeZuE{q12<-c?&Ynj8<_Q+f<#YhqYoPhZvDZEASS zN~Jrd3keWHQU1Wf`xq(hg9Kp#snnfO508SmO+UsLX-HLh!(@@v-T`mFdi82JrhN4q zY5HhB+;kC~M^RBx^cD^_1e@5f5!%h0S*^(A@%oup103Qu~E3N4R|s%iUH>cV%5&^f(tp!=$E6B&T}Uq5{fz4`L*o&WpmE zSv1U-l9iwW zIb1tW#imlhAfbtg2_w|LNv`j&P6mqgL0VySo_uRKyj1u@-v66@l(s|v368ioU*98{ zHbHZix3|J&M;Esq)u`E%qwNBhqXiWLQm?~->^hWcQP{Gu^;Wieb#}2hK7cY&WK5L zX?}kGW#vzHDe z@8<={S7w-D2iZu@XfY3WeczH|ro&ljf6ZCA@=H(gUB7&ii&fFo99*p2WF|g)_N+$m z5IZ}&2W|t6)Whzw!_6NGgG(>aZrdf}0awE?L5w1M(r~Y!5XYBWBgkXAqMpGW`-@J; zNw2H|E=Z9WwrzG(Qxk;xETm=mnass(%*b9Y#EWC)M*QObAr#oX7T)%Vs3`tHTr;dY z{QGgPPK8oACOLUBLRo$nemK712+@&7IcA#(*{rt;w>4B^TXl4}va>Q;^^*^3*8)-y zJq{+AmfUv|G-PBNAq~479qx!hQii;f{iS5HOI8eOnXG zP)He{H`;_!k96ScZSHx(p7SKOB1LfL-Ty_r`9DLce?BFy-be5{SwZZuFfZ@=;zKwy zN^?m+a=EHJ6xtuk4d2b1FGUbwAMpBj95Le)I>EnQqwtV2!6N?WnkdI0#Qs13>Jk)m zl=w8C#SnHrGnZSZ+zC+3`Rn?3tK1Lsje9O+s^+=_gpT6T9qH@4?X)_U{bj%;*8EGO zlO^PZXaQS8cw-1u`ED*#6B8Zx-KkrqJ?9}l367IB6icICpNEtDFz-VlT70nH42NO# zI2%|iFEAAmE-!ewz;I48Pro+evT}mkc7I)6-Q*I~^j>7<5g`w^sd5+i{%IaU9M2TrY8z^O9^N$>((^6Db#Q+)# zIeW_lwhmJ5U}u!R*qUcL7$agZkF1mmq}8_Tl)9>tm6nwSmt8|Hv`86P3t<1C>1u9E zH17K!Ic?6!b>VFWkriO-~ zaaVFp9Uvk`n}!R3W+A5R{9;m8+JsiL;7w4NT_%G0`O4fX99KrfaBHE!KB~<6^Hp`6 z*@?ZOHp`(!Mcfx~-zmg|-S##CuGla1z|RhMXVAbCmIjI_fK0*K#>)3Xt&S6Q+xs9D z=*F{(&%;VYr>}>zvHYh1om; z@mW^_3REYrQCl3qL`bO#A}$v#fq@+&*s5381IdR9Rq8SG^Yc(Hst6@kk(-f~^-lLf zQ*(2D@VTAEf_B`F$I%XOshQSTe&7dKSvX6p@=-_|aGFesQ%`u6hUdnqCdCu-)CqjLg0qQcun1@=b7e0Ro2jQfZ zEl`h%uY~XcoB=uRoX871O><-eK$c|3IkmjM{!uycnsXgN}Dnp0v3tFSbPS;>Fa z?9B{u{(UM+7Xk1Sp^=L4C+DV2g9-&cXdU1aPxNSB0&G zd&M{Ex^a_&33Z2~nm~NBCe?dq?ni3>w$rEV%*@Q}?4|w!qnOsN#Z8C=Qtv0T9ZAN9 zxPad;>{Bf42-u5;{!s{T1KhX)iACNc!*%y4AXKapv%4`PwpK$0004*F%Be`rI!!3` zm2?0Bg6MhWh1Y7}NHb^;cfjxU04rc0Q(9g#YxIc!Q$5`G1;mf)6D=CV?O zfjbUcS1uVi7ZQG;1=!;bb^~d-&WgHXo8DdZq4lUOM#>u8cr6A})TAHsg~}Ql1M}N8 z!mHS*Nn<`)W!IlOQACsUgEKfOlb-D6`ZHKEd5o$<4_L@z_C9kvZfy3CbEe8`EZ}`mn7WfrMEA)s`y2 zKHBDlE$s&JB0-s4Nh3xZ81J%N@*`D24B(vu=nqh$Dq)FwwQO5~j32@cHWDL47&T;m zj)&i}`?rAxULy9s`)uoGY>F|2=oK!m?DTa1-0_hN{t+hwK#j=SZ*L3^(o|7FF2^cu zG)D61;($lyY7||`dj>`6VA-(>$zD)vJ|bWB`V?y|L=vkSXcX z)~BLrPDA+hYHoR#**+qEOh+5l9m%hijUFz8EOVa|e-r{2YSj!NEpl&2EuszWxAB-c ze&4_(Nxx-4yvVmAqEcTmpm_-7%ECfB*yao-k(K^b9NP=MmQaj zrv%cl7Xgv`#JSPu+jXyAy$acW7h(ydUV;)n%UW6PI)o%_2>;ZqEVG)|rz9vjwTf2} z-2pU>@X=!Z+5l$a?mPl!4WuaCi@9ms1v|$Iz;ky`4^+VUa0Sum>jrX~Xc7$FcVnub;ClUqcw3&H!xkcF-xH?hBS2 zf+n{M2_6ygASc3C&q2C~VL;#n)Y!F@MdkOx&g%d_58xXfKrO6H0W6#hPz4CdgaVRv zJk}dIKm-~E&I_pBC=dO(RH2-MeVJo&#ubL-TA33G2 z6j_(8`65^y3I@TOv4#x!fJ2}LacUGkhs8vsEC{}z^9*yqGl1iC0hfKTz37bnkykR~&Jix-jS_!it%5va>^g%2uA7=TbgMyxf3(uOEFf?Px= z&vy6w;GvXwiA1TUe;+}_b_}p-V&*C2kNH;hEFhTOBG#Uki1_7ZiM5K5fnpIzxCeImu;n0H3}Qs+^L?@z3vj-~#5_A?A4 zyAFZSz_khS@Xxyg$Oo;)Z_R6PJxg_EK#6yr9>XJf#FD9NH^2!2i^6mePz%m6pgjLD zr+fc1=JfxYPc?mG6lZ%Ef&DJ6p`WM5Nqd!x>!b^_R0c5g^z_S%52@dVg`K8z#ntNP zVF~D56KapH2I+3=g{Hh_Yjcp1@kjIRMih_5Z@b<+9epBm%|;~$@pGdfL| zN_wjuw7Z_}?n&?V0$`n3pS`^oRcbTJ2R%KI8fv7)8EcNTXb2_T+$!MesgI7jjoS-q z7;=G9wYiGcwwJ>Kv`igGq=f(DFj%N25Py&CrSY{Q<@#5*Poom6A*d-sCTB;?0@)}~ zg_E=|P{b0=n+do~l(;nn?LSMFo|MU#lpUA4^8)(tP+aMdY<}HK-gIgdOkzOYlLH>| z#(xCwuS}Iawh%**+lF9hG-2EWbzv5uw)WU;}o9M9zuqrcmeN zqbA=VD(gS#-4(J*rIbSQcwA48YM^*LigHpM2>n{``>Kl|MxB+ zwE9rY#j}O#Yec>B4Cj{bL8*CiVpaV8>CTFNWf{;&VysC;C_@6}V}Ej1@VneXLv`}} z2Gr)Cbs1l>+D8i_Faf$HG~?d2mVy^)2Gw+8(miP4AZsuM)()6_aot^qY(vH%i1e`HdDT!jn$B>a`#9UO zt{rM>It~HDK$;I2NVN7lAo=bDi^z5 zFNU+;U7yl4%d7q6$0TYq*#N&rdXAtrnVFc}zqya}Z)Lelo&p;8IetK zfKCOPOG~o^>@)FKEUPDxrrR#Goi+g0s+ZasXP$)aLwGc=(QyeY;4O#*zZMLj?3aSa z-Vf-jZTNE}oDp&`qa;KmZ{S@(1pubH0nC^7k%f-@A1?rrL`Qe`W~T0;2|!y!H@MZS z6`o4~zxO1+x@kEE*WmywcC?u)7BA#zp=qArzBdOf3+XXIWB3VxX@nq95`xSVVhN|y z2GEy?{JhhAdTJe}Mn4a_sh^>%wlUqh54}3UHAI$Y7V>2rgEtjJQvqQQfOns$t1s-3 za_W@dCiVsyp`d>o+6W+1VeNpdBib=D@n6AbA4C80BR3DvDD?DC=iJ%V19bHuTwQz*EVXGe|iPGT@2 z&4W*%E*FF|tyCl)?|;X}jr~wMZOgu&*%sZ-OXqs&w9(-2zg$=#!K+O9^yw3@?-^e@ zol87CM?IKIn$hCl@&{DfpIO!biN}8$BASC!Nts~+h-glW91O4_C|ro8GIXol^(d0g zl#GQ>ZJ0ehFzA<#3 zHeXiK3|X{{)@pEYFcfn=iqvAeg`U>-=yHFLk8z)JsK#d6 z;$056dVw=#fkglUdHj_0`L|l;aBcu;knS-+{nn9U&@~f-V}t!pp4;{lJ4l+^es@(B zsDhxQ!Ad?{1c*0rnZm#xLU{T=8@8UUGMZF|)0dL+B^CWOkZ!PH#Ru;K0s@2sW1*et zAyNX#zx&yY+tcXFJUqD>85(5{*}5wOHc%*RbP{u*BbA?jgV-Cw74(*AhnZwW6%`d& zKlj5I9)(S*Uag@p^&w!9sEC zT!1orHDBMw1zC5ic;8L`zuvdu`_s{ zZH54E`UBOUT_J$Lup8;pqc2fpi+pRFG_CGRUjowlZ!p^2kgZXa@$=c_EZf?%NuZ*f zti4Jz*^Y12{<46ti+tOhioIb2d-F?>mMDAVTTow%;BU22Z^6wJ|7>#oDzV0Vepn(~?A}($D#yiBNA08c%VrVIgQG&yqXa z;A*7DDO_h!;;QV`1lrO8mbw!>GIrYS^c+LIJ+h*9sKh{kTk!RF|0x9p*s3l4K})^B z#G&auO-$s}ab8@IMad2p06#NvrQ^_&K>r1l_}9~8UflPbu0Dt_eNcV!M+o%7+p$Yv zifI2ASn&;q2^CxNCAe!Hv;f}%G{{N6rLtCTeABwfOp(e`5?C{VFW`zwT!p2nO;aZQ zhRIB1F)d4FX{h!5F7gW{-a7{H`=52yE}1OJi}DLGz#_xR+cC`bK2$Jkx24&;Npr{i zV8~&h=LFBof|IDbQdtO}x_-AEbmMr89U?eHL_k;wE_zW%K?4IeaJ6rYgj1Lm?qMi#~YJs$vuadUGs3J#+EcY)$8qJYSrN(ZA!Ru79)YJo(xC_NEW$w;uqw_xA=?ttr}-fmB$fKo}WK|`iew;_zXsul+nI_v6PCJ zSgt>00)U>;LExKmE${@c8qpX-(G{_iL|DVNNkt1-v#@ZSdavpeRWZ(i1?BavG4roC0SuKX}-SpG5R3K>0h zp6qOpi9_v1^p)SgM%;9lsPjkzSsa{ul2{z@T`vX*(AmF6F$L(8um0*eo(p$2Ee(s~ zU*Sw3Rwd3qv1&b+#X81oF5^kzi(;b16Q#y?RU^a-EBi7s-wXqu6My%gw1PcwFGLl>Jz9BC~>DBMszhDt|>@7b?GkzrAMcD|@LEl4E#-g`lmNdM11jgXYEn8)*# zdIOz$!GtJgF;J2|Bu|lOTF)rBvMFwoqGr2*bBOnLs+1FSk7D*)cO-R_lWT>1kH##ch*jN5zKzk61O;mcsf)$d1{_-evr$qk^>~%gJ_fY90|u9m zp`sd^nz08;(7^Ztj=UiU$a3%|emorbPh0_3FGC})>R^foae=z0LvI&Q{pQOPR3HH> zKYaK$d>IuZlaMlG(wOIP&W?UJ>m%c+v!QZL0grA}rljm*>a);?C68=$CdIB0CE!Vu zh$q*=?z!P^>*jU{E>7h95Hm(=(-Cx&CZK_czNYuBw{p7(c3M`wx|&LkR&=ZLRYm}x zU}k}0Mef2}n*z)xD~t0|2{8JTfN^2d^j zjEpO|s+Nq$nfbbZackJD^M?fG#{J_)c5t~&=(}pk<^t&xUT{OS%f4h^4$z*sM=GbT zt`6p1FtkDYmwH<*;NH&iFr+~SLJ4zo^8y!_xkrBh5zs^c>Hh$TE=nyzYDEL0My_*p z>?=T+8Z>S*_3jJsnXIT*uD^rEAi!zBq73%k54CwJ2#&GrkN>Jw)-D$hxycb&_g1pj z_8Y@xl(r-hzAN}r!Sx7z$^&TbAtqFWb|F3#9)Ju-0Jh?Rjso7O+#geuUrd0L3Q!`i`k?#O$T_7XIqC?cl>+JK1kx0(2=3K_~72zJMLkk%|6j&aXA=3*mQHcw7@h~Q++pjH>_RbV+x@jK! zwW0nwWB9|Sf7HO)$Fs+NeJs+D2%t)s9xE7?d~~}jv6d+Nh5-{ zy7IF=MvgD}U)l6k#21WbZT)^miT~b4`=#{Qsbmtj3$9Q5n{kpW9gHlHQPeLS5Hvmz zd^{U2wR4X&7>=aqD+*O;M&0Ofk{EDXz@P4;ZaZ$!Bzt}IrOAH5=izqV^XHx&NyKvBy5MB`PM=*CIljf;M4#}_lMhXb?yY^=E zB|vjr;Rr9lw;RQ!iF832tZPoK@$7*!O$ba7&|w8z(wFzpyqY1Sfz=LBy|_>fBpDe!#tM8DqMIF(hKlex@j5}p8g4nnGYb7D zNF|Q#vHU#FE{`AoWWufbA$}Unukx|*t|O<(3sh-cDsRm4w1tYJ zDKvM(sQ4qDk>Lz)Yap-GsWON9=`oc+u6kqThkE!cpjpc%r=Ov^DY^ z)sDe2gU%gE_-(EDu7*OFt<-e{;`2zvn^B|7j3miUI_@_Ems^v=Cza7T3pl%E6dG)m zP|*~LSM^SfZDbW>bU1cHXV4w&hzNZ|T8i+sLeSM}TOchBx|8OpO>A(9Qb5L9`yz>< zhu%}&DAE1v_f{CjQ}MuSmfyC_OdH4mE)AmdR@GoE#n?y4{aR_FMPw20-of3~7q#CN*fy-F;Rqs> zP*his&TN#c-MC=rkqm938>yV=(_+8CsEg>_Rz%8=#+$hwtEj~AhAFVKAK4aIIXgR# zk8@aFxpHN^szq7RhG}dC+V)X8FO0z}WKi$$R+CZ_MhpCp&T|xD)z=C5FPm{j_ov+Q70$cD%O?#3wEG#_?Us0%6jUx!=!MC3EqE* zkvEwgq^oSitNjZ>8N=C?!#tz?&93A1;;@;A@ zD!SPWujJ*px>K%|+RbEf;?*R|vF|L^GwOg@i1MQjd5q=`zAdR%H#90--|k+w>QA<{ zHjEzmVchZTY4nJXRu-$c-=rSU)DKes3<3?&<+*^L3j9GB#Bg5Jt5Y&;`wQ7k0ew@- zYV1WqkE(^c2C{b&&@2um*({N3&web=Bxvml7o_(Z>u9W9*&G#G-j3vrn0`q- zqkl?$jWb5^GXOYW76-kDHQeoYa_;Do5n^wiSWQCI=pRgi0<#CCw`wg{wHJGvZiW^r z6Sx}9q}-%qeZKRkuvB0Dj^J9+$6J{2sJEH9xjb=U>;32ed{rGC9ax}ww0sy%Lw)D1 znj`xfk8hfPaku}+zF@{b016B4U8oR#h}A1T@5t)Js`2SD$%lV{vfa9`hVW=ribrxh z-5BXpnq>#SQ$io5=Z`Oa>LCj$RQI&pS=xOoSWzz}@;#M)%!hmPM{t}$5j^MXZND$tIowtyDh=}G7AJ!myh$S&gG8=IY!501W!=^TX2CNsjy#?s2 z%a|<=yaT$1O5CtBBR_yF=LDjP(NI5F1U$A2(9aIGzv+>?#b zeAhh4Fc&wySACWD%CyxJGO49w22rD(vk9E4XemAeVjO>^p>hUS`~X(q#OhLHr9x`5 zYe0OBf>gomNLFCC%X5rGxtz2q)`(T0nuBlJM1Wv`rP@#G->`YRAch11Px}=sZY!|+ zxGrBt?6Fl)_(AZ9Y^@7rI)YG?Lwp*^GXBAkhx$N57V6g4J3aP;t$Id!jrwJ~PHIBt z`Qup5aN9S56e9cAC!d~KY7(tZwM|~4?Nd0_MtYxI?5zrctKdOH)2n~v1Ph9uD}Cp& zAj^Vb4@@I7;QvMH3V2!$L3|m8uLAf9@DzktP*ToZdomO6xcrUpdo zn0#}}*FoDZ&#$a>2U`J1==Gxei_oRi`R@7}}sZ@adlq24*3y?9yxdVW$qe%`i#Gpdx zM2MB|TIQKWqVS$`(saQi`wPwHwTskvqRsQ;OXN3NF^==sx`d;bnq-o;%mU&tF3f9Z z&@)3LN@Wv^i)?7(Rl04(R zE?SOm4Rus8VPT0$L34oV=^rDGdW;uMF!}&!0w7p1#Ayll*aeCwf}OOM=;6jRsC$N< zgLxe|AKRK!(vMVszaBlBbU1?FD#i(xle?CIEo~iqk&~_%0?MHcJ9dc zw2i?Ntz`_*%9Qo3tu=7foVfzJnRj8J-wYqdsH0XYwY4eVN#_^aZd+w}!O?>aWz`$4 z?KkDPqTZ5{%+1IIcr-{vgqQ!P&9#ZD0{s^e{y;F5#fg=1!O+G8locVcm4$38HT)?9 zv(G&_)aP~gd?KoLAj{f*5brtF@cr7l^7krA>IS2jO4zx-8m32WE>I!W&hL&VMIZ`o z#6YsjkU&rcJ{7Q~B3^zH@5KCk8`yvhzz)El2NP@%RxpTBA4Fg9v@r~_%pwf9A@d^q zmLp*N+=A}SJj`*-J=aAxqn2N0hb|0QtZm|am=2yahOr}tBry3NKq`P42?OXffeWb< zgjq&t7a_J=$XH;BGxZ~980hY{n@fojg}23DbBDuSB4Hq1g$73%7>T@@Z!csOxF7A0 z)~^`*gCsQs?J!VS72Mau!A^Wk;u>Hz1f4>=g%O5dC5W5o}w>!b&g0{XMtVnlz{d5ADR?pNm!rl9(wn|-KCx0BFo zNC$~+YHA88>@BYzKBqI{cpS7sc1)B=v|*FU#tZCAoKQNx{mvz5qjms|xh8~g?26FMYNomm(OV?1VetT+Y zPzj4CdZE>$;Vtuj+44dTq;5cWeVFg9t)x~~LZ8A=YyjF1Kp(*B3dRe;ZU##2^l+US zuFZH&WMlEoRSc_6C`C0}VBR}W5<=5F7PR=Kl<}Ls2_w)a`&H-g0_jF@s*YWK6UZA+ za6xYFK=Qcfy;(KS(00QkBzb`eQ{`Ow-h8G6Wzczn8_pBZjM8O!hu=X3Q%&MI#E2fga{R>#J=~jxxaOoi!kC|?nJUW;Ilk6sVR-sD-!MqGv zIw(qe4*yQ>Nm`nKK6cpzwZU{{O=Y^gX35s2Nr6E*jM?-4MA^2*R(E%>Y(7n3~wx z(rn|^C6&($9ktQc(VGsr6*cs?-J?{vW0})w-2hT^zdzLVUy7#TneF&xV@^$k2xIeb^jzw#C!moUD1%i?iS-!&>|`9x!LL&}>>HuN}eFvl+W)V5(4 z#bkf4i-L9e8r$gnSsQ;5kWk}yTUgC+-4m;uNwRYDil}V2Y4jodH(l}HSlAB&*P->P zW+rGS1MS3sE(PvWR_PF7M1r`Ft8!U~(YVLj+VTB3(&*ppkK%EerV0Jn#iGVPam{v+(aPgZj`g9rL2L$#KGf=3K|27-|} zQJm^GV7dUBQa5kjEOfOWDR(xg3xfIUy(ZO48^F&YXRhlbj&j)8Lu-ioralkA>1s}~ z{`%zKx*s$G8+pK4T2(d~CaV!2QUoI0A#^}Rp*vr2&IAuorrdOOebKF*TNF}@?oRU) z>E~t~$js$(xn8n3%u!QVViNi@i;jLI{@k-Nrp=SJC6hQ;P&OD(HPWdgxLFtJ(%`i0 zxPDHv!X}KvAhl1XoaC^ke#Np#Vq0o)Kt#3Cr_qMuvO}1p`JvF#Y{`7Gz^bp}hpIQx z1WdHHW0C-*)es;p&#B+5;)xjh5sNI=;};ATz*gEsTCOme0Ye^BFslaL0~o6W>*vyF zmB*eN&7TP3HC9<_Qvwk!or=pZ#TU}^@8<$6TVT{v$ypO9mF~8>;!H*?=2jfevDqM* zYBcF(Pv>BxYxmgYW7UG0WrnpPa+@rnSq3l2CVlpw}Hn)KTjt7V$r}DxV{lvo%a|porX%Jb$RKI0P!lgdx^cD z0ER{;CNfV#I|n9}_nC>IUKcEuL3Z+FiSQ9vMf}7tABl8jkg*^03Tqg-LOSg*lV~;K ztgZJYO<>jd25_0biKvQh>&BxlmDDe^-_CTsJ!1q}#^%PpNT=+KT#E%J@NRs$!$NdQ zpG@=ezzYKl9?waERYWL1adFpg%vn?rL|g^W?S7@$13r@>gRwKq(|`8xq!3X6IRd8zUO@J zBT23_Vv3ZsnH!Dd5Gce%f+xy}@0u{hT8+3(h5-_Q=LZ~tpTTGVBeRVNodAi=5r#Jl zU3)3qSACFyZzw3pn9jrz@ke=2g>Y!7Kqx>PEK*)un#;|3Hf5Mw>26kWoa?#KoW<{I zYm*iD0$so&$0;POZ@BUiVn6?f{@{o2s&43ZFnYA_K@~~_CG{xP9)=JQn?JOURmM|b zf(#t+yRgSdy~jq64oA!WdV#c#4;G;8APfqohoFSH04P6w4(XpmoYgTQ<0Sq|$hfmb z+0yu&8-z#&Jomxo`V%B{{$kia?hdYhNL2n}I$zBC{f-u(2@oK5&q7OAcNDymgkKR! z3yzMM-b>Ejgile&hO~NFssjI)l9D=D3uBi>s22=M+kgQEe4l<5FWb7uZ$i!pxYXv= zUfHDWxBbQ%_VbR_x8S3V#Oy1MAmObjLJ4y*HZ8Rgq#9EWz2J8FuR)8G8+UzxZQI$+ zSUVSQ+bGrK4dVyw#?g)}`$m2Ec4s`iX{pM0{7)L9@cl!(+XeGpGgzN$lKKUz#Hl0{ zIy`LP7k3TKs0<4RLmjHwf1rNh!oKVK4}nf$3Stg<6BPiCk*#)q zxg?R=o%;$UAg~Xofm2b6QdIS)zE-pTc!hL4woZ66%C?%jcn4E!M+B_UWW9d1dOGaP%gLSkKI_{? z)2{6;(E_}-D;vAA<4>nshD!LIms_3NJ}HJEwG3X0pYIT_B8UN|KK3`zN3Njg4;>8v zi-3?4eBP0mn(*TOk@)ZTBKB_n>RhlEK=eTagze|Hh!xRjMI_J_-EkYP3 z2v)ofSsVTGgW|kq8L>E{CiQ^_yXCkms1u+B&=F$Q;GoCwMy}c7;gD%@FycH^QGur_ zJU@1Pns$ud0BJvgLQ!Zp*99g(w$)!@tWqVHbck2;?iqMu?v{Qi&byvQ#(H8-dtH@) z_Fdu`;}@7W^tc&G9!@Ts_)pBzT73i=wcnL5diuEy!$s>d?4 zxH-@SxwnI=*&Vi{2X;b<*&QB|eP7`}-uD<^kG%XUL6yc6a#zkjp8A z*Yj94h$F3QL?hRJusa+h#?yJ|#mO2~=zVyGpxo>J?mfEVeC2Re0s&|5?He{;u}eRD z*$QmS8syi#{PZ}SYlpb=KN^p14Zdfsd@;2Yz41yN&;8)Fl+HP|qhF7SQxhf|dAIa+ z@q{q44&z&I(zQsIt#r=4l!ChITu9eA4L^*!B*E70DZ7k8b z?Rz8w)%E-DS*q*t@kF_aS6}Uttcp(mM#_lleGocx6-rG;8|LpIq2^@5s|2q?%rSdt zmi6p9{9DQZxTkCX6KRP*wv+t3yr6h4<&omU9iKWp?-beKa7Y;0=WBDhLD2Eg(8XRy z`hx7@;tOG$xIK1MMh^ile+2ANE>)p=jC7oNRIa&eq&;-Ph2Cpt<3gMXzHB z*J{`Ed83S~pg6jB4sKg)D~~(jrb@OfohPUWtBib0D*TF)?!%8E|Lf~J3?#zUgDqm8 zAmhWHC&e$qZcYSEfL?542nsP36?F!yV^|f^} z=j>_Dk~4UswEyv~mH5JW+#y3SgV+X23zPtP$b6%fZed)#Iob%D1aIa1d4z()EAff( zF{eRfKpnAS!c=0?;>kb1LEXMUh;3@RU)KkHZD9Z#&<=R1|`qIYn(){5s{MsH^=tC@*=InWH1q5Zd=|fs>-vSSv|hHnvZjcO zx^yWo@YwyuaqrVY-&=}0gb0KU%s?4Lct4=x)-#Ak4b}vAFcoNMvQ*Pu1U!-qk1_j& zdCZHRc+0_ZlpJ%NFDdf%gZaE4flWUz`s}POCwSa`;{2sjrqb)_DW~S4n9eX%JN5CB z&69f@4(l&or0Ab>W|=(JYng3CGVv&M4G%bdOIGt6LSNfYjetA;qiiJnfCu{kg9Jm9 z2rv}HhYZefAdPp1#QwyC_*W8MKx8+fTSDO}Gtim&0zedIF`zp>2aoR>-+N2^ci^Ov z3RG*h0f_>8y$3w^>}e1b(b@b-{Ku!`j;(BUYNQ+7egzb4B^f?C-H^AzcRj6h zrnOvU7Jcth)E(TT;6rmdoh^Z!Ar9&d?PSI-(UNV zJllnmVVeH;t>$l94Pgp43&mrxsu;YlE8H(LvY^z5*QY+X{8UKuzR~nnO?9&`&i}6CY{d zEga5&CJS*GDztpN(Gba8;C+FIl~@3E1q01-Q7s$h>Z|uvJtnaV*k2B3`0q$7{}gXyB&0;HJ+FL9ga$D9@v zW()ck0S!-Twt*oDI02Fs;2|vpOv}g<5upD$zDHyLpF0AIy$x}yexz09j@Sp&9)5(h z5!Lwgzyihzk=L7>8qEz{YM;lTV|)IOt!ZazkfYxQ4jV|vGXge|F$4fsfXc0N1U91* zG~&oGqufq(!swJKiPo?8n5ydV zHWfVTqTTXO3sSBmvLUAP`%1?BGXhyrj0D>cm9q3weSTaBiI%Fky7VFj&q7D z$CX~?k>W3#!RwbZW!cZoDtMxA6>cTPu;hLbYlhm_usd@_%FbrJWNMFUESrvM-T0DN z$85O9B!!^B>Gc!e?wH$!TAaDkeku%?sgK(N%e6SZZ^s?W!yOR#ao~_c9&VMR83Mf| zcuE4E#w;>e1>4+mpl}XcQkh%tfVo2R@kdE3Le@a}p{An~10fc;W?m)o5Tg-DzA$P5 zOQbR!IBs}FQ9t#PHoJqo`$D~3NPVO8^Ir2u`muX;$<++F$~y6c%Ozf>&mCW}=U!vx zS#XH#bB<4sm#a82gslDS-V~GM+miTnDaW z1s+crgD8$aLOM_I5KrWmgL87L^%1gz;NhMTRvyM7ucI?e4nMw;QOdtqA{BOW5v33k zelYe(cg**zStacw(sHWa+2yA^1vBgszCHJ3?paUzwRov!+um5c+0EqBG_$mKJ%PGe zdYO0?_RYWXjt!czBHYUn8+edscX#)rM~{%FLqG)_fu{^??iimFa#&pS0Bfh!aNV92 zav!HE-Ju(Fy$<1yy0L%5xc`T-_l~Ff|NsAujBLqDkv$`nJ+d+*n=%R|*<{N|GRsPm zRmmz5%H|;B9J3OK>^dA}cI^GVpT_(3`ux7{&*k@h{_%SCI$j)|=i~W!+{f*9z4Kfo zC(IU?0%H*#-wEAmyp{_XmcGz5TNZ9Lf=nr&s8h3jDLRpN@QI|OCk1{ffw?kb@SNEDvHl65Bf8B!<@|S1{ zADdjdbQ3Xi&g<@0A|&$HKp2CEelFFo^j3`rI)ln|1>46Vd0j6$%HvuOAw#I%rBE;T zzR`=L-9=Dah27^XnqNQD!ptmRe(}!K#-;llWzpi59&Ob(?xiSEn#Wg^#0Wb-D06ru z7Qm}kGl^4q>C(hfH}$E2=lw~9^-m)`f8TTme%%RyG`$Fp@r*_tX{+s{H5Yn#hR^sr z^HuaJY(3E~zUO4E*KV;h%Ctr0n_4rC%X-`Any!$heG|){;ABt1&n2tAwruDkx6u@c1LDgL~kfZO#);!bcL^{&%8xFf$YUn?!4Dud7! zuZlzJavI>~CspMoXbaWtk|gtjG{hiIe@AAE?oVCeBAdHwJRFgQX?U^#$E6%4*6?Li z!V&3{IqJP-H8v2lPWn(LrD+{l@+FkcPiCkbIL)?=$DrGPupMH*w_@}dwNRp3lT9MP zsJxN8<9V2X?i>$11?vC>!<#yRhjYw+UVdUr9}MyMUU@XpE@)Zd+?0a?FhtekTWg>i z9tAlE{`5Kcro69qTe6_N{XE*M4%~Zz7m#EHE>amN2M}!|Px0Rmz0}yuO^M+6^wel6 zN^DQ1v3Ykz^U?+u*jn}3liJmj7#1y|v)^e$cNDfrF>5>YbxrO)i?ge%#)(?(biI7&I5~x8Y17;0P;0JL3E&m#P&>nO zTJRu9P$I?53Os^M5YAfD%vPYyAz5H6$SCc}^r{(!NU^OHszt z-Fa1^wga+f`ppxy^)-{*{K?X3&plpDb4s4>)mjR5R{8;7e8w^9b1zABo8Rt0b`Gq; zD>LQQI$gtg*D?iDQ4YliaKsXbzSAB|?YL%;Pd;)I9%yD!D;X$j6=L;4ix9DApDM#Y z_kIO9AX{Ikes4i1!=e0z*HRTI?>Rxlkn9R#D2vON<)HzIzhh{MwI4v3MzRC}A34+3 z#o2iTbTfP@(09bW`x`nCIgxDQ!x2CjtwTM8e_}pfvKMs1?*U^h>-kkZ>wUl$7(53c zJB9>Mj_n)hK0st3bES!3F2ZlE=OmLPmYQ-ml(L67;uX<>tp8l8mGz7s2ypj4DsV(H7}(<401@L3X_)`k6%5TO3bV_a1qHK_R@MZp*+eob#s ztJME!`{Uhl2m=IjzK$zZY1jyymeCyzY7X4rt%Wzh$V>-4zGSYer+LbTR={l*>ZVB1ok5+<1IPy#xLh zev92K&TjbYL68gyPYMb+n4C~g*YJDF+PHsl>|z+6dxqz$f=I?1$bjK~T!)u`eMsF| z@*A*%D)$2boTQg2QwG$ZW~mglF!Q4#O%Z&ygf>Z??gKA)cH7mmqxYkx^rluk$}v_4 zblc)K(?*H!Pv)9|vM7YARDfHmZ7)_)Fb-n#?`akjg5;AY8?cIQ)`lLtk+ z4^8XqiAB8XTIe<|_CMjlUAHiN{eb_1(dL|5JNO{n0f2gG#pBPxAF2H+G6bp+2U|G@ zC>H$BaqNCv1{hyZge8dMeHx0Obi+e8rZMxk_KLn?NJ$@+T?}}Avg)I4_;ZihgEOst#sp#N zABBF&jzL7#$pXerMd`#3e5>*$MT@lt^pp!mP3lF5IkEf)|HirO+iML`pRD@9(z)=G@Ox$U zs*%Oj;g|w{erUFdeQzDkMJw=V==;GLs`{5&jjA!$Hmo1N{?!7AK-9|oaEKL3z#-5Q z1{2Eca0Rx~b!1))5C6rRPM~<}U6Z+%3MOTUV6hMd;`#7I9KwcllZ@$9%TxE-P2%L5 zge5+xzcxzIzjwxqg>*2DX4>9CqP_2!&QY^2Wh%$3CKD;NtXs@>LUVO)3_7oUgxa?iP;r&0_A>)_O3m`%A*uQ@Z z79XoU7~08B_@M8Q1p#tw!C7Vkx1F7|XNJ$6z?}JY84n6U8xZ~6KY;rqVCZWzFM)yW&Wg}F`QoqWfJ-1)7 z@T4H-EajIh%HJywG2Gn|#R;BkEdGwjX7SgsLj~O)#G2YM8>YOP$|*QJ6)4V8(n!ba zJM*knR8*i$vfGMM(Y_cMjBw2Q|0>?$#iTP&oLTJg4GCB)U9JHr-ZT;GS`(}VzN#uv zLg20^@oK4!z@Xi5&-RIZ{GvXoQfEr&xErf-rFJ9XR=BJs`BLgDSBH3hj@7TDLR+Ns zlT~b1B$RLUF;VLnZdIk@LOE4rK`AXU3dVbG!Kuv0ak9@t^D(clO)|#tuB}<-uuQJ3 z>DjB;bZat&a1f63{L^TW8v>rEFSze$K!^c_ltE@Z5f=1zpK6Ao!3`0V;XnP?;v;+3 z4i&>-+Zx+Sg>!4VE3Fjta==a!6%}O%ZY0PZ`BFYAGyUF6&t0Y9Yzo@y#UrAZg86Il z!hZa9lx9r%8JU1X(PIn$xp%_TDVI$1Gk)}y@nC!IN!&MvUV7y6i|v^T3|pdP2}&oR zoG#=$+cZva5$Xg<@Jav@BNB)vQsDP`8H!IXT9;ruedyxo`BZpMc4XTme>>&d=g?+O z-F;Kh$X$A;oDr^2(UelHXId?9m+zWP%;h+#>bJ(5>{=K^x6}v|B%goP3QD4Vd`S?b zZ+JvLJ_Q)7lTPdM0gyjf?(x(@5OTZr#r8=Glo>zVfMg$4^y8h*e0zcg&%T%_XCk7Q zOxVLW#QaUUvu%`jTb^+_T{Z^tbVu8_2l5tfe!d@*BA2^gf4u*y+|L!k9W;p~4Jof4 z-;zll+bp3a^Sj-8r4;8cOSxbb(XjHNq{^)Ngu8>ABSjov;%gknyY+09e8OB{P)gs0 zMSA*DD(Tbc6LNlbPcQU$$9caP*swXZDsqQIZ3{iMMCqrftE2NlwJ&~x5$d&+I`dSL zA5{@xWy51V@B$|Y>FX;6Pn|jeIAZ9OU42cJV*uMHqe+;-gSSUpQd9(LZO>(`DrfW3 zs)S(lMQ@aTDk-(a>VFa|;lDg*IxF_6#5P5Lya5x@8{AlSgla2EK42+*EAiArgP2?; zb=7;EhnKG&o{rMmhwOgZ5^Mv^hy34jxjzH$?KYGbvIBnzItD_pZ4Xrxh-MZ_-&R%v zEQ{*6%rZDVXgrSoUMU1`wrG~CM!mWK)UgiD1r|1#`~cge1wfY}k{BEu1Uw8hQsGd* ziw5ENhxU(<{XAg1tKqypSeV#9wOjUg*-?cOhJeBx;D&bba9^j33bOHJOz^qr%P+i* zjim_6fS?dq46Y!{D+Of>B>Yg;?PRF~V$8vEl=5BqTfcv=u$C#YrU@|e#g{=ShR64P zE;PifL&e^zA<)OkNzk5(qlNgWep;!{TEo6V@DbS*%TOsF>lGcZ%8L3MS&^Rkn1}PQ zuVUCduK7RTy5D!p`u3|}w(>L^j(~SLvkg!S-#_G^?}1J9?phN*j2yXs)B5$Uz}Xbl z8y+XqzXv63(~(35BPl$H6cRnm30S`6wz|Pi!=LFvWRE9o?35mCi>=x3ZUPMmxWAn& zK_KwNv+4mGN7b(-|IBJ$e_|`uJ zw0YyGAFC##5#C6Hu&9Lq+s5Vx*$mTccfCf`R~N%lN*U*gmedc#bf^^i`;AiA+Y$)g z6SBMf6Ac)?``|uOd0%|+nHt%gx4#ecn==RW55Qu*vwi;W+TA2yK6UC;d>Le%*CkjH zQDx&MP4bR^zS_KLbH1cd0Qu=>b0gleiN8dU0|fM+a_$x>M_OFFR2)v@xYy{Hs+hQv zXnOrkSJJ{)3@PTgy;sCX{&$HZ@f;)SE-IYZD%+I0i;dwG9lZl;XIuN8{s;19ix_C{*wIICLzJeTS_|f z0N7Rnx;13+mr|x~%R&_!ufqP*Z3;n1heM$g>M8n-wZW#b`KYBM3}Rb5ik5;)Y0f|R zjPI^gH?KEokc-=Hog(&Ad|pu$f^vuDAIzJX<|hWh2wl=n_&@9oTkTelBoS+6oI&T_j=*1xxQ zcgOC{Y(JHEKZPFcZHQ1S={l(-jG{J4wmhY4V&%7@6XQ@RLK6XLqxW`^)(7i+IoB}uFA+yn1Xc~y zLmL8Tu-ZqtC7oSobz3_2BM<+(MIiRGZUbsffQMIJ-m!*6ZguC>@B2@1W#z&!QV_Q)t2XX?pCvEbH#L=B zE-KdLfN+4=7>fdHS+K>Pig^6fHUjkulh<3+rsjvBN;dg zN|pV$Yo6GjtYb6@RMaBPe?aEUzvkSV95>DOSa1wF7uA~rWyEYc^G6|T(3~9n3cNBv zI<^nN_UE>@LW#TIQ#Fj=1s)8WTc$a?p_jV9>CCsD@XDJm8Ac70>AOun8OcI-oc-o$ z>TP!mD|$U_v-Ly^I1??$wyc}IxjMDcdqe zN=sD&d3?{b7szqIZ(lMJooT>@zF*^*UVVQ;sh$8*mkD0_k1x4wikSl2S}l|$f8aVtahGEfMB+HSGiJI|J^1OLa6XZvg?1SnJ}qGA2fn20 zgyf%ZXl}{*K&&pn>FvD6I_oH<7V0Y}JN8zlN~e*~e3|c($M8X?G4Qic|hf_kTLQ^E9%p5X7G`Q9&t58S7);D}$) zMEGMO5%04lJgqK+>@^|7Pd*@P!KyWh_LFd!Jr zv3DUwoA7gCt9D+O$C1mn?LkWz9?_z2(AQE^p^2#9K)R8X$BcEiUMi3M`Y0_Y&HY@X z73PAo^o%MoK^P(2#~OS!8k%>0U`ycu*AOWU^I16Gg_@4YXM{L=PTH=4o{6U;l~xU5 zovr{esSTCXXjS5H3`y)_$jJPlE4D(QDxAfvhH2Z`i#b-asAT&lKRl1<4}3HcT~ioR zuEoo(8R^0cemx7LhE%uEG0xN;wCOUWi*~VW9)3^etlzFuhx+*+J&}S*iDpZ6e&gqs zYt(sS(x-1phWcWF>1V{G6!f7q##Q@TES3n={{*CQFC!cC^Jl;;0L_kIkPEaP?BKe@ zswyklAydX@u$!R?&_=~$-Q8b)r-$Iw3+hwz(#o<>pSsPWeaBlBM+d^&@5B zok4U@RJZ1c_Yy`?K?(Io4Kcp-X~1+zc#fDg7bxY2U+zVybEJe8v9`?tw;xWuwE{1G zVV&fp_|=1whTUNsiY28MWnZD6+Aw#}07eXukOT91!0)dpAojyA^75}+{tI%2e_jOv zLPf{#b zT1+%T!0Y?NetCy@WKCq3J#yZ0MyMzKBB}nqlvuu{Xhn?uMJJ_i(I2y%ZA%-mx7~5t~h*YFWp>b9RSSGc?1LM>FC1wXv*T`NDmpCEocw7xn;!@Vj^mTMvU zK%QRv&F|);<6+N_$Ny#@aI@J7$L|sJHGi#&dCo97!0P`2b+R?`yg8=!E9|5xvWdIM z23(fkG@HYAuv#Ob{rqsC()FFQ_3}TH!8X|G28n!qERE5_)d3~T}Bp!Gz|0% zVpZY(7Z(K_{Kj_M9ji-=kKwGhIL&;O3b}0R&FuI&0=VqPPNI)!it?TlWjOiO&A-e# zM?}TM>B2^x2XW2IJJn<*k&TU8B3qm$g~d0TI7|7fGQ$Omrxjd;G&Y{khL{AT4)J0- zuBqOmCwVwDtQz`A`|sKJg=rfk=b(_X+C{+RC?_{JcIZkpg%daIixCAsLrr@%69ubw zhEPX;)oUXt&8h9V)t9WvDJhkXS+lRFz}Y*Li)ZWMz8-T5iP0VOtY)0Iiussj{5gk( z-|~&Yd8NHR4Tkc}@craTyHUm@!pG`L25TVciz^Cc5<=!3Lh^95^$ChM@n7Y9%oERf z^Pfn%ktjH3qM_>T+wKhMzPST8d~@O+b;t(Z;fKGx9>esOUsocLl2UjM@L&L3a*M{y z(z0k};rCYvNV+t`mY@@tCTjhhjUvo-rv57Kuus70j9%4jC;Ss+uEEVDgAuo!krq)&sZ8<O)FGk<3eiQ>%uP>_p;@Pei8mttk~Xk23}YFc5)4>|aTh{=&inp4til zKpnJ?5uu@TMW!-1!KSEB$1jtwRkUMz$Z!q}XVWn#9oJOeW>l<~1Zr+c1u<-MEvvp) zI6KAN38mmQ+QL%$u21YY|gj)%-YpwxrDZ~#?<;P#K zyCj={CdE$zgl5i#3uJqovmk82laQ`;J&Kf*`u)EVY$hXoCZVD=4kqI)aWgBc-La*R zDqvN@8--3qGUF$|5tGr3-s-;qrARkuf<9*z`u)AnYw1bKS4=v*%^Mi7tgZhIF~Uxk+wI-e;{?9%*wNyIIyaw<_y^LJZlqjj?=PD-Fh4 zFACc^DMtk%i9{4nnyq@Hjps+O*o1W@{S?qxL)wHeh&(O=IvD-YE`E=t2&q zJe)+6CTCjLv|kul{Q2Vs(^bW)LXy$$#Abq|Sf-96-$S=AS!=XfO9Uiyd|4974?>^_ z&O^(PB5gzilk77}pKdDv+}M`;^XlwM!{4}`;4ywu&#w#irhjM8ZX=aFO9wrF zONEsL*5y{A$wO`ze9=Wz?@I~ZeR7bNLC>CFS1o#|nzCSQrJJcksc23rTG{Fu>1r3? zk7ewWJqUnD%#C>QYjo7f%d>5@XG^$j6pVikeq9%QRF!gSb=0sm4mD5{r<R+$~T1v?Uity zYsMMckwN_Wt6-LCgnVc4UAnf0y-lnH7X{oZXH4s22|>@ggP`~@cMoHw=Y>tZ!lDVw z?u6K4@mCOjEegA4&}?_U0AbH{bmdK#X7j z5vlq2=|LXRg?4&#w{ITKZ8b-7>x@V8H`-=<#XscgXA7od(5~(&Y3&AuuG|?5ZFyrd zmqT!|!4bU%HhdFd>W$1R7cV5SjLDAfoaDmwa=Pp9@faLiA#YI13)}?LkPr1Tsn7@2 z7)MgM?p%LQDb~pgzk2*HDW28$pJ4fqsQ}u+39`!sp0OKf`V^`cev+8)uz!EfvDlD5 zh2)(;>SZuF1op9QyAu+qtA{!nfu1sn9})5=vcpLK=iVOuHFX1j1GNZ$M{F7>kuu7> zl1IhbXyw9vPWDXY%sNARL07Jwbkvh=0>$;V8q?m;*tIK|L+)iMu+h%k9ALF)Sd_W3 zE?=d%GNG{HqBvH_zqkS!T5qUtUnA1>+#otBXj1fnMPGZ5Q0VgwJ~!g>$i|Ja0#CO2 zALz6l3bZ~yO+?UW8|&n#JtRqXvczS_5`*HAYNw|-8RXYn-8r!(b5&14!0O=C2C~NL zBl4*&QiwULR$QkxyJ4t_P`#ND3Jr-|^+{FLPP>08`kqB9c|pbM2;-z0szm$7DYLB$ zo>Q@&-8<*cdN2vKPJG(E2~7`z39bd~&#dX>i0`O~Qk1O!IZzbKt>3xCDw z_Jv9rUiIu9iG;`$%ZM zRaCu1Q83urXQ`lR)kl z*;cb?g>Kk9gV9&7FRgaGyP4=|WxI+jKjT*QRiFJ}Km)7`>vQqd;S-(!p1qJb?!~`9E>I}{x9CfkihE{?qyB++;_WQ@n z^AcO6AT)PkzayAg6dVCXWQU2h7G8CG1!g~uuYuQhPvbK;1_@QP-dAsV$G+&LB$Dg! zdPtPYu}`^L@x%J?-R}_M*5%E2<+qWP>jlN4(_VGadN`icw)J}(j}&9F#~KIRQ{ayO z;sTUwSsnf0gfCh;x83yMhLGS$3C|+o3nP1b?(xlwNj=vk)AfuQ_U3#fzKexPJMH#AiSl=t+SsGX z1zuNMTU&e?RAdFl3rTw)2G`xyTe_a;PMFxP&@v=9ObW%Lj(fr8D+1d{1wn(Q_%f)l zPqb~)7G@#!oZGAF=nS|50v&D5CN^k&E+$& ztdw4v7)tJ~PjVnsghuSd2C^mpp#QWlyg#r-0Lt<5nvl6NcW-;YoGAQ$JDxx*(mN>1EB}YQ zppcMVJn$C~uX`p&Y$8{pdDMkO{c&VYdkSL^@8hDL7|bL56+xL+QvX|-#`kdO&sO?^ z;McGuc;e1cz~K>nLf)5Wp>_-`GFWBDUN$DQ76|673=IuG@l|@FJ56VqFDk&UTF<@; zKAcyP*>#2mg9EYh0arXs-{kr)m}QosZpU@5VLkFj9Zc(lOE~p1*Sk|QQ+AFDcf7nV z=DS~U>!JZvDk5!)%fFrX8DL5aK=+3lx*lxgM|DKAC7zlcNqFhIzmkBcix~+M-eRVl zstJ$r9;=Cn9oR@+s-N2}sHO;`D1RR6@yP#?r=R_r;;waBE><0@+{RD8K_%4t`m5Ar z@8>n~XCb@9EJ4d_nvD{t+W~ayU1O!D7O}>^Dirl0v{}%C&_*^T zVD0&)(~a{W;|2LNbQym#xAFOa*&URI@nti=uIeb`bKoc8j5=QKw`5~N`xv;4erxyX zCnL1=ecFdA)-EJ3wB>p*t}>N3 zx^@0Af~64f(TXy#--n@^deKF>Fna&lv3>PwRsXWil8yh9_`D@L#NIL37FE-CV(3pmXu1jeV}eDKe&+g|h8$A<;DtBGQk z&2oa7@`o$cBkLn=Le$Oa*HZYO4J$nqzZ(*nTYXf!`V0M(&b&$Q!`(6(oyc|{EY|mK^qw(8rylJJgGclq7SA`Bx8n9U~@pWYS>VmPt7zn zXY~ANz3Urb@%l-_kh>dJ;bRa(+I0<#8q_h8s>3q-*K=Ri%=Q{;<3eCZ9?IT8Nit4U zOpf}D9s0S)TmT9SWRSrFE8pP7aCO?)D@4onHpew~4dK256cN&^ocq`_!$VQK;f;+W$t%PyXl9IQV zNE5qylZNFV`g(ft!!kIkbQ5ej6ruJR&JF%-_*+ ziLw5~Q`4%S6(VNxCO1)|f0VR@;r80xT(w=zdQB^pM_KfP3{zcwEvAB^zGGj0>|!zE zq7`*n=I__&F!O$1nO29>Wl)*&hooKj-af3+&-Cq`^<6OZ8>~p+n3J#%ok}k4#99@s zdN<5|Rlim8xu-@A<;ELCK3FkZuLQf-DYp+>sIJU|`M|Ky=o(6`@gTd56VhHdQLoop z9wBM|=BFdK<&q~}>i)cwlKSNxFS$FJV-}2ma9k3sIpWr z?WQ<~RYl@DS$!DlzMj@1eE@dSieVA^;!?@6(rs%dcU2Y9W14)yjQAxZO0q>p&a%F@o`t53y8x`p`*B@_86u`1|;Bx-_5=6?>g ze=U`NUWAj595TJm3W&JVMJEWV!xd#ht9Q>c8r;ns?G5gA_iGU84d^X-J=R%PiEQPiC{rR z;~SNJW_vZF3{8p;9HNv_@3@+`qN@iPk~gx&O6+HRbxU5-6?gUqsF7YyYaS+{b5X_3 zYjE?NTIJd^TD&rF;~DcL$>YfrUuns;W3pDNuYXyK=<(r4bZsf{?p(a@d8#a;@Q)OY z>eOlyS3&-17`ZW9==p^%JEKD=*rF6VSalC^wXm`f}n_(X8j87&pIi?2K@M4qrlTwaw4Gv#UAucAyF_pyNZHE4a@;v!Wo5qfhKJ zCN^*&2s8OtV)(xuKTzM-2(YzF6KL)X$(op!V;CQ1!vvBq*0m1fMp;?|;zw7n1f-r= zd2G3mNxmRwKOx(Dg=8iqW5Jq#A%&sKbf#*=%JCUmI_KI!)m-t%A1_Nquk7rU#{Ft- z+@^{z%W4y49u3$op-uNDMhEr5w;OMxRQ(stz~q7;b9>Zik=;j=ZL#=eV^N`Gt^r$r z6yt4nP36!}(wW6Wp2Th#Ouq*dxb0%HLMY`dl^3g?h&~sRU+Ldm;0}EEfsLggU6-@* zW}A(zqad85#9gd~Y9OaEx@3p-%ZtaHqr8m)sTXHc$5+toi&}|4&~`T|e`&o>$uNA$ zeVPk3m%k?bq<&bJ7u7}C{RLZz>?kt2qHiO7-sc;X$eG;Sn5ma+rXUUhEqaambLzIM)@LFeo&R!6% zW>KZC`n-;JiMSrP61&jL*R3TAmRPc}rJLlAA}A#Xr3Hxi0rsfJ-BfY>39sT=SX={7A%17MOW=O* z`bK_8gQUF+sMAVEMWN>N6XZa*-IMN$3b%LRE%A?vAEwbxf_D?$*6#AY&b(T5{CY)l z{R@(@F9>M6$!Ttp*jB$#&8}q@E%LDD=p9@;R|7w(Tr}T-O`=`0o$qrcN^<d$vU?9tVr@ig~0P!!oB#jU-6+=6|?Qy!B=viJUwEt0C#_IBx3dtzj;`k9F-JI+&e zbYE+&N(i$BMNX?+-@Lnen13aY5#BqJX_5iYt0+u9 zH=ADG9ywSDhG%HpvR$`BZb?=@3WmP4!Q1?>0tWqI(8j@aCodWO$u$D zd_BoC9FrQyvtVbI`3U<+O(~!|eMF<;US(&-LRzEY;&w>*>+44h!_Q|&rAP>lYU&k=L#e{l&jn@H1Y8IdN!cDk63Zmq*DbWh86)4SSn_IsMcl9D*3X6b1h`Z~Ph)x9p_;3FlbHn3s+sb;JF8uEkBu^UzJ zKzaP7MflIo0W6S{r^###ReHjuFRsryf7xnb{B~!oaQii`cL{JQ)&+#}jwkE%n_rh~ z|LEyB{BAMJ(Lt=rJK_q1aTY@*ipbl%k&h+l!h)|&$rW@zGdjgM}&Ojr#qt9vkW$&tdynq z2N1eB6P>hs=K3hzM=x4wDkivr#r7X;31~b1U`t3lL(a~9J=*cqR!~ftZrH^Zzw;lz zzIT2ue(|_4DkX0;nc76u2O^K9+o0_hBDpR%cEv0?%}P|5Lr3aE0*E^SoKbUKHzO4T z)w|e!hs5>N5skhveVlkB!98~1$ZZ`F<-O>5H9 zTB%nTD9r?tQw^Fy9NL;CWFUI~i^lr>;CJp2xX*l}fmYIWb4$?&y`}CQ_cJcff;SDgmX7zl8$9~G>S+p6`pqYt zO4&Xow_sB`Df#l@nrx?kz!d*oG4wwldCc7L%@0AJS3+p&d28)39y{Y}w3;}%%mzm< z;!@X4w(8yhKDZe>?~%TqV(UXhRY^&%3;HFJQ(49jt@+t@`!}Zq3NuO&MdZ(OpR3>yL_oic|_^eH(2tT`8(b&B?(0pZ_ed$ z8TQVJAenAqskO&to3FR^-=)-OvL0kG_)Wb$y_dvX50_l&i{IMuvBk}j7Vay!?hf|R2Gm_1V zvv?f4*J>HOJ?h+>2386IM(VNredNQJu!&HZJ)e9xMB9>|Q+}VK>hxOrwEpeu?8bY#oV3eyC;nMrZ~rP!F#l^Pz?C!8blF5F zh8RB3CZfLfw~klLXgTr%a$k-zHs^OLo2(36j!NmM{+u8$+)31DSk*CO>Ob?!dUQ>o zk#9)8?@PYK&RDke;=8hjaOX66W0`*04$;bk9ottW4ALI@qdtnx*z{WcSYIa4B2mm# zvsy79yYfIZFty{%kW7|Uf$&Z(7KJSW4}6nzZR1KHY0xviv=9%PPp>-Mpq21jXKCYz zd37PoDx7PGl*d;1Vq(2$VRv1c5tcRTC4TO^)50_^Owe#6S7B zNyRaa^DKOYyC=cojFnsXI>?C}?R}B^u7sF%jQ6(t;D(MAJjwz2y`#NlcJ;e6WhD_9 zz1Md|zMrlF7*>W1lQ62TgwwH%y&s?0;!F7NLJvX^5e}W&HU+~;!P%F1&W7W64!t(C zYw9&ko^Q9-3)3Dwn(>kqZW>{;n0VDs#L{_$@tGC%+Fmu6{BFd8LIQDpr@hWN%g2A% z15o_3Vkg`50Q#aTf<*4H=|DWia`z6g16%r(Hpbl_6Qeb5_vZUXLyGId3*!6OE@@@Z-ypwQt`(3^?S^WRy@FEO?f2oA+Q_m=6$E1|XB9kgU4DpQ1Q^ zR;2;s97a1`5`E@9_kS=}&mv*88vZ&t@n2I@V1Lm)CN3ohR{e7$@})2G*Par63Aj-j z(6TPggf**iyJ9f3{v&E-fW?49L3S{keg3TV)}8la?l*2E&NpYPmVOdl{Bms4g@WZ% z#Er_0TEh7`tFt2w9gF!@rEm5lM7B1JZujl1hZv#cjry9eD$^D;iQ&dH1%=lB*!j%iGR4kvSq8D{f=M zaDz7hON>1>>C^ch$?ntU!x}v8o8;ph(D3nnauViMR075E$$=;pntQ>`hR4-DbDn;f zi!lyE2V_49KxWcS+Jkx*Z&Ufd5{bav9|aR{AtFXj93b-$^ODfe?8bWiEHQbx#H-!+ z+}2A!`Gp^4`jlz!!=THWRLi7a+O#pQ46!^8n`8#c=8{cO5>&)uGKZ6-p{?C#45`ZB z_xeXq=>A_NYVe4W132ShrtI>%Ro#o8B5$MbL4fobzXH!_xbFPXfF2#{YZ5QF(@C!< zOgK07suk)rGh&@oVt%e-_JPxxvYlFW3R1euxAj z-^FM4mQ%tu@=2E2EZIEZT7T(mTBeqTcJ^`N71lA?t9#_94~+Txi0XM!gr6RTg5em! z4Z%L1g!%ipkCkpJcs?cdkliOaoQk8f?Tp7+0z&Wy0?L)=ST1&^0N!CTSd9lwj zohB2Ws*S$yi?R_oye#r!M+ZTo_;3Jyw&SS;)m~a0PyJg7?r-taMwn}129XMs%T57Y z@GRrs>i=Qm$LD};XUUXKN!GbI?3M46Ced&YO=Zpp^g87EPHuHOq@DHFdXdP)`}{UvfeqC(xYj$%)40}fge;WA_9>b^cS3z2gEk5kE{ z`OUB9Tf;8eu-GfaI=^Fshmf}q&YEro&0BvNf^cv{Q!Pef4gD*Z&^HnSBXXSBN`?7A7n>2nB-Rr2^LIpGmY)$fL4 z$AA9W;%k0#GbL#XW~SNR#&AnGqS~PKjQrh#{uSH*nm&r(SGP$2YdhI{GNS3YzsAhv z*_4Tbn_=m)aJR<^%dM>tbR*8R>(3fytkGvfYp_qWaojh`=4KlL=T)uZ!-^-&i=M7L zIjsDmBaL6;nvc_)+}X6DqFach)yu>v#rObB*THh_yB6y!ExJNF^Qt0IaeD%>fG5I> z*8lH#c_=MOx24o>h84O1bd(DwPa4ifaiR)+!`|k~^S8q19)EmCGZ}4*e`Ck-^mIL( zZ+w-ve8+>I$rk!0MCWMkiS(Hp;4oYs7(=9HYwrTr+~B7Gy#ZE>^P-^On8T2>e%Io8yoDU{5u(!c#4^3|nC>%`DhWf*Vgl##im)=R*DB5N5{lzY>AoR(B@|Y`W zf3*OFHle2chu3f(UaYd_!!GOjWeCpm+J~z?h2aK0(lS9#(?qvw(l|lsLG)~gY^i~|Ycf^NuSf<4RV9DWb)T_2Ca}ey$NPRx_lvO6 zIN7Gde*7;CXRt^z-6TUfQRLO%TvOhU_uoH0b-7Xm#>7`w`-9{aU}WWMZ2&$X;|TTu z!Za{ls$M(p<9~4&oB_>f{Inn#^=BXduBvJR@VNlOyFFjlalQL7JysUK4Z@{0trjx| zVBs$#BV^Ra918r}Ex@%6zFZ*dINm!lmn*fau3 z1ZLZb-Fx<@`&NjGA^=o;6U*G^B8H7ME71;?3dc6|z<_u=DJ{E|$?AY5MB+3or zzu%nz^^i7HH59Dy;_WuK*9Jh(3%=XAIQ($0%kB+rEHG>-XDt;h%I@)HFm5ttXC40O z1VR7hN*4gTXhlPZqV2L>nly4lcA689xsv;Y|36N)+`7ESHU0h4&za&O+0c~9qB zrdMo5|8$1a`1p^CP!w=w1(KT!Grt315=Jh988A5^rT!g}`_mR7%EU87FDEjuP=$bb zGuI~PrxC#nd`{LuK|8>D*agx*UM)Rwu)jg8xcUL6ZEhkCb`W!ObDA(Z1@IG>GJsX; z26Ev)V-_ZN*Z<&@V9-1seO;r7pLPZVRTvV0xiz!P!cqS()e_wo%&QQ`y$&^lUGIAC zkD!q)K2m30=c}=Os7mZuN8>%?!Po2CI5uJq)oF|M_pkRS0~bco>1HM-7L<3Sq@>0b+#-WBh0;{_dO4GHS$@Pz`huhb zrsPI%`|xoluSCP#$<(wo$#$SS!7^Z8xFJ5>%>oP)KwUXDEGV=9F;a{u+k?;I z@}+1~!|pdW)OMkQ(U*WYR9x)h=62pPpA~**(+L?4qWWndIt0N;r%YQ`u$TkI$o0S* zEYdsc3xM(H03Z=L_BueRz5v`U07f14q)SGPU|*Fs-W(Y7G%K|k1O4}MJ58dJ4afhf z?aRZl>iV{?D3!=iQi!@L6eT4?gk)$k)SWRyp-h=GUxo%lhTM`06`_(@ky#=#gk+v6 zB6Bik`p&KH`+1-Dd%ov*-{W|`>#y4F_Fj9f-}=q#JRMs~-NpyHqYK%UZk8Ub&#)>M zT@d_Je0z|Bpw$|dpG6;^yDz<(kRY1Gw~38+EBCjyv=9ta!2H@BUb&u4sQ=?JhIT-R z;AB5|Z96xyvIcTVb#(X(UUpUaQit=qC7U~xfAyGq?5yx6y#d=5AY{8^qi=^vx@Ir* zttL=sz{NqJfD)VH`nr7={K2@{(AX$)=#X`%h3nIoFVD8w?z_(};g~WrIW=XUKou92 znJF4v)>X+=1mK$kp>ziP-3}&&-bQD6?-v$Ko-RFBLLZ%(*%VfrhR*b>3yPXDNk$jY z(gVF{BIQ??x=-9-2*)!Tcs5*+=MLVzd-sXX@NN~Uo`{ND=00%8r*Naap+hMz#cwV zVL|4Ao9?IAnQHJJ{Vm5N{3s#I*hp51bnyuZX#h|MW?tDFqpp$^fFaXqSKpK{Y}=3a zAL5kz6}!)5f=07$-KL12&% z3t?tynGv=*!Ts=kKO=wh&iqFRxOq7Y1D&;+c$g<8E;>maG)Qo@@H1rFuX#pkQ{$kN zp|8uDr_H)aQ-QtF+dS~nq4Uwm2-W!Ky<13 zhqcqY8EFSM%y@axP^c{LEUcvfAa#Ws71x&qOINBlF4Gnv%3Z-fBoxKxHq3nedYQOs za_u~LO}?+q-I6bPP1)7M$bSJ40d649TluHLs zbo|Dp#@QfA{>yH|>5cd9-kk?ofGbWp5ZJK8$q-RE(owiJh%RmKY#2qL1y>R zw#vlZ9LGOgV8(}`f0yrUvsH#NAL}lvul?QI?cwwyg1UOMI1aeGPegMq3>itC2fr>D zzK4^ihnj6cnOQY`5a%{ZhJT$<0k>`Fhx_iXR)CJzwJF;r=nvpr;wP;sxe}G9Ker!K z66?JS-Ek4rb+Blfm@SxXTOd~3#^>J;326rj0YNYah8aMQwF7Yt6yBNpHvZL!&N~Z$ zcL^fi9}^opo&0X!_WGA69*`_+lZS&&Q@?&@=zX4wb;czR$FTbfD!iYFZno*$6Hi*1 zbRy#f=gXAC>vo1~DkO7C`WCC}KbJ|3ilCG-*XP`Vm&OZv9{z^sB;wrrZ-0Ols zJYx7;^A(r-|HQZ;x)&UK5Jz|Y?9p43ds36`$1M?lUgNGeq&QR-t{ zQXQCe8Y36Suf(W~=$`L7=`_CmRAKpjIKsSRB+G+K8^>6>_IBq#-U$3>0@5D-4>Nq;BIMz{Z~ULYc2w(RuIimZOTD|(fdq!&)C$MzNQJh|4{ zbJwzX^^q|S$Jy=LfxQkqCo;wA6+Wj23kFhVxlVOPuAAx=7qL28x{F2Q0O!ksf227B zSN#eq=;0a=MfBcF9vQoytZK2Nt64R(Q)n!FchZi)q&NN?PHP16^(o92N&@*x?{1H9 zh?l7|aP0!^d`V7YXpc^(-tp37Us?ZZeE-|g|20dqTe~*!`GQ%&>qie=(J9^)9e2hK zsy=rIs@^+Juc^)G2`$fUyjC6V7b^5u=t237%fDHx|9263oc?kb!}ezK;!*WY*oiD>hR6>o^6(P+ZZBlWTo~xV16l%LoSs?YSy6& z#nsqRT9SuM^mr{}!T#U9^+@{2)m4;wwm#UJ$*%3nLNb{Avi)9@So4=^?a_RDwk#{H zlp-;)WYrY(eNLx-J%io|3`!)&QYkJzNAT6t+ zZ-h_!tFTYgaE-w;)WRy5zK3a*Be%|(wr5;Tbd*BI;$+Eu#Ik7{8-qpUV+1+>s_q5K zfrDVL6cyQ%Wcfdtns-H~U*%P8{-E+AW0%nZo{LnJuRm>)!;YL{PI^tI7BS-O3Cy|1 zDQ+dBdPv&scts$XOu!jH?ry(OMgR@OJbhPnBJXTRV@Iy+L~WzxEu9pv^G24MG6XzT zYv1dprLEtR#n0Sr67zJim4BZv=-+F9w@H&uT{U_cqQFnifA7S-wD~n_fN)KB44oQh z@A`fABysr((afa0n+wWu_E0X2pt(7I=E?jHhs!%p%Wv&^yAE=sY`DD9-jkfWPA z&lpa;rRTK1V70kKK}B<=uLo}t_l1gcE8qD_r*5KsdbUL-(eqQ@2{-q)P9WucyJL|h zRyjAR?mSXfne}aZZ?MbAG!^NuQy9`jQ8Pf{nELI>nDR8Upse!4GcxH@rh3J}>(3pX zR%ss$R?k^IdRO}S$85fns??<1K(c*$w|DwmQ*W|;_E;a;J}FnFxx=oS<*R+;%JUaj zCx@6OhYi-Kiu#+1*IAm+vwiO++lO3gXIn^$f8?SYdtJBr8s%s4M)!UCedT6P<96#m zXZ3CRcAaeR{KV(c{WG5VZ)ctMjdQHfh3WaJIy_rq%9pC{cd*{BJA6e)aBW>ZcV2b` zIMY>mR2^no2hOZ?v?Lb{dXkdCmH?(4U3nIOO5?}I{(F>rM8Os!od zH^dgp>yRGOw0BcQgn`3h_k{hSgBpqL_v?GrpRuIQ)mBxvi#RQ9P15mCICChcrJXzS zWtH6)c`K`wdeiz;TGzadv+C>Rh9+c~#C25ODG6*${c#}fqloC6O1VRF9*v$-s~ugH zd9?U9y=s0K99(N9P%~4vpsqGNYd`wVQ7?A$=q=}YkthR?>OVnA9Lk)PG-PM}a?{&O5fxemzp8Lru}t44q!x zl|k8AFvq^UpxI-Uq|tD9`a#we9Tl;^&iG3k9Q#$4UzT5DwF!atIQ+t3*4mTzjKU++ z0_pl05vsZ%W_S7;pEK{0gk$NyZvQQ3-(#{JqhCB27GE93k{bTARBKxC=NOpFt z9aBz;j$rFLjCx%sKSb1Fk*z_%x5;UXYCk(iR_U>ojyjB8llrL|A1>P}Dc$a%{w}bn zLf<69)MaP^wUe1c!Wiq}S{n z&h6Z-I?(UQV=s8EJ3N!bNve~<{6`8u@Ww#=~W<#=QWOv{=|T0o zGR_NFg#v{aZk{PzpVhyf8$SQm1yP#mc9qc;Bk(0(q$k;)q{5)RA^nGSp1OdoI}2?L zZk%DjB-Wi^;VByAGfQENoHx!%uc)@{}zcsdW&xCv@Yw?{FR5zSE|a&Ud$!=jC?$G z$+ns`pC37vfBQ007t=lnsI=b3RO(27ulVT^v-!T`-DVG5F!}=+{p5`Dy|IWLp2-(S zR*<@GX#5iEf0|!nq+xkSu)cyy@Yh@$>H1Gd%*5(PA({T#zB5f9IKsHZ%*YsdonKGiCN&#-kFJIrqgn&B4Ao_Ii$+ielc=+xxv!R#_uaExN{WazHh2^=G}p zqM~%$J2>-d5ak?PtS=Z|8GvlJ%{I08L!zP@vgnG{1&I5!)%@{g8&FwM@#SWWh$cV2 zicDU$Y8CPc&J6DZSJKdUd3*Qu^&ufQaAcE|{(;cK!a~^?!0AUuN{@EWFx`0jF-p!4 z7o(!cdG9~7lF4L=(bLPboN%U*QMLcY6&!Z{2!bb4SL1-7)*sE-xRFP#VX%qcf3<-B z?Se1P6%8odPhs4AGGqdzRf9N(ST;4Kcp_XC$ zJcTDT-bEMpZ=T@vbT6x}c98s9IemaTcbaA6Mx4OB<c}9Pn7r_5 zx+2`+Bw$eJf;4!J^JLuE+EF{28`sv3zFHi0ppL9@1iLn1=k}7pr=6z3@652;SOcWC z$P+#HNzi=t3`y+eYe=`~rs{k8ARuRtmJj&kA}U>U7!W2n?I>r6Fx!3cN5mxO`mPQC zPSFt)_^+0ywRA;*qP~8VJ>LxSBkTc`6W;QmJ+Wf=N za)yTI){d#&jQ8?Tj8D6Z? zw{PFpdq;ypli(c8wEhCGBkS?|K(5YQryn2{PE<3)S978^f((5gny=vxQV~cYg8U+t^O_W?v zP*BxlBy*OK@*K9$fz7R~4Dj<4zuNy1j8P(vV;4rZuI;+Ehnpgnnwr}3K2w}qVxAEj ze3ApjEP#sc4?PXgG-7>Fix~%Zh}}q=7$4st*V2slt5%>tr%x<`GX=QYZXg~3_pVTQ zr5?&0DACw)NU7}2Y3F2TpPTKAP;Ve|M38to1_r&ChGj@jL&YysphDy@r+`Y2HxZF` zcr!m<$rTdt)bM+J@xF^=0< zH_N7!Zd4q?1r6j)OaNnhs4lI^$3T;QpXSKBA5~aaaqy$n=*`56SL-=lhW}3^(%Tp+nfb12A%d4y10g?Z=jY#_@_8`#HkXvHiV7nW69kdL$UsHqBa-#KZw_|;u<*Ezj6d^+4eMxWVNKhT zFE<(*8bU$d^!A<}sIN%RLm3UQwVQ%o8CClpcXL~W@X8wYe|(bEp2o$%B{?KEjHi#fujo`icPy({xde+l7TP!DT%cMJ)X{$68_m0H?K^m$x58B5I$H&YiRT6m!ePD84={ zG*nYVqks4eReHKAhTVI6PZzHPb1X723LM6aTB_UtDB zNCs{d-^9f9y>Oj?aX^ToBU25nhhX;;UqGYaA0bAPJLLUi6BvkBAH;rFOVZ8)&glBB zhd(?%a-Q#!`q{HDp|rrlkoR*S9?HqACGCa%?bO2Lh;;es+B+V5{_+>KU97EB?FCbW z^NtMB@b(~K4r6sYAiz$PgHQ`#X??_c%lJpLYvHMozCA1Sen7tqK-~aF7CJs5ik%n& ziGi2#OxFi$Ar#9IUio!s8yTyjc;dt?%)A%fmd`Cbf`Vrj&!=xz39|1k{r=^BMY`Eul*r@H zh!ji@!}@b`bMx~P9Mmm&o$cus?JdSa&z?UwGBV2PpllZt%SuT}(R_88KleH_dB=|Q zrRvOVo8FU}nwqdXr@4dgeIR!5N=Ioy@G3C|rKP3mxi6?z@UVFoS@(b3ZnT=|8^|i5 z<0zC|GY{qC$9bXK+p=B_+O9}%L&@dxD=}=uUAv0Ky0@->j}PM^!zQ>x;Y%i=QViw; znj78ejk-C*uUq#FHX!0cWfES&0ZGZlAO%kA*940**#;Am)p>X2*irEJc)5H5+LnNJ z=6;aT?bFFN-V0s6H|`^~Z>m-zBs{Hkm>_$^xYA3on0xi|B?JXip=Y6g8re{!XJKZx zLG2b*EaSbQp`jJ`1z3Ytb2>`je@i`CctzOE;WPz^VUQGV@_KIr2$fOQLlf}ZRX;vr zR!2W(t#F$INSkr?IifCd9P7OsY}+!e$uBYPo*u)*-u{|s;7~uUF;0jI6N%)7)3Ct^ zng#^tUw|3Lqx_fx7V=~G$;e=SMBqZFYw1zG%Nbo9{=r{w@$FW`k zl;1E(aiiNwb`wBGdwkdqtX3v4@C4fxe(;~xuLn}|>p@LcNP9j%45KW7K6;(QYU;7& z(?isN@!AN(_}a2_5pY~!NvlLOh|edFgTbW3s))XWU9gMgFS8h2Hi5pDVjzc0-iGM}4F|8o`2+$y9*$eUty?Efp8Pr4sAmawMJ8w!wnM)CRP`oHw9sJ8tgH@; z^G<%n2f)PI-`@{>*}5q9t_tLVBt|9RUqImiKVb*Je2s!MwCl z-%6CjIS}cQx&lyhz;{=*i-2z3tCO7us-2cV0$U!OVmru0R|&XeG>bR9di4q&E+(&< z0sRRxYRxoD;JFSpb(a-j%O8MiI{Y2=`9Kb_vvPd|$1&Wzkzq8Ve1QXEYikRi^q~Gb zpVHFf%DUOKo}QjS=V(mUYjm5RYPAF_q~3d1DpKUSDiq5i<1nICt5=J=r!`*@6B82- zSCobK*9NZa%*;&m7Wf{&dNplRmw~>1-1;#>uwQ$_MKRqApnexrijQom9!!2SLN^97 zwV!AQiSL&H*`CdcMZo1lR74%eB46#=zkdwcN;l0os968IA&I3W)xi5;o?j_CkBHz% z&YB)soVXS+R(bgmyOEWZa6#Y|ko7ZKpPvrB6A>Xm217`HM_!H(1XrYGe5M?_L)B$J zsKLW-zqiXZ2m1RDK?ycr*~iB>*L8zIK9EyKTU)#Kt*CiZ%28Q= zc?0M-Swk2b`<%Q67iyBU0wGXrfgTHv#x0`A%4vGt`{#)8YnKsUpSNV8Sf@^D9`dXGy37!|sQw6(MjW2DfYkd$i4 zIetDqK0(3naKrz2cA6=O*gL3E$G5Y?W~IX&^ez2Ox4~3aT55Hqi~&_PVy1+I<)dq| zlyq}$>nyT&$-&`%_L2vo=^x^a!`e~;WEdlpUc^3`hGoo5n(3yh8X6C#?xKy>yxtjd z&F7*oE$#7R7n*7ofd1)IN;Hl2_ZugcY9lNJi%~EH^HwP+JzP=x*2-l;TS)!weso;a zZsPVKmdiAik3_l(kY!RN(?C;d^wc&U9tD?=NjlE0I?U%GTjb%wvM%&C#2w<^3+ z7!d#%*9j)4nX&FF`@Ww}ef#5HyDc~q0dhT<9JN~m`TUO@lJ{(dkX7vHyhIOZvFxX-teUgGE;FCL@FT_zx4XAur3bh zi;!>%0R-d%LNB6IEY~sB%q4(|qN}S56XgT_v}b<`#i<>Bh#p^E1_*VOy?O?)k+Clt zr#Lt{IT;zj?l6DUOv~JH*TB&|DR|pC=+A%YA0K7dH9y&MtUUS9DYqoTam8&k||_)KQ=$<~V%yIG^?C9$4<2 z7v^ZUYt!2$Dw+uojBN9B!bDlVm+B&sNzHWKK+n~Swm;HrYwUAe zv3^O2u?eBu7z7z>$0n}NpMbZL9^6DQe9fs1)6GM*LW7!RwC*62kyA+yc}7IXSeG}H zSsOSkcG<9Ww0eAGvW%>+pP$*)gIOS`HRbyOT{M{cMhD5<*E_r6UUcR-B==!Y7qAj} zeic=F`zblrEnBvr)34g`pldH?>s*`p)cQc?i)^ez%aizIyS zY)d;`YAM^VA3#6Kr=A2C5E)t6W>HbmCX0;f(1Sc^!y1gPkH5d<&hDgMWk39QinArt zI{Nj2&MY_GqCL(ekL>dMzR>(}4=_tvd#n*MB0m5J0e(E<8=?^nFVdb9GH;mxE@sQ8>nd&rxVc^MugQqbes}RlT~9+o;<-I zO*-=zX1;&HMlh-jOGmqp`3FwU>5)u+3A`aMXcoKTE zeh|js@6~*{DWp9S?P6$i0xjVKQEPn}nd^hkV7;N+Oyc|D3%xkxM&xvW6uShAer_(C zU}=&w#1==S>CkD4MEIEY6EMusbBOMjBz_$h8SDWi$eWq}0aN6uyqllDjuV+}rdxh~ z&@nn$l8|1zBeiaDs)u8D?AX!%=8})U|A)#-WQJPP&F-t+M;>< zq79iTLNIziLAM`{0j*%1j;0~;BPgo z1UD0e%6UEyC0$z%6?osgDKTEU1Ktr@zAO=S!b_DmU&yU7zN*WmyK1k52ppeD8oNWE zbIT~s&dzu@JXEz|h2c{x9iTGEpOC9cq|-$J1n+v%#CH9<$+KOG?CFxhdy|q zp`nq9AZUJ`(#H%}g~CDPo=eJ{sI&0akk*Y`x8~UoYazvf9V3O_IiyxL1i^eC7Pyss z`oxJcz|YDWqKhe{{$WLFDK9VY8ald!gfLfU=j^F%d-j}^&A$2#C68fy7t9>uu5vrX z;?Qu6Ono*B5C@_a%J(Rzl-oSI^)>|w8kC%KeDA_ETN|-B0o%T5<3{Wz1H3?Wh@M31 zJWABW*?9UE>YcmNqO>3x0=VX^{ z5_lnWh`jJ-Ixn!#N4GT;6i6qw%)>HdT>W;INsui7>lkmJLA={Xga00Mk!phxno)_A zNgHdnUny{c6ImkM0YZ;lQd$YDBNHU3#`Ig3Gg{TH$3V%ibuJbL;K@s(PF#uHaX!qPT6F2Q3rtsjkW z`WnjRK40Us4f%_@`~wdTnW@2U91)ubH=a_?y+vZ6SAyR7tX#cX3fzU{v)bCZu5-+{hURdXLdiC zfkQOK*MjE8MNA|%o|2;C0w1M;7)-Ji8XW2*DY=F#mlh@ tNv~+j|Ib+EH)_ptjhT4ie{|`K7FJJ%w diff --git a/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-68-1.png b/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-68-1.png index d4d20f89e4221c989974c06206cd6029e10f150e..6ed1bdd1b17e0ed20218100c44c4540dc640987d 100644 GIT binary patch literal 53732 zcmdSBXIND0mNi-g1pxsiiAs>9gEHbF% z3?ey6&N&pRxO3_5?$iC8)Azgm^`BeMv$qOWtJZqgeCHfv%rTe0qP+A;lCvZz6zZhR zy}L>%)G=`silCYpAAaIOcsB(8IAL{9-4=yn@I(H?3!PefhC(r;WbR5la*A6VcJzES zRl&c?TSi*O$;p{W{m_h%hE&B&&GIy!DSl_o?8!XYtUPx9>66p9>fWD`)o0NOqAW{0 zb1pLTAyuA!1zR7bVlwend-bQy`}IRY(T>fFi!F#0lCl$DkH3}#tqd30R2eyX;|3D~ZU*S6|hxqMk*wVFUda4uO{L8Pd# zuyD$S$z?I`V~F6Dcpd$`z66(L=l*9=a__HQpbbp1DA)V`DoWRVw_;}`Gd(>$Bjc=~ z-Rx}V$NilZ^zUjLaPP-@w2?Hi4#Ey2`F#{%<p zGxLE$jKYFC|@L{LfzAR70P4@#V zyKH3gneRVUb=`2gGmeGQuo&Myyw?75Q7$IJ{RM@0VouI-pFybG)H_ur{&NveVP%I) z?M?d)+u{VmITS3utQEA2?oabqMYB}Y*IRu(MmOXzXg)`A4u$fx+C46Ml|mFdhFzP8 zH9weFt$I;MZ?uRRbwAwO(kypcD_g1DU(h`&Ro5Ri&8^UJSt_bw+cq4nj(YbFuH2Z=?Z93Qd-WmoSZi7Dy)9PIXqF@lP6COT2>u?^ChLyggeM|gstao z7cO`>~KzD^a!`}Lr4o*(@EOB77^^2Pve{j zu{Zi)k|X=m4l}X)M(ilE9*vrYtugN;QtQv#wv@~y#FkINK{N^s#%17>i-#BW6{H+x}dzcoxSE;NZ+hgxHo_v63TYjw^xOrD@r9DJd!87v=7ctk<2h zeA=_}EJ|BNX+4+10@l4lVt+xX=-wJ9k} z;r#R2s*Prc9Y^JciWz$?inFt_gtxktZM*j2L-FUwbRjOVK5tp2mtm!Nst#-p<}Rnk ztDBa?d|Oa=#jKTPdUb0 z_`LIjq2`xPfesp(495zf$Z)OjX8RX%OvAnTr8^hch0y znJTOEN?Z8`T~}O2oBJO^RCVyddBaYA zR=`C{$2|o3Y~#m15tHki13O46YeZuE{q12<-c?&Ynj8<_Q+f<#YhqYoPhZvDZEASS zN~Jrd3keWHQU1Wf`xq(hg9Kp#snnfO508SmO+UsLX-HLh!(@@v-T`mFdi82JrhN4q zY5HhB+;kC~M^RBx^cD^_1e@5f5!%h0S*^(A@%oup103Qu~E3N4R|s%iUH>cV%5&^f(tp!=$E6B&T}Uq5{fz4`L*o&WpmE zSv1U-l9iwW zIb1tW#imlhAfbtg2_w|LNv`j&P6mqgL0VySo_uRKyj1u@-v66@l(s|v368ioU*98{ zHbHZix3|J&M;Esq)u`E%qwNBhqXiWLQm?~->^hWcQP{Gu^;Wieb#}2hK7cY&WK5L zX?}kGW#vzHDe z@8<={S7w-D2iZu@XfY3WeczH|ro&ljf6ZCA@=H(gUB7&ii&fFo99*p2WF|g)_N+$m z5IZ}&2W|t6)Whzw!_6NGgG(>aZrdf}0awE?L5w1M(r~Y!5XYBWBgkXAqMpGW`-@J; zNw2H|E=Z9WwrzG(Qxk;xETm=mnass(%*b9Y#EWC)M*QObAr#oX7T)%Vs3`tHTr;dY z{QGgPPK8oACOLUBLRo$nemK712+@&7IcA#(*{rt;w>4B^TXl4}va>Q;^^*^3*8)-y zJq{+AmfUv|G-PBNAq~479qx!hQii;f{iS5HOI8eOnXG zP)He{H`;_!k96ScZSHx(p7SKOB1LfL-Ty_r`9DLce?BFy-be5{SwZZuFfZ@=;zKwy zN^?m+a=EHJ6xtuk4d2b1FGUbwAMpBj95Le)I>EnQqwtV2!6N?WnkdI0#Qs13>Jk)m zl=w8C#SnHrGnZSZ+zC+3`Rn?3tK1Lsje9O+s^+=_gpT6T9qH@4?X)_U{bj%;*8EGO zlO^PZXaQS8cw-1u`ED*#6B8Zx-KkrqJ?9}l367IB6icICpNEtDFz-VlT70nH42NO# zI2%|iFEAAmE-!ewz;I48Pro+evT}mkc7I)6-Q*I~^j>7<5g`w^sd5+i{%IaU9M2TrY8z^O9^N$>((^6Db#Q+)# zIeW_lwhmJ5U}u!R*qUcL7$agZkF1mmq}8_Tl)9>tm6nwSmt8|Hv`86P3t<1C>1u9E zH17K!Ic?6!b>VFWkriO-~ zaaVFp9Uvk`n}!R3W+A5R{9;m8+JsiL;7w4NT_%G0`O4fX99KrfaBHE!KB~<6^Hp`6 z*@?ZOHp`(!Mcfx~-zmg|-S##CuGla1z|RhMXVAbCmIjI_fK0*K#>)3Xt&S6Q+xs9D z=*F{(&%;VYr>}>zvHYh1om; z@mW^_3REYrQCl3qL`bO#A}$v#fq@+&*s5381IdR9Rq8SG^Yc(Hst6@kk(-f~^-lLf zQ*(2D@VTAEf_B`F$I%XOshQSTe&7dKSvX6p@=-_|aGFesQ%`u6hUdnqCdCu-)CqjLg0qQcun1@=b7e0Ro2jQfZ zEl`h%uY~XcoB=uRoX871O><-eK$c|3IkmjM{!uycnsXgN}Dnp0v3tFSbPS;>Fa z?9B{u{(UM+7Xk1Sp^=L4C+DV2g9-&cXdU1aPxNSB0&G zd&M{Ex^a_&33Z2~nm~NBCe?dq?ni3>w$rEV%*@Q}?4|w!qnOsN#Z8C=Qtv0T9ZAN9 zxPad;>{Bf42-u5;{!s{T1KhX)iACNc!*%y4AXKapv%4`PwpK$0004*F%Be`rI!!3` zm2?0Bg6MhWh1Y7}NHb^;cfjxU04rc0Q(9g#YxIc!Q$5`G1;mf)6D=CV?O zfjbUcS1uVi7ZQG;1=!;bb^~d-&WgHXo8DdZq4lUOM#>u8cr6A})TAHsg~}Ql1M}N8 z!mHS*Nn<`)W!IlOQACsUgEKfOlb-D6`ZHKEd5o$<4_L@z_C9kvZfy3CbEe8`EZ}`mn7WfrMEA)s`y2 zKHBDlE$s&JB0-s4Nh3xZ81J%N@*`D24B(vu=nqh$Dq)FwwQO5~j32@cHWDL47&T;m zj)&i}`?rAxULy9s`)uoGY>F|2=oK!m?DTa1-0_hN{t+hwK#j=SZ*L3^(o|7FF2^cu zG)D61;($lyY7||`dj>`6VA-(>$zD)vJ|bWB`V?y|L=vkSXcX z)~BLrPDA+hYHoR#**+qEOh+5l9m%hijUFz8EOVa|e-r{2YSj!NEpl&2EuszWxAB-c ze&4_(Nxx-4yvVmAqEcTmpm_-7%ECfB*yao-k(K^b9NP=MmQaj zrv%cl7Xgv`#JSPu+jXyAy$acW7h(ydUV;)n%UW6PI)o%_2>;ZqEVG)|rz9vjwTf2} z-2pU>@X=!Z+5l$a?mPl!4WuaCi@9ms1v|$Iz;ky`4^+VUa0Sum>jrX~Xc7$FcVnub;ClUqcw3&H!xkcF-xH?hBS2 zf+n{M2_6ygASc3C&q2C~VL;#n)Y!F@MdkOx&g%d_58xXfKrO6H0W6#hPz4CdgaVRv zJk}dIKm-~E&I_pBC=dO(RH2-MeVJo&#ubL-TA33G2 z6j_(8`65^y3I@TOv4#x!fJ2}LacUGkhs8vsEC{}z^9*yqGl1iC0hfKTz37bnkykR~&Jix-jS_!it%5va>^g%2uA7=TbgMyxf3(uOEFf?Px= z&vy6w;GvXwiA1TUe;+}_b_}p-V&*C2kNH;hEFhTOBG#Uki1_7ZiM5K5fnpIzxCeImu;n0H3}Qs+^L?@z3vj-~#5_A?A4 zyAFZSz_khS@Xxyg$Oo;)Z_R6PJxg_EK#6yr9>XJf#FD9NH^2!2i^6mePz%m6pgjLD zr+fc1=JfxYPc?mG6lZ%Ef&DJ6p`WM5Nqd!x>!b^_R0c5g^z_S%52@dVg`K8z#ntNP zVF~D56KapH2I+3=g{Hh_Yjcp1@kjIRMih_5Z@b<+9epBm%|;~$@pGdfL| zN_wjuw7Z_}?n&?V0$`n3pS`^oRcbTJ2R%KI8fv7)8EcNTXb2_T+$!MesgI7jjoS-q z7;=G9wYiGcwwJ>Kv`igGq=f(DFj%N25Py&CrSY{Q<@#5*Poom6A*d-sCTB;?0@)}~ zg_E=|P{b0=n+do~l(;nn?LSMFo|MU#lpUA4^8)(tP+aMdY<}HK-gIgdOkzOYlLH>| z#(xCwuS}Iawh%**+lF9hG-2EWbzv5uw)WU;}o9M9zuqrcmeN zqbA=VD(gS#-4(J*rIbSQcwA48YM^*LigHpM2>n{``>Kl|MxB+ zwE9rY#j}O#Yec>B4Cj{bL8*CiVpaV8>CTFNWf{;&VysC;C_@6}V}Ej1@VneXLv`}} z2Gr)Cbs1l>+D8i_Faf$HG~?d2mVy^)2Gw+8(miP4AZsuM)()6_aot^qY(vH%i1e`HdDT!jn$B>a`#9UO zt{rM>It~HDK$;I2NVN7lAo=bDi^z5 zFNU+;U7yl4%d7q6$0TYq*#N&rdXAtrnVFc}zqya}Z)Lelo&p;8IetK zfKCOPOG~o^>@)FKEUPDxrrR#Goi+g0s+ZasXP$)aLwGc=(QyeY;4O#*zZMLj?3aSa z-Vf-jZTNE}oDp&`qa;KmZ{S@(1pubH0nC^7k%f-@A1?rrL`Qe`W~T0;2|!y!H@MZS z6`o4~zxO1+x@kEE*WmywcC?u)7BA#zp=qArzBdOf3+XXIWB3VxX@nq95`xSVVhN|y z2GEy?{JhhAdTJe}Mn4a_sh^>%wlUqh54}3UHAI$Y7V>2rgEtjJQvqQQfOns$t1s-3 za_W@dCiVsyp`d>o+6W+1VeNpdBib=D@n6AbA4C80BR3DvDD?DC=iJ%V19bHuTwQz*EVXGe|iPGT@2 z&4W*%E*FF|tyCl)?|;X}jr~wMZOgu&*%sZ-OXqs&w9(-2zg$=#!K+O9^yw3@?-^e@ zol87CM?IKIn$hCl@&{DfpIO!biN}8$BASC!Nts~+h-glW91O4_C|ro8GIXol^(d0g zl#GQ>ZJ0ehFzA<#3 zHeXiK3|X{{)@pEYFcfn=iqvAeg`U>-=yHFLk8z)JsK#d6 z;$056dVw=#fkglUdHj_0`L|l;aBcu;knS-+{nn9U&@~f-V}t!pp4;{lJ4l+^es@(B zsDhxQ!Ad?{1c*0rnZm#xLU{T=8@8UUGMZF|)0dL+B^CWOkZ!PH#Ru;K0s@2sW1*et zAyNX#zx&yY+tcXFJUqD>85(5{*}5wOHc%*RbP{u*BbA?jgV-Cw74(*AhnZwW6%`d& zKlj5I9)(S*Uag@p^&w!9sEC zT!1orHDBMw1zC5ic;8L`zuvdu`_s{ zZH54E`UBOUT_J$Lup8;pqc2fpi+pRFG_CGRUjowlZ!p^2kgZXa@$=c_EZf?%NuZ*f zti4Jz*^Y12{<46ti+tOhioIb2d-F?>mMDAVTTow%;BU22Z^6wJ|7>#oDzV0Vepn(~?A}($D#yiBNA08c%VrVIgQG&yqXa z;A*7DDO_h!;;QV`1lrO8mbw!>GIrYS^c+LIJ+h*9sKh{kTk!RF|0x9p*s3l4K})^B z#G&auO-$s}ab8@IMad2p06#NvrQ^_&K>r1l_}9~8UflPbu0Dt_eNcV!M+o%7+p$Yv zifI2ASn&;q2^CxNCAe!Hv;f}%G{{N6rLtCTeABwfOp(e`5?C{VFW`zwT!p2nO;aZQ zhRIB1F)d4FX{h!5F7gW{-a7{H`=52yE}1OJi}DLGz#_xR+cC`bK2$Jkx24&;Npr{i zV8~&h=LFBof|IDbQdtO}x_-AEbmMr89U?eHL_k;wE_zW%K?4IeaJ6rYgj1Lm?qMi#~YJs$vuadUGs3J#+EcY)$8qJYSrN(ZA!Ru79)YJo(xC_NEW$w;uqw_xA=?ttr}-fmB$fKo}WK|`iew;_zXsul+nI_v6PCJ zSgt>00)U>;LExKmE${@c8qpX-(G{_iL|DVNNkt1-v#@ZSdavpeRWZ(i1?BavG4roC0SuKX}-SpG5R3K>0h zp6qOpi9_v1^p)SgM%;9lsPjkzSsa{ul2{z@T`vX*(AmF6F$L(8um0*eo(p$2Ee(s~ zU*Sw3Rwd3qv1&b+#X81oF5^kzi(;b16Q#y?RU^a-EBi7s-wXqu6My%gw1PcwFGLl>Jz9BC~>DBMszhDt|>@7b?GkzrAMcD|@LEl4E#-g`lmNdM11jgXYEn8)*# zdIOz$!GtJgF;J2|Bu|lOTF)rBvMFwoqGr2*bBOnLs+1FSk7D*)cO-R_lWT>1kH##ch*jN5zKzk61O;mcsf)$d1{_-evr$qk^>~%gJ_fY90|u9m zp`sd^nz08;(7^Ztj=UiU$a3%|emorbPh0_3FGC})>R^foae=z0LvI&Q{pQOPR3HH> zKYaK$d>IuZlaMlG(wOIP&W?UJ>m%c+v!QZL0grA}rljm*>a);?C68=$CdIB0CE!Vu zh$q*=?z!P^>*jU{E>7h95Hm(=(-Cx&CZK_czNYuBw{p7(c3M`wx|&LkR&=ZLRYm}x zU}k}0Mef2}n*z)xD~t0|2{8JTfN^2d^j zjEpO|s+Nq$nfbbZackJD^M?fG#{J_)c5t~&=(}pk<^t&xUT{OS%f4h^4$z*sM=GbT zt`6p1FtkDYmwH<*;NH&iFr+~SLJ4zo^8y!_xkrBh5zs^c>Hh$TE=nyzYDEL0My_*p z>?=T+8Z>S*_3jJsnXIT*uD^rEAi!zBq73%k54CwJ2#&GrkN>Jw)-D$hxycb&_g1pj z_8Y@xl(r-hzAN}r!Sx7z$^&TbAtqFWb|F3#9)Ju-0Jh?Rjso7O+#geuUrd0L3Q!`i`k?#O$T_7XIqC?cl>+JK1kx0(2=3K_~72zJMLkk%|6j&aXA=3*mQHcw7@h~Q++pjH>_RbV+x@jK! zwW0nwWB9|Sf7HO)$Fs+NeJs+D2%t)s9xE7?d~~}jv6d+Nh5-{ zy7IF=MvgD}U)l6k#21WbZT)^miT~b4`=#{Qsbmtj3$9Q5n{kpW9gHlHQPeLS5Hvmz zd^{U2wR4X&7>=aqD+*O;M&0Ofk{EDXz@P4;ZaZ$!Bzt}IrOAH5=izqV^XHx&NyKvBy5MB`PM=*CIljf;M4#}_lMhXb?yY^=E zB|vjr;Rr9lw;RQ!iF832tZPoK@$7*!O$ba7&|w8z(wFzpyqY1Sfz=LBy|_>fBpDe!#tM8DqMIF(hKlex@j5}p8g4nnGYb7D zNF|Q#vHU#FE{`AoWWufbA$}Unukx|*t|O<(3sh-cDsRm4w1tYJ zDKvM(sQ4qDk>Lz)Yap-GsWON9=`oc+u6kqThkE!cpjpc%r=Ov^DY^ z)sDe2gU%gE_-(EDu7*OFt<-e{;`2zvn^B|7j3miUI_@_Ems^v=Cza7T3pl%E6dG)m zP|*~LSM^SfZDbW>bU1cHXV4w&hzNZ|T8i+sLeSM}TOchBx|8OpO>A(9Qb5L9`yz>< zhu%}&DAE1v_f{CjQ}MuSmfyC_OdH4mE)AmdR@GoE#n?y4{aR_FMPw20-of3~7q#CN*fy-F;Rqs> zP*his&TN#c-MC=rkqm938>yV=(_+8CsEg>_Rz%8=#+$hwtEj~AhAFVKAK4aIIXgR# zk8@aFxpHN^szq7RhG}dC+V)X8FO0z}WKi$$R+CZ_MhpCp&T|xD)z=C5FPm{j_ov+Q70$cD%O?#3wEG#_?Us0%6jUx!=!MC3EqE* zkvEwgq^oSitNjZ>8N=C?!#tz?&93A1;;@;A@ zD!SPWujJ*px>K%|+RbEf;?*R|vF|L^GwOg@i1MQjd5q=`zAdR%H#90--|k+w>QA<{ zHjEzmVchZTY4nJXRu-$c-=rSU)DKes3<3?&<+*^L3j9GB#Bg5Jt5Y&;`wQ7k0ew@- zYV1WqkE(^c2C{b&&@2um*({N3&web=Bxvml7o_(Z>u9W9*&G#G-j3vrn0`q- zqkl?$jWb5^GXOYW76-kDHQeoYa_;Do5n^wiSWQCI=pRgi0<#CCw`wg{wHJGvZiW^r z6Sx}9q}-%qeZKRkuvB0Dj^J9+$6J{2sJEH9xjb=U>;32ed{rGC9ax}ww0sy%Lw)D1 znj`xfk8hfPaku}+zF@{b016B4U8oR#h}A1T@5t)Js`2SD$%lV{vfa9`hVW=ribrxh z-5BXpnq>#SQ$io5=Z`Oa>LCj$RQI&pS=xOoSWzz}@;#M)%!hmPM{t}$5j^MXZND$tIowtyDh=}G7AJ!myh$S&gG8=IY!501W!=^TX2CNsjy#?s2 z%a|<=yaT$1O5CtBBR_yF=LDjP(NI5F1U$A2(9aIGzv+>?#b zeAhh4Fc&wySACWD%CyxJGO49w22rD(vk9E4XemAeVjO>^p>hUS`~X(q#OhLHr9x`5 zYe0OBf>gomNLFCC%X5rGxtz2q)`(T0nuBlJM1Wv`rP@#G->`YRAch11Px}=sZY!|+ zxGrBt?6Fl)_(AZ9Y^@7rI)YG?Lwp*^GXBAkhx$N57V6g4J3aP;t$Id!jrwJ~PHIBt z`Qup5aN9S56e9cAC!d~KY7(tZwM|~4?Nd0_MtYxI?5zrctKdOH)2n~v1Ph9uD}Cp& zAj^Vb4@@I7;QvMH3V2!$L3|m8uLAf9@DzktP*ToZdomO6xcrUpdo zn0#}}*FoDZ&#$a>2U`J1==Gxei_oRi`R@7}}sZ@adlq24*3y?9yxdVW$qe%`i#Gpdx zM2MB|TIQKWqVS$`(saQi`wPwHwTskvqRsQ;OXN3NF^==sx`d;bnq-o;%mU&tF3f9Z z&@)3LN@Wv^i)?7(Rl04(R zE?SOm4Rus8VPT0$L34oV=^rDGdW;uMF!}&!0w7p1#Ayll*aeCwf}OOM=;6jRsC$N< zgLxe|AKRK!(vMVszaBlBbU1?FD#i(xle?CIEo~iqk&~_%0?MHcJ9dc zw2i?Ntz`_*%9Qo3tu=7foVfzJnRj8J-wYqdsH0XYwY4eVN#_^aZd+w}!O?>aWz`$4 z?KkDPqTZ5{%+1IIcr-{vgqQ!P&9#ZD0{s^e{y;F5#fg=1!O+G8locVcm4$38HT)?9 zv(G&_)aP~gd?KoLAj{f*5brtF@cr7l^7krA>IS2jO4zx-8m32WE>I!W&hL&VMIZ`o z#6YsjkU&rcJ{7Q~B3^zH@5KCk8`yvhzz)El2NP@%RxpTBA4Fg9v@r~_%pwf9A@d^q zmLp*N+=A}SJj`*-J=aAxqn2N0hb|0QtZm|am=2yahOr}tBry3NKq`P42?OXffeWb< zgjq&t7a_J=$XH;BGxZ~980hY{n@fojg}23DbBDuSB4Hq1g$73%7>T@@Z!csOxF7A0 z)~^`*gCsQs?J!VS72Mau!A^Wk;u>Hz1f4>=g%O5dC5W5o}w>!b&g0{XMtVnlz{d5ADR?pNm!rl9(wn|-KCx0BFo zNC$~+YHA88>@BYzKBqI{cpS7sc1)B=v|*FU#tZCAoKQNx{mvz5qjms|xh8~g?26FMYNomm(OV?1VetT+Y zPzj4CdZE>$;Vtuj+44dTq;5cWeVFg9t)x~~LZ8A=YyjF1Kp(*B3dRe;ZU##2^l+US zuFZH&WMlEoRSc_6C`C0}VBR}W5<=5F7PR=Kl<}Ls2_w)a`&H-g0_jF@s*YWK6UZA+ za6xYFK=Qcfy;(KS(00QkBzb`eQ{`Ow-h8G6Wzczn8_pBZjM8O!hu=X3Q%&MI#E2fga{R>#J=~jxxaOoi!kC|?nJUW;Ilk6sVR-sD-!MqGv zIw(qe4*yQ>Nm`nKK6cpzwZU{{O=Y^gX35s2Nr6E*jM?-4MA^2*R(E%>Y(7n3~wx z(rn|^C6&($9ktQc(VGsr6*cs?-J?{vW0})w-2hT^zdzLVUy7#TneF&xV@^$k2xIeb^jzw#C!moUD1%i?iS-!&>|`9x!LL&}>>HuN}eFvl+W)V5(4 z#bkf4i-L9e8r$gnSsQ;5kWk}yTUgC+-4m;uNwRYDil}V2Y4jodH(l}HSlAB&*P->P zW+rGS1MS3sE(PvWR_PF7M1r`Ft8!U~(YVLj+VTB3(&*ppkK%EerV0Jn#iGVPam{v+(aPgZj`g9rL2L$#KGf=3K|27-|} zQJm^GV7dUBQa5kjEOfOWDR(xg3xfIUy(ZO48^F&YXRhlbj&j)8Lu-ioralkA>1s}~ z{`%zKx*s$G8+pK4T2(d~CaV!2QUoI0A#^}Rp*vr2&IAuorrdOOebKF*TNF}@?oRU) z>E~t~$js$(xn8n3%u!QVViNi@i;jLI{@k-Nrp=SJC6hQ;P&OD(HPWdgxLFtJ(%`i0 zxPDHv!X}KvAhl1XoaC^ke#Np#Vq0o)Kt#3Cr_qMuvO}1p`JvF#Y{`7Gz^bp}hpIQx z1WdHHW0C-*)es;p&#B+5;)xjh5sNI=;};ATz*gEsTCOme0Ye^BFslaL0~o6W>*vyF zmB*eN&7TP3HC9<_Qvwk!or=pZ#TU}^@8<$6TVT{v$ypO9mF~8>;!H*?=2jfevDqM* zYBcF(Pv>BxYxmgYW7UG0WrnpPa+@rnSq3l2CVlpw}Hn)KTjt7V$r}DxV{lvo%a|porX%Jb$RKI0P!lgdx^cD z0ER{;CNfV#I|n9}_nC>IUKcEuL3Z+FiSQ9vMf}7tABl8jkg*^03Tqg-LOSg*lV~;K ztgZJYO<>jd25_0biKvQh>&BxlmDDe^-_CTsJ!1q}#^%PpNT=+KT#E%J@NRs$!$NdQ zpG@=ezzYKl9?waERYWL1adFpg%vn?rL|g^W?S7@$13r@>gRwKq(|`8xq!3X6IRd8zUO@J zBT23_Vv3ZsnH!Dd5Gce%f+xy}@0u{hT8+3(h5-_Q=LZ~tpTTGVBeRVNodAi=5r#Jl zU3)3qSACFyZzw3pn9jrz@ke=2g>Y!7Kqx>PEK*)un#;|3Hf5Mw>26kWoa?#KoW<{I zYm*iD0$so&$0;POZ@BUiVn6?f{@{o2s&43ZFnYA_K@~~_CG{xP9)=JQn?JOURmM|b zf(#t+yRgSdy~jq64oA!WdV#c#4;G;8APfqohoFSH04P6w4(XpmoYgTQ<0Sq|$hfmb z+0yu&8-z#&Jomxo`V%B{{$kia?hdYhNL2n}I$zBC{f-u(2@oK5&q7OAcNDymgkKR! z3yzMM-b>Ejgile&hO~NFssjI)l9D=D3uBi>s22=M+kgQEe4l<5FWb7uZ$i!pxYXv= zUfHDWxBbQ%_VbR_x8S3V#Oy1MAmObjLJ4y*HZ8Rgq#9EWz2J8FuR)8G8+UzxZQI$+ zSUVSQ+bGrK4dVyw#?g)}`$m2Ec4s`iX{pM0{7)L9@cl!(+XeGpGgzN$lKKUz#Hl0{ zIy`LP7k3TKs0<4RLmjHwf1rNh!oKVK4}nf$3Stg<6BPiCk*#)q zxg?R=o%;$UAg~Xofm2b6QdIS)zE-pTc!hL4woZ66%C?%jcn4E!M+B_UWW9d1dOGaP%gLSkKI_{? z)2{6;(E_}-D;vAA<4>nshD!LIms_3NJ}HJEwG3X0pYIT_B8UN|KK3`zN3Njg4;>8v zi-3?4eBP0mn(*TOk@)ZTBKB_n>RhlEK=eTagze|Hh!xRjMI_J_-EkYP3 z2v)ofSsVTGgW|kq8L>E{CiQ^_yXCkms1u+B&=F$Q;GoCwMy}c7;gD%@FycH^QGur_ zJU@1Pns$ud0BJvgLQ!Zp*99g(w$)!@tWqVHbck2;?iqMu?v{Qi&byvQ#(H8-dtH@) z_Fdu`;}@7W^tc&G9!@Ts_)pBzT73i=wcnL5diuEy!$s>d?4 zxH-@SxwnI=*&Vi{2X;b<*&QB|eP7`}-uD<^kG%XUL6yc6a#zkjp8A z*Yj94h$F3QL?hRJusa+h#?yJ|#mO2~=zVyGpxo>J?mfEVeC2Re0s&|5?He{;u}eRD z*$QmS8syi#{PZ}SYlpb=KN^p14Zdfsd@;2Yz41yN&;8)Fl+HP|qhF7SQxhf|dAIa+ z@q{q44&z&I(zQsIt#r=4l!ChITu9eA4L^*!B*E70DZ7k8b z?Rz8w)%E-DS*q*t@kF_aS6}Uttcp(mM#_lleGocx6-rG;8|LpIq2^@5s|2q?%rSdt zmi6p9{9DQZxTkCX6KRP*wv+t3yr6h4<&omU9iKWp?-beKa7Y;0=WBDhLD2Eg(8XRy z`hx7@;tOG$xIK1MMh^ile+2ANE>)p=jC7oNRIa&eq&;-Ph2Cpt<3gMXzHB z*J{`Ed83S~pg6jB4sKg)D~~(jrb@OfohPUWtBib0D*TF)?!%8E|Lf~J3?#zUgDqm8 zAmhWHC&e$qZcYSEfL?542nsP36?F!yV^|f^} z=j>_Dk~4UswEyv~mH5JW+#y3SgV+X23zPtP$b6%fZed)#Iob%D1aIa1d4z()EAff( zF{eRfKpnAS!c=0?;>kb1LEXMUh;3@RU)KkHZD9Z#&<=R1|`qIYn(){5s{MsH^=tC@*=InWH1q5Zd=|fs>-vSSv|hHnvZjcO zx^yWo@YwyuaqrVY-&=}0gb0KU%s?4Lct4=x)-#Ak4b}vAFcoNMvQ*Pu1U!-qk1_j& zdCZHRc+0_ZlpJ%NFDdf%gZaE4flWUz`s}POCwSa`;{2sjrqb)_DW~S4n9eX%JN5CB z&69f@4(l&or0Ab>W|=(JYng3CGVv&M4G%bdOIGt6LSNfYjetA;qiiJnfCu{kg9Jm9 z2rv}HhYZefAdPp1#QwyC_*W8MKx8+fTSDO}Gtim&0zedIF`zp>2aoR>-+N2^ci^Ov z3RG*h0f_>8y$3w^>}e1b(b@b-{Ku!`j;(BUYNQ+7egzb4B^f?C-H^AzcRj6h zrnOvU7Jcth)E(TT;6rmdoh^Z!Ar9&d?PSI-(UNV zJllnmVVeH;t>$l94Pgp43&mrxsu;YlE8H(LvY^z5*QY+X{8UKuzR~nnO?9&`&i}6CY{d zEga5&CJS*GDztpN(Gba8;C+FIl~@3E1q01-Q7s$h>Z|uvJtnaV*k2B3`0q$7{}gXyB&0;HJ+FL9ga$D9@v zW()ck0S!-Twt*oDI02Fs;2|vpOv}g<5upD$zDHyLpF0AIy$x}yexz09j@Sp&9)5(h z5!Lwgzyihzk=L7>8qEz{YM;lTV|)IOt!ZazkfYxQ4jV|vGXge|F$4fsfXc0N1U91* zG~&oGqufq(!swJKiPo?8n5ydV zHWfVTqTTXO3sSBmvLUAP`%1?BGXhyrj0D>cm9q3weSTaBiI%Fky7VFj&q7D z$CX~?k>W3#!RwbZW!cZoDtMxA6>cTPu;hLbYlhm_usd@_%FbrJWNMFUESrvM-T0DN z$85O9B!!^B>Gc!e?wH$!TAaDkeku%?sgK(N%e6SZZ^s?W!yOR#ao~_c9&VMR83Mf| zcuE4E#w;>e1>4+mpl}XcQkh%tfVo2R@kdE3Le@a}p{An~10fc;W?m)o5Tg-DzA$P5 zOQbR!IBs}FQ9t#PHoJqo`$D~3NPVO8^Ir2u`muX;$<++F$~y6c%Ozf>&mCW}=U!vx zS#XH#bB<4sm#a82gslDS-V~GM+miTnDaW z1s+crgD8$aLOM_I5KrWmgL87L^%1gz;NhMTRvyM7ucI?e4nMw;QOdtqA{BOW5v33k zelYe(cg**zStacw(sHWa+2yA^1vBgszCHJ3?paUzwRov!+um5c+0EqBG_$mKJ%PGe zdYO0?_RYWXjt!czBHYUn8+edscX#)rM~{%FLqG)_fu{^??iimFa#&pS0Bfh!aNV92 zav!HE-Ju(Fy$<1yy0L%5xc`T-_l~Ff|NsAujBLqDkv$`nJ+d+*n=%R|*<{N|GRsPm zRmmz5%H|;B9J3OK>^dA}cI^GVpT_(3`ux7{&*k@h{_%SCI$j)|=i~W!+{f*9z4Kfo zC(IU?0%H*#-wEAmyp{_XmcGz5TNZ9Lf=nr&s8h3jDLRpN@QI|OCk1{ffw?kb@SNEDvHl65Bf8B!<@|S1{ zADdjdbQ3Xi&g<@0A|&$HKp2CEelFFo^j3`rI)ln|1>46Vd0j6$%HvuOAw#I%rBE;T zzR`=L-9=Dah27^XnqNQD!ptmRe(}!K#-;llWzpi59&Ob(?xiSEn#Wg^#0Wb-D06ru z7Qm}kGl^4q>C(hfH}$E2=lw~9^-m)`f8TTme%%RyG`$Fp@r*_tX{+s{H5Yn#hR^sr z^HuaJY(3E~zUO4E*KV;h%Ctr0n_4rC%X-`Any!$heG|){;ABt1&n2tAwruDkx6u@c1LDgL~kfZO#);!bcL^{&%8xFf$YUn?!4Dud7! zuZlzJavI>~CspMoXbaWtk|gtjG{hiIe@AAE?oVCeBAdHwJRFgQX?U^#$E6%4*6?Li z!V&3{IqJP-H8v2lPWn(LrD+{l@+FkcPiCkbIL)?=$DrGPupMH*w_@}dwNRp3lT9MP zsJxN8<9V2X?i>$11?vC>!<#yRhjYw+UVdUr9}MyMUU@XpE@)Zd+?0a?FhtekTWg>i z9tAlE{`5Kcro69qTe6_N{XE*M4%~Zz7m#EHE>amN2M}!|Px0Rmz0}yuO^M+6^wel6 zN^DQ1v3Ykz^U?+u*jn}3liJmj7#1y|v)^e$cNDfrF>5>YbxrO)i?ge%#)(?(biI7&I5~x8Y17;0P;0JL3E&m#P&>nO zTJRu9P$I?53Os^M5YAfD%vPYyAz5H6$SCc}^r{(!NU^OHszt z-Fa1^wga+f`ppxy^)-{*{K?X3&plpDb4s4>)mjR5R{8;7e8w^9b1zABo8Rt0b`Gq; zD>LQQI$gtg*D?iDQ4YliaKsXbzSAB|?YL%;Pd;)I9%yD!D;X$j6=L;4ix9DApDM#Y z_kIO9AX{Ikes4i1!=e0z*HRTI?>Rxlkn9R#D2vON<)HzIzhh{MwI4v3MzRC}A34+3 z#o2iTbTfP@(09bW`x`nCIgxDQ!x2CjtwTM8e_}pfvKMs1?*U^h>-kkZ>wUl$7(53c zJB9>Mj_n)hK0st3bES!3F2ZlE=OmLPmYQ-ml(L67;uX<>tp8l8mGz7s2ypj4DsV(H7}(<401@L3X_)`k6%5TO3bV_a1qHK_R@MZp*+eob#s ztJME!`{Uhl2m=IjzK$zZY1jyymeCyzY7X4rt%Wzh$V>-4zGSYer+LbTR={l*>ZVB1ok5+<1IPy#xLh zev92K&TjbYL68gyPYMb+n4C~g*YJDF+PHsl>|z+6dxqz$f=I?1$bjK~T!)u`eMsF| z@*A*%D)$2boTQg2QwG$ZW~mglF!Q4#O%Z&ygf>Z??gKA)cH7mmqxYkx^rluk$}v_4 zblc)K(?*H!Pv)9|vM7YARDfHmZ7)_)Fb-n#?`akjg5;AY8?cIQ)`lLtk+ z4^8XqiAB8XTIe<|_CMjlUAHiN{eb_1(dL|5JNO{n0f2gG#pBPxAF2H+G6bp+2U|G@ zC>H$BaqNCv1{hyZge8dMeHx0Obi+e8rZMxk_KLn?NJ$@+T?}}Avg)I4_;ZihgEOst#sp#N zABBF&jzL7#$pXerMd`#3e5>*$MT@lt^pp!mP3lF5IkEf)|HirO+iML`pRD@9(z)=G@Ox$U zs*%Oj;g|w{erUFdeQzDkMJw=V==;GLs`{5&jjA!$Hmo1N{?!7AK-9|oaEKL3z#-5Q z1{2Eca0Rx~b!1))5C6rRPM~<}U6Z+%3MOTUV6hMd;`#7I9KwcllZ@$9%TxE-P2%L5 zge5+xzcxzIzjwxqg>*2DX4>9CqP_2!&QY^2Wh%$3CKD;NtXs@>LUVO)3_7oUgxa?iP;r&0_A>)_O3m`%A*uQ@Z z79XoU7~08B_@M8Q1p#tw!C7Vkx1F7|XNJ$6z?}JY84n6U8xZ~6KY;rqVCZWzFM)yW&Wg}F`QoqWfJ-1)7 z@T4H-EajIh%HJywG2Gn|#R;BkEdGwjX7SgsLj~O)#G2YM8>YOP$|*QJ6)4V8(n!ba zJM*knR8*i$vfGMM(Y_cMjBw2Q|0>?$#iTP&oLTJg4GCB)U9JHr-ZT;GS`(}VzN#uv zLg20^@oK4!z@Xi5&-RIZ{GvXoQfEr&xErf-rFJ9XR=BJs`BLgDSBH3hj@7TDLR+Ns zlT~b1B$RLUF;VLnZdIk@LOE4rK`AXU3dVbG!Kuv0ak9@t^D(clO)|#tuB}<-uuQJ3 z>DjB;bZat&a1f63{L^TW8v>rEFSze$K!^c_ltE@Z5f=1zpK6Ao!3`0V;XnP?;v;+3 z4i&>-+Zx+Sg>!4VE3Fjta==a!6%}O%ZY0PZ`BFYAGyUF6&t0Y9Yzo@y#UrAZg86Il z!hZa9lx9r%8JU1X(PIn$xp%_TDVI$1Gk)}y@nC!IN!&MvUV7y6i|v^T3|pdP2}&oR zoG#=$+cZva5$Xg<@Jav@BNB)vQsDP`8H!IXT9;ruedyxo`BZpMc4XTme>>&d=g?+O z-F;Kh$X$A;oDr^2(UelHXId?9m+zWP%;h+#>bJ(5>{=K^x6}v|B%goP3QD4Vd`S?b zZ+JvLJ_Q)7lTPdM0gyjf?(x(@5OTZr#r8=Glo>zVfMg$4^y8h*e0zcg&%T%_XCk7Q zOxVLW#QaUUvu%`jTb^+_T{Z^tbVu8_2l5tfe!d@*BA2^gf4u*y+|L!k9W;p~4Jof4 z-;zll+bp3a^Sj-8r4;8cOSxbb(XjHNq{^)Ngu8>ABSjov;%gknyY+09e8OB{P)gs0 zMSA*DD(Tbc6LNlbPcQU$$9caP*swXZDsqQIZ3{iMMCqrftE2NlwJ&~x5$d&+I`dSL zA5{@xWy51V@B$|Y>FX;6Pn|jeIAZ9OU42cJV*uMHqe+;-gSSUpQd9(LZO>(`DrfW3 zs)S(lMQ@aTDk-(a>VFa|;lDg*IxF_6#5P5Lya5x@8{AlSgla2EK42+*EAiArgP2?; zb=7;EhnKG&o{rMmhwOgZ5^Mv^hy34jxjzH$?KYGbvIBnzItD_pZ4Xrxh-MZ_-&R%v zEQ{*6%rZDVXgrSoUMU1`wrG~CM!mWK)UgiD1r|1#`~cge1wfY}k{BEu1Uw8hQsGd* ziw5ENhxU(<{XAg1tKqypSeV#9wOjUg*-?cOhJeBx;D&bba9^j33bOHJOz^qr%P+i* zjim_6fS?dq46Y!{D+Of>B>Yg;?PRF~V$8vEl=5BqTfcv=u$C#YrU@|e#g{=ShR64P zE;PifL&e^zA<)OkNzk5(qlNgWep;!{TEo6V@DbS*%TOsF>lGcZ%8L3MS&^Rkn1}PQ zuVUCduK7RTy5D!p`u3|}w(>L^j(~SLvkg!S-#_G^?}1J9?phN*j2yXs)B5$Uz}Xbl z8y+XqzXv63(~(35BPl$H6cRnm30S`6wz|Pi!=LFvWRE9o?35mCi>=x3ZUPMmxWAn& zK_KwNv+4mGN7b(-|IBJ$e_|`uJ zw0YyGAFC##5#C6Hu&9Lq+s5Vx*$mTccfCf`R~N%lN*U*gmedc#bf^^i`;AiA+Y$)g z6SBMf6Ac)?``|uOd0%|+nHt%gx4#ecn==RW55Qu*vwi;W+TA2yK6UC;d>Le%*CkjH zQDx&MP4bR^zS_KLbH1cd0Qu=>b0gleiN8dU0|fM+a_$x>M_OFFR2)v@xYy{Hs+hQv zXnOrkSJJ{)3@PTgy;sCX{&$HZ@f;)SE-IYZD%+I0i;dwG9lZl;XIuN8{s;19ix_C{*wIICLzJeTS_|f z0N7Rnx;13+mr|x~%R&_!ufqP*Z3;n1heM$g>M8n-wZW#b`KYBM3}Rb5ik5;)Y0f|R zjPI^gH?KEokc-=Hog(&Ad|pu$f^vuDAIzJX<|hWh2wl=n_&@9oTkTelBoS+6oI&T_j=*1xxQ zcgOC{Y(JHEKZPFcZHQ1S={l(-jG{J4wmhY4V&%7@6XQ@RLK6XLqxW`^)(7i+IoB}uFA+yn1Xc~y zLmL8Tu-ZqtC7oSobz3_2BM<+(MIiRGZUbsffQMIJ-m!*6ZguC>@B2@1W#z&!QV_Q)t2XX?pCvEbH#L=B zE-KdLfN+4=7>fdHS+K>Pig^6fHUjkulh<3+rsjvBN;dg zN|pV$Yo6GjtYb6@RMaBPe?aEUzvkSV95>DOSa1wF7uA~rWyEYc^G6|T(3~9n3cNBv zI<^nN_UE>@LW#TIQ#Fj=1s)8WTc$a?p_jV9>CCsD@XDJm8Ac70>AOun8OcI-oc-o$ z>TP!mD|$U_v-Ly^I1??$wyc}IxjMDcdqe zN=sD&d3?{b7szqIZ(lMJooT>@zF*^*UVVQ;sh$8*mkD0_k1x4wikSl2S}l|$f8aVtahGEfMB+HSGiJI|J^1OLa6XZvg?1SnJ}qGA2fn20 zgyf%ZXl}{*K&&pn>FvD6I_oH<7V0Y}JN8zlN~e*~e3|c($M8X?G4Qic|hf_kTLQ^E9%p5X7G`Q9&t58S7);D}$) zMEGMO5%04lJgqK+>@^|7Pd*@P!KyWh_LFd!Jr zv3DUwoA7gCt9D+O$C1mn?LkWz9?_z2(AQE^p^2#9K)R8X$BcEiUMi3M`Y0_Y&HY@X z73PAo^o%MoK^P(2#~OS!8k%>0U`ycu*AOWU^I16Gg_@4YXM{L=PTH=4o{6U;l~xU5 zovr{esSTCXXjS5H3`y)_$jJPlE4D(QDxAfvhH2Z`i#b-asAT&lKRl1<4}3HcT~ioR zuEoo(8R^0cemx7LhE%uEG0xN;wCOUWi*~VW9)3^etlzFuhx+*+J&}S*iDpZ6e&gqs zYt(sS(x-1phWcWF>1V{G6!f7q##Q@TES3n={{*CQFC!cC^Jl;;0L_kIkPEaP?BKe@ zswyklAydX@u$!R?&_=~$-Q8b)r-$Iw3+hwz(#o<>pSsPWeaBlBM+d^&@5B zok4U@RJZ1c_Yy`?K?(Io4Kcp-X~1+zc#fDg7bxY2U+zVybEJe8v9`?tw;xWuwE{1G zVV&fp_|=1whTUNsiY28MWnZD6+Aw#}07eXukOT91!0)dpAojyA^75}+{tI%2e_jOv zLPf{#b zT1+%T!0Y?NetCy@WKCq3J#yZ0MyMzKBB}nqlvuu{Xhn?uMJJ_i(I2y%ZA%-mx7~5t~h*YFWp>b9RSSGc?1LM>FC1wXv*T`NDmpCEocw7xn;!@Vj^mTMvU zK%QRv&F|);<6+N_$Ny#@aI@J7$L|sJHGi#&dCo97!0P`2b+R?`yg8=!E9|5xvWdIM z23(fkG@HYAuv#Ob{rqsC()FFQ_3}TH!8X|G28n!qERE5_)d3~T}Bp!Gz|0% zVpZY(7Z(K_{Kj_M9ji-=kKwGhIL&;O3b}0R&FuI&0=VqPPNI)!it?TlWjOiO&A-e# zM?}TM>B2^x2XW2IJJn<*k&TU8B3qm$g~d0TI7|7fGQ$Omrxjd;G&Y{khL{AT4)J0- zuBqOmCwVwDtQz`A`|sKJg=rfk=b(_X+C{+RC?_{JcIZkpg%daIixCAsLrr@%69ubw zhEPX;)oUXt&8h9V)t9WvDJhkXS+lRFz}Y*Li)ZWMz8-T5iP0VOtY)0Iiussj{5gk( z-|~&Yd8NHR4Tkc}@craTyHUm@!pG`L25TVciz^Cc5<=!3Lh^95^$ChM@n7Y9%oERf z^Pfn%ktjH3qM_>T+wKhMzPST8d~@O+b;t(Z;fKGx9>esOUsocLl2UjM@L&L3a*M{y z(z0k};rCYvNV+t`mY@@tCTjhhjUvo-rv57Kuus70j9%4jC;Ss+uEEVDgAuo!krq)&sZ8<O)FGk<3eiQ>%uP>_p;@Pei8mttk~Xk23}YFc5)4>|aTh{=&inp4til zKpnJ?5uu@TMW!-1!KSEB$1jtwRkUMz$Z!q}XVWn#9oJOeW>l<~1Zr+c1u<-MEvvp) zI6KAN38mmQ+QL%$u21YY|gj)%-YpwxrDZ~#?<;P#K zyCj={CdE$zgl5i#3uJqovmk82laQ`;J&Kf*`u)EVY$hXoCZVD=4kqI)aWgBc-La*R zDqvN@8--3qGUF$|5tGr3-s-;qrARkuf<9*z`u)AnYw1bKS4=v*%^Mi7tgZhIF~Uxk+wI-e;{?9%*wNyIIyaw<_y^LJZlqjj?=PD-Fh4 zFACc^DMtk%i9{4nnyq@Hjps+O*o1W@{S?qxL)wHeh&(O=IvD-YE`E=t2&q zJe)+6CTCjLv|kul{Q2Vs(^bW)LXy$$#Abq|Sf-96-$S=AS!=XfO9Uiyd|4974?>^_ z&O^(PB5gzilk77}pKdDv+}M`;^XlwM!{4}`;4ywu&#w#irhjM8ZX=aFO9wrF zONEsL*5y{A$wO`ze9=Wz?@I~ZeR7bNLC>CFS1o#|nzCSQrJJcksc23rTG{Fu>1r3? zk7ewWJqUnD%#C>QYjo7f%d>5@XG^$j6pVikeq9%QRF!gSb=0sm4mD5{r<R+$~T1v?Uity zYsMMckwN_Wt6-LCgnVc4UAnf0y-lnH7X{oZXH4s22|>@ggP`~@cMoHw=Y>tZ!lDVw z?u6K4@mCOjEegA4&}?_U0AbH{bmdK#X7j z5vlq2=|LXRg?4&#w{ITKZ8b-7>x@V8H`-=<#XscgXA7od(5~(&Y3&AuuG|?5ZFyrd zmqT!|!4bU%HhdFd>W$1R7cV5SjLDAfoaDmwa=Pp9@faLiA#YI13)}?LkPr1Tsn7@2 z7)MgM?p%LQDb~pgzk2*HDW28$pJ4fqsQ}u+39`!sp0OKf`V^`cev+8)uz!EfvDlD5 zh2)(;>SZuF1op9QyAu+qtA{!nfu1sn9})5=vcpLK=iVOuHFX1j1GNZ$M{F7>kuu7> zl1IhbXyw9vPWDXY%sNARL07Jwbkvh=0>$;V8q?m;*tIK|L+)iMu+h%k9ALF)Sd_W3 zE?=d%GNG{HqBvH_zqkS!T5qUtUnA1>+#otBXj1fnMPGZ5Q0VgwJ~!g>$i|Ja0#CO2 zALz6l3bZ~yO+?UW8|&n#JtRqXvczS_5`*HAYNw|-8RXYn-8r!(b5&14!0O=C2C~NL zBl4*&QiwULR$QkxyJ4t_P`#ND3Jr-|^+{FLPP>08`kqB9c|pbM2;-z0szm$7DYLB$ zo>Q@&-8<*cdN2vKPJG(E2~7`z39bd~&#dX>i0`O~Qk1O!IZzbKt>3xCDw z_Jv9rUiIu9iG;`$%ZM zRaCu1Q83urXQ`lR)kl z*;cb?g>Kk9gV9&7FRgaGyP4=|WxI+jKjT*QRiFJ}Km)7`>vQqd;S-(!p1qJb?!~`9E>I}{x9CfkihE{?qyB++;_WQ@n z^AcO6AT)PkzayAg6dVCXWQU2h7G8CG1!g~uuYuQhPvbK;1_@QP-dAsV$G+&LB$Dg! zdPtPYu}`^L@x%J?-R}_M*5%E2<+qWP>jlN4(_VGadN`icw)J}(j}&9F#~KIRQ{ayO z;sTUwSsnf0gfCh;x83yMhLGS$3C|+o3nP1b?(xlwNj=vk)AfuQ_U3#fzKexPJMH#AiSl=t+SsGX z1zuNMTU&e?RAdFl3rTw)2G`xyTe_a;PMFxP&@v=9ObW%Lj(fr8D+1d{1wn(Q_%f)l zPqb~)7G@#!oZGAF=nS|50v&D5CN^k&E+$& ztdw4v7)tJ~PjVnsghuSd2C^mpp#QWlyg#r-0Lt<5nvl6NcW-;YoGAQ$JDxx*(mN>1EB}YQ zppcMVJn$C~uX`p&Y$8{pdDMkO{c&VYdkSL^@8hDL7|bL56+xL+QvX|-#`kdO&sO?^ z;McGuc;e1cz~K>nLf)5Wp>_-`GFWBDUN$DQ76|673=IuG@l|@FJ56VqFDk&UTF<@; zKAcyP*>#2mg9EYh0arXs-{kr)m}QosZpU@5VLkFj9Zc(lOE~p1*Sk|QQ+AFDcf7nV z=DS~U>!JZvDk5!)%fFrX8DL5aK=+3lx*lxgM|DKAC7zlcNqFhIzmkBcix~+M-eRVl zstJ$r9;=Cn9oR@+s-N2}sHO;`D1RR6@yP#?r=R_r;;waBE><0@+{RD8K_%4t`m5Ar z@8>n~XCb@9EJ4d_nvD{t+W~ayU1O!D7O}>^Dirl0v{}%C&_*^T zVD0&)(~a{W;|2LNbQym#xAFOa*&URI@nti=uIeb`bKoc8j5=QKw`5~N`xv;4erxyX zCnL1=ecFdA)-EJ3wB>p*t}>N3 zx^@0Af~64f(TXy#--n@^deKF>Fna&lv3>PwRsXWil8yh9_`D@L#NIL37FE-CV(3pmXu1jeV}eDKe&+g|h8$A<;DtBGQk z&2oa7@`o$cBkLn=Le$Oa*HZYO4J$nqzZ(*nTYXf!`V0M(&b&$Q!`(6(oyc|{EY|mK^qw(8rylJJgGclq7SA`Bx8n9U~@pWYS>VmPt7zn zXY~ANz3Urb@%l-_kh>dJ;bRa(+I0<#8q_h8s>3q-*K=Ri%=Q{;<3eCZ9?IT8Nit4U zOpf}D9s0S)TmT9SWRSrFE8pP7aCO?)D@4onHpew~4dK256cN&^ocq`_!$VQK;f;+W$t%PyXl9IQV zNE5qylZNFV`g(ft!!kIkbQ5ej6ruJR&JF%-_*+ ziLw5~Q`4%S6(VNxCO1)|f0VR@;r80xT(w=zdQB^pM_KfP3{zcwEvAB^zGGj0>|!zE zq7`*n=I__&F!O$1nO29>Wl)*&hooKj-af3+&-Cq`^<6OZ8>~p+n3J#%ok}k4#99@s zdN<5|Rlim8xu-@A<;ELCK3FkZuLQf-DYp+>sIJU|`M|Ky=o(6`@gTd56VhHdQLoop z9wBM|=BFdK<&q~}>i)cwlKSNxFS$FJV-}2ma9k3sIpWr z?WQ<~RYl@DS$!DlzMj@1eE@dSieVA^;!?@6(rs%dcU2Y9W14)yjQAxZO0q>p&a%F@o`t53y8x`p`*B@_86u`1|;Bx-_5=6?>g ze=U`NUWAj595TJm3W&JVMJEWV!xd#ht9Q>c8r;ns?G5gA_iGU84d^X-J=R%PiEQPiC{rR z;~SNJW_vZF3{8p;9HNv_@3@+`qN@iPk~gx&O6+HRbxU5-6?gUqsF7YyYaS+{b5X_3 zYjE?NTIJd^TD&rF;~DcL$>YfrUuns;W3pDNuYXyK=<(r4bZsf{?p(a@d8#a;@Q)OY z>eOlyS3&-17`ZW9==p^%JEKD=*rF6VSalC^wXm`f}n_(X8j87&pIi?2K@M4qrlTwaw4Gv#UAucAyF_pyNZHE4a@;v!Wo5qfhKJ zCN^*&2s8OtV)(xuKTzM-2(YzF6KL)X$(op!V;CQ1!vvBq*0m1fMp;?|;zw7n1f-r= zd2G3mNxmRwKOx(Dg=8iqW5Jq#A%&sKbf#*=%JCUmI_KI!)m-t%A1_Nquk7rU#{Ft- z+@^{z%W4y49u3$op-uNDMhEr5w;OMxRQ(stz~q7;b9>Zik=;j=ZL#=eV^N`Gt^r$r z6yt4nP36!}(wW6Wp2Th#Ouq*dxb0%HLMY`dl^3g?h&~sRU+Ldm;0}EEfsLggU6-@* zW}A(zqad85#9gd~Y9OaEx@3p-%ZtaHqr8m)sTXHc$5+toi&}|4&~`T|e`&o>$uNA$ zeVPk3m%k?bq<&bJ7u7}C{RLZz>?kt2qHiO7-sc;X$eG;Sn5ma+rXUUhEqaambLzIM)@LFeo&R!6% zW>KZC`n-;JiMSrP61&jL*R3TAmRPc}rJLlAA}A#Xr3Hxi0rsfJ-BfY>39sT=SX={7A%17MOW=O* z`bK_8gQUF+sMAVEMWN>N6XZa*-IMN$3b%LRE%A?vAEwbxf_D?$*6#AY&b(T5{CY)l z{R@(@F9>M6$!Ttp*jB$#&8}q@E%LDD=p9@;R|7w(Tr}T-O`=`0o$qrcN^<d$vU?9tVr@ig~0P!!oB#jU-6+=6|?Qy!B=viJUwEt0C#_IBx3dtzj;`k9F-JI+&e zbYE+&N(i$BMNX?+-@Lnen13aY5#BqJX_5iYt0+u9 zH=ADG9ywSDhG%HpvR$`BZb?=@3WmP4!Q1?>0tWqI(8j@aCodWO$u$D zd_BoC9FrQyvtVbI`3U<+O(~!|eMF<;US(&-LRzEY;&w>*>+44h!_Q|&rAP>lYU&k=L#e{l&jn@H1Y8IdN!cDk63Zmq*DbWh86)4SSn_IsMcl9D*3X6b1h`Z~Ph)x9p_;3FlbHn3s+sb;JF8uEkBu^UzJ zKzaP7MflIo0W6S{r^###ReHjuFRsryf7xnb{B~!oaQii`cL{JQ)&+#}jwkE%n_rh~ z|LEyB{BAMJ(Lt=rJK_q1aTY@*ipbl%k&h+l!h)|&$rW@zGdjgM}&Ojr#qt9vkW$&tdynq z2N1eB6P>hs=K3hzM=x4wDkivr#r7X;31~b1U`t3lL(a~9J=*cqR!~ftZrH^Zzw;lz zzIT2ue(|_4DkX0;nc76u2O^K9+o0_hBDpR%cEv0?%}P|5Lr3aE0*E^SoKbUKHzO4T z)w|e!hs5>N5skhveVlkB!98~1$ZZ`F<-O>5H9 zTB%nTD9r?tQw^Fy9NL;CWFUI~i^lr>;CJp2xX*l}fmYIWb4$?&y`}CQ_cJcff;SDgmX7zl8$9~G>S+p6`pqYt zO4&Xow_sB`Df#l@nrx?kz!d*oG4wwldCc7L%@0AJS3+p&d28)39y{Y}w3;}%%mzm< z;!@X4w(8yhKDZe>?~%TqV(UXhRY^&%3;HFJQ(49jt@+t@`!}Zq3NuO&MdZ(OpR3>yL_oic|_^eH(2tT`8(b&B?(0pZ_ed$ z8TQVJAenAqskO&to3FR^-=)-OvL0kG_)Wb$y_dvX50_l&i{IMuvBk}j7Vay!?hf|R2Gm_1V zvv?f4*J>HOJ?h+>2386IM(VNredNQJu!&HZJ)e9xMB9>|Q+}VK>hxOrwEpeu?8bY#oV3eyC;nMrZ~rP!F#l^Pz?C!8blF5F zh8RB3CZfLfw~klLXgTr%a$k-zHs^OLo2(36j!NmM{+u8$+)31DSk*CO>Ob?!dUQ>o zk#9)8?@PYK&RDke;=8hjaOX66W0`*04$;bk9ottW4ALI@qdtnx*z{WcSYIa4B2mm# zvsy79yYfIZFty{%kW7|Uf$&Z(7KJSW4}6nzZR1KHY0xviv=9%PPp>-Mpq21jXKCYz zd37PoDx7PGl*d;1Vq(2$VRv1c5tcRTC4TO^)50_^Owe#6S7B zNyRaa^DKOYyC=cojFnsXI>?C}?R}B^u7sF%jQ6(t;D(MAJjwz2y`#NlcJ;e6WhD_9 zz1Md|zMrlF7*>W1lQ62TgwwH%y&s?0;!F7NLJvX^5e}W&HU+~;!P%F1&W7W64!t(C zYw9&ko^Q9-3)3Dwn(>kqZW>{;n0VDs#L{_$@tGC%+Fmu6{BFd8LIQDpr@hWN%g2A% z15o_3Vkg`50Q#aTf<*4H=|DWia`z6g16%r(Hpbl_6Qeb5_vZUXLyGId3*!6OE@@@Z-ypwQt`(3^?S^WRy@FEO?f2oA+Q_m=6$E1|XB9kgU4DpQ1Q^ zR;2;s97a1`5`E@9_kS=}&mv*88vZ&t@n2I@V1Lm)CN3ohR{e7$@})2G*Par63Aj-j z(6TPggf**iyJ9f3{v&E-fW?49L3S{keg3TV)}8la?l*2E&NpYPmVOdl{Bms4g@WZ% z#Er_0TEh7`tFt2w9gF!@rEm5lM7B1JZujl1hZv#cjry9eD$^D;iQ&dH1%=lB*!j%iGR4kvSq8D{f=M zaDz7hON>1>>C^ch$?ntU!x}v8o8;ph(D3nnauViMR075E$$=;pntQ>`hR4-DbDn;f zi!lyE2V_49KxWcS+Jkx*Z&Ufd5{bav9|aR{AtFXj93b-$^ODfe?8bWiEHQbx#H-!+ z+}2A!`Gp^4`jlz!!=THWRLi7a+O#pQ46!^8n`8#c=8{cO5>&)uGKZ6-p{?C#45`ZB z_xeXq=>A_NYVe4W132ShrtI>%Ro#o8B5$MbL4fobzXH!_xbFPXfF2#{YZ5QF(@C!< zOgK07suk)rGh&@oVt%e-_JPxxvYlFW3R1euxAj z-^FM4mQ%tu@=2E2EZIEZT7T(mTBeqTcJ^`N71lA?t9#_94~+Txi0XM!gr6RTg5em! z4Z%L1g!%ipkCkpJcs?cdkliOaoQk8f?Tp7+0z&Wy0?L)=ST1&^0N!CTSd9lwj zohB2Ws*S$yi?R_oye#r!M+ZTo_;3Jyw&SS;)m~a0PyJg7?r-taMwn}129XMs%T57Y z@GRrs>i=Qm$LD};XUUXKN!GbI?3M46Ced&YO=Zpp^g87EPHuHOq@DHFdXdP)`}{UvfeqC(xYj$%)40}fge;WA_9>b^cS3z2gEk5kE{ z`OUB9Tf;8eu-GfaI=^Fshmf}q&YEro&0BvNf^cv{Q!Pef4gD*Z&^HnSBXXSBN`?7A7n>2nB-Rr2^LIpGmY)$fL4 z$AA9W;%k0#GbL#XW~SNR#&AnGqS~PKjQrh#{uSH*nm&r(SGP$2YdhI{GNS3YzsAhv z*_4Tbn_=m)aJR<^%dM>tbR*8R>(3fytkGvfYp_qWaojh`=4KlL=T)uZ!-^-&i=M7L zIjsDmBaL6;nvc_)+}X6DqFach)yu>v#rObB*THh_yB6y!ExJNF^Qt0IaeD%>fG5I> z*8lH#c_=MOx24o>h84O1bd(DwPa4ifaiR)+!`|k~^S8q19)EmCGZ}4*e`Ck-^mIL( zZ+w-ve8+>I$rk!0MCWMkiS(Hp;4oYs7(=9HYwrTr+~B7Gy#ZE>^P-^On8T2>e%Io8yoDU{5u(!c#4^3|nC>%`DhWf*Vgl##im)=R*DB5N5{lzY>AoR(B@|Y`W zf3*OFHle2chu3f(UaYd_!!GOjWeCpm+J~z?h2aK0(lS9#(?qvw(l|lsLG)~gY^i~|Ycf^NuSf<4RV9DWb)T_2Ca}ey$NPRx_lvO6 zIN7Gde*7;CXRt^z-6TUfQRLO%TvOhU_uoH0b-7Xm#>7`w`-9{aU}WWMZ2&$X;|TTu z!Za{ls$M(p<9~4&oB_>f{Inn#^=BXduBvJR@VNlOyFFjlalQL7JysUK4Z@{0trjx| zVBs$#BV^Ra918r}Ex@%6zFZ*dINm!lmn*fau3 z1ZLZb-Fx<@`&NjGA^=o;6U*G^B8H7ME71;?3dc6|z<_u=DJ{E|$?AY5MB+3or zzu%nz^^i7HH59Dy;_WuK*9Jh(3%=XAIQ($0%kB+rEHG>-XDt;h%I@)HFm5ttXC40O z1VR7hN*4gTXhlPZqV2L>nly4lcA689xsv;Y|36N)+`7ESHU0h4&za&O+0c~9qB zrdMo5|8$1a`1p^CP!w=w1(KT!Grt315=Jh988A5^rT!g}`_mR7%EU87FDEjuP=$bb zGuI~PrxC#nd`{LuK|8>D*agx*UM)Rwu)jg8xcUL6ZEhkCb`W!ObDA(Z1@IG>GJsX; z26Ev)V-_ZN*Z<&@V9-1seO;r7pLPZVRTvV0xiz!P!cqS()e_wo%&QQ`y$&^lUGIAC zkD!q)K2m30=c}=Os7mZuN8>%?!Po2CI5uJq)oF|M_pkRS0~bco>1HM-7L<3Sq@>0b+#-WBh0;{_dO4GHS$@Pz`huhb zrsPI%`|xoluSCP#$<(wo$#$SS!7^Z8xFJ5>%>oP)KwUXDEGV=9F;a{u+k?;I z@}+1~!|pdW)OMkQ(U*WYR9x)h=62pPpA~**(+L?4qWWndIt0N;r%YQ`u$TkI$o0S* zEYdsc3xM(H03Z=L_BueRz5v`U07f14q)SGPU|*Fs-W(Y7G%K|k1O4}MJ58dJ4afhf z?aRZl>iV{?D3!=iQi!@L6eT4?gk)$k)SWRyp-h=GUxo%lhTM`06`_(@ky#=#gk+v6 zB6Bik`p&KH`+1-Dd%ov*-{W|`>#y4F_Fj9f-}=q#JRMs~-NpyHqYK%UZk8Ub&#)>M zT@d_Je0z|Bpw$|dpG6;^yDz<(kRY1Gw~38+EBCjyv=9ta!2H@BUb&u4sQ=?JhIT-R z;AB5|Z96xyvIcTVb#(X(UUpUaQit=qC7U~xfAyGq?5yx6y#d=5AY{8^qi=^vx@Ir* zttL=sz{NqJfD)VH`nr7={K2@{(AX$)=#X`%h3nIoFVD8w?z_(};g~WrIW=XUKou92 znJF4v)>X+=1mK$kp>ziP-3}&&-bQD6?-v$Ko-RFBLLZ%(*%VfrhR*b>3yPXDNk$jY z(gVF{BIQ??x=-9-2*)!Tcs5*+=MLVzd-sXX@NN~Uo`{ND=00%8r*Naap+hMz#cwV zVL|4Ao9?IAnQHJJ{Vm5N{3s#I*hp51bnyuZX#h|MW?tDFqpp$^fFaXqSKpK{Y}=3a zAL5kz6}!)5f=07$-KL12&% z3t?tynGv=*!Ts=kKO=wh&iqFRxOq7Y1D&;+c$g<8E;>maG)Qo@@H1rFuX#pkQ{$kN zp|8uDr_H)aQ-QtF+dS~nq4Uwm2-W!Ky<13 zhqcqY8EFSM%y@axP^c{LEUcvfAa#Ws71x&qOINBlF4Gnv%3Z-fBoxKxHq3nedYQOs za_u~LO}?+q-I6bPP1)7M$bSJ40d649TluHLs zbo|Dp#@QfA{>yH|>5cd9-kk?ofGbWp5ZJK8$q-RE(owiJh%RmKY#2qL1y>R zw#vlZ9LGOgV8(}`f0yrUvsH#NAL}lvul?QI?cwwyg1UOMI1aeGPegMq3>itC2fr>D zzK4^ihnj6cnOQY`5a%{ZhJT$<0k>`Fhx_iXR)CJzwJF;r=nvpr;wP;sxe}G9Ker!K z66?JS-Ek4rb+Blfm@SxXTOd~3#^>J;326rj0YNYah8aMQwF7Yt6yBNpHvZL!&N~Z$ zcL^fi9}^opo&0X!_WGA69*`_+lZS&&Q@?&@=zX4wb;czR$FTbfD!iYFZno*$6Hi*1 zbRy#f=gXAC>vo1~DkO7C`WCC}KbJ|3ilCG-*XP`Vm&OZv9{z^sB;wrrZ-0Ols zJYx7;^A(r-|HQZ;x)&UK5Jz|Y?9p43ds36`$1M?lUgNGeq&QR-t{ zQXQCe8Y36Suf(W~=$`L7=`_CmRAKpjIKsSRB+G+K8^>6>_IBq#-U$3>0@5D-4>Nq;BIMz{Z~ULYc2w(RuIimZOTD|(fdq!&)C$MzNQJh|4{ zbJwzX^^q|S$Jy=LfxQkqCo;wA6+Wj23kFhVxlVOPuAAx=7qL28x{F2Q0O!ksf227B zSN#eq=;0a=MfBcF9vQoytZK2Nt64R(Q)n!FchZi)q&NN?PHP16^(o92N&@*x?{1H9 zh?l7|aP0!^d`V7YXpc^(-tp37Us?ZZeE-|g|20dqTe~*!`GQ%&>qie=(J9^)9e2hK zsy=rIs@^+Juc^)G2`$fUyjC6V7b^5u=t237%fDHx|9263oc?kb!}ezK;!*WY*oiD>hR6>o^6(P+ZZBlWTo~xV16l%LoSs?YSy6& z#nsqRT9SuM^mr{}!T#U9^+@{2)m4;wwm#UJ$*%3nLNb{Avi)9@So4=^?a_RDwk#{H zlp-;)WYrY(eNLx-J%io|3`!)&QYkJzNAT6t+ zZ-h_!tFTYgaE-w;)WRy5zK3a*Be%|(wr5;Tbd*BI;$+Eu#Ik7{8-qpUV+1+>s_q5K zfrDVL6cyQ%Wcfdtns-H~U*%P8{-E+AW0%nZo{LnJuRm>)!;YL{PI^tI7BS-O3Cy|1 zDQ+dBdPv&scts$XOu!jH?ry(OMgR@OJbhPnBJXTRV@Iy+L~WzxEu9pv^G24MG6XzT zYv1dprLEtR#n0Sr67zJim4BZv=-+F9w@H&uT{U_cqQFnifA7S-wD~n_fN)KB44oQh z@A`fABysr((afa0n+wWu_E0X2pt(7I=E?jHhs!%p%Wv&^yAE=sY`DD9-jkfWPA z&lpa;rRTK1V70kKK}B<=uLo}t_l1gcE8qD_r*5KsdbUL-(eqQ@2{-q)P9WucyJL|h zRyjAR?mSXfne}aZZ?MbAG!^NuQy9`jQ8Pf{nELI>nDR8Upse!4GcxH@rh3J}>(3pX zR%ss$R?k^IdRO}S$85fns??<1K(c*$w|DwmQ*W|;_E;a;J}FnFxx=oS<*R+;%JUaj zCx@6OhYi-Kiu#+1*IAm+vwiO++lO3gXIn^$f8?SYdtJBr8s%s4M)!UCedT6P<96#m zXZ3CRcAaeR{KV(c{WG5VZ)ctMjdQHfh3WaJIy_rq%9pC{cd*{BJA6e)aBW>ZcV2b` zIMY>mR2^no2hOZ?v?Lb{dXkdCmH?(4U3nIOO5?}I{(F>rM8Os!od zH^dgp>yRGOw0BcQgn`3h_k{hSgBpqL_v?GrpRuIQ)mBxvi#RQ9P15mCICChcrJXzS zWtH6)c`K`wdeiz;TGzadv+C>Rh9+c~#C25ODG6*${c#}fqloC6O1VRF9*v$-s~ugH zd9?U9y=s0K99(N9P%~4vpsqGNYd`wVQ7?A$=q=}YkthR?>OVnA9Lk)PG-PM}a?{&O5fxemzp8Lru}t44q!x zl|k8AFvq^UpxI-Uq|tD9`a#we9Tl;^&iG3k9Q#$4UzT5DwF!atIQ+t3*4mTzjKU++ z0_pl05vsZ%W_S7;pEK{0gk$NyZvQQ3-(#{JqhCB27GE93k{bTARBKxC=NOpFt z9aBz;j$rFLjCx%sKSb1Fk*z_%x5;UXYCk(iR_U>ojyjB8llrL|A1>P}Dc$a%{w}bn zLf<69)MaP^wUe1c!Wiq}S{n z&h6Z-I?(UQV=s8EJ3N!bNve~<{6`8u@Ww#=~W<#=QWOv{=|T0o zGR_NFg#v{aZk{PzpVhyf8$SQm1yP#mc9qc;Bk(0(q$k;)q{5)RA^nGSp1OdoI}2?L zZk%DjB-Wi^;VByAGfQENoHx!%uc)@{}zcsdW&xCv@Yw?{FR5zSE|a&Ud$!=jC?$G z$+ns`pC37vfBQ007t=lnsI=b3RO(27ulVT^v-!T`-DVG5F!}=+{p5`Dy|IWLp2-(S zR*<@GX#5iEf0|!nq+xkSu)cyy@Yh@$>H1Gd%*5(PA({T#zB5f9IKsHZ%*YsdonKGiCN&#-kFJIrqgn&B4Ao_Ii$+ielc=+xxv!R#_uaExN{WazHh2^=G}p zqM~%$J2>-d5ak?PtS=Z|8GvlJ%{I08L!zP@vgnG{1&I5!)%@{g8&FwM@#SWWh$cV2 zicDU$Y8CPc&J6DZSJKdUd3*Qu^&ufQaAcE|{(;cK!a~^?!0AUuN{@EWFx`0jF-p!4 z7o(!cdG9~7lF4L=(bLPboN%U*QMLcY6&!Z{2!bb4SL1-7)*sE-xRFP#VX%qcf3<-B z?Se1P6%8odPhs4AGGqdzRf9N(ST;4Kcp_XC$ zJcTDT-bEMpZ=T@vbT6x}c98s9IemaTcbaA6Mx4OB<c}9Pn7r_5 zx+2`+Bw$eJf;4!J^JLuE+EF{28`sv3zFHi0ppL9@1iLn1=k}7pr=6z3@652;SOcWC z$P+#HNzi=t3`y+eYe=`~rs{k8ARuRtmJj&kA}U>U7!W2n?I>r6Fx!3cN5mxO`mPQC zPSFt)_^+0ywRA;*qP~8VJ>LxSBkTc`6W;QmJ+Wf=N za)yTI){d#&jQ8?Tj8D6Z? zw{PFpdq;ypli(c8wEhCGBkS?|K(5YQryn2{PE<3)S978^f((5gny=vxQV~cYg8U+t^O_W?v zP*BxlBy*OK@*K9$fz7R~4Dj<4zuNy1j8P(vV;4rZuI;+Ehnpgnnwr}3K2w}qVxAEj ze3ApjEP#sc4?PXgG-7>Fix~%Zh}}q=7$4st*V2slt5%>tr%x<`GX=QYZXg~3_pVTQ zr5?&0DACw)NU7}2Y3F2TpPTKAP;Ve|M38to1_r&ChGj@jL&YysphDy@r+`Y2HxZF` zcr!m<$rTdt)bM+J@xF^=0< zH_N7!Zd4q?1r6j)OaNnhs4lI^$3T;QpXSKBA5~aaaqy$n=*`56SL-=lhW}3^(%Tp+nfb12A%d4y10g?Z=jY#_@_8`#HkXvHiV7nW69kdL$UsHqBa-#KZw_|;u<*Ezj6d^+4eMxWVNKhT zFE<(*8bU$d^!A<}sIN%RLm3UQwVQ%o8CClpcXL~W@X8wYe|(bEp2o$%B{?KEjHi#fujo`icPy({xde+l7TP!DT%cMJ)X{$68_m0H?K^m$x58B5I$H&YiRT6m!ePD84={ zG*nYVqks4eReHKAhTVI6PZzHPb1X723LM6aTB_UtDB zNCs{d-^9f9y>Oj?aX^ToBU25nhhX;;UqGYaA0bAPJLLUi6BvkBAH;rFOVZ8)&glBB zhd(?%a-Q#!`q{HDp|rrlkoR*S9?HqACGCa%?bO2Lh;;es+B+V5{_+>KU97EB?FCbW z^NtMB@b(~K4r6sYAiz$PgHQ`#X??_c%lJpLYvHMozCA1Sen7tqK-~aF7CJs5ik%n& ziGi2#OxFi$Ar#9IUio!s8yTyjc;dt?%)A%fmd`Cbf`Vrj&!=xz39|1k{r=^BMY`Eul*r@H zh!ji@!}@b`bMx~P9Mmm&o$cus?JdSa&z?UwGBV2PpllZt%SuT}(R_88KleH_dB=|Q zrRvOVo8FU}nwqdXr@4dgeIR!5N=Ioy@G3C|rKP3mxi6?z@UVFoS@(b3ZnT=|8^|i5 z<0zC|GY{qC$9bXK+p=B_+O9}%L&@dxD=}=uUAv0Ky0@->j}PM^!zQ>x;Y%i=QViw; znj78ejk-C*uUq#FHX!0cWfES&0ZGZlAO%kA*940**#;Am)p>X2*irEJc)5H5+LnNJ z=6;aT?bFFN-V0s6H|`^~Z>m-zBs{Hkm>_$^xYA3on0xi|B?JXip=Y6g8re{!XJKZx zLG2b*EaSbQp`jJ`1z3Ytb2>`je@i`CctzOE;WPz^VUQGV@_KIr2$fOQLlf}ZRX;vr zR!2W(t#F$INSkr?IifCd9P7OsY}+!e$uBYPo*u)*-u{|s;7~uUF;0jI6N%)7)3Ct^ zng#^tUw|3Lqx_fx7V=~G$;e=SMBqZFYw1zG%Nbo9{=r{w@$FW`k zl;1E(aiiNwb`wBGdwkdqtX3v4@C4fxe(;~xuLn}|>p@LcNP9j%45KW7K6;(QYU;7& z(?isN@!AN(_}a2_5pY~!NvlLOh|edFgTbW3s))XWU9gMgFS8h2Hi5pDVjzc0-iGM}4F|8o`2+$y9*$eUty?Efp8Pr4sAmawMJ8w!wnM)CRP`oHw9sJ8tgH@; z^G<%n2f)PI-`@{>*}5q9t_tLVBt|9RUqImiKVb*Je2s!MwCl z-%6CjIS}cQx&lyhz;{=*i-2z3tCO7us-2cV0$U!OVmru0R|&XeG>bR9di4q&E+(&< z0sRRxYRxoD;JFSpb(a-j%O8MiI{Y2=`9Kb_vvPd|$1&Wzkzq8Ve1QXEYikRi^q~Gb zpVHFf%DUOKo}QjS=V(mUYjm5RYPAF_q~3d1DpKUSDiq5i<1nICt5=J=r!`*@6B82- zSCobK*9NZa%*;&m7Wf{&dNplRmw~>1-1;#>uwQ$_MKRqApnexrijQom9!!2SLN^97 zwV!AQiSL&H*`CdcMZo1lR74%eB46#=zkdwcN;l0os968IA&I3W)xi5;o?j_CkBHz% z&YB)soVXS+R(bgmyOEWZa6#Y|ko7ZKpPvrB6A>Xm217`HM_!H(1XrYGe5M?_L)B$J zsKLW-zqiXZ2m1RDK?ycr*~iB>*L8zIK9EyKTU)#Kt*CiZ%28Q= zc?0M-Swk2b`<%Q67iyBU0wGXrfgTHv#x0`A%4vGt`{#)8YnKsUpSNV8Sf@^D9`dXGy37!|sQw6(MjW2DfYkd$i4 zIetDqK0(3naKrz2cA6=O*gL3E$G5Y?W~IX&^ez2Ox4~3aT55Hqi~&_PVy1+I<)dq| zlyq}$>nyT&$-&`%_L2vo=^x^a!`e~;WEdlpUc^3`hGoo5n(3yh8X6C#?xKy>yxtjd z&F7*oE$#7R7n*7ofd1)IN;Hl2_ZugcY9lNJi%~EH^HwP+JzP=x*2-l;TS)!weso;a zZsPVKmdiAik3_l(kY!RN(?C;d^wc&U9tD?=NjlE0I?U%GTjb%wvM%&C#2w<^3+ z7!d#%*9j)4nX&FF`@Ww}ef#5HyDc~q0dhT<9JN~m`TUO@lJ{(dkX7vHyhIOZvFxX-teUgGE;FCL@FT_zx4XAur3bh zi;!>%0R-d%LNB6IEY~sB%q4(|qN}S56XgT_v}b<`#i<>Bh#p^E1_*VOy?O?)k+Clt zr#Lt{IT;zj?l6DUOv~JH*TB&|DR|pC=+A%YA0K7dH9y&MtUUS9DYqoTam8&k||_)KQ=$<~V%yIG^?C9$4<2 z7v^ZUYt!2$Dw+uojBN9B!bDlVm+B&sNzHWKK+n~Swm;HrYwUAe zv3^O2u?eBu7z7z>$0n}NpMbZL9^6DQe9fs1)6GM*LW7!RwC*62kyA+yc}7IXSeG}H zSsOSkcG<9Ww0eAGvW%>+pP$*)gIOS`HRbyOT{M{cMhD5<*E_r6UUcR-B==!Y7qAj} zeic=F`zblrEnBvr)34g`pldH?>s*`p)cQc?i)^ez%aizIyS zY)d;`YAM^VA3#6Kr=A2C5E)t6W>HbmCX0;f(1Sc^!y1gPkH5d<&hDgMWk39QinArt zI{Nj2&MY_GqCL(ekL>dMzR>(}4=_tvd#n*MB0m5J0e(E<8=?^nFVdb9GH;mxE@sQ8>nd&rxVc^MugQqbes}RlT~9+o;<-I zO*-=zX1;&HMlh-jOGmqp`3FwU>5)u+3A`aMXcoKTE zeh|js@6~*{DWp9S?P6$i0xjVKQEPn}nd^hkV7;N+Oyc|D3%xkxM&xvW6uShAer_(C zU}=&w#1==S>CkD4MEIEY6EMusbBOMjBz_$h8SDWi$eWq}0aN6uyqllDjuV+}rdxh~ z&@nn$l8|1zBeiaDs)u8D?AX!%=8})U|A)#-WQJPP&F-t+M;>< zq79iTLNIziLAM`{0j*%1j;0~;BPgo z1UD0e%6UEyC0$z%6?osgDKTEU1Ktr@zAO=S!b_DmU&yU7zN*WmyK1k52ppeD8oNWE zbIT~s&dzu@JXEz|h2c{x9iTGEpOC9cq|-$J1n+v%#CH9<$+KOG?CFxhdy|q zp`nq9AZUJ`(#H%}g~CDPo=eJ{sI&0akk*Y`x8~UoYazvf9V3O_IiyxL1i^eC7Pyss z`oxJcz|YDWqKhe{{$WLFDK9VY8ald!gfLfU=j^F%d-j}^&A$2#C68fy7t9>uu5vrX z;?Qu6Ono*B5C@_a%J(Rzl-oSI^)>|w8kC%KeDA_ETN|-B0o%T5<3{Wz1H3?Wh@M31 zJWABW*?9UE>YcmNqO>3x0=VX^{ z5_lnWh`jJ-Ixn!#N4GT;6i6qw%)>HdT>W;INsui7>lkmJLA={Xga00Mk!phxno)_A zNgHdnUny{c6ImkM0YZ;lQd$YDBNHU3#`Ig3Gg{TH$3V%ibuJbL;K@s(PF#uHaX!qPT6F2Q3rtsjkW z`WnjRK40Us4f%_@`~wdTnW@2U91)ubH=a_?y+vZ6SAyR7tX#cX3fzU{v)bCZu5-+{hURdXLdiC zfkQOK*MjE8MNA|%o|2;C0w1M;7)-Ji8XW2*DY=F#mlh@ tNv~+j|Ib+EH)_ptjhT4ie{|`K7FJJ%w literal 63805 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

x%l#CosTD~>K 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

x%l#CosTD~>K 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

str(flowSet)
Formal class 'flowSet' [package "flowCore"] with 2 slots
-  ..@ frames   :<environment: 0x56470dcf2cc0> 
+  ..@ frames   :<environment: 0x559e41e52918> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr "Name"
@@ -857,7 +857,7 @@ 

Memory Usage

.

-

Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer’s operating system.

+

Ultimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the ps R package’s ps_system_memory() function is one of the easier ways for Windows users.

^8JN+1cmwh%;#dj?S6o{Bfq-d+WadaVCLi diff --git a/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-66-1.png b/docs/course/05_GatingSets/index_files/figure-html/unnamed-chunk-66-1.png index 1bce85fe638cef7887a1e985c8cb6c358ddc6058..3453133e435cfc5193a3b570026b56c87f30bd6b 100644 GIT binary patch literal 66869 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

@@ -888,35 +888,30 @@

Memory Usage

OperatingSystem <- Sys.info()[["sysname"]]
 
 if (OperatingSystem == "Windows") { # Windows
-    memory.limit()
-
-  } else if (OperatingSystem == "Darwin") { # MacOS
-    system("top -l 1 | grep PhysMem")
+  # install.packages("ps") # CRAN
+   Memory <- ps::ps_system_memory()
+   message("Total GB ", round(Memory$total / 1024^3, 2))
+   message("Free GB ", round(Memory$free / 1024^3, 2))
 
-  } else if (OperatingSystem == "Linux") { # Linux
-    system("free -h")
+  } else if (OperatingSystem == "Darwin") { # MacOS
+    system("top -l 1 | grep PhysMem")
 
-  } else {message("A wild FreeBSD-User appears")}
+ } else if (OperatingSystem == "Linux") { # Linux + system("free -h") + + } else {message("A wild FreeBSD-User appears")}
-
-
-
-
-
- -
-

.

-
-
-

When evaluating the returned outputs, primarily consider the total, used and free outputs.

-
-
-
+
+
# install.packages("ps") # CRAN
+library(ps)
+Memory <- ps::ps_system_memory()
+message("Total GB ", round(Memory$total / 1024^3, 2))
+message("Free GB ", round(Memory$free / 1024^3, 2))
@@ -941,8 +936,8 @@

cytoframe

-
# BiocManager::install("flowWorkspace") #Bioconductor
-library(flowWorkspace)
+
# BiocManager::install("flowWorkspace") #Bioconductor
+library(flowWorkspace)
@@ -967,9 +962,9 @@

cytoframe

-
cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
-
-cytoframe
+
cytoframe <- load_cytoframe_from_fcs(fcs_files[1], truncate_max_range = FALSE, transformation = FALSE)
+
+cytoframe
cytoframe object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
 with 10000 cells and 43 observables:
@@ -995,7 +990,7 @@ 

cytoframe

-
class(cytoframe)
+
class(cytoframe)
[1] "cytoframe"
 attr(,"package")
@@ -1025,7 +1020,7 @@ 

cytoframe

-
load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
load_cytoframe_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
Error:
 ! Expected string vector of length 1
@@ -1054,9 +1049,9 @@

cytoset

-
cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
-
-cytoset
+
cytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)
+
+cytoset
A cytoset with 6 samples.
 
@@ -1067,7 +1062,7 @@ 

cytoset

-
class(cytoset)
+
class(cytoset)
[1] "cytoset"
 attr(,"package")
@@ -1097,7 +1092,7 @@ 

cytoset

-
str(cytoframe)
+
str(cytoframe)
Formal class 'cytoframe' [package "flowWorkspace"] with 5 slots
   ..@ pointer    :<externalptr> 
@@ -1127,11 +1122,11 @@ 

cytoset

-
str(cytoset)
+
str(cytoset)
Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
   ..@ pointer  :<externalptr> 
-  ..@ frames   :<environment: 0x5647187d67c8> 
+  ..@ frames   :<environment: 0x559e4d1e2f48> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr(0) 
@@ -1189,7 +1184,7 @@ 

cytoset

-
obj_size(flowFrame)
+
obj_size(flowFrame)
3.53 MB
@@ -1197,7 +1192,7 @@

cytoset

-
obj_size(cytoframe)
+
obj_size(cytoframe)
5.40 kB
@@ -1225,7 +1220,7 @@

cytoset

-
obj_size(flowSet)
+
obj_size(flowSet)
20.99 MB
@@ -1233,7 +1228,7 @@

cytoset

-
obj_size(cytoset)
+
obj_size(cytoset)
3.88 kB
@@ -1301,10 +1296,10 @@

Interconverting

-
ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
-ConvertedToCytoframe
+
ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
+ConvertedToCytoframe
-
cytoframe object 'file5bfe2ae750aa'
+
cytoframe object 'file1fe95b5196ca'
 with 10000 cells and 43 observables:
                name      desc       range  minRange    maxRange
 $P1            Time        NA     878.809         0     878.809
@@ -1325,7 +1320,7 @@ 

Interconverting

-
obj_size(ConvertedToCytoframe)
+
obj_size(ConvertedToCytoframe)
5.40 kB
@@ -1353,8 +1348,8 @@

Interconverting

-
ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)
-ConvertedToFlowframe
+
ConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)
+ConvertedToFlowframe
flowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'
 with 10000 cells and 43 observables:
@@ -1376,7 +1371,7 @@ 

Interconverting

-
obj_size(ConvertedToFlowframe)
+
obj_size(ConvertedToFlowframe)
3.53 MB
@@ -1404,8 +1399,8 @@

Interconverting

-
ConvertedToCytoset <- flowSet_to_cytoset(flowSet)
-ConvertedToCytoset
+
ConvertedToCytoset <- flowSet_to_cytoset(flowSet)
+ConvertedToCytoset
A cytoset with 6 samples.
 
@@ -1416,7 +1411,7 @@ 

Interconverting

-
obj_size(ConvertedToCytoset)
+
obj_size(ConvertedToCytoset)
3.88 kB
@@ -1444,8 +1439,8 @@

Interconverting

-
ConvertedToFlowset <- cytoset_to_flowSet(flowSet)
-ConvertedToFlowset
+
ConvertedToFlowset <- cytoset_to_flowSet(flowSet)
+ConvertedToFlowset
A flowSet with 6 experiments.
 
@@ -1455,7 +1450,7 @@ 

Interconverting

-
obj_size(ConvertedToFlowset)
+
obj_size(ConvertedToFlowset)
20.99 MB
@@ -1483,8 +1478,8 @@

Gating Sets

-
GatingSet1 <- GatingSet(flowSet)
-GatingSet1 
+
GatingSet1 <- GatingSet(flowSet)
+GatingSet1 
A GatingSet with 6 samples
@@ -1492,7 +1487,7 @@

Gating Sets

-
class(GatingSet1)
+
class(GatingSet1)
[1] "GatingSet"
 attr(,"package")
@@ -1505,8 +1500,8 @@ 

Gating Sets

-
GatingSet2 <- GatingSet(cytoset)
-GatingSet2
+
GatingSet2 <- GatingSet(cytoset)
+GatingSet2
A GatingSet with 6 samples
@@ -1514,7 +1509,7 @@

Gating Sets

-
class(GatingSet1)
+
class(GatingSet1)
[1] "GatingSet"
 attr(,"package")
@@ -1641,8 +1636,8 @@ 

CytoML

-
# BiocManager::install("CytoML") #Bioconductor
-library(CytoML)
+
# BiocManager::install("CytoML") #Bioconductor
+library(CytoML)
@@ -1684,12 +1679,12 @@

CytoML

-
Folder # Defined Above
+
Folder # Defined Above
[1] "data"
-
FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE)
-FlowJoWsp
+
FlowJoWsp <- list.files(path = Folder, pattern = ".wsp", full = TRUE)
+FlowJoWsp
[1] "data/FlowJoWSP_OpenedCopy.wsp" "data/FlowJoWSP_Unopened.wsp"  
@@ -1717,8 +1712,8 @@

CytoML

-
ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")]
-ThisWorkspace
+
ThisWorkspace <- FlowJoWsp[stringr::str_detect(FlowJoWsp, "Opened")]
+ThisWorkspace
[1] "data/FlowJoWSP_OpenedCopy.wsp"
@@ -1746,8 +1741,8 @@

CytoML

-
ws <- open_flowjo_xml(ThisWorkspace)
-ws
+
ws <- open_flowjo_xml(ThisWorkspace)
+ws
File location:  data/FlowJoWSP_OpenedCopy.wsp 
 
@@ -1759,7 +1754,7 @@ 

CytoML

-
class(ws)
+
class(ws)
[1] "flowjo_workspace"
 attr(,"package")
@@ -1809,7 +1804,7 @@ 

CytoML

-
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder)
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder)
Error:
 ! Multiple FCS files match sample 00_Ctrl.fcs by filename, event count, and keywords.
@@ -1819,7 +1814,7 @@ 

CytoML

/home/david/Documents/CytometryInR/course/05_GatingSets/data/2025_07_26_AB_02_INF179_00_Ctrl.fcs Please move incorrect files out of this directory or its subdirectories.
-
gs
+
gs
Error:
 ! object 'gs' not found
@@ -1848,7 +1843,7 @@

CytoML

-
?flowjo_to_gatingset
+
?flowjo_to_gatingset
@@ -1884,8 +1879,8 @@

CytoML

-
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
-gs
+
gs <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+gs
A GatingSet with 6 samples
@@ -1893,7 +1888,7 @@

CytoML

-
class(gs)
+
class(gs)
[1] "GatingSet"
 attr(,"package")
@@ -1943,14 +1938,14 @@ 

System Time

-
system.time({
-
-flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
-
-})
+
system.time({
+
+flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME")
+
+})
   user  system elapsed 
-  0.499   0.008   0.506 
+ 0.462 0.005 0.467
@@ -1976,21 +1971,21 @@

System Time

-
# install.packages("bench") # CRAN
-library(bench)
+
# install.packages("bench") # CRAN
+library(bench)
-
mark(
-  Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"),
-  iterations= 5
-  )
+
mark(
+  Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys="GROUPNAME"),
+  iterations= 5
+  )
# A tibble: 1 × 6
   expression                             min median `itr/sec` mem_alloc `gc/sec`
   <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
-1 Test <- flowjo_to_gatingset(ws = ws… 490ms  498ms      2.01    13.3KB        0
+1 Test <- flowjo_to_gatingset(ws = ws… 455ms 460ms 2.17 13.3KB 0
@@ -2036,11 +2031,11 @@

Gates

-
plot(gs)
+
plot(gs)
-

+

@@ -2068,7 +2063,7 @@

Gates

-
gs_get_pop_paths(gs)
+
gs_get_pop_paths(gs)
 [1] "root"                                             
  [2] "/Scatter"                                         
@@ -2115,8 +2110,8 @@ 

Counts

-
Data <- gs_pop_get_count_fast(gs)
-head(Data, 5)
+
Data <- gs_pop_get_count_fast(gs)
+head(Data, 5)
                 name                         Population
                <char>                             <char>
@@ -2157,7 +2152,7 @@ 

Metadata

-
pData(gs)
+
pData(gs)
                          name
 00_Ctrl.fcs_INF052 00_Ctrl.fcs
@@ -2191,10 +2186,10 @@ 

Metadata

-
AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder,
- additional.keys="GROUPNAME",
- keywords=c("$DATE", "$CYT", "GROUPNAME"))
-pData(AlternateGS)
+
AlternateGS <- flowjo_to_gatingset(ws=ws, name=1, path = Folder,
+ additional.keys="GROUPNAME",
+ keywords=c("$DATE", "$CYT", "GROUPNAME"))
+pData(AlternateGS)
                   GROUPNAME   $CYT       $DATE        name
 00_Ctrl.fcs_INF052    INF052 Aurora 26-Jul-2025 00_Ctrl.fcs
@@ -2314,7 +2309,7 @@ 

packageVersion

-
packageVersion("ggplot2")
+
packageVersion("ggplot2")
[1] '4.0.2'
@@ -2322,7 +2317,7 @@

packageVersion

-
packageVersion("ggcyto")
+
packageVersion("ggcyto")
[1] '1.39.1'
@@ -2395,8 +2390,8 @@

remove.packages

-
remove.packages("ggplot2")
-remove.packages("ggcyto")
+
remove.packages("ggplot2")
+remove.packages("ggcyto")
@@ -2446,7 +2441,7 @@

Installing correct versions

-
install.packages("ggplot2")
+
install.packages("ggplot2")
@@ -2471,7 +2466,7 @@

Installing correct versions

-
remotes::install_github("RGLab/ggcyto")
+
remotes::install_github("RGLab/ggcyto")
@@ -2496,8 +2491,8 @@

Plotting

-
library(ggplot2)
-library(ggcyto)
+
library(ggplot2)
+library(ggcyto)
@@ -2522,7 +2517,7 @@

Plotting

-
ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="root", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
@@ -2564,7 +2559,7 @@

Plotting

-
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
@@ -2626,11 +2621,11 @@

Plotting

-
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD4+", aes(x="FSC-A", y="SSC-A")) + geom_hex(bins=100) 
-

+

@@ -2658,11 +2653,11 @@

Plotting

-
ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD8+", aes(x="IFNg", y="TNFa")) + geom_hex(bins=100) 
-

+

@@ -2690,11 +2685,11 @@

Plotting

-
ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) 
+
ggcyto(gs[1], subset="CD8+", aes(x="BV750-A", y="PE-Dazzle594-A")) + geom_hex(bins=100) 
-

+

@@ -2705,11 +2700,11 @@

Plotting

-
ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100)
+
ggcyto(gs[6], subset="Tcells", aes(x="CD4", y="CD8")) + geom_hex(bins=100)
-

+

diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-52-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-53-1.png similarity index 100% rename from docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-52-1.png rename to docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-53-1.png diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-65-1.png deleted file mode 100644 index fde63f2b07b171ed277cb4f5968171aa616d5a4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73679 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 Tsm2iuayg;aG9a@YGVhjavl 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 Tsm2iuayg;aG9a@YGVhjavl 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

66XX8kb8qVmM9K`ZE-9!T>E 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 diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-67-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-67-1.png index d85179edf4b11e7b0e6c71ed30ca730f8d7de843..590dcef003026dc863f7a6adee86db4e2dbec3dd 100644 GIT binary patch literal 65982 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

66XX8kb8qVmM9K`ZE-9!T>E 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 literal 59275 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 z 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±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 AR{#J2 diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-68-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-68-1.png index 429ba5e5fef07f755112870595c2fbea5209ecdb..d85179edf4b11e7b0e6c71ed30ca730f8d7de843 100644 GIT binary patch literal 59275 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 z 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±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 AR{#J2 literal 71697 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 Dru2lw diff --git a/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-69-1.png b/docs/course/05_GatingSets/slides_files/figure-revealjs/unnamed-chunk-69-1.png new file mode 100644 index 0000000000000000000000000000000000000000..429ba5e5fef07f755112870595c2fbea5209ecdb GIT binary patch literal 71697 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 Dru2lw literal 0 HcmV?d00001 diff --git a/docs/search.json b/docs/search.json index af43198..60eaddb 100644 --- a/docs/search.json +++ b/docs/search.json @@ -28,7 +28,7 @@ "href": "course/05_GatingSets/index.html#flowset", "title": "05 - Gating Sets", "section": "flowSet", - "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)],\n truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x562242979388> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", + "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)],\n truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x563aececb920> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", "crumbs": [ "About", "Intro to R", @@ -40,7 +40,7 @@ "href": "course/05_GatingSets/index.html#memory-usage", "title": "05 - Gating Sets", "section": "Memory Usage", - "text": "Memory Usage\nBoth “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.\nOne consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM.\nTo build some contextual understanding of the problem, let’s learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the lobstr R packages obj_size() function, as it better handles evaluating complicated objects than base R’s object.size() function.\nWe can check and see the memory usage by our flowFrame object\n\n# Base R\nobject.size(flowFrame)\n\n3570896 bytes\n\n# install.packages(\"lobstr\") # CRAN\nlibrary(lobstr)\nobj_size(flowFrame)\n\n3.53 MB\n\n\nAnd contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames)\n\nobj_size(flowSet)\n\n20.99 MB\n\n\nIf we were curious how much memory total we are using within R at the current moment, we can check using the mem_used() function:\n\nmem_used()\n\n146.98 MB\n\n\nUltimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. You can check programmatically how much RAM you have available, although the specific function you will need to use will depend on your computer’s operating system.\nTo simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.\n\nOperatingSystem <- Sys.info()[[\"sysname\"]]\n\nif (OperatingSystem == \"Windows\") { # Windows\n memory.limit()\n\n } else if (OperatingSystem == \"Darwin\") { # MacOS\n system(\"top -l 1 | grep PhysMem\")\n\n } else if (OperatingSystem == \"Linux\") { # Linux\n system(\"free -h\")\n\n } else {message(\"A wild FreeBSD-User appears\")}\n\nWhen evaluating the returned outputs, primarily consider the total, used and free outputs.", + "text": "Memory Usage\nBoth “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.\nOne consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM.\nTo build some contextual understanding of the problem, let’s learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the lobstr R packages obj_size() function, as it better handles evaluating complicated objects than base R’s object.size() function.\nWe can check and see the memory usage by our flowFrame object\n\n# Base R\nobject.size(flowFrame)\n\n3570896 bytes\n\n# install.packages(\"lobstr\") # CRAN\nlibrary(lobstr)\nobj_size(flowFrame)\n\n3.53 MB\n\n\nAnd contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames)\n\nobj_size(flowSet)\n\n20.99 MB\n\n\nIf we were curious how much memory total we are using within R at the current moment, we can check using the mem_used() function:\n\nmem_used()\n\n146.99 MB\n\n\nUltimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the ps R package’s ps_system_memory() function is one of the easier ways for Windows users.\nTo simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.\n\nOperatingSystem <- Sys.info()[[\"sysname\"]]\n\nif (OperatingSystem == \"Windows\") { # Windows\n Memory <- ps::ps_system_memory()\n message(\"Total GB \", round(Memory$total / 1024^3, 2))\n message(\"Free GB \", round(Memory$free / 1024^3, 2))\n\n } else if (OperatingSystem == \"Darwin\") { # MacOS\n system(\"top -l 1 | grep PhysMem\")\n\n } else if (OperatingSystem == \"Linux\") { # Linux\n system(\"free -h\")\n\n } else {message(\"A wild FreeBSD-User appears\")}\n\n\n# install.packages(\"ps\") # CRAN\nlibrary(ps)\nMemory <- ps::ps_system_memory()\nmessage(\"Total GB \", round(Memory$total / 1024^3, 2))\n\nTotal GB 62.5\n\nmessage(\"Free GB \", round(Memory$free / 1024^3, 2))\n\nFree GB 54.36", "crumbs": [ "About", "Intro to R", @@ -64,7 +64,7 @@ "href": "course/05_GatingSets/index.html#cytoset", "title": "05 - Gating Sets", "section": "cytoset", - "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x56224cc6eed0> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", + "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x563af7c4ddd8> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", "crumbs": [ "About", "Intro to R", @@ -76,7 +76,7 @@ "href": "course/05_GatingSets/index.html#interconverting", "title": "05 - Gating Sets", "section": "Interconverting", - "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file5caf7fc9092c'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", + "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file20997f38fefd'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", "crumbs": [ "About", "Intro to R", @@ -112,7 +112,7 @@ "href": "course/05_GatingSets/index.html#system-time", "title": "05 - Gating Sets", "section": "System Time", - "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.491 0.016 0.507 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 497ms 511ms 1.97 13.3KB 0", + "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.466 0.004 0.471 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 461ms 466ms 2.13 13.3KB 0", "crumbs": [ "About", "Intro to R", From 983125f3c74bede661679e603284fde17de2b6e2 Mon Sep 17 00:00:00 2001 From: David Rach Date: Tue, 3 Mar 2026 23:15:24 -0500 Subject: [PATCH 5/8] Initial recording link --- course/05_GatingSets/index.qmd | 4 +++- docs/course/03_InsideFCSFile/index.html | 8 ++++---- docs/course/03_InsideFCSFile/slides.html | 8 ++++---- docs/course/05_GatingSets/index.html | 16 +++++++++------- docs/course/05_GatingSets/slides.html | 10 +++++----- docs/search.json | 12 ++++++------ 6 files changed, 31 insertions(+), 27 deletions(-) diff --git a/course/05_GatingSets/index.qmd b/course/05_GatingSets/index.qmd index 56a2ab5..419da8e 100644 --- a/course/05_GatingSets/index.qmd +++ b/course/05_GatingSets/index.qmd @@ -13,7 +13,9 @@ toc-depth: 5 [![AGPL-3.0](https://img.shields.io/badge/license-AGPLv3-blue)](https://www.gnu.org/licenses/agpl-3.0.en.html) [![CC BY-SA 4.0](https://img.shields.io/badge/License-CC%20BY--SA%204.0-lightgrey.svg)](http://creativecommons.org/licenses/by-sa/4.0/) ::: -For the YouTube livestream schedule, see [here](https://www.youtube.com/@cytometryinr) +For the YouTube livestream recording, see [here](https://youtu.be/PzgCxfevDX4?t=231) + + For screen-shot slides, click [here](/course/05_GatingSets/slides.qmd) diff --git a/docs/course/03_InsideFCSFile/index.html b/docs/course/03_InsideFCSFile/index.html index 28825e6..814109e 100644 --- a/docs/course/03_InsideFCSFile/index.html +++ b/docs/course/03_InsideFCSFile/index.html @@ -546,8 +546,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+
@@ -593,8 +593,8 @@

flowCore

plotly::ggplotly(plot)
-
- +
+

flowCore is also one of the many Bioconductor packages maintained by Mike Jiang. In many ways (as those who completed the optional take-home problems for Week #1 know) reminiscent of this xkcd comic:

diff --git a/docs/course/03_InsideFCSFile/slides.html b/docs/course/03_InsideFCSFile/slides.html index f04bfa0..1b5ba26 100644 --- a/docs/course/03_InsideFCSFile/slides.html +++ b/docs/course/03_InsideFCSFile/slides.html @@ -485,8 +485,8 @@

flowCore


-
- +
+
@@ -497,8 +497,8 @@

flowCore


-
- +
+
diff --git a/docs/course/05_GatingSets/index.html b/docs/course/05_GatingSets/index.html index d4940eb..59ea684 100644 --- a/docs/course/05_GatingSets/index.html +++ b/docs/course/05_GatingSets/index.html @@ -377,7 +377,9 @@

05 - Gating Sets

AGPL-3.0 CC BY-SA 4.0

-

For the YouTube livestream schedule, see here

+

For the YouTube livestream recording, see here

+

For screen-shot slides, click here



@@ -535,7 +537,7 @@

flowSet

str(flowSet)
Formal class 'flowSet' [package "flowCore"] with 2 slots
-  ..@ frames   :<environment: 0x563aececb920> 
+  ..@ frames   :<environment: 0x5617460232d0> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr "Name"
@@ -627,7 +629,7 @@ 

Memory Usage

message("Free GB ", round(Memory$free / 1024^3, 2))
-
Free GB 54.36
+
Free GB 51.84
@@ -739,7 +741,7 @@

cytoset

Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
   ..@ pointer  :<externalptr> 
-  ..@ frames   :<environment: 0x563af7c4ddd8> 
+  ..@ frames   :<environment: 0x561750db1b50> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr(0) 
@@ -789,7 +791,7 @@ 

Interconverting

ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
 ConvertedToCytoframe
-
cytoframe object 'file20997f38fefd'
+
cytoframe object 'file6791640d7f7'
 with 10000 cells and 43 observables:
                name      desc       range  minRange    maxRange
 $P1            Time        NA     878.809         0     878.809
@@ -1017,7 +1019,7 @@ 

System Time

})
   user  system elapsed 
-  0.466   0.004   0.471 
+ 0.971 0.016 1.004

Alternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.

@@ -1034,7 +1036,7 @@

System Time

# A tibble: 1 × 6
   expression                             min median `itr/sec` mem_alloc `gc/sec`
   <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
-1 Test <- flowjo_to_gatingset(ws = ws… 461ms  466ms      2.13    13.3KB        0
+1 Test <- flowjo_to_gatingset(ws = ws… 765ms 786ms 1.25 13.3KB 0
diff --git a/docs/course/05_GatingSets/slides.html b/docs/course/05_GatingSets/slides.html index 1460624..dcc68ca 100644 --- a/docs/course/05_GatingSets/slides.html +++ b/docs/course/05_GatingSets/slides.html @@ -663,7 +663,7 @@

flowSet

str(flowSet)
Formal class 'flowSet' [package "flowCore"] with 2 slots
-  ..@ frames   :<environment: 0x559e41e52918> 
+  ..@ frames   :<environment: 0x563ea305c918> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 1 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr "Name"
@@ -1126,7 +1126,7 @@ 

cytoset

Formal class 'cytoset' [package "flowWorkspace"] with 3 slots
   ..@ pointer  :<externalptr> 
-  ..@ frames   :<environment: 0x559e4d1e2f48> 
+  ..@ frames   :<environment: 0x563eae3ecae8> 
   ..@ phenoData:Formal class 'AnnotatedDataFrame' [package "Biobase"] with 4 slots
   .. .. ..@ varMetadata      :'data.frame': 0 obs. of  1 variable:
   .. .. .. ..$ labelDescription: chr(0) 
@@ -1299,7 +1299,7 @@ 

Interconverting

ConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)
 ConvertedToCytoframe
-
cytoframe object 'file1fe95b5196ca'
+
cytoframe object 'file66975368aac3'
 with 10000 cells and 43 observables:
                name      desc       range  minRange    maxRange
 $P1            Time        NA     878.809         0     878.809
@@ -1945,7 +1945,7 @@ 

System Time

})
   user  system elapsed 
-  0.462   0.005   0.467 
+ 0.915 0.016 0.936
@@ -1985,7 +1985,7 @@

System Time

# A tibble: 1 × 6
   expression                             min median `itr/sec` mem_alloc `gc/sec`
   <bch:expr>                           <bch> <bch:>     <dbl> <bch:byt>    <dbl>
-1 Test <- flowjo_to_gatingset(ws = ws… 455ms  460ms      2.17    13.3KB        0
+1 Test <- flowjo_to_gatingset(ws = ws… 745ms 756ms 1.29 13.3KB 0
diff --git a/docs/search.json b/docs/search.json index 60eaddb..1a69095 100644 --- a/docs/search.json +++ b/docs/search.json @@ -4,7 +4,7 @@ "href": "course/05_GatingSets/index.html", "title": "05 - Gating Sets", "section": "", - "text": "For the YouTube livestream schedule, see here\nFor screen-shot slides, click here", + "text": "For the YouTube livestream recording, see here\nFor screen-shot slides, click here", "crumbs": [ "About", "Intro to R", @@ -28,7 +28,7 @@ "href": "course/05_GatingSets/index.html#flowset", "title": "05 - Gating Sets", "section": "flowSet", - "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)],\n truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x563aececb920> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", + "text": "flowSet\nConsequently, we will need to use another function if we want to read in multiple .fcs files at once. For flowCore, this function is the read.flowSet() function.\n\nflowSet <- read.flowSet(files=fcs_files, truncate_max_range = FALSE,\n transformation = FALSE)\nflowSet\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nAlternatively, we can designate specific files within “fcs_files” we want to read in using the [] and c() notation style we have encountered previously.\n\nread.flowSet(files=fcs_files[c(1, 3:4)],\n truncate_max_range = FALSE, transformation = FALSE)\n\nA flowSet with 3 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\nOn follow-up, we can see that read.flowSet() has created a “flowSet” class object.\n\nclass(flowSet)\n\n[1] \"flowSet\"\nattr(,\"package\")\n[1] \"flowCore\"\n\n\nWhich we can also confirm by glancing at the right secondary sidebar to see the created Variables within our environment. Applying our investigatory skills from Week 3, we surmise that “flowSet” is another Bioconductor style S4-type object that within its frame slot contains individual “flowFrames”.\n\nIf instead of class() we had used str(), we would have seen a similar output ton what we see in the Variables panel.\n\nstr(flowSet)\n\nFormal class 'flowSet' [package \"flowCore\"] with 2 slots\n ..@ frames :<environment: 0x5617460232d0> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 1 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr \"Name\"\n .. .. ..@ data :'data.frame': 6 obs. of 1 variable:\n .. .. .. ..$ name: 'AsIs' chr [1:6] \"2025_07_26_AB_02_INF052_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF052_00_SEB.fcs\" \"2025_07_26_AB_02_INF100_00_Ctrl.fcs\" \"2025_07_26_AB_02_INF100_00_SEB.fcs\" ...\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\n\n\n\n\n\n\n\n\nReminder\n\n\n\nWhile not today’s focus, remember we could access individual components inside the flowSet using the @ accessors covered during Week 3", "crumbs": [ "About", "Intro to R", @@ -40,7 +40,7 @@ "href": "course/05_GatingSets/index.html#memory-usage", "title": "05 - Gating Sets", "section": "Memory Usage", - "text": "Memory Usage\nBoth “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.\nOne consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM.\nTo build some contextual understanding of the problem, let’s learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the lobstr R packages obj_size() function, as it better handles evaluating complicated objects than base R’s object.size() function.\nWe can check and see the memory usage by our flowFrame object\n\n# Base R\nobject.size(flowFrame)\n\n3570896 bytes\n\n# install.packages(\"lobstr\") # CRAN\nlibrary(lobstr)\nobj_size(flowFrame)\n\n3.53 MB\n\n\nAnd contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames)\n\nobj_size(flowSet)\n\n20.99 MB\n\n\nIf we were curious how much memory total we are using within R at the current moment, we can check using the mem_used() function:\n\nmem_used()\n\n146.99 MB\n\n\nUltimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the ps R package’s ps_system_memory() function is one of the easier ways for Windows users.\nTo simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.\n\nOperatingSystem <- Sys.info()[[\"sysname\"]]\n\nif (OperatingSystem == \"Windows\") { # Windows\n Memory <- ps::ps_system_memory()\n message(\"Total GB \", round(Memory$total / 1024^3, 2))\n message(\"Free GB \", round(Memory$free / 1024^3, 2))\n\n } else if (OperatingSystem == \"Darwin\") { # MacOS\n system(\"top -l 1 | grep PhysMem\")\n\n } else if (OperatingSystem == \"Linux\") { # Linux\n system(\"free -h\")\n\n } else {message(\"A wild FreeBSD-User appears\")}\n\n\n# install.packages(\"ps\") # CRAN\nlibrary(ps)\nMemory <- ps::ps_system_memory()\nmessage(\"Total GB \", round(Memory$total / 1024^3, 2))\n\nTotal GB 62.5\n\nmessage(\"Free GB \", round(Memory$free / 1024^3, 2))\n\nFree GB 54.36", + "text": "Memory Usage\nBoth “flowFrame” and “flowSet” objects were implemented in the flowCore package, which is the oldest extant flow cytometry R package on Bioconductor. Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as “flowFrame” and “flowSet” objects.\nOne consideration of this method is the contents of your .fcs files are read into your computer’s random access memory (RAM). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM.\nTo build some contextual understanding of the problem, let’s learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the lobstr R packages obj_size() function, as it better handles evaluating complicated objects than base R’s object.size() function.\nWe can check and see the memory usage by our flowFrame object\n\n# Base R\nobject.size(flowFrame)\n\n3570896 bytes\n\n# install.packages(\"lobstr\") # CRAN\nlibrary(lobstr)\nobj_size(flowFrame)\n\n3.53 MB\n\n\nAnd contrast to the greater ammount of space occupied by our flowSet object (which contains multiple flowFrames)\n\nobj_size(flowSet)\n\n20.99 MB\n\n\nIf we were curious how much memory total we are using within R at the current moment, we can check using the mem_used() function:\n\nmem_used()\n\n146.99 MB\n\n\nUltimately, how many .fcs files you are able to read in and interact with before running out of available RAM memory space will be dictated by your individual computers hardware configuration. There are various ways you can check programmatically how much RAM your computer has available, although the specific functions will vary depending on your computers operating system, since they often involve system-level code outside R. Using the ps R package’s ps_system_memory() function is one of the easier ways for Windows users.\nTo simplify the process, here is an additional example of where a conditional can prove useful, allowing us to check in an operating system specific manner. It takes the output of the Sys.info() function, namely the “sysname” argument and then retrieves the relavent function.\n\nOperatingSystem <- Sys.info()[[\"sysname\"]]\n\nif (OperatingSystem == \"Windows\") { # Windows\n Memory <- ps::ps_system_memory()\n message(\"Total GB \", round(Memory$total / 1024^3, 2))\n message(\"Free GB \", round(Memory$free / 1024^3, 2))\n\n } else if (OperatingSystem == \"Darwin\") { # MacOS\n system(\"top -l 1 | grep PhysMem\")\n\n } else if (OperatingSystem == \"Linux\") { # Linux\n system(\"free -h\")\n\n } else {message(\"A wild FreeBSD-User appears\")}\n\n\n# install.packages(\"ps\") # CRAN\nlibrary(ps)\nMemory <- ps::ps_system_memory()\nmessage(\"Total GB \", round(Memory$total / 1024^3, 2))\n\nTotal GB 62.5\n\nmessage(\"Free GB \", round(Memory$free / 1024^3, 2))\n\nFree GB 51.84", "crumbs": [ "About", "Intro to R", @@ -64,7 +64,7 @@ "href": "course/05_GatingSets/index.html#cytoset", "title": "05 - Gating Sets", "section": "cytoset", - "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x563af7c4ddd8> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", + "text": "cytoset\nAs well as “cytoset” to handle multiple .fcs files.\n\ncytoset <- load_cytoset_from_fcs(fcs_files, truncate_max_range = FALSE, transformation = FALSE)\n\ncytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nclass(cytoset)\n\n[1] \"cytoset\"\nattr(,\"package\")\n[1] \"flowWorkspace\"\n\n\nUnlike “flowFrame” and “flowSet”, when we run str(), for “cytoframe” and “cytoset” objects we don’t get back quite as much information.\n\nstr(cytoframe)\n\nFormal class 'cytoframe' [package \"flowWorkspace\"] with 5 slots\n ..@ pointer :<externalptr> \n ..@ use.exprs : logi TRUE\n ..@ exprs : num[0 , 0 ] \n ..@ parameters :Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 5 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr [1:5] \"Name of Parameter\" \"Description of Parameter\" \"Range of Parameter\" \"Minimum Parameter Value after Transformation\" ...\n .. .. ..@ data :'data.frame': 0 obs. of 5 variables:\n .. .. .. ..$ name : chr(0) \n .. .. .. ..$ description: chr(0) \n .. .. .. ..$ range : num(0) \n .. .. .. ..$ minRange : num(0) \n .. .. .. ..$ maxRange : num(0) \n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n ..@ description:List of 1\n .. ..$ note: chr \"empty\"\n\n\n\nstr(cytoset)\n\nFormal class 'cytoset' [package \"flowWorkspace\"] with 3 slots\n ..@ pointer :<externalptr> \n ..@ frames :<environment: 0x561750db1b50> \n ..@ phenoData:Formal class 'AnnotatedDataFrame' [package \"Biobase\"] with 4 slots\n .. .. ..@ varMetadata :'data.frame': 0 obs. of 1 variable:\n .. .. .. ..$ labelDescription: chr(0) \n .. .. ..@ data :'data.frame': 0 obs. of 0 variables\n .. .. ..@ dimLabels : chr [1:2] \"rowNames\" \"columnNames\"\n .. .. ..@ .__classVersion__:Formal class 'Versions' [package \"Biobase\"] with 1 slot\n .. .. .. .. ..@ .Data:List of 1\n .. .. .. .. .. ..$ : int [1:3] 1 1 0\n .. .. .. .. ..$ names: chr \"AnnotatedDataFrame\"\n\n\nThis is similarly the case when glancing at the right secondary side bar, as the respective objects under variables appear to have empty matrices where normally we would have seen the MFI values.\n\nDue to flowWorkspace use of pointers, the missing data remains stored on the drive, only being retrieved right before it is required. This reduces the overall RAM utilization. Let’s double check the differences in memory utilization for flowFrame/cytoframe:\n\nobj_size(flowFrame)\n\n3.53 MB\n\n\n\nobj_size(cytoframe)\n\n5.40 kB\n\n\nAnd similarly the case for flowSet and cytoset:\n\nobj_size(flowSet)\n\n20.99 MB\n\n\n\nobj_size(cytoset)\n\n3.88 kB\n\n\nAdditionally, with computer hardware increasingly switching from spinning disk hard-drives to faster solid state drives, the performance penalty previously experienced when not running from RAM is not as large of a concern as in previous years.", "crumbs": [ "About", "Intro to R", @@ -76,7 +76,7 @@ "href": "course/05_GatingSets/index.html#interconverting", "title": "05 - Gating Sets", "section": "Interconverting", - "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file20997f38fefd'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", + "text": "Interconverting\nDespite both R packages having been around for a while, many Bioconductor and GitHub often only implement methods to handle either flowFrames or cytoframes (although newer R packages are now allowing for both). Consequently, as we move forward in the course, it helps to be aware of which ones we are working with, and have the ability to interconvert between them as needed.\nTo go from a flowFrame to a cytoframe, we can use the flowFrame_to_cytoframe() function\n\nConvertedToCytoframe <- flowFrame_to_cytoframe(flowFrame)\nConvertedToCytoframe\n\ncytoframe object 'file6791640d7f7'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\nrow names(0):\n\n\n\nobj_size(ConvertedToCytoframe)\n\n5.40 kB\n\n\nTo go from a cytoframe to a flowFrame, we can use the cytoframe_to_flowFrame() function\n\nConvertedToFlowframe <- flowWorkspace::cytoframe_to_flowFrame(cytoframe)\nConvertedToFlowframe\n\nflowFrame object '2025_07_26_AB_02_INF052_00_Ctrl.fcs'\nwith 10000 cells and 43 observables:\n name desc range minRange maxRange\n$P1 Time NA 878.809 0 878.809\n$P2 SSC-W NA 4194303.000 0 4194303.000\n$P3 SSC-H NA 4194303.000 0 4194303.000\n$P4 SSC-A NA 4194303.000 0 4194303.000\n$P5 FSC-W NA 4194303.000 0 4194303.000\n... ... ... ... ... ...\n$P39 APC-R700-A CD107a 4192506 -111 4192506\n$P40 Zombie NIR-A Viability 4192506 -111 4192506\n$P41 APC-Fire 750-A CD27 4192506 -111 4192506\n$P42 APC-Fire 810-A CCR7 4192506 -111 4192506\n$P43 AF-A NA 4194303 -111 4194303\n472 keywords are stored in the 'description' slot\n\n\n\nobj_size(ConvertedToFlowframe)\n\n3.53 MB\n\n\nTo go from a flowSet to a cytoSet, we can use the flowSet_to_cytoset() funciton\n\nConvertedToCytoset <- flowSet_to_cytoset(flowSet)\nConvertedToCytoset\n\nA cytoset with 6 samples.\n\n column names:\n Time, SSC-W, SSC-H, SSC-A, FSC-W, FSC-H, FSC-A, SSC-B-W, SSC-B-H, SSC-B-A, BUV395-A, BUV563-A, BUV615-A, BUV661-A, BUV737-A, BUV805-A, Pacific Blue-A, BV480-A, BV570-A, BV605-A, BV650-A, BV711-A, BV750-A, BV786-A, Alexa Fluor 488-A, Spark Blue 550-A, Spark Blue 574-A, RB613-A, RB705-A, RB780-A, PE-A, PE-Dazzle594-A, PE-Cy5-A, PE-Fire 700-A, PE-Fire 744-A, PE-Vio770-A, APC-A, Alexa Fluor 647-A, APC-R700-A, Zombie NIR-A, APC-Fire 750-A, APC-Fire 810-A, AF-A\n\n\n\nobj_size(ConvertedToCytoset)\n\n3.88 kB\n\n\nTo go from a cytoSet to a flowSet, we can use the cytoset_to_flowSet() function.\n\nConvertedToFlowset <- cytoset_to_flowSet(flowSet)\nConvertedToFlowset\n\nA flowSet with 6 experiments.\n\ncolumn names(43): Time SSC-W ... APC-Fire 810-A AF-A\n\n\n\nobj_size(ConvertedToFlowset)\n\n20.99 MB", "crumbs": [ "About", "Intro to R", @@ -112,7 +112,7 @@ "href": "course/05_GatingSets/index.html#system-time", "title": "05 - Gating Sets", "section": "System Time", - "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.466 0.004 0.471 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 461ms 466ms 2.13 13.3KB 0", + "text": "System Time\nEspecially when working with CytoML, it is often good to have an idea of how long it will take a particular function to run (to better plan how to use our time while waiting, whether to go grab coffee, etc.). There are a couple ways to do so.\nOne, using the system.time() function from base R, in which we surround whatever line of code we wish to evaluate in {}\n\nsystem.time({\n\nflowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\")\n\n})\n\n user system elapsed \n 0.971 0.016 1.004 \n\n\nAlternatively, if we install the bench package, we can use the mark function to evaluate how long it takes on average across numerous iterations.\n\n# install.packages(\"bench\") # CRAN\nlibrary(bench)\n\n\nmark(\n Test <- flowjo_to_gatingset(ws=ws, name=1, path = Folder, additional.keys=\"GROUPNAME\"),\n iterations= 5\n )\n\n# A tibble: 1 × 6\n expression min median `itr/sec` mem_alloc `gc/sec`\n <bch:expr> <bch> <bch:> <dbl> <bch:byt> <dbl>\n1 Test <- flowjo_to_gatingset(ws = ws… 765ms 786ms 1.25 13.3KB 0", "crumbs": [ "About", "Intro to R", From b214343b7adcfd1bc101075bfd3af748482432f0 Mon Sep 17 00:00:00 2001 From: David Rach Date: Wed, 4 Mar 2026 15:40:47 -0500 Subject: [PATCH 6/8] Two typos for 05, got rid of the Intro to R dropdown redirect, couple additional slide separators for slide05 due to small margins --- _quarto.yml | 1 - course/05_GatingSets/index.qmd | 2 +- course/05_GatingSets/slides.qmd | 6 ++- .../00_BonusContent/Immport/images/index.html | 2 +- .../PullConflicts/UpdatedPullRequest.html | 2 +- .../00_BonusContent/PullConflicts/index.html | 2 +- docs/course/00_BonusContent/index.html | 2 +- docs/course/00_Floreada/index.html | 6 +-- docs/course/00_Git/index.html | 2 +- docs/course/00_GitHub/index.html | 2 +- docs/course/00_Homeworks/index.html | 2 +- docs/course/00_Positron/index.html | 2 +- docs/course/00_Quarto/index.html | 2 +- docs/course/00_WorkstationSetup/Linux.html | 2 +- docs/course/00_WorkstationSetup/MacOS.html | 2 +- docs/course/00_WorkstationSetup/Windows.html | 2 +- docs/course/00_WorkstationSetup/index.html | 2 +- docs/course/01_InstallingRPackages/index.html | 6 +-- docs/course/02_FilePaths/Downsampler.html | 2 +- docs/course/02_FilePaths/index.html | 6 +-- docs/course/03_InsideFCSFile/index.html | 10 ++--- docs/course/03_InsideFCSFile/slides.html | 8 ++-- .../04_IntroToTidyverse/BonusContent.html | 2 +- docs/course/04_IntroToTidyverse/index.html | 2 +- docs/course/05_GatingSets/Downsampling.html | 2 +- docs/course/05_GatingSets/index.html | 16 ++++---- docs/course/05_GatingSets/slides.html | 18 ++++++--- docs/course/index.html | 2 +- docs/search.json | 39 ++++++++++++------- 29 files changed, 86 insertions(+), 68 deletions(-) diff --git a/_quarto.yml b/_quarto.yml index 0d4b92d..9bb39c0 100644 --- a/_quarto.yml +++ b/_quarto.yml @@ -63,7 +63,6 @@ website: - text: "00 - Floreada" href: course/00_Floreada/index.qmd - section: "Intro to R" - href: course/01_InstallingRPackages/index.qmd contents: - text: "01 - Installing R Packages" href: course/01_InstallingRPackages/index.qmd diff --git a/course/05_GatingSets/index.qmd b/course/05_GatingSets/index.qmd index 419da8e..817b696 100644 --- a/course/05_GatingSets/index.qmd +++ b/course/05_GatingSets/index.qmd @@ -154,7 +154,7 @@ While not today's focus, remember we could access individual components inside t Both "flowFrame" and "flowSet" objects were implemented in the `flowCore` package, which is the [oldest](/course/03_InsideFCSFile/#flowcore) extant flow cytometry R package on [Bioconductor](https://www.bioconductor.org/packages/release/bioc/html/flowCore.html). Consequently, a large proportion of the other flow cytometry R packages read in .fcs files as "flowFrame" and "flowSet" objects. -One consideration of this method is the contents of your .fcs files are read into your computer's random access memory [(RAM)](https://en.wikipedia.org/wiki/Random-access_memory). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM. +One consideration of this method is the contents of your .fcs files are read into your computer's random access memory [(RAM)](https://en.wikipedia.org/wiki/Random-access_memory). While for individual .fcs files or small experiments this will not present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM. To build some contextual understanding of the problem, let's learn how to check how much memory is being used by our individual variables/objects within our R session. We will primarily use the `lobstr` R packages `obj_size()` function, as it better handles evaluating complicated objects than base R's `object.size()` function. diff --git a/course/05_GatingSets/slides.qmd b/course/05_GatingSets/slides.qmd index e51edc0..51f3032 100644 --- a/course/05_GatingSets/slides.qmd +++ b/course/05_GatingSets/slides.qmd @@ -268,7 +268,7 @@ Both "flowFrame" and "flowSet" objects were implemented in the `flowCore` packag ::: {.fragment} ::: {.callout-tip title="."} -One consideration of this method is the contents of your .fcs files are read into your computer's random access memory [(RAM)](https://en.wikipedia.org/wiki/Random-access_memory). While for individual .fcs files or small experiments this present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM. +One consideration of this method is the contents of your .fcs files are read into your computer's random access memory [(RAM)](https://en.wikipedia.org/wiki/Random-access_memory). While for individual .fcs files or small experiments this will not present a problem for most modern computers, when working with large spectral flow cytometry files containing millions of events (or trying to analyze many .fcs files at once), you may encounter situations where you can quickly exceed your computers available RAM. ::: ::: @@ -582,6 +582,8 @@ ConvertedToCytoframe ::: +--- + ::: {.fragment} ```{r} obj_size(ConvertedToCytoframe) @@ -605,6 +607,8 @@ ConvertedToFlowframe ::: +--- + ::: {.fragment} ```{r} obj_size(ConvertedToFlowframe) diff --git a/docs/course/00_BonusContent/Immport/images/index.html b/docs/course/00_BonusContent/Immport/images/index.html index 748afa5..0801bc5 100644 --- a/docs/course/00_BonusContent/Immport/images/index.html +++ b/docs/course/00_BonusContent/Immport/images/index.html @@ -212,7 +212,7 @@