diff --git a/AboutUs.html b/AboutUs.html index 3af1fdbbda8..315ef01885b 100644 --- a/AboutUs.html +++ b/AboutUs.html @@ -3,11 +3,8 @@
- -We are a team based in the School of Computing, National University of Singapore.
You can reach us at the email e0970466@comp.nus.edu.sg
[github]
+ + + + diff --git a/AboutUs.page-vue-render.js b/AboutUs.page-vue-render.js index 11c5589138f..718a2d5c545 100644 --- a/AboutUs.page-vue-render.js +++ b/AboutUs.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"about-us"}},[_v("About Us"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#about-us","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("We are a team based in the "),_c('a',{attrs:{"href":"http://www.comp.nus.edu.sg"}},[_v("School of Computing, National University of Singapore")]),_v(".")]),_v(" "),_c('p',[_v("You can reach us at the email "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("e0970466@comp.nus.edu.sg")])]),_v(" "),_c('h2',{attrs:{"id":"project-team"}},[_v("Project team"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#project-team","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h3',{attrs:{"id":"yeo-jun-teng-drustan"}},[_v("Yeo Jun Teng Drustan"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#yeo-jun-teng-drustan","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/drustanyjt.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"https://github.com/drustanyjt"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"https://www.linkedin.com/in/drustan/"}},[_v("linkedin")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Team Lead")])]),_v(" "),_c('h3',{attrs:{"id":"chen-jiaying-jayne"}},[_v("Chen Jiaying Jayne"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#chen-jiaying-jayne","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/jayne1010.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/Jayne1010"}},[_v("github")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Developer")]),_v(" "),_c('li',[_v("Responsibilities: Documentation")])]),_v(" "),_c('h3',{attrs:{"id":"song-jia-hui"}},[_v("Song Jia Hui"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#song-jia-hui","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/jiahui0309.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/jiahui0309"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"https://www.linkedin.com/in/song-jia-hui/"}},[_v("linkedin")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Developer")]),_v(" "),_c('li',[_v("Responsibilities: Integration")])]),_v(" "),_c('h3',{attrs:{"id":"teng-shi-rou-charmaine"}},[_v("Teng Shi Rou Charmaine"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#teng-shi-rou-charmaine","onclick":"event.stopPropagation()"}})]),_v(" "),_c('img',{attrs:{"src":"/tp/images/tengcharmaine.png","width":"200px"}}),_v(" "),_c('p',[_v("["),_c('a',{attrs:{"href":"http://github.com/tengcharmaine"}},[_v("github")]),_v("]\n["),_c('a',{attrs:{"href":"https://www.linkedin.com/in/charmaine-teng/"}},[_v("linkedin")]),_v("]")]),_v(" "),_c('ul',[_c('li',[_v("Role: Developer")]),_v(" "),_c('li',[_v("Responsibilities: Scheduling and tracking")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Configuration.html b/Configuration.html index 2df76572e78..ee7cd328074 100644 --- a/Configuration.html +++ b/Configuration.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -19,8 +16,12 @@ Search
+
Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: config.json
).
+ + + + diff --git a/Configuration.page-vue-render.js b/Configuration.page-vue-render.js index 17b70a8846a..fbf29402709 100644 --- a/Configuration.page-vue-render.js +++ b/Configuration.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"configuration-guide"}},[_v("Configuration guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#configuration-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Certain properties of the application can be controlled (e.g user preferences file location, logging level) through the configuration file (default: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("config.json")]),_v(").")])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/DevOps.html b/DevOps.html index a19af23b779..6744034f77f 100644 --- a/DevOps.html +++ b/DevOps.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -21,8 +18,12 @@
This project uses Gradle for build automation and dependency management. You are recommended to read this Gradle Tutorial from the se-edu/guides.
Given below are how to use Gradle for some important project tasks.
clean
: Deletes the files created during the previous build tasks (e.g. files in the build
folder).
e.g. ./gradlew clean
shadowJar
: Uses the ShadowJar plugin to creat a fat JAR file in the build/lib
folder, if the current file is outdated.
-e.g. ./gradlew shadowJar
.
run
: Builds and runs the application.
runShadow
: Builds the application as a fat JAR, and then runs it.
checkstyleMain
: Runs the code style check for the main code base.
checkstyleTest
: Runs the code style check for the test code base.
test
: Runs all tests.
./gradlew test
— Runs all tests./gradlew clean test
— Cleans the project and runs testsThis project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the .github/workflows
folder). No further setting up required.
As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.
However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.
To enable Codecov for forks of this project, follow the steps given in this se-edu guide.
In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.
These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:
./config/travis/run-checks.sh
Any warnings or errors will be printed out to the console.
If adding new checks:
Checks are implemented as executable check-*
scripts within the .github
directory. The run-checks.sh
script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.
Check scripts should print out errors in the format SEVERITY:FILENAME:LINE: MESSAGE
Check scripts must exit with a non-zero exit code if any errors occur.
Here are the steps to create a new release.
MainApp.java
.gradlew shadowJar
).v0.1
+e.g. ./gradlew shadowJar
.
run
: Builds and runs the application.
runShadow
: Builds the application as a fat JAR, and then runs it.
checkstyleMain
: Runs the code style check for the main code base.
checkstyleTest
: Runs the code style check for the test code base.
test
: Runs all tests.
./gradlew test
— Runs all tests./gradlew clean test
— Cleans the project and runs testsThis project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the .github/workflows
folder). No further setting up required.
As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.
However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.
To enable Codecov for forks of this project, follow the steps given in this se-edu guide.
In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.
These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:
./config/travis/run-checks.sh
Any warnings or errors will be printed out to the console.
If adding new checks:
Checks are implemented as executable check-*
scripts within the .github
directory. The run-checks.sh
script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.
Check scripts should print out errors in the format SEVERITY:FILENAME:LINE: MESSAGE
Check scripts must exit with a non-zero exit code if any errors occur.
Here are the steps to create a new release.
MainApp.java
.gradlew shadowJar
).v0.1
+ + + + diff --git a/DevOps.page-vue-render.js b/DevOps.page-vue-render.js index 43319a4710c..776321d896e 100644 --- a/DevOps.page-vue-render.js +++ b/DevOps.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"devops-guide"}},[_v("DevOps guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#devops-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{pre:true,attrs:{"class":"page-nav-print d-none d-print-block"}}),_v(" "),_c('h2',{attrs:{"id":"build-automation"}},[_v("Build automation"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#build-automation","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This project uses Gradle for "),_c('strong',[_v("build automation and dependency management")]),_v(". "),_c('strong',[_v("You are recommended to read "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/gradle.html"}},[_v("this Gradle Tutorial from the se-edu/guides")])]),_v(".")]),_v(" "),_c('p',[_v("Given below are how to use Gradle for some important project tasks.")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clean")])]),_v(": Deletes the files created during the previous build tasks (e.g. files in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("build")]),_v(" folder)."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew clean")])])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("shadowJar")])]),_v(": Uses the ShadowJar plugin to creat a fat JAR file in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("build/lib")]),_v(" folder, "),_c('em',[_v("if the current file is outdated")]),_v("."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew shadowJar")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run")])]),_v(": Builds and runs the application."),_c('br'),_v(" "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("runShadow")])]),_v(": Builds the application as a fat JAR, and then runs it.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("checkstyleMain")])]),_v(": Runs the code style check for the main code base."),_c('br'),_v(" "),_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("checkstyleTest")])]),_v(": Runs the code style check for the test code base.")])]),_v(" "),_c('li',[_c('p',[_c('strong',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("test")])]),_v(": Runs all tests.")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew test")]),_v(" — Runs all tests")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./gradlew clean test")]),_v(" — Cleans the project and runs tests")])])])]),_v(" "),_c('hr'),_v(" "),_c('h2',{attrs:{"id":"continuous-integration-ci"}},[_v("Continuous integration (CI)"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#continuous-integration-ci","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github/workflows")]),_v(" folder). No further setting up required.")]),_v(" "),_c('h3',{attrs:{"id":"code-coverage"}},[_v("Code coverage"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#code-coverage","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.")]),_v(" "),_c('p',[_v("However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.")]),_v(" "),_c('p',[_v("To enable Codecov for forks of this project, follow the steps given in "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/codecov.html"}},[_v("this se-edu guide")]),_v(".")]),_v(" "),_c('h3',{attrs:{"id":"repository-wide-checks"}},[_v("Repository-wide checks"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#repository-wide-checks","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.")]),_v(" "),_c('p',[_v("These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("./config/travis/run-checks.sh")])]),_v(" "),_c('p',[_v("Any warnings or errors will be printed out to the console.")]),_v(" "),_c('p',[_c('strong',[_v("If adding new checks:")])]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Checks are implemented as executable "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("check-*")]),_v(" scripts within the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".github")]),_v(" directory. The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("run-checks.sh")]),_v(" script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.")])]),_v(" "),_c('li',[_c('p',[_v("Check scripts should print out errors in the format "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("SEVERITY:FILENAME:LINE: MESSAGE")])]),_v(" "),_c('ul',[_c('li',[_v("SEVERITY is either ERROR or WARN.")]),_v(" "),_c('li',[_v("FILENAME is the path to the file relative to the current directory.")]),_v(" "),_c('li',[_v("LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.")])])]),_v(" "),_c('li',[_c('p',[_v("Check scripts must exit with a non-zero exit code if any errors occur.")])])]),_v(" "),_c('hr'),_v(" "),_c('h2',{attrs:{"id":"making-a-release"}},[_v("Making a release"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#making-a-release","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Here are the steps to create a new release.")]),_v(" "),_c('ol',[_c('li',[_v("Update the version number in "),_c('a',{attrs:{"href":"https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("MainApp.java")])]),_v(".")]),_v(" "),_c('li',[_v("Generate a fat JAR file using Gradle (i.e., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("gradlew shadowJar")]),_v(").")]),_v(" "),_c('li',[_v("Tag the repo with the version number. e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("v0.1")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://help.github.com/articles/creating-releases/"}},[_v("Create a new release using GitHub")]),_v(". Upload the JAR file you created.")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/DeveloperGuide.html b/DeveloperGuide.html index 2fd3e9f0f62..c9b552466ec 100644 --- a/DeveloperGuide.html +++ b/DeveloperGuide.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -20,37 +17,37 @@
This project is based on the AddressBook-Level3 project created by the SE-EDU initiative.
This project also utilised CoPilot and ChatGPT to assist in the development and documentation process.
Jayne - I had ChatGPT's assistance for HelpCommand code, documentation and UI edits done by me.
Jia Hui - I used the assistance of Github CoPilot for most of my code. I also used the assistance of ChatGPT mainly for documentation, UI edits for my code.
Drustan - I had Github CoPilot's assistance for most of the code attributed to me. Including but not limited to functional code, test code, github workflow files, and documentation.
Charmaine - I had the assistance of ChatGPT for some of my functional code (other than AddNote Command which was referenced from the tutorial for Remark Command). -I mainly had assistance for test code, documentation and UI edits done by me.
Refer to the guide Setting up and getting started.
lightbulb Useful Tip:
.puml
files used to create diagrams in this document are in the docs/diagrams
folder in our code repository.The Architecture Diagram given above explains the high-level design of the App.
Given below is a quick overview of main components and how they interact with each other.
Main components of the architecture
Main
(consisting of classes Main
and MainApp
) is in charge of the app launch and shut down.
The bulk of the app's work is done by the following four components:
UI
: The UI of the App.Logic
: The command executor.Model
: Holds the data of the App in memory.Storage
: Reads data from, and writes data to, the hard disk.Commons
represents a collection of classes used by multiple other components.
How the architecture components interact with each other
The Sequence Diagram below shows how the components interact with each other for the scenario where the user issues the command delete S0123456A
.
Each of the four main components (also shown in the diagram above),
interface
with the same name as the Component.{Component Name}Manager
class (which follows the corresponding API interface
mentioned in the previous point.For example, the Logic
component defines its API in the Logic.java
interface and implements its functionality using the LogicManager.java
class which follows the Logic
interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
The sections below give more details of each component.
The API of this component is specified in Ui.java
The UI consists of a MainWindow
that is made up of parts e.g.CommandBox
, ResultDisplay
, PersonListPanel
, StatusBarFooter
etc. All these, including the MainWindow
, inherit from the abstract UiPart
class which captures the commonalities between classes that represent parts of the visible GUI.
The UI
component uses the JavaFX UI framework. The layout of these UI parts are defined in matching .fxml
files that are in the src/main/resources/view
folder. For example, the layout of the MainWindow
is specified in MainWindow.fxml
The UI
component,
Logic
component.Model
data so that the UI can be updated with the modified data.Logic
component, because the UI
relies on the Logic
to execute commands.Model
component, as it displays Person
object residing in the Model
.API : Logic.java
Here's a (partial) class diagram of the Logic
component:
The sequence diagram below illustrates the interactions within the Logic
component, taking execute("delete S0123456A")
API call as an example.
Note: The lifeline for DeleteCommandParser
and DeleteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.
How the Logic
component works:
Logic
is called upon to execute a command, it is passed to an AddressBookParser
object which in turn creates a parser that matches the command (e.g., DeleteCommandParser
) and uses it to parse the command.Command
object (more precisely, an object of one of its subclasses e.g., DeleteCommand
) which is executed by the LogicManager
.Model
when it is executed (e.g. to delete a person).Refer to the guide Setting up and getting started.
lightbulb Useful Tip:
.puml
files used to create diagrams in this document are in the docs/diagrams
folder in our code repository.The Architecture Diagram given above explains the high-level design of the App.
Given below is a quick overview of main components and how they interact with each other.
Main components of the architecture
Main
(consisting of classes Main
and MainApp
) is in charge of the app launch and shut down.
The bulk of the app's work is done by the following four components:
UI
: The UI of the App.Logic
: The command executor.Model
: Holds the data of the App in memory.Storage
: Reads data from, and writes data to, the hard disk.Commons
represents a collection of classes used by multiple other components.
How the architecture components interact with each other
The Sequence Diagram below shows how the components interact with each other for the scenario where the user issues the command delete S0123456A
.
Each of the four main components (also shown in the diagram above),
interface
with the same name as the Component.{Component Name}Manager
class (which follows the corresponding API interface
mentioned in the previous point.For example, the Logic
component defines its API in the Logic.java
interface and implements its functionality using the LogicManager.java
class which follows the Logic
interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component's being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.
The sections below give more details of each component.
The API of this component is specified in Ui.java
The UI consists of a MainWindow
that is made up of parts e.g.CommandBox
, ResultDisplay
, PersonListPanel
, StatusBarFooter
etc. All these, including the MainWindow
, inherit from the abstract UiPart
class which captures the commonalities between classes that represent parts of the visible GUI.
The UI
component uses the JavaFX UI framework. The layout of these UI parts are defined in matching .fxml
files that are in the src/main/resources/view
folder. For example, the layout of the MainWindow
is specified in MainWindow.fxml
The UI
component,
Logic
component.Model
data so that the UI can be updated with the modified data.Logic
component, because the UI
relies on the Logic
to execute commands.Model
component, as it displays Person
object residing in the Model
.API : Logic.java
Here's a (partial) class diagram of the Logic
component:
The sequence diagram below illustrates the interactions within the Logic
component, taking execute("delete S0123456A")
API call as an example.
Note: The lifeline for DeleteCommandParser
and DeleteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.
How the Logic
component works:
Logic
is called upon to execute a command, it is passed to an AddressBookParser
object which in turn creates a parser that matches the command (e.g., DeleteCommandParser
) and uses it to parse the command.Command
object (more precisely, an object of one of its subclasses e.g., DeleteCommand
) which is executed by the LogicManager
.Model
when it is executed (e.g. to delete a person).Model
).CommandResult
object which is returned back from Logic
.Here are the other classes in Logic
(omitted from the class diagram above) that are used for parsing a user command:
How the parsing works:
AddressBookParser
class creates an XYZCommandParser
(XYZ
is a placeholder for the specific command name e.g., AddCommandParser
) which uses the other classes shown above to parse the user command and create a XYZCommand
object (e.g., AddCommand
) which the AddressBookParser
returns back as a Command
object.XYZCommandParser
classes (e.g., AddCommandParser
, DeleteCommandParser
, ...) inherit from the Parser
interface so that they can be treated similarly where possible e.g, during testing.API : Model.java
The Model
component,
Person
objects (which are contained in a UniquePersonList
object).Person
objects (e.g. results of a search query) as a separate filtered list which is exposed to outsiders as an unmodifiable ObservableList<Person>
that can be 'observed' e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list changes.UserPref
object that represents the user’s preferences. This is exposed to the outside as a ReadOnlyUserPref
object.Model
represents data entities of the domain, they should make sense on their own without depending on other components).API : Storage.java
The Storage
component,
AddressBookStorage
and UserPrefStorage
, which means it can be treated as either one (if only the functionality of only one is needed).Model
component (because the Storage
component's job is to save/retrieve objects that belong to the Model
).Classes used by multiple components are in the seedu.addressbook.commons
package.
This section describes some noteworthy details on how certain features are implemented.
The add
feature is implemented using the AddCommand
class. The AddCommand
object takes in a Person
object.
Person
object is created if the following conditions are satisfied:
Person
in ClinicMateThe add
mechanism is facilitated by AddressBook
. It implements Model#addPerson(Person p)
which allows users to add patients’ contacts
and relevant patient information into ClinicMate. These operations are exposed in the Model
interface as Model#addPerson(Person p)
.
Apart from that, the feature also includes the following operation in Model
, which implements the Model
interface:
Model#hasPerson(Person person)
: Checks if the Person
to be added is already an existing Person
profile in ClinicMateGiven below is an example usage scenario and how the add
mechanism behaves at each step.
Step 1. The user launches the application for the first time. ClinicMate
will be initialized with the initial address book state.
Step 2. The user executes add n\John Doe p\12345678 e\john@mail.com i\T0123456A ag\12 s\M a\John street, block 123, #01-01
to add the person in the address book with the unique IC number T0123456A
.
-The add
command calls Model#addPerson(Person p)
, causing the modified state of the address book after the add n\John Doe …
command executes to be saved.
Note: If a command fails its execution, it will not call Model#addPerson(Person p)
, so the address book state will not be saved.
The following sequence diagram illustrates how the add
command works and goes through the Logic
and Model
components.
Note: The lifeline for AddCommandParser
and AddCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new add
command:
Aspect: How to add:
Alternative 1 (current choice): Requires all the relevant fields (e.g. name, phone, email, IC number, age, sex, address).
add
command calls Model#addPerson(Person p)
, causing the modified state of the address book after the add n\John Doe …
command executes to be saved. Note: If a command fails its execution, it will not call Model#addPerson(Person p)
, so the address book state will not be saved.
The following sequence diagram illustrates how the add
command works and goes through the Logic
and Model
components.
Note: The lifeline for AddCommandParser
and AddCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new add
command:
Aspect: How to add:
Alternative 1 (current choice): Requires all the relevant fields (e.g. name, phone, email, IC number, age, sex, address).
Alternative 2: Allow users to add patients by adding fields as and when is needed (i.e. not make all the fields compulsory).
Aspect: Display of new contact when command is successful:
Aspect: Display of error message when command is unsuccessful:
The addnote
mechanism is facilitated by AddressBook
. It implements AddressBook#setPerson(Person target, Person editedPerson)
which allow users to add/replace patients’ notes in the addressbook.
These operations are exposed in the Model
interface:
Model#getPersonIfExists
: Checks if the Person
with the predicate existsModel#setPerson
: Changes the note parameter of the target Person
Model#isPersonDisplayed
: Checks if the Person
has their notes displayed in the patient notes panelModel#setDisplayedNote
: If Model#isPersonDisplayed
returns true, the notes displayed will be updatedGiven below is an example usage scenario and how the addnote
mechanism behaves at each step.
Step 1. The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2. The user executes addnote T0123456A n\Covid
to add a note to the person in ClinicMate with the unique IC number T0123456A
.
-The addnote
command calls Model#setPerson(Person target, Person editedPerson)
, causing the modified state of ClinicMate after the addnote T0123456A n\Covid
command executes to be saved.
Note: If a command fails its execution, it will not call Model#setPerson(Person target, Person editedPerson)
, so the address book state will not be saved.
The following sequence diagram shows how an addnote
operation goes through the Logic
component:
Note: The lifeline for AddNoteCommandParser
and AddNoteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new addnote
command:
Aspect: How to add or replace:
Alternative 1 (Current Choice): Have a flag (-replace) to allow users to replace the whole note section of specified patient.
This is an extension of the normal addnote
command where new notes are appended to the existing note itself.
addnote
command calls Model#setPerson(Person target, Person editedPerson)
, causing the modified state of ClinicMate after the addnote T0123456A n\Covid
command executes to be saved. Note: If a command fails its execution, it will not call Model#setPerson(Person target, Person editedPerson)
, so the address book state will not be saved.
The following sequence diagram shows how an addnote
operation goes through the Logic
component:
Note: The lifeline for AddNoteCommandParser
and AddNoteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new addnote
command:
Aspect: How to add or replace:
Alternative 1 (Current Choice): Have a flag (-replace) to allow users to replace the whole note section of specified patient.
This is an extension of the normal addnote
command where new notes are appended to the existing note itself.
Alternative 2: Allow users to only add notes to patients.
Aspect: Display of new note when command is successful:
Aspect: Display of error message when command is unsuccessful:
The find
mechanism is facilitated by ModelManager
. It implements ModelManager#updateFilteredPersonList(Predicate predicate)
which allow users to find patients in ClinicMate.
These operations are exposed in the Model
interface as Model#updateFilteredPersonList(Predicate predicate)
.
The predicate
argument takes in a IdentityCardNumberMatchesPredicate
to filter the list of patients.
Given below is an example usage scenario and how the find
mechanism behaves at each step.
Step 1. The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2. The user executes find S0123456A
to find the person in the address book with the unique IC number S0123456A
. The find
command calls Model#updateFilteredPersonList(Predicate predicate)
,
-causing the modified state of the address book after the find S0123456A
command executes to be displayed.
Note: If a command fails its execution, it will not call Model#updateFilteredPersonList(Predicate predicate)
, so the address book state will not be displayed.
The following sequence diagram shows how a find
operation goes through the Logic
component:
Note: The lifeline for FindCommand
and FindCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Filtering patients
Alternative 1 (Current Choice): Requires users to input a full and valid IC number
Alternative 2: Match all relevant patients' profiles even if the user enters a partial IC number
Aspect: Display of filtered list when command is successful:
find S0123456A
command executes to be displayed. Note: If a command fails its execution, it will not call Model#updateFilteredPersonList(Predicate predicate)
, so the address book state will not be displayed.
The following sequence diagram shows how a find
operation goes through the Logic
component:
Note: The lifeline for FindCommand
and FindCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Filtering patients
Alternative 1 (Current Choice): Requires users to input a full and valid IC number
Alternative 2: Match all relevant patients' profiles even if the user enters a partial IC number
Aspect: Display of filtered list when command is successful:
Aspect: Display of error message when command is unsuccessful:
The delete
mechanism is facilitated by Addressbook
. It implements Addressbook#removePerson(Person key)
which allow users to delete patients in the addressbook.
These operations are exposed in the Model
interface as Model#getPersonIfExists(Predicate predicate)
and Model#deletePerson(Person target)
.
Given below is an example usage scenario and how the delete
mechanism behaves at each step.
Step 1. The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2. The user executes delete S0123456A
to delete the person in the address book with the unique IC number S0123456A
.
-The delete command calls Model#deletePerson(Person target)
, causing the modified state of the address book after the delete S0123456A
command executes to be saved.
Note: If a command fails its execution, it will not call Model#deletePerson(Person target)
, so the address book state will not be saved.
The following sequence diagram shows how a delete
operation goes through the Logic
component:
Note: The lifeline for DeleteCommandParser
and DeleteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Display of updated person list when command is successful:
Model#deletePerson(Person target)
, causing the modified state of the address book after the delete S0123456A
command executes to be saved. Note: If a command fails its execution, it will not call Model#deletePerson(Person target)
, so the address book state will not be saved.
The following sequence diagram shows how a delete
operation goes through the Logic
component:
Note: The lifeline for DeleteCommandParser
and DeleteCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Display of updated person list when command is successful:
Aspect: Display of error message when command is unsuccessful:
The edit
mechanism is facilitated by AddressBook
. It implements AddressBook#setPerson(Person target, Person editedPerson)
which allow users to edit patient’s details in the addressbook.
These operations are exposed in the Model
interface as Model#setPerson(Person target, Person editedPerson)
.
The edit
feature has the following operations in ModelManager
which implements the Model
interface:
Model#getPersonIfExists(predicate)
: Returns the specified Person
if they exist in the list.
Model#setPerson
: Replaces the given Person
target with editedPerson
. Target must exist in the address book. The identity of editedPerson
must not be the same as another existing person in the address book.
Model#hasPerson
: Returns true if the address book contains the person in question.
Model#updateFilteredPersonList
: Updates the filter of the filtered person list to filter by the given predicate.
Given below is an example usage scenario and how the edit
mechanism behaves at each step.
Step 1. The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2. The user executes edit T0123456A …
to edit details of the person in the address book with the unique IC number T0123456A
. The edit
command calls Model#setPerson(Person target, Person editedPerson)
, causing the modified state of the address book after the edit T0123456A …
command executes to be saved.
Note: If a command fails its execution, it will not call Model#setPerson(Person target, Person editedPerson)
, so the address book state will not be saved.
The following sequence diagram shows how an edit
operation goes through the Logic
component:
Note: The lifeline for EditCommand
and EditCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Display of updated information when command is successful:
The edit
mechanism is facilitated by AddressBook
. It implements AddressBook#setPerson(Person target, Person editedPerson)
which allow users to edit patient’s details in the addressbook.
These operations are exposed in the Model
interface as Model#setPerson(Person target, Person editedPerson)
.
The edit
feature has the following operations in ModelManager
which implements the Model
interface:
Model#getPersonIfExists(predicate)
: Returns the specified Person
if they exist in the list.
Model#setPerson
: Replaces the given Person
target with editedPerson
. Target must exist in the address book. The identity of editedPerson
must not be the same as another existing person in the address book.
Model#hasPerson
: Returns true if the address book contains the person in question.
Model#updateFilteredPersonList
: Updates the filter of the filtered person list to filter by the given predicate.
Given below is an example usage scenario and how the edit
mechanism behaves at each step.
Step 1. The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2. The user executes edit T0123456A …
to edit details of the person in the address book with the unique IC number T0123456A
. The edit
command calls Model#setPerson(Person target, Person editedPerson)
, causing the modified state of the address book after the edit T0123456A …
command executes to be saved.
Note: If a command fails its execution, it will not call Model#setPerson(Person target, Person editedPerson)
, so the address book state will not be saved.
The following sequence diagram shows how an edit
operation goes through the Logic
component:
Note: The lifeline for EditCommand
and EditCommandParser
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a new command:
Aspect: Display of updated information when command is successful:
Aspect: Display of error message when command is unsuccessful:
The show
mechanism is facilitated by ModelManager
. It implements
ModelManager#getPersonIfExists(predicate)
: Returns the specified Person
if they exist in the list.ModelManager#setDisplayNote(Person person)
: Which allows users to display
the notes of selected contacts on the NoteDisplay
.ModelManager#clear()
: Which clears the notes in NoteDislay
.The ShowCommandParser
parses the user input and implements ShowCommand#createClearCommand()
if input is an empty string, else,
it implements ShowCommand#createShowCommad(IdentityCardNumberMatchesPredicate icPredicate)
.
Given below is an example usage scenario and how the show
mechanism behaves at each step.
Step 1: The user launches the application. The AddressBook
will be initialized with the initial address book state.
Step 2:
Scenario 1: The user executes show T0123456A ...
to show the notes of the person in the address book with the unique IC number of T0123456A
.
The show
command calls ModelManager#getPersonIfExists(predicate)
to check if the specific person exists in the addressbook.
ModelManager#setDisplayNote(Person person)
is then called, causing the modified state of the address book after the show T0123456A ...
command executes to be displayed.
Scenario 2: The user executes show
to clear the notes of the person in patient notes panel of the address book.
-The show
command calls ModelManager#clear()
, causing the modified state of the address book after the show
command executes to be displayed.
The following sequence diagram illustrates how a show
operation goes through the Logic
component and sets the patient notes panel.
Note: The lifeline for ShowCommandParser
and ShowCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a show
command:
Aspect: How to show the notes of patient on patient notes panel.
Alternative 1 (Current Choice): Show patient's notes in one command using IC_NUMBER
.
Pros: Users are able to view specific user's notes.
Cons: Only allow for one parameter which is IC_NUMBER
.
Alternative 2: Only show the patient notes which was last searched for.
Pros: Easy to implement.
Cons: Brings inconvenience to users if they only want to view a specific user's notes.
Aspect: How to clear the notes of patient on patient notes display.
Alternative 1 (Current Choice): Clears patient's notes on patient notes display using one command.
Pros: Easy to implement. Users do not need to remember so many commands.
Cons: The command might not be intuitive.
Alternative 2: Clears patient's notes on patient notes display with another command.
Pros: The command is more intuitive.
Cons: Users are required to know an extra command, which reduces usability of application.
The NoteDisplay
allows the users to view the notes of the selected patient in the patient list. All notes are displayed in the Person Card
.
NoteDisplay
inherits UIPart
and is used to display the notes section of the patient details. More details of the class implementation can be seen in the class diagram below.
NoteDisplay
has a private field noteDisplay
which is of type TextArea
. The NoteDisplay
has a method called setNoteToUser
which takes in a Note
and changes the noteDisplay
through its settext
method.
+The show
command calls ModelManager#clear()
, causing the modified state of the address book after the show
command executes to be displayed.
The following sequence diagram illustrates how a show
operation goes through the Logic
component and sets the patient notes panel.
Note: The lifeline for ShowCommandParser
and ShowCommand
should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
The following activity diagram summarizes what happens when a user executes a show
command:
Aspect: How to show the notes of patient on patient notes panel.
Alternative 1 (Current Choice): Show patient's notes in one command using IC_NUMBER
.
Pros: Users are able to view specific user's notes.
Cons: Only allow for one parameter which is IC_NUMBER
.
Alternative 2: Only show the patient notes which was last searched for.
Pros: Easy to implement.
Cons: Brings inconvenience to users if they only want to view a specific user's notes.
Aspect: How to clear the notes of patient on patient notes display.
Alternative 1 (Current Choice): Clears patient's notes on patient notes display using one command.
Pros: Easy to implement. Users do not need to remember so many commands.
Cons: The command might not be intuitive.
Alternative 2: Clears patient's notes on patient notes display with another command.
Pros: The command is more intuitive.
Cons: Users are required to know an extra command, which reduces usability of application.
The NoteDisplay
allows the users to view the notes of the selected patient in the patient list. All notes are displayed in the Person Card
.
NoteDisplay
inherits UIPart
and is used to display the notes section of the patient details. More details of the class implementation can be seen in the class diagram below.
NoteDisplay
has a private field noteDisplay
which is of type TextArea
. The NoteDisplay
has a method called setNoteToUser
which takes in a Note
and changes the noteDisplay
through its settext
method.
The notes will then be displayed in a section which is a FXML VBox
.
Aspect: How the notes of the patient are displayed
Alternative 1 (Current Choice): Display the notes of the patients in a separate panel.
Pros: The information of patient is more well organised. It allows users to have a more comprehensive view of their patient notes.
Cons: One additional command is needed to view the notes of the patients.
Alternative 2: Display the notes of the patients in the PersonCard
with the rest of the details.
Pros: The user does not need to enter an extra command to view the notes of the patients.
Cons: It is very difficult to view the notes of the individual patient as there is too much information displayed on the PersonCard
.
Target user profile:
Value proposition: Quick and easy management of patient contacts, including important patient information.
Priorities: High (must have) - * * *
, Medium (nice to have) - * *
, Low (unlikely to have) - *
Priority | As a … | I want to … | So that I can… |
---|---|---|---|
* * * | user | add a new patient | manage patient information for that new patient |
* * * | organised user | easily delete unnecessary data to reduce clutter in ClinicMate | maintain a clean and organised patient database |
* * * | user | add notes associated to each patient (including past diagnosis etc.) | easily follow up on necessary actions and understand the patient better |
* * * | user | exit ClinicMate quickly | conclude my session at the end of the day and ensure that ClinicMate is not running in the background |
* * | user | remove notes associated to each patient | remove irrelevant information and keep my notes up to date |
* * | user managing many patients | filter the data based on ic number | view the information quickly without searching through the whole list |
* * | careless user | edit patient information | keep accurate records of my patients |
* * | new user | see usage instructions | refer to instructions when I have difficulty using ClinicMate |
* * | new user | clear all sample data | insert my own patient information into ClinicMate |
* * | new user | see ClinicMate populated with sample data | see how ClinicMate looks like when it is in use |
* | user | show individual patient information | focus on the patient's details during consultations |
* | creative user | be able to change the theme of ClinicMate | personalise the apperance of the user interface based on my preferences |
* | new user | be able to export patient data | analyse health trends of a patient over time |
edit Note:
For all use cases below, the System is the ClinicMate
and the Actor is the user
, unless specified otherwise
Use case: UC01 - Add a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to add a specific patient to the list.
ClinicMate adds the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong.
3a1. ClinicMate shows an error message.
Use case resumes at step 2.
4a. There is an existing user in the database.
4a1. ClinicMate shows an error message.
Use case resumes at step 2.
Use case: UC02 - Add notes for a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to add notes for a specific patient in the list.
ClinicMate adds notes for the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
4a. The given IC_NUMBER
is invalid.
4a1. ClinicMate shows an error message.
Use case resumes at step 2.
Use case: UC03 - Delete a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to delete a specific patient in the list.
ClinicMate deletes the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
4a. The given IC_NUMBER
is invalid → handled similarly to UC02 4a.
Use case: UC04 - Find a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to find a specific patient in the list.
ClinicMate finds the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
4a. The given IC_NUMBER
is invalid → handled similarly to UC02 4a.
Use case: UC05 - Edit a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to edit a specific patient in the list.
ClinicMate edits the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
4a. The given IC_NUMBER
is invalid → handled similarly to UC02 4a.
Use case: UC06 - Show a person
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to show a specific patient in the list.
ClinicMate shows the patient.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
4a. The given IC_NUMBER
is invalid → handled similarly to UC02 4a.
Use case: UC07 - Clear all patients
MSS
User requests to list patients.
ClinicMate shows a list of patients.
User requests to clear all patients from the full list of patients.
ClinicMate clear all patients in the list.
Use case ends.
Extensions
2a. The list is empty.
Use case ends.
3a. The given command format is wrong → handled similarly to UC01 3a.
Use case: UC08 - Exit the program
MSS
User requests to exit the program.
ClinicMate exits.
Use case ends.
Extensions
Use case: UC09 - View help
MSS
User requests for help to use ClinicMate.
ClinicMate shows a help window with a link to the user guide.
Use case ends.
Extensions
11
or above installed.edit Note:
Some definitions have been omitted as they have already been defined in the user guide.
Potential Issues With Current Feature
Existing Person
class has all fields: name
, age
, sex
, ic
, phone
, email
and address
. However, users might not require all of these fields.
@@ -117,8 +114,12 @@
limited time. However, through clarifying each other's doubts and questions, we were able to comprehend and made edits to the code eventually.
Throughout the module, the team has gained much experience both in technical and soft skills. We definitely made significant improvements to our product through self-research, teamwork and support from each other. We got accustomed to the GitHub workflow, made use of JavaFX to implement our UI and most importantly, we developed a CLI application that adheres to rigorous code quality standards, -ensuring readability and maintainability at the same time. The team definitely had many takeaways from this module.
+ensuring readability and maintainability at the same time. The team definitely had many takeaways from this module.
+ + + + diff --git a/DeveloperGuide.page-vue-render.js b/DeveloperGuide.page-vue-render.js index a9f58c10a6a..58f5bec8c73 100644 --- a/DeveloperGuide.page-vue-render.js +++ b/DeveloperGuide.page-vue-render.js @@ -878,6 +878,6 @@ with(this){return _c('h4',{attrs:{"id":"challenge-4-modifying-the-code-to-fit-cl with(this){return _c('h3',{attrs:{"id":"achievements"}},[_v("Achievements"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#achievements","onclick":"event.stopPropagation()"}})])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Documentation.html b/Documentation.html index 575291e5a70..f8ab81b1ca7 100644 --- a/Documentation.html +++ b/Documentation.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -19,8 +16,12 @@ Search
Setting up and maintaining the project website
docs/
folder contains the source files for the documentation website.Style guidance:
Diagrams:
Converting to PDF
+
Setting up and maintaining the project website
docs/
folder contains the source files for the documentation website.Style guidance:
Diagrams:
Converting to PDF
+ + + + diff --git a/Documentation.page-vue-render.js b/Documentation.page-vue-render.js index 5d9953d55ae..16eefef4d60 100644 --- a/Documentation.page-vue-render.js +++ b/Documentation.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"documentation-guide"}},[_v("Documentation Guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#documentation-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Setting up and maintaining the project website")])]),_v(" "),_c('ul',[_c('li',[_v("We use "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_c('strong',[_v("MarkBind")])]),_v(" to manage documentation.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("docs/")]),_v(" folder contains the source files for the documentation website.")]),_v(" "),_c('li',[_v("To learn how set it up and maintain the project website, follow the guide "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/markbind-forked-sites.html"}},[_v("[se-edu/guides] Working with Forked MarkBind sites")]),_v(" for project documentation.")])]),_v(" "),_c('p',[_c('strong',[_v("Style guidance:")])]),_v(" "),_c('ul',[_c('li',[_v("Follow the "),_c('a',{attrs:{"href":"https://developers.google.com/style"}},[_c('strong',[_c('em',[_v("Google developer documentation style guide")])])]),_v(".")]),_v(" "),_c('li',[_v("Also relevant is the "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/markdown.html"}},[_c('em',[_v("se-edu/guides "),_c('strong',[_v("Markdown coding standard")])])]),_v(".")])]),_v(" "),_c('p',[_v("Diagrams:")]),_v(" "),_c('ul',[_c('li',[_v("See the guide "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/plantUml.html"}},[_c('em',[_v("se-edu/guides "),_c('strong',[_v("Using PlantUML")])])])])]),_v(" "),_c('p',[_c('strong',[_v("Converting to PDF")])]),_v(" "),_c('ul',[_c('li',[_v("See the guide "),_c('a',{attrs:{"href":"https://se-education.org/guides/tutorials/savingPdf.html"}},[_c('em',[_v("se-edu/guides "),_c('strong',[_v("Saving web documents as PDF files")])])]),_v(".")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Logging.html b/Logging.html index ec77276758d..1cb8f5a5be4 100644 --- a/Logging.html +++ b/Logging.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -19,8 +16,12 @@ Search
java.util.logging
package for logging.LogsCenter
class is used to manage the logging levels and logging destinations.Logger
for a class can be obtained using LogsCenter.getLogger(Class)
which will log messages according to the specified logging level..log
file.logLevel
setting in the configuration file (See the Configuration guide section).+
java.util.logging
package for logging.LogsCenter
class is used to manage the logging levels and logging destinations.Logger
for a class can be obtained using LogsCenter.getLogger(Class)
which will log messages according to the specified logging level..log
file.logLevel
setting in the configuration file (See the Configuration guide section).+ + + + diff --git a/Logging.page-vue-render.js b/Logging.page-vue-render.js index 30a571094e7..1a703de1938 100644 --- a/Logging.page-vue-render.js +++ b/Logging.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"logging-guide"}},[_v("Logging guide"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#logging-guide","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ul',[_c('li',[_v("We are using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java.util.logging")]),_v(" package for logging.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LogsCenter")]),_v(" class is used to manage the logging levels and logging destinations.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Logger")]),_v(" for a class can be obtained using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("LogsCenter.getLogger(Class)")]),_v(" which will log messages according to the specified logging level.")]),_v(" "),_c('li',[_v("Log messages are output through the console and to a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v(".log")]),_v(" file.")]),_v(" "),_c('li',[_v("The output logging level can be controlled using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("logLevel")]),_v(" setting in the configuration file (See the "),_c('a',{attrs:{"href":"/tp/Configuration.html"}},[_v("Configuration guide")]),_v(" section).")]),_v(" "),_c('li',[_c('strong',[_v("When choosing a level for a log message")]),_v(", follow the conventions given in "),_c('a',{attrs:{"href":"https://se-education.org/guides/conventions/java/logging.html"}},[_c('em',[_v("[se-edu/guides] Java: Logging conventions")])]),_v(".")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/SettingUp.html b/SettingUp.html index f99b0734010..4f3b8d76d6b 100644 --- a/SettingUp.html +++ b/SettingUp.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -19,14 +16,18 @@ Search
Caution: -Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.
First, fork this repo, and clone the fork into your computer.
If you plan to use Intellij IDEA (highly recommended):
Caution: +Follow the steps in the following guide precisely. Things will not work out if you deviate in some steps.
First, fork this repo, and clone the fork into your computer.
If you plan to use Intellij IDEA (highly recommended):
seedu.address.Main
and try a few commands.Configure the coding style
If using IDEA, follow the guide [se-edu/guides] IDEA: Configuring the code style to set up IDEA's coding style to match ours.
Tip: -Optionally, you can follow the guide [se-edu/guides] Using Checkstyle to find how to use the CheckStyle within IDEA e.g., to report problems as you write code.
Set up CI
This project comes with a GitHub Actions config files (in .github/workflows
folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the master
branch or to any PR. No set up required.
Learn the design
When you are ready to start coding, we recommend that you get some sense of the overall design by reading about AddressBook’s architecture.
Do the tutorials -These tutorials will help you get acquainted with the codebase.
seedu.address.Main
and try a few commands.Configure the coding style
If using IDEA, follow the guide [se-edu/guides] IDEA: Configuring the code style to set up IDEA's coding style to match ours.
Tip: +Optionally, you can follow the guide [se-edu/guides] Using Checkstyle to find how to use the CheckStyle within IDEA e.g., to report problems as you write code.
Set up CI
This project comes with a GitHub Actions config files (in .github/workflows
folder). When GitHub detects those files, it will run the CI for your project automatically at each push to the master
branch or to any PR. No set up required.
Learn the design
When you are ready to start coding, we recommend that you get some sense of the overall design by reading about AddressBook’s architecture.
Do the tutorials +These tutorials will help you get acquainted with the codebase.
+ + + + diff --git a/SettingUp.page-vue-render.js b/SettingUp.page-vue-render.js index 756de729165..21ae4e972cd 100644 --- a/SettingUp.page-vue-render.js +++ b/SettingUp.page-vue-render.js @@ -41,6 +41,6 @@ with(this){return _c('li',[_c('p',[_c('strong',[_v("Learn the design")])]),_v(" with(this){return _c('li',[_c('p',[_c('strong',[_v("Do the tutorials")]),_v("\nThese tutorials will help you get acquainted with the codebase.")]),_v(" "),_c('ul',[_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/TracingCode.html"}},[_v("Tracing code")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/AddRemark.html"}},[_v("Adding a new command")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"/tp/tutorials/RemovingFields.html"}},[_v("Removing fields")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/Testing.html b/Testing.html index 7c64d668c01..1084b2d0bab 100644 --- a/Testing.html +++ b/Testing.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -20,11 +17,15 @@
There are two ways to run tests.
src/test/java
folder and choose Run 'All Tests'
Run 'ABC'
gradlew clean test
(Mac/Linux: ./gradlew clean test
)Link: Read this Gradle Tutorial from the se-edu/guides to learn more about using Gradle.
This project has three types of tests:
Run 'ABC'
gradlew clean test
(Mac/Linux: ./gradlew clean test
)Link: Read this Gradle Tutorial from the se-edu/guides to learn more about using Gradle.
This project has three types of tests:
seedu.address.commons.StringUtilTest
seedu.address.storage.StorageManagerTest
seedu.address.logic.LogicManagerTest
+e.g. seedu.address.logic.LogicManagerTest
+ + + + diff --git a/Testing.page-vue-render.js b/Testing.page-vue-render.js index f2ba3d392c8..03647bddd8e 100644 --- a/Testing.page-vue-render.js +++ b/Testing.page-vue-render.js @@ -20,6 +20,6 @@ with(this){return _c('h2',{attrs:{"id":"types-of-tests"}},[_v("Types of tests"), with(this){return _c('ol',[_c('li',[_c('em',[_v("Unit tests")]),_v(" targeting the lowest level methods/classes."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.commons.StringUtilTest")])]),_v(" "),_c('li',[_c('em',[_v("Integration tests")]),_v(" that are checking the integration of multiple code units (those code units are assumed to be working)."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.storage.StorageManagerTest")])]),_v(" "),_c('li',[_v("Hybrids of unit and integration tests. These test are checking multiple code units as well as how the are connected together."),_c('br'),_v("\ne.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("seedu.address.logic.LogicManagerTest")])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/UserGuide.html b/UserGuide.html index 1267502fb09..0baaa6eb9e5 100644 --- a/UserGuide.html +++ b/UserGuide.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -58,8 +55,12 @@ On the patient list panel, the list will be filtered to that specific patient; On the patient notes panel, the updated notes of the specific patient will be shown.
If you'd like to add empty line(s), you can add an empty note (i.e. addnote T0123456A n\
1 or more times.
Do note that the patient list panel will not display the empty line(s) unless there is a note with other characters before and after the note with just spaces.
The space characters at the start and end of the note are stripped during the execution of this command. So addnote T0123456A n\ Diabetes
and addnote T0123456A n\Diabetes
give the same note of Diabetes
.
↑ Back to Top ↑ Back to Table of Contents
ClinicMate data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
ClinicMate data is saved automatically as a JSON file [JAR file location]/data/clinicmate.json
. Advanced users are welcome to update data directly by editing that data file.
⚠️ Warning:
↑ Back to Top ↑ Back to Table of Contents
Q: How do I open my terminal?
A: Here are the instructions to open your terminal for the different types of operating systems:
Q: When will the patient notes panel be cleared?
A: The patient notes panel will be cleared when you use the show
command without any IC_NUMBER
. Unfortunately, clear
or delete
command will not clear the patient notes panel.
Q: When using multiple screens, moving the application to a secondary screen and later switching to using only the primary screen, the GUI opens off-screen. What do I do?
A: Delete the preferences.json
file created by the application before running the application again.
Q: Is there a limit to the number of patient records ClinicMate can manage?
A: ClinicMate is designed to handle a large number of patient records efficiently. However, performance may vary depending on the hardware specifications of your computer and the amount of data being managed.
Q: How do I load my data from another computer?
A: Let's say that you want to move your data from computer A to computer B. You should:
clinicmate.json
file that is located at [JAR file location]/data/clinicmate.json
in computer B.clinicmate.json
file from computer A to computer B at the same location as above.Q: Can I export patient data from ClinicMate for reporting or backup purposes?
A: Currently, ClinicMate does not support direct export of patient data. However, you can manually copy the data from the data file located at [JAR file location]/data/clinicmate.json
for backup or reporting purposes.
Q: Can I customize the fields for patient records in ClinicMate?
A: ClinicMate currently supports predefined fields for patient records (name, phone, email, IC number, age, sex, address). Customization of fields is not supported in the current version.
Q: How secure is the patient data stored in ClinicMate?
A: ClinicMate stores patient data locally on your computer in a JSON file. It is recommended to keep your computer secure and up-to-date with the latest security patches to ensure the safety of patient data.
Q: Is there a way to import patient data into ClinicMate from other software?
A: ClinicMate does not currently support direct import of patient data from other software. However, you can manually enter patient data using the add
command.
Q: I am not able to directly access the user guide by pressing on the icon in the help window.
A: Linux users might face some difficulties when trying to directly access the website. Unfortunately, we currently do not have a solution for this. Please access our user guide in the alternative way, which is to copy the URL and pasting it in your web browser.
Q: The patient notes panel does not display the most updated contact I interacted with.
A: Currently, only the find
or show
command will change whose notes are displayed in the patient notes panel.
Q: The patient notes panel is not showing the full note. Can I expand the display?
A: ClinicMate does not currently support expanding the patient notes panel. However, you can scroll through the notes both vertically and horizontally using the scrollbar provided.
Q: Some of my patient information is being truncated in the patient list panel. How can I view the full information?
A: Unfortunately, ClinicMate displays patient information in a fixed format, including sections such as email and note, that might cause long entries to be truncated (e.g. An excessively long name would cause the name, age and gender to be truncated). This will be fixed in a future release.
Q: Long lines of notes in the patient list panel are being unevenly truncated. Is this normal?
A: Yes, this is a known issue. You can still view the full note using the show
command through the patient notes panel.
Q: Can I use addnote
repeatedly with the same message?
A: Yes! ClinicMate does not restrict the number of times you can use the addnote
command with the same message.
Q: Do you support non-English inputs?
A: We do not have dedicated support for non-English inputs, and some features might not work as expected. We recommend using English inputs for the best experience.
↑ Back to Top ↑ Back to Table of Contents
↑ Back to Top ↑ Back to Table of Contents
These descriptions will help you understand the key terms used in ClinicMate.
Term | Definition |
---|---|
Alphanumeric | Alphanumeric pertains to a character set containing both letters and numbers, encompassing the full range of 26 English alphabet letters (both uppercase and lowercase) along with numerical digits 0 through 9. |
Case-insensitive | Case-insensitive treatment equates uppercase and lowercase characters, treating them as identical. For instance, both john and John would be considered the same. |
CLI | CLI, or Command-Line Interface, is a text-based interface enabling users to interact with software via typed commands. |
Command | A command denotes a user's directive to ClinicMate, instructing it to execute a specific action. For example, the add command adds the patient's details to ClinicMate. |
GUI | GUI, or Graphical User Interface, facilitates user interaction with software through visual elements like icons, buttons, and windows, providing a more intuitive alternative to text-based commands. |
JAR | JAR, short for Java Archive, represents a package file format used to bundle multiple Java class files, along with associated metadata and resources, into a single file for distribution purposes. |
JSON | JSON, standing for JavaScript Object Notation, serves as a lightweight data interchange format that is human-readable and easy for machines to parse, commonly utilized in web applications and configuration files. |
Parameter | A parameter resembles a field in a form that requires input. In the command edit S1234567A ag\AGE n\NAME , AGE and NAME are parameters within the command. |
Prefix | A prefix acts as a keyword used to identify a parameter. In the command edit S1234567A ag\AGE n\NAME , ag\ and n\ function as prefixes. |
Parameter | Description | Constraints |
---|---|---|
NAME | Name of the patient. | Only contain alphanumeric characters and spaces, and should not be blank. |
PHONE | Phone number of the patient. | Only contain numbers, be at least 3 digits. Should not be blank. |
EMAIL | Email of the patient. | Should be in the format of local-part@domain and should not be blank. |
IC_NUMBER | IC number of the patient. | Case-insensitive and should not be blank. It should start with one letter (S, F, G or M), followed by 7 digits and 1 letter behind. |
AGE | Age of the patient. | Only contain numbers, and should not be blank. |
SEX | Sex of the patient. | Case-insensitive and should not be blank. Only accepts m , f , M , F as inputs. |
ADDRESS | Address of the patient. | Case-insensitive and should not be blank. |
NOTE | Note of the patient | Case-insensitive and can be blank. |
edit Note:
lightbulb Useful Tip:
The email format is local-part@domain
.
local-part
constraints:
domain
name constraints:
↑ Back to Top ↑ Back to Table of Contents
Action | Format, Examples |
---|---|
Add | add n\NAME p\PHONE e\EMAIL i\IC_NUMBER ag\AGE s\SEX a\ADDRESS e.g. add n\John Doe p\88888888 e\johndoe@mail.com i\T0123456A ag\12 s\M a\John street, block 123, #01-01 |
Clear | clear |
Delete | delete IC_NUMBER e.g. delete T0123456A |
Edit | edit IC_NUMBER [n\NAME] [p\PHONE] [e\EMAIL] [i\IC_NUMBER] [ag\AGE] [s\SEX] [a\ADDRESS] e.g. edit T0123456A p\88888888 |
Add Note | addnote IC_NUMBER n\NOTE [-replace] e.g., addnote T0123456A n\Patient has diabetes e.g. addnote T0123456A n\Patient has diabetes -replace |
Find | find IC_NUMBER e.g. find T0123456A |
Show | show [IC_NUMBER] e.g. show T0123456A e.g. show |
Help | help |
List | list |
Exit | exit |
↑ Back to Top ↑ Back to Table of Contents
The email format is local-part@domain
.
local-part
constraints:
domain
name constraints:
↑ Back to Top ↑ Back to Table of Contents
Action | Format, Examples |
---|---|
Add | add n\NAME p\PHONE e\EMAIL i\IC_NUMBER ag\AGE s\SEX a\ADDRESS e.g. add n\John Doe p\88888888 e\johndoe@mail.com i\T0123456A ag\12 s\M a\John street, block 123, #01-01 |
Clear | clear |
Delete | delete IC_NUMBER e.g. delete T0123456A |
Edit | edit IC_NUMBER [n\NAME] [p\PHONE] [e\EMAIL] [i\IC_NUMBER] [ag\AGE] [s\SEX] [a\ADDRESS] e.g. edit T0123456A p\88888888 |
Add Note | addnote IC_NUMBER n\NOTE [-replace] e.g., addnote T0123456A n\Patient has diabetes e.g. addnote T0123456A n\Patient has diabetes -replace |
Find | find IC_NUMBER e.g. find T0123456A |
Show | show [IC_NUMBER] e.g. show T0123456A e.g. show |
Help | help |
List | list |
Exit | exit |
↑ Back to Top ↑ Back to Table of Contents
+ + + + diff --git a/UserGuide.page-vue-render.js b/UserGuide.page-vue-render.js index 3cba5fefa3e..e14edc09c22 100644 --- a/UserGuide.page-vue-render.js +++ b/UserGuide.page-vue-render.js @@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":"" with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"welcome-to-clinicmate"}},[_v("Welcome to ClinicMate!"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#welcome-to-clinicmate","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Your solution to streamlining patient contact management.")])]),_v(" "),_c('p',[_v("Greetings to esteemed General Practitioners (GPs)! Are you still grappling with traditional methods to manage patient details and take patients' histories? Are you overwhelmed by the challenge of organizing all your clinic's patient data?")]),_v(" "),_c('p',[_v("Fret not! "),_c('strong',[_v("ClinicMate")]),_v(" is your solution.")]),_v(" "),_c('p',[_v("ClinicMate is tailor-made to streamline contact management in your clinic. Whether you're a seasoned practitioner or just starting out, ClinicMate is your indispensable companion.")]),_v(" "),_c('p',[_v("This comprehensive user guide will effortlessly navigate you through ClinicMate's array of features, ensuring optimal efficiency in managing patient contacts.")]),_v(" "),_c('p',[_v("Here is a "),_c('strong',[_v("quick overview")]),_v(" of how ClinicMate streamlines contact management:")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('em',[_c('strong',[_v("Navigation and Assistance Functions")])]),_v(": Reset the interface using "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(", access comprehensive guidance through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(", and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(" ClinicMate with ease.")])]),_v(" "),_c('li',[_c('p',[_c('em',[_c('strong',[_v("Data Management Functions")])]),_v(": Easily input, modify, and remove patient details through "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(". View a detailed and comprehensive list of patient information effortlessly with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command. Effortlessly search for specific patient records with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_c('em',[_c('strong',[_v("Note-Taking Function")])]),_v(": Use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" to quickly append relevant notes to patient records for future reference.")])])]),_v(" "),_c('p',[_v("ClinicMate is a desktop application featuring a "),_c('strong',[_v("Command Line Interface (CLI)")]),_v(" with the convenience of a Graphical User Interface (GUI). Whether you're adept at typing or prefer a visual interface, ClinicMate ensures "),_c('strong',[_v("swift and efficient")]),_v(" management of patient contacts.")]),_v(" "),_c('p',[_v("Bid farewell to cumbersome paperwork and embrace the efficiency of ClinicMate in organizing your clinic's patient data.")]),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"table-of-contents"}},[_v("Table of Contents"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#table-of-contents","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{pre:true,attrs:{"class":"page-nav-print d-none d-print-block"}}),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"guide-usage"}},[_v("Guide Usage"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#guide-usage","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Welcome to the comprehensive user guide for ClinicMate! Our goal is to provide you with the knowledge and tools necessary to make the most of ClinicMate, your essential tool for clinic management. Whether you're a beginner or an experienced user, we're here to support you every step of the way.")]),_v(" "),_c('p',[_v("Before we dive into the details, let's acquaint ourselves with the annotations you'll encounter throughout this user guide. These annotations will help you understand and navigate ClinicMate's features smoothly.")]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Provides additional insights and tips to enhance your ClinicMate experience.")])])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Provides valuable additional details for using ClinicMate effectively.")])])]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("warning")]),_v(" Warning:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Alerts you to potential pitfalls or issues to be mindful of when using ClinicMate.")])])]),_v(" "),_c('p',[_v("Throughout this guide, you'll also encounter various text styles. Here's what they represent:")]),_v(" "),_c('ul',[_c('li',[_c('em',[_v("Used to illustrate possible scenarios for utilizing a feature (mostly in feature sections).")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"https://github.com/AY2324S2-CS2103T-F14-2/tp"}},[_v("Represents hyperlinks that you can click to navigate to another section of this user guide or to an external website.")])]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Highlights specific elements such as file names, commands, or any text that should be treated as code.")])]),_v(" "),_c('li',[_c('blockquote',[_c('p',[_v("Provides information about the parameters that you can input into a command.")])])])]),_v(" "),_c('p',[_v("Now that you're familiar with the annotations and text styles, we will give you a tour on how to navigate this user guide based on your level of expertise.")]),_v(" "),_c('h2',{attrs:{"id":"clinicmate-beginner"}},[_v("ClinicMate Beginner?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#clinicmate-beginner","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Thank you for choosing ClinicMate for your patient management needs! We're excited to help you jump right in.")]),_v(" "),_c('ol',[_c('li',[_v("To get started, head over to the "),_c('a',{attrs:{"href":"#quick-start"}},[_v("Quick Start")]),_v(" section to set up ClinicMate on your computer.")]),_v(" "),_c('li',[_v("Once you've set up ClinicMate, go through the "),_c('a',{attrs:{"href":"#quick-tour-a-first-look-at-clinicmate"}},[_v("Quick Tour")]),_v(" to discover key features of ClinicMate that you'll use frequently.")]),_v(" "),_c('li',[_v("If you're keen to explore ClinicMate by yourself, take a look at the "),_c('a',{attrs:{"href":"#existing-features"}},[_v("Existing Features")]),_v(" to dive deep into ClinicMate's functionalities.")])]),_v(" "),_c('h2',{attrs:{"id":"seasoned-clinicmate-user"}},[_v("Seasoned ClinicMate User?"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#seasoned-clinicmate-user","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Welcome back! We're thrilled to have you with us again.")]),_v(" "),_c('ol',[_c('li',[_v("If you want a reminder on how to use a feature, head over to the "),_c('a',{attrs:{"href":"#existing-features"}},[_v("Existing Features")]),_v(" section to get "),_c('strong',[_v("detailed instructions")]),_v(" for each feature and "),_c('strong',[_v("examples")]),_v(" that you can learn from.")]),_v(" "),_c('li',[_v("If you just need a quick reference of a command format, you can refer to the "),_c('a',{attrs:{"href":"#command-summary"}},[_v("Command Summary")]),_v(" section for a table of all the commands and their format available in ClinicMate.")])]),_v(" "),_c('p',[_v("If you have more questions, do check out the "),_c('a',{attrs:{"href":"#faq"}},[_v("FAQ")]),_v(" section to see if there are answers to your queries.")]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"quick-start"}},[_v("Quick start"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#quick-start","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("In this section, you will learn how to set up ClinicMate on your computer.")]),_v(" "),_c('h2',{attrs:{"id":"prerequisites"}},[_v("Prerequisites"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#prerequisites","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("Open Command Prompt (for Windows) or Terminal (for MacOS and Linux) on your desktop. Refer to our "),_c('a',{attrs:{"href":"#faq"}},[_v("FAQ")]),_v(" on how to do so.")]),_v(" "),_c('li',[_v("Run the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -version")]),_v(" to check if you have Java 11 or above installed in your computer.")])]),_v(" "),_c('ul',[_c('li',[_v("Assuming that you have Java installed in your computer,\n"),_c('ul',[_c('li',[_c('p',[_v("If you are running Windows, this is what you should see after running the command.")]),_v(" "),_c('ul',[_c('li',[_v("Over here, the Java version is 19.0.2, which means that Java 19 is installed.\n"),_c('a',{attrs:{"href":"/tp/images/javaWindows.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/javaWindows.png","alt":"javaWindows"}})])])])]),_v(" "),_c('li',[_c('p',[_v("If you are running MacOS, this is what you should see after running the command.")]),_v(" "),_c('ul',[_c('li',[_v("Over here, the Java version is 11.0.19, which means that Java 11 is installed.\n"),_c('a',{attrs:{"href":"/tp/images/javaMac.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/javaMac.png","alt":"javaMac"}})])])])])])])]),_v(" "),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("If you do not have Java 11 or above installed in your computer, download it from "),_c('a',{attrs:{"href":"https://www.oracle.com/java/technologies/javase-jdk11-downloads.html"}},[_v("here")]),_v(".")])]),_v(" "),_c('h2',{attrs:{"id":"setting-up"}},[_v("Setting up"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#setting-up","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("Download the latest "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate.jar")]),_v(" file "),_c('a',{attrs:{"href":"https://github.com/AY2324S2-CS2103T-F14-2/tp/releases/latest"}},[_v("here")])]),_v(" "),_c('li',[_v("You will see this screen after clicking on the link above.\n"),_c('ul',[_c('li',[_v("Click on the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate.jar")]),_v(" file to download it.\n"),_c('a',{attrs:{"href":"/tp/images/ClinicMateJar.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/ClinicMateJar.png","alt":"ClinicMateJar.png"}})])])])]),_v(" "),_c('li',[_v("Move the file to an empty folder that you want to use for your ClinicMate.\n"),_c('ul',[_c('li',[_v("For example, you can create an empty folder named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate")]),_v(" in your "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Documents")]),_v(" folder.")]),_v(" "),_c('li',[_v("You can then move the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate.jar")]),_v(" file to that folder named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate")]),_v(" in your "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Documents")]),_v(" folder.")])])])]),_v(" "),_c('h2',{attrs:{"id":"running-the-application"}},[_v("Running the application"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#running-the-application","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_v("Open Command Prompt (for Windows) or Terminal (for MacOS and Linux) on your desktop. Refer to our "),_c('a',{attrs:{"href":"#faq"}},[_v("FAQ")]),_v(" on how to do so.")]),_v(" "),_c('li',[_v("Run the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cd")]),_v(" command into the folder you put the jar file in.\n"),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cd")]),_v(" is the command to change directory.")]),_v(" "),_c('li',[_v("e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("cd Documents/clinicmate")])])])]),_v(" "),_c('li',[_v("Run the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar clinicmate.jar")]),_v(" command to run the application."),_c('br')]),_v(" "),_c('li',[_v("Your command terminal should look like this after steps 2 and 3.\n"),_c('a',{attrs:{"href":"/tp/images/CommandTerminal.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/CommandTerminal.png","alt":"CommandTerminal"}})])])]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("warning")]),_v(" Warning:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("If you do not see sample data when running "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar clinicmate.jar")]),_v(", that means you have an existing data file which needs to be removed.")]),_v(" "),_c('li',[_v("You may notice that a new folder named "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("data")]),_v(" is newly created. This folder contains the data file for ClinicMate.")]),_v(" "),_c('li',[_v("Do not delete this folder or its contents as it contains your patient data.")])])]),_v(" "),_c('ol',{attrs:{"start":"5"}},[_c('li',[_v("You should see the following screen after running the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("java -jar clinicmate.jar")]),_v(" command.\n"),_c('a',{attrs:{"href":"/tp/images/updatedUI.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/updatedUI.png","alt":"Ui"}})])]),_v(" "),_c('li',[_v("Great job! You have successfully set up ClinicMate on your computer. You are now ready to learn about the "),_c('strong',[_v("GUI")]),_v(" of ClinicMate!")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('hr'),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"gui-overview"}},[_v("GUI Overview"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#gui-overview","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("ClinicMate features a Graphical User Interface (GUI) that provides a seamless user experience. The GUI is designed to be intuitive and user-friendly, allowing you to navigate through the application effortlessly.")]),_v(" "),_c('p',[_v("The GUI consists of the following components:\n"),_c('a',{attrs:{"href":"/tp/images/GUIFeature.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/GUIFeature.png","alt":"GUI"}})])]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_c('strong',[_v("Number")])]),_v(" "),_c('th',[_c('strong',[_v("Component")])]),_v(" "),_c('th',[_c('strong',[_v("Description")])])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("1")]),_v(" "),_c('td',[_v("Command Box")]),_v(" "),_c('td',[_v("Enter commands here to interact with ClinicMate.")])]),_v(" "),_c('tr',[_c('td',[_v("2")]),_v(" "),_c('td',[_v("Message Box")]),_v(" "),_c('td',[_v("Displays the output of commands executed in the Command Box.")])]),_v(" "),_c('tr',[_c('td',[_v("3")]),_v(" "),_c('td',[_v("Patient List Panel")]),_v(" "),_c('td',[_v("Displays the list of patients in ClinicMate.")])]),_v(" "),_c('tr',[_c('td',[_v("4")]),_v(" "),_c('td',[_v("Patient Notes Panel")]),_v(" "),_c('td',[_v("Displays the notes of the patient that you are viewing.")])])])])]),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("To maximise your viewing experience, opt for full-screen mode in ClinicMate!")])])]),_v(" "),_c('p',[_v("Now that you have been introduced to the GUI components, let's proceed to learn how you can use the "),_c('strong',[_v("CLI")]),_v(" to interact with ClinicMate.")]),_v(" "),_c('h1',{attrs:{"id":"cli-overview"}},[_v("CLI Overview"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#cli-overview","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Experience the seamless power of ClinicMate's Command Line Interface (CLI) - where interaction is as simple as typing commands.\nSay goodbye to juggling between typing and clicking, and welcome the streamlined efficiency of CLI!")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/CLIFeatures.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/CLIFeatures.png","alt":"CLI"}})])]),_v(" "),_c('p',[_v("CLI is straightforward to use. The Command Box acts as your entry point for commands. Once you hit enter, ClinicMate processes\nyour input and delivers responses through the Message Box. It's all about interacting with ClinicMate effortlessly through text.")]),_v(" "),_c('p',[_v("Ready to dive in? Let's explore writing command lines and get you started with ClinicMate!")]),_v(" "),_c('h1',{attrs:{"id":"command-format"}},[_v("Command Format"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#command-format","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("To use our CLI, here is an overview of the command formats.")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_c('strong',[_v("Component")])]),_v(" "),_c('th',[_c('strong',[_v("Example")])]),_v(" "),_c('th',[_c('strong',[_v("Description")])])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_v("Command")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")])]),_v(" "),_c('td',[_v("Represents the action that you want to perform.")])]),_v(" "),_c('tr',[_c('td',[_v("Parameter")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Mary")])]),_v(" "),_c('td',[_v("Represents a value that replaces the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("UPPER_CASE")]),_v(" placeholders in the command format.")])]),_v(" "),_c('tr',[_c('td',[_v("Prefix")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\ ")])]),_v(" "),_c('td',[_v("Represents the type of parameter to be edited.")])]),_v(" "),_c('tr',[_c('td',[_v("Flag")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")])]),_v(" "),_c('td',[_v("Represents an additional parameter that modifies the command's behavior."),_c('br'),_v("Must be used at the end of the command.")])])])])]),_c('p',[_v("You can find all the parameters used in ClinicMate "),_c('a',{attrs:{"href":"#definitions-of-key-terms"}},[_v("here")]),_v(". To learn more about the prefixes and command words used in ClinicMate,\nyou can refer to the "),_c('a',{attrs:{"href":"#command-summary"}},[_v("Command Summary Section")]),_v(".")]),_v(" "),_c('p',[_v("Let's see how these components are used in a command!")]),_v(" "),_c('h2',{attrs:{"id":"example-command-addnote"}},[_v("Example Command: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#example-command-addnote","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/LabelledAddNote.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/LabelledAddNote.png","alt":"labelled"}})])]),_v(" "),_c('p',[_v("You can substitute specific parameter values into the parameters in the command format. For instance, in the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" command, you can replace "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" with the patient's IC number and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NOTE")]),_v(" with the note you want to add.")]),_v(" "),_c('p',[_v("But what about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[]")]),_v(" around "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")]),_v("? Here's more about it:")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_c('strong',[_v("Symbol")])]),_v(" "),_c('th',[_c('strong',[_v("Description")])]),_v(" "),_c('th',[_c('strong',[_v("Example")])]),_v(" "),_c('th',[_c('strong',[_v("Meaning")])])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[]")])]),_v(" "),_c('td',[_v("Indicates that something is optional")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[-replace]")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")]),_v(" flag is optional and can be included or excluded in the command.")])]),_v(" "),_c('tr',[_c('td',[_v("None")]),_v(" "),_c('td',[_v("Indicates a mandatory prefix and/or parameter")]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\NOTE")])]),_v(" "),_c('td',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\NOTE")]),_v(" is mandatory and must be included in the command.")])])])])]),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('hr'),_v(" "),_c('h1',{attrs:{"id":"quick-tour-a-first-look-at-clinicmate"}},[_v("Quick Tour: A First Look At ClinicMate"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#quick-tour-a-first-look-at-clinicmate","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("If this is your first time using ClinicMate, welcome!\nWe know that patient management can be tedious and cumbersome, and learning a new tool might seem like a daunting task.\nBut fret not! ClinicMate is designed to be user-friendly and intuitive so that you can start streamlining your patient management right away.")])]),_v(" "),_c('p',[_v("This tour will guide you through the key features of ClinicMate, giving you a quick overview of how to use the application effectively,\nespecially the more commonly used commands. You'll learn how to:")]),_v(" "),_c('ol',[_c('li',[_c('a',{attrs:{"href":"#1-adding-a-patient"}},[_v("add a patient")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"#2-finding-a-patient"}},[_v("find a patient")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"#3-adding-notes-to-a-patient"}},[_v("add notes to a patient")])]),_v(" "),_c('li',[_c('a',{attrs:{"href":"#4-deleting-a-patient-from-clinicmate"}},[_v("delete a patient from ClinicMate")])])]),_v(" "),_c('p',[_v("Make sure you've set up ClinicMate on your computer by following the "),_c('a',{attrs:{"href":"#quick-start"}},[_v("Quick Start")]),_v(" guide, if you haven't already.\nOnce you're ready, let's dive in!")]),_v(" "),_c('h2',{attrs:{"id":"1-adding-a-patient"}},[_v("1. Adding a Patient"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#1-adding-a-patient","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Adding a patient is a fundamental feature of ClinicMate for tracking patient details. Let's say you have a new patient with the following particulars:")]),_v(" "),_c('ul',[_c('li',[_c('strong',[_v("Name")]),_v(": James Tan")]),_v(" "),_c('li',[_c('strong',[_v("Phone")]),_v(": 92223344")]),_v(" "),_c('li',[_c('strong',[_v("Email")]),_v(": "),_c('a',{attrs:{"href":"mailto:james.tan@mail.com"}},[_v("james.tan@mail.com")])]),_v(" "),_c('li',[_c('strong',[_v("IC Number")]),_v(": S1234567A")]),_v(" "),_c('li',[_c('strong',[_v("Age")]),_v(": 22")]),_v(" "),_c('li',[_c('strong',[_v("Sex")]),_v(": M")]),_v(" "),_c('li',[_c('strong',[_v("Address")]),_v(": Block 11, #07-07, Jurong West Ave 6")])]),_v(" "),_c('p',[_v("For new patients, the first step always involves registration. Similarly, let's add James Tan to ClinicMate!")]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Using his details, simply type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\James Tan p\\92223344 e\\james.tan@mail.com i\\S1234567A ag\\35 s\\M a\\Block 11, #07-07, Jurong West Ave 6")]),_v(" into the Command Box and hit enter.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addquicktour.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addquicktour.png","alt":"quicktouradd"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("The patient list panel will be updated with James Tan's details.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addsuccessquicktour.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addsuccessquicktour.png","alt":"quicktouraddsuccess"}})])]),_v(" "),_c('p',[_v("Congratulations! You've successfully added James Tan to ClinicMate. Go ahead and try adding more patients of your own to practice!")]),_v(" "),_c('p',[_v("If you wish to learn more about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command, you can refer to "),_c('a',{attrs:{"href":"#adding-a-person-add"}},[_v("this")]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"2-finding-a-patient"}},[_v("2. Finding a Patient"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#2-finding-a-patient","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Many walk-in patients tend to be regulars at the clinic. ClinicMate is optimized to retrieve patient details quickly and easily. All you need is their IC number!")]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Let's say you want to find James Tan's details after adding him in the previous step. Type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find S1234567A")]),_v(" into the Command Box and hit enter.")]),_v(" "),_c('li',[_v("The patient list panel will display James Tan's details only. The patient notes panel will show any notes associated with James Tan.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/findquicktour.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/findquicktour.png","alt":"quicktourfindsuccess"}})])]),_v(" "),_c('p',[_v("Go ahead and try viewing the details of other patients using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" command!")]),_v(" "),_c('p',[_v("If you wish to learn more about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" command, you can refer to "),_c('a',{attrs:{"href":"#locating-persons-by-ic-number-find"}},[_v("this")]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"3-adding-notes-to-a-patient"}},[_v("3. Adding Notes to a Patient"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#3-adding-notes-to-a-patient","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("A big part of a GP consultation is taking patient history. ClinicMate allows you to add notes for patients based on their IC number.")]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Suppose in your consultation, James Tan complains of frequent urination (polyuria) and excessive thirst (polydipsia), and you suspect he might have Diabetes Mellitus. You can note this down using the shorthands that you're used too! Simply type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote S1234567A n\\Polyuria & polydipsia. DM?")]),_v(" into the Command Box and hit enter.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addnotequicktour.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addnotequicktour.png","alt":"quicktouraddnotesuccess"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("Through the consultation, you also find out he has a family history of Diabetes Mellitus. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" lets you quickly append this information by simply typing "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote S1234567A n\\Fam his of DM.")]),_v(" into the Command Box and hit enter.")])]),_v(" "),_c('p',[_v("Notice that the notes are appended without replacing what was originally there, so you can quickly add all notes you find important without worry!")]),_v(" "),_c('p',[_v("If you wish to replace the notes, or find out more about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" command, you can refer to "),_c('a',{attrs:{"href":"#adding-a-note-addnote"}},[_v("this")]),_v(".")]),_v(" "),_c('h2',{attrs:{"id":"4-deleting-a-patient-from-clinicmate"}},[_v("4. Deleting a Patient from ClinicMate"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#4-deleting-a-patient-from-clinicmate","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Suppose James Tan informs you that he is moving house, and will no longer be visiting your clinic. ClinicMate lets you remove his details from the database with ease.")]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete S1234567A")]),_v(" into the Command Box and hit enter.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/deletequicktour.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/deletequicktour.png","alt":"quicktourdeletesuccess"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("Type "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" to see your whole patient list panel. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("James Tan")]),_v(" details will be removed from the patient list panel. There is no change to the patient notes panel.")])]),_v(" "),_c('p',[_v("Go ahead and try deleting some of the sample patients from ClinicMate.")]),_v(" "),_c('p',[_v("If you wish to find out more about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" command, you can refer to "),_c('a',{attrs:{"href":"#deleting-a-person-delete"}},[_v("this")]),_v(".")]),_v(" "),_c('p',[_v("You've now reached the end of the Quick Tour. "),_c('strong',[_v("Congratulations!")]),_v("\nTo remove the sample data, you can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" command followed by the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command to reset the patient list and notes panels.\nFind out more about the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" commands "),_c('a',{attrs:{"href":"#clearing-all-entries-clear"}},[_v("here")]),_v(" and "),_c('a',{attrs:{"href":"#changing-the-displayed-note-show"}},[_v("here")]),_v(" respectively.")]),_v(" "),_c('p',[_v("There are more features in ClinicMate that you can explore. If you're interested, you can refer to the "),_c('a',{attrs:{"href":"#existing-features"}},[_v("Existing Features")]),_v(" section for a detailed guide on each feature.\nAlso check out the "),_c('a',{attrs:{"href":"#faq"}},[_v("FAQ")]),_v(" section for answers to common queries!")]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('hr'),_v(" "),_c('h1',{attrs:{"id":"existing-features"}},[_v("Existing Features"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#existing-features","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("This section gives you a step-by-step guide on how to use ClinicMate's features. The 3 categories of ClinicMate's features are as follows:")]),_v(" "),_c('ul',[_c('li',[_c('p',[_c('em',[_c('strong',[_v("Navigation and Assistance Functions")])]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")])])]),_v(" "),_c('li',[_c('p',[_c('em',[_c('strong',[_v("Data Management Functions")])]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")])])]),_v(" "),_c('li',[_c('p',[_c('em',[_c('strong',[_v("Note-Taking Function")])]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")])])])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Words in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("UPPER_CASE")]),_v(" are the parameters to be supplied by the user."),_c('br'),_v("\ne.g. in "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\NAME")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NAME")]),_v(" is a parameter which can be used as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\John Doe")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("Parameters that have a slash prefix (1 or more letters followed by a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("\\")]),_v(") can be in any order."),_c('br'),_v("\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\NAME i\\IC_NUMBER")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("i\\IC_NUMBER n\\NAME")]),_v(" is also acceptable.")])]),_v(" "),_c('li',[_c('p',[_v("Parameters that have no prefix must follow the specified order."),_c('br'),_v("\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER n\\NAME i\\IC_NUMBER")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" must come before any of the parameters with a prefix.")])]),_v(" "),_c('li',[_c('p',[_v("Extraneous parameters for commands that do not take in parameters (such as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(") will be ignored."),_c('br'),_v("\ne.g. if the command specifies "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help 123")]),_v(", it will be interpreted as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(".")])]),_v(" "),_c('li',[_c('p',[_v("If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.")])])])]),_v(" "),_c('h2',{attrs:{"id":"navigation-and-assistance-functions"}},[_v("Navigation and Assistance Functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#navigation-and-assistance-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Navigation and Assistance Functions in ClinicMate serve to enhance user experience and streamline workflows within the clinic management software.")]),_v(" "),_c('h3',{attrs:{"id":"viewing-help-help"}},[_v("Viewing help : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#viewing-help-help","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Encountering a roadblock in ClinicMate? No problem! Simply utilize the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(" command for immediate assistance and guidance.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/helpcommand.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/helpcommand.png","alt":"help_command"}})])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")]),_v(" into the command box. A help window should pop up.")]),_v(" "),_c('li',[_v("You can access help by either:")])]),_v(" "),_c('ul',[_c('li',[_v("Copying our User Guide's link through the "),_c('strong',[_v("Copy URL")]),_v(" button and pasting it in your web browser.")]),_v(" "),_c('li',[_v("Directly accessing our website through pressing on the icon.")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"clearing-all-entries-clear"}},[_v("Clearing all entries : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#clearing-all-entries-clear","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Transitioning to a new clinic? Easily clear existing data from ClinicMate with a simple "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" command!")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/clearcommand.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/clearcommand.png","alt":"clear_command"}})])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" into the command box. The patient list panel containing all the entries will then be cleared.")])]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("warning")]),_v(" Warning:")]),_c('br'),_v(" "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" is a one-time deletion of all of your entries in ClinicMate. Please use it with consideration and care. You will not be able to retrieve any information back once the command has been executed.")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_c('br'),_v(" "),_c('h3',{attrs:{"id":"exiting-the-program-exit"}},[_v("Exiting the program : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#exiting-the-program-exit","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Concluding your session? Simply use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(" command to gracefully exit the program and conclude your session.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")]),_v(" into the command box. You will then be directed out of ClinicMate.")])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('p',[_v("Don't worry about losing your data when exiting. They will be automatically saved!")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h2',{attrs:{"id":"data-management-functions"}},[_v("Data Management Functions"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#data-management-functions","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("Data Management Functions in ClinicMate serve to simplify the process of adding, editing and deleting patient's information. It also enables you to view a comprehensive list of patient information and effortlessly search for specific patient records.")]),_v(" "),_c('h3',{attrs:{"id":"adding-a-person-add"}},[_v("Adding a person: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adding-a-person-add","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Registering a new patient? No worries! Our "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command simplifies the process of adding their details to ClinicMate.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\NAME p\\PHONE e\\EMAIL i\\IC_NUMBER ag\\AGE s\\SEX a\\ADDRESS")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\NAME p\\PHONE e\\EMAIL i\\IC_NUMBER ag\\AGE s\\SEX a\\ADDRESS")]),_v(" into the command box.")]),_v(" "),_c('li',[_v("New entry with particulars of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\NAME p\\PHONE e\\EMAIL i\\IC_NUMBER ag\\AGE s\\SEX a\\ADDRESS")]),_v(" is added.")])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("A person will be uniquely identified by his/her IC number.")]),_v(" "),_c('li',[_v("ClinicMate does not allow the same IC number to be used twice.")]),_v(" "),_c('li',[_v("Most of our fields do not have constraints as we want the application to be less restrictive 😃")]),_v(" "),_c('li',[_v("Do refer to our "),_c('a',{attrs:{"href":"#parameters-description"}},[_v("Parameters Description section")]),_v(" to find out more about our parameter constraints.")])])]),_v(" "),_c('p',[_v("Example:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\John Doe p\\88888888 e\\johndoe@mail.com i\\T0123456A ag\\12 s\\M a\\John street, block 123, #01-01")])])]),_v(" "),_c('p',[_v("What a successful "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command looks like:\n"),_c('a',{attrs:{"href":"/tp/images/addcommand.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addcommand.png","alt":"add_command"}})])]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('p',[_v("A person can have a note included (See "),_c('a',{attrs:{"href":"#adding-a-note-addnote"}},[_v("addnote")]),_v(" command).")])]),_v(" "),_c('p',[_c('strong',[_v("Possible Error that you might encounter:")])]),_v(" "),_c('p',[_v("You might encounter error messages due to the lack of familiarity with the application. There is no need to panic as our error messages will tell you how you can solve them!\nAn example is shown below:\n"),_c('a',{attrs:{"href":"/tp/images/ErrorForAdd.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/ErrorForAdd.png","alt":"ErrorForAdd.png"}})])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"listing-all-entries-list"}},[_v("Listing all entries : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#listing-all-entries-list","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Looking for a comprehensive overview of your patient entries in ClinicMate? Utilize the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" command for quick access to all your patient records.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")]),_v(" into the command box. All of your patient details will then be displayed.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/listcommand.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/listcommand.png","alt":"listcommand.png"}})])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"finding-person-by-ic-number-find"}},[_v("Finding person by IC number: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#finding-person-by-ic-number-find","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Today, your regular patient arrives at the clinic, and you need to retrieve her record. However, with a multitude of contacts, locating hers seems daunting. Fear not! Utilize the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" command to swiftly pinpoint the specific patient you're searching for using their "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")])]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('p',[_v("ClinicMate will display their contact information on the patient list panel and their full notes on the patient notes panel, for a more comprehensive view.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find IC_NUMBER")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find IC_NUMBER")]),_v(" into the command box.")]),_v(" "),_c('li',[_v("The patient record with the corresponding "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" will be retrieved, with his/her notes shown in the patient notes panel.")])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Only one patient record will be retrieved at any one time.")]),_v(" "),_c('li',[_v("Finds the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" refers to the IC number shown in the displayed patient list panel.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" "),_c('strong',[_v("must be the FULL IC NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("The search is case-insensitive. e.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t0123456a")]),_v(" will match "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(".")]),_v(" "),_c('li',[_v("Only the IC number is searched.")]),_v(" "),_c('li',[_v("Only full IC number will be matched e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" will not match "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123A")]),_v(".")])])]),_v(" "),_c('p',[_v("Example:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find T0123456A")]),_v(" returns "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("John Doe")]),_v(".")])]),_v(" "),_c('p',[_v("What successful "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" commands look like:\n"),_c('a',{attrs:{"href":"/tp/images/findmessage.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/findmessage.png","alt":"successful_find"}})]),_v("\nWhat this means: There is a person matching the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" in the patient list panel in ClinicMate.")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/successful_find2.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/successful_find2.png","alt":"successful_find2"}})]),_v("\nWhat this means: There is no one matching the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" in the patient list panel in ClinicMate.")]),_v(" "),_c('p',[_c('strong',[_v("Possible Error that you might encounter:")])]),_v(" "),_c('p',[_v("There might be cases that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" you keyed in is invalid as shown below. Do check if the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" is in the correct format.\n"),_c('a',{attrs:{"href":"/tp/images/FME.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/FME.png","alt":"findmessageerror.png"}})])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"changing-the-displayed-note-show"}},[_v("Changing the displayed note: "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#changing-the-displayed-note-show","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Need to view the notes of another patient by adjusting the display on the patient notes panel? Or perhaps you want to clear the current display altogether? Enter the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command for effortless management of note displays.")])]),_v(" "),_c('p',[_c('em',[_v("General Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show [IC_NUMBER]")])]),_v(" "),_c('h4',{attrs:{"id":"to-change-display"}},[_v("To change display"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#to-change-display","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show IC_NUMBER")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show IC_NUMBER")]),_v(" into the command box as shown below.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/SCM1.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/SCM1.png","alt":"SCM1.png"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("Patient notes panel will be updated to the notes corresponding to the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/SCM2.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/SCM2.png","alt":"SCM2.png"}})])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Rules for valid "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" follows the parameter constraints "),_c('a',{attrs:{"href":"#parameters-description"}},[_v("here")]),_v(".")]),_v(" "),_c('li',[_v("Displays the full note of the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" in the patient notes panel.")]),_v(" "),_c('li',[_v("Does NOT modify the patient list panel.")])])]),_v(" "),_c('p',[_v("Example:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show T0123456A")]),_v(" updates the patient notes panel to show "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("John Doe")]),_v("'s note.")])]),_v(" "),_c('p',[_c('strong',[_v("Possible Error that you might encounter:")])]),_v(" "),_c('p',[_v("There might be cases that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" you keyed in does not exist in ClinicMate as shown below. Do check if the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" is registered before trying to show it.\nAlternatively, you can add the patient into ClinicMate using our "),_c('a',{attrs:{"href":"#adding-a-person-add"}},[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command")]),_v(" before doing a "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(".")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/UG3.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/UG3.png","alt":"UG3.png"}})])]),_v(" "),_c('h4',{attrs:{"id":"to-clear-display"}},[_v("To clear display"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#to-clear-display","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" into the command box as shown below.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/UG2.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/UG2.png","alt":"UG2.png"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("Patient notes panel will be cleared.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/SCM4.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/SCM4.png","alt":"SCM4.png"}})])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Clears the patient notes panel.")]),_v(" "),_c('li',[_v("Does NOT modify the patient list panel.")])])]),_v(" "),_c('p',[_v("Example:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" clears any note that was being displayed in the patient notes panel.")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"editing-a-person-edit"}},[_v("Editing a person : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#editing-a-person-edit","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("Made a typo? Don't worry! The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit")]),_v(" command is here to assist you in correcting any mistakes effortlessly using the patients' "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit IC_NUMBER [n\\NAME] [p\\PHONE] [e\\EMAIL] [i\\IC_NUMBER] [ag\\AGE] [s\\SEX] [a\\ADDRESS]")])]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('p',[_v("Remember that optional fields are indicated by square brackets "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[]")]),_v("!")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit IC_NUMBER [n\\NAME] [p\\PHONE] [e\\EMAIL] [i\\IC_NUMBER] [ag\\AGE] [s\\SEX] [a\\ADDRESS]")]),_v(" into the command box.")]),_v(" "),_c('li',[_v("The patient record with the corresponding "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" will be edited.")])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Edits the details of the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("The fields to be edited are indicated by the prefixes "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("p\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("e\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("i\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ag\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("s\\")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("a\\")]),_v(".")]),_v(" "),_c('li',[_v("Only the fields that are provided will be updated.")]),_v(" "),_c('li',[_v("At least one field must be provided.")])])]),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit T0123456A p\\88888888")]),_v(" edits the phone number of the person with "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("88888888")]),_v(".")])]),_v(" "),_c('p',[_v("What a successful "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit")]),_v(" message looks like:")]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/EditCommand.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/EditCommand.png","alt":"EditCommand.png"}})])]),_v(" "),_c('p',[_c('strong',[_v("Possible Error that you might encounter:")])]),_v(" "),_c('p',[_v("At least one edit field is needed for this command! Do check if you have included a field in your input.\n"),_c('a',{attrs:{"href":"/tp/images/editerror.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/editerror.png","alt":"editerror.png"}})])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h3',{attrs:{"id":"deleting-a-person-delete"}},[_v("Deleting a person : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#deleting-a-person-delete","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" command enables the removal of patient records from ClinicMate. Use it to efficiently manage patient data by removing outdated or unnecessary entries.")])]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete IC_NUMBER")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete IC_NUMBER")]),_v(" into the command box.")]),_v(" "),_c('li',[_v("The patient record with the corresponding "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" will be deleted.")])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Deletes the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" refers to the IC number shown in the displayed patient list panel.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" "),_c('strong',[_v("must be the FULL IC NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("The search is case-insensitive. e.g "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("t0123456a")]),_v(" will match "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(".")]),_v(" "),_c('li',[_v("Only the IC number is searched.")]),_v(" "),_c('li',[_v("Only full IC number will be matched e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" will not match "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123A")]),_v(".")]),_v(" "),_c('li',[_v("You can only delete one patient at any one time.")])])]),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete T0123456A")]),_v(" deletes "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("John Doe")]),_v(" who has IC number "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" from ClinicMate.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/deletemessage.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/deletemessage.png","alt":"successful_deletemessage"}})])]),_v(" "),_c('p',[_c('strong',[_v("Possible Error that you might encounter:")])]),_v(" "),_c('p',[_v("There might be cases that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" you keyed in does not exist in ClinicMate as shown below. Do check if the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" is registered before trying to delete it.\n"),_c('a',{attrs:{"href":"/tp/images/DME.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/DME.png","alt":"deletemessageerror.png"}})])]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("warning")]),_v(" Warning:")]),_c('br')]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" tends to be long. Please make sure that the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" you want to delete is correct as we would not be able to recover lost patient information once deleted.")])]),_v(" "),_c('h2',{attrs:{"id":"note-taking-function"}},[_v("Note-Taking Function"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#note-taking-function","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("This feature is tailored specifically for GPs, offering seamless note-taking capabilities to enhance efficiency and precision in history taking.")])]),_v(" "),_c('h3',{attrs:{"id":"adding-a-note-addnote"}},[_v("Adding a note : "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#adding-a-note-addnote","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('em',[_v("As GPs, it's essential to take accurate and detailed patient history. Simplify this process with the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" command, ensuring efficient and accurate record-keeping.")])]),_v(" "),_c('p',[_c('strong',[_v("General Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE [-replace]")])]),_v(" "),_c('h4',{attrs:{"id":"to-append-notes"}},[_v("To append notes"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#to-append-notes","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE")]),_v(" into the command box.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addnoteapp1.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addnoteapp1.png","alt":"addnoteapp1.png"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("A note will be added to the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(".")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/UG4.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/UG4.png","alt":"UG4.png"}})])]),_v(" "),_c('ol',{attrs:{"start":"3"}},[_c('li',[_v("New note will appear in the patient list panel. If notes already exist, the new note will be appended to the previous notes on a new line.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addnoteapp4.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addnoteapp4.png","alt":"addnoteapp4.png"}})])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" refers to the IC number shown in the displayed patient list panel.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" "),_c('strong',[_v("must be the FULL IC NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("IC number must be valid and currently exist in the database.")]),_v(" "),_c('li',[_v("When adding notes, the new note added will be appended to the current note of the person. i.e. current note is preserved.")])])]),_v(" "),_c('h4',{attrs:{"id":"to-replace-notes"}},[_v("To replace notes"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#to-replace-notes","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Format")]),_v(": "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE -replace")])]),_v(" "),_c('p',[_c('strong',[_v("Steps")]),_v(":")]),_v(" "),_c('ol',[_c('li',[_v("Enter "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE -replace")]),_v(" into the command box.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addnoterplc1.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addnoterplc1.png","alt":"addnoterplc1.png"}})])]),_v(" "),_c('ol',{attrs:{"start":"2"}},[_c('li',[_v("The note of the person with the specified "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" will be replaced with the new note.")])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/addnoterplc2.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/addnoterplc2.png","alt":"addnoterplc2.png"}})])]),_v(" "),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" refers to the IC number shown in the displayed patient list panel.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(" "),_c('strong',[_v("must be the FULL IC NUMBER")]),_v(".")]),_v(" "),_c('li',[_v("IC number must be valid and currently exist in the database.")]),_v(" "),_c('li',[_v("Notes will not wrap around. Notes added with separate uses of the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" command will appear as separate lines.")]),_v(" "),_c('li',[_v("The "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")]),_v(" flag is used to replace the current note with the new note.\n"),_c('ul',[_c('li',[_v("It must only be used once.")]),_v(" "),_c('li',[_v("It must only be used at the end of the command.")]),_v(" "),_c('li',[_v("Anything after the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")]),_v(" flag will be ignored. For example, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replacefdshareh")]),_v(" will be interpreted as "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("-replace")]),_v(".")])])])])]),_v(" "),_c('p',[_v("Examples:")]),_v(" "),_c('ul',[_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\Patient has diabetes")]),_v(" adds a note "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Patient has diabetes")]),_v(" to the person with the IC number "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" in ClinicMate.")]),_v(" "),_c('li',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\Patient has diabetes -replace")]),_v(" replaces the note of the person with the IC number "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("T0123456A")]),_v(" to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Patient has diabetes")]),_v(".")])]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_v("⚠️ Warning:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("In the current version of the app, having more than one "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\")]),_v(" in the command might cause undefined behaviour. Please avoid having "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\")]),_v(" in the note body.")])])]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_c('p',[_v("Users will be able to see specific patient notes on the patient notes panel using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command. (See "),_c('a',{attrs:{"href":"#changing-the-displayed-note-show"}},[_v("show")]),_v(" command)")])]),_v(" "),_c('li',[_c('p',[_v("An alternative to check if the note is updated correctly, use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" command. (See "),_c('a',{attrs:{"href":"#locating-persons-by-ic-number-find"}},[_v("find")]),_v(" command)\nOn the patient list panel, the list will be filtered to that specific patient; On the patient notes panel, the updated notes of the specific patient will be shown.")])]),_v(" "),_c('li',[_c('p',[_v("If you'd like to add empty line(s), you can add an empty note (i.e. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\")]),_v(" 1 or more times.\nDo note that the patient list panel will not display the empty line(s) unless there is a note with other characters before and after the note with just spaces.")])]),_v(" "),_c('li',[_c('p',[_v("The space characters at the start and end of the note are stripped during the execution of this command. So "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\ Diabetes")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\Diabetes")]),_v(" give the same note of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Diabetes")]),_v(".")])])])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h1',{attrs:{"id":"data-files"}},[_v("Data Files"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#data-files","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"saving-the-data"}},[_v("Saving the data"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#saving-the-data","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("ClinicMate data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.")]),_v(" "),_c('h2',{attrs:{"id":"editing-the-data-file"}},[_v("Editing the data file"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#editing-the-data-file","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("ClinicMate data is saved automatically as a JSON file "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[JAR file location]/data/clinicmate.json")]),_v(". Advanced users are welcome to update data directly by editing that data file.")]),_v(" "),_c('div',{staticClass:"alert alert-danger",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_v("⚠️ Warning:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("If your changes to the data file makes its format invalid, ClinicMate will discard all data and start with an empty data file at the next run. Hence, it is recommended to make a backup of the file before editing it.")]),_v(" "),_c('li',[_v("Furthermore, certain edits can cause ClinicMate to behave in unexpected ways (e.g. if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.")])])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('hr'),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"faq"}},[_v("FAQ"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#faq","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": How do I open my terminal?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Here are the instructions to open your terminal for the different types of operating systems:")]),_v(" "),_c('ul',[_c('li',[_v("Windows: Click on the Windows Start button, and type 'Command Prompt' or 'cmd' into the search bar. Press Enter to open it.")]),_v(" "),_c('li',[_v("macOS: Click on 'F4' and type 'terminal'. Press Enter when 'terminal' appears in the search results.")]),_v(" "),_c('li',[_v("Linux: Press 'Ctrl', 'Alt' and 'T' simultaneously to open the terminal.")])]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": When will the patient notes panel be cleared? "),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": The patient notes panel will be cleared when you use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command without any "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")]),_v(". Unfortunately, "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" command will not clear the patient notes panel.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": When using multiple screens, moving the application to a secondary screen and later switching to using only the primary screen, the GUI opens off-screen. What do I do?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Delete the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("preferences.json")]),_v(" file created by the application before running the application again.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Is there a limit to the number of patient records ClinicMate can manage?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": ClinicMate is designed to handle a large number of patient records efficiently. However, performance may vary depending on the hardware specifications of your computer and the amount of data being managed.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": How do I load my data from another computer?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Let's say that you want to move your data from computer A to computer B. You should:")]),_v(" "),_c('ol',[_c('li',[_v("Delete the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate.json")]),_v(" file that is located at "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[JAR file location]/data/clinicmate.json")]),_v(" in computer B.")]),_v(" "),_c('li',[_v("Copy the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clinicmate.json")]),_v(" file from computer A to computer B at the same location as above.")]),_v(" "),_c('li',[_v("Run the ClinicMate in computer B to load the data.")])]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Can I export patient data from ClinicMate for reporting or backup purposes?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Currently, ClinicMate does not support direct export of patient data. However, you can manually copy the data from the data file located at "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("[JAR file location]/data/clinicmate.json")]),_v(" for backup or reporting purposes.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Can I customize the fields for patient records in ClinicMate?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": ClinicMate currently supports predefined fields for patient records (name, phone, email, IC number, age, sex, address). Customization of fields is not supported in the current version.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": How secure is the patient data stored in ClinicMate?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": ClinicMate stores patient data locally on your computer in a JSON file. It is recommended to keep your computer secure and up-to-date with the latest security patches to ensure the safety of patient data.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Is there a way to import patient data into ClinicMate from other software?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": ClinicMate does not currently support direct import of patient data from other software. However, you can manually enter patient data using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": I am not able to directly access the user guide by pressing on the icon in the help window."),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Linux users might face some difficulties when trying to directly access the website. Unfortunately, we currently do not have a solution for this. Please access our user guide in the alternative way, which is to copy the URL and pasting it in your web browser.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": The patient notes panel does not display the most updated contact I interacted with."),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Currently, only the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find")]),_v(" or "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command will change whose notes are displayed in the patient notes panel.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": The patient notes panel is not showing the full note. Can I expand the display?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": ClinicMate does not currently support expanding the patient notes panel. However, you can scroll through the notes both vertically and horizontally using the scrollbar provided.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Some of my patient information is being truncated in the patient list panel. How can I view the full information?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Unfortunately, ClinicMate displays patient information in a fixed format, including sections such as email and note, that might cause long entries to be truncated (e.g. An excessively long name would cause the name, age and gender to be truncated). This will be fixed in a future release.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Long lines of notes in the patient list panel are being unevenly truncated. Is this normal?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Yes, this is a known issue. You can still view the full note using the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")]),_v(" command through the patient notes panel.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Can I use "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" repeatedly with the same message?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": Yes! ClinicMate does not restrict the number of times you can use the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote")]),_v(" command with the same message.")]),_v(" "),_c('p',[_c('strong',[_v("Q")]),_v(": Do you support non-English inputs?"),_c('br'),_v(" "),_c('strong',[_v("A")]),_v(": We do not have dedicated support for non-English inputs, and some features might not work as expected. We recommend using English inputs for the best experience.")]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('hr'),_v(" "),_c('h1',{attrs:{"id":"coming-soon"}},[_v("Coming Soon"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#coming-soon","onclick":"event.stopPropagation()"}})]),_v(" "),_c('ol',[_c('li',[_c('strong',[_v("Support for multiple phone numbers")]),_v(": Allow users to add multiple phone numbers for a single patient record.")]),_v(" "),_c('li',[_c('strong',[_v("Date of Birth")]),_v(": Add a field for date of birth to patient records for better age calculation.")]),_v(" "),_c('li',[_c('strong',[_v("Appointment scheduling")]),_v(": Implement a feature to track and schedule patient appointments.")]),_v(" "),_c('li',[_c('strong',[_v("Support for patient identification")]),_v(": Allow users to use other methods to identify patients, such as passport numbers, names or driving license numbers.")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('hr'),_v(" "),_c('div',{staticStyle:{"page-break-after":"always"}}),_v(" "),_c('h1',{attrs:{"id":"glossary"}},[_v("Glossary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#glossary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('h2',{attrs:{"id":"definitions-of-key-terms"}},[_v("Definitions of Key Terms"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#definitions-of-key-terms","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("These descriptions will help you understand the key terms used in ClinicMate.")]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Term")]),_v(" "),_c('th',[_v("Definition")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('strong',[_v("Alphanumeric")])]),_v(" "),_c('td',[_v("Alphanumeric pertains to a character set containing both letters and numbers, encompassing the full range of 26 English alphabet letters (both uppercase and lowercase) along with numerical digits 0 through 9.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Case-insensitive")])]),_v(" "),_c('td',[_v("Case-insensitive treatment equates uppercase and lowercase characters, treating them as identical. For instance, both "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("john")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("John")]),_v(" would be considered the same.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("CLI")])]),_v(" "),_c('td',[_v("CLI, or Command-Line Interface, is a text-based interface enabling users to interact with software via typed commands.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Command")])]),_v(" "),_c('td',[_v("A command denotes a user's directive to ClinicMate, instructing it to execute a specific action. For example, the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add")]),_v(" command adds the patient's details to ClinicMate.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("GUI")])]),_v(" "),_c('td',[_v("GUI, or Graphical User Interface, facilitates user interaction with software through visual elements like icons, buttons, and windows, providing a more intuitive alternative to text-based commands.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("JAR")])]),_v(" "),_c('td',[_v("JAR, short for Java Archive, represents a package file format used to bundle multiple Java class files, along with associated metadata and resources, into a single file for distribution purposes.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("JSON")])]),_v(" "),_c('td',[_v("JSON, standing for JavaScript Object Notation, serves as a lightweight data interchange format that is human-readable and easy for machines to parse, commonly utilized in web applications and configuration files.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Parameter")])]),_v(" "),_c('td',[_v("A parameter resembles a field in a form that requires input. In the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit S1234567A ag\\AGE n\\NAME")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AGE")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NAME")]),_v(" are parameters within the command.")])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Prefix")])]),_v(" "),_c('td',[_v("A prefix acts as a keyword used to identify a parameter. In the command "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit S1234567A ag\\AGE n\\NAME")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ag\\")]),_v(" and "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("n\\")]),_v(" function as prefixes.")])])])])]),_c('h2',{attrs:{"id":"parameters-description"}},[_v("Parameters Description"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#parameters-description","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Parameter")]),_v(" "),_c('th',[_v("Description")]),_v(" "),_c('th',[_v("Constraints")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NAME")])]),_v(" "),_c('td',[_v("Name of the patient.")]),_v(" "),_c('td',[_v("Only contain alphanumeric characters and spaces, and should not be blank.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("PHONE")])]),_v(" "),_c('td',[_v("Phone number of the patient.")]),_v(" "),_c('td',[_v("Only contain numbers, be at least 3 digits. Should not be blank.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("EMAIL")])]),_v(" "),_c('td',[_v("Email of the patient.")]),_v(" "),_c('td',[_v("Should be in the format of "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("local-part@domain")]),_v(" and should not be blank.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("IC_NUMBER")])]),_v(" "),_c('td',[_v("IC number of the patient.")]),_v(" "),_c('td',[_v("Case-insensitive and should not be blank. It should start with one letter (S, F, G or M), followed by 7 digits and 1 letter behind.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("AGE")])]),_v(" "),_c('td',[_v("Age of the patient.")]),_v(" "),_c('td',[_v("Only contain numbers, and should not be blank.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("SEX")])]),_v(" "),_c('td',[_v("Sex of the patient.")]),_v(" "),_c('td',[_v("Case-insensitive and should not be blank. Only accepts "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("m")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("f")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("M")]),_v(", "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("F")]),_v(" as inputs.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("ADDRESS")])]),_v(" "),_c('td',[_v("Address of the patient.")]),_v(" "),_c('td',[_v("Case-insensitive and should not be blank.")])]),_v(" "),_c('tr',[_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("NOTE")])]),_v(" "),_c('td',[_v("Note of the patient")]),_v(" "),_c('td',[_v("Case-insensitive and can be blank.")])])])])]),_c('div',{staticClass:"alert alert-info",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("edit")]),_v(" Note:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("Constraints are designed to be less restrictive to accommodate to a wide range of user inputs.")]),_v(" "),_c('li',[_v("Instances include having names with special characters.")])])]),_v(" "),_c('div',{staticClass:"alert alert-success",attrs:{"markdown":"block"}},[_c('p',[_c('strong',[_c('i',{staticClass:"material-icons-outlined"},[_v("lightbulb")]),_v(" Useful Tip:")]),_c('br')]),_v(" "),_c('ul',[_c('li',[_v("If you enter an invalid input for any of the prefixes, you will see an error message in the command box.\nRefer to the error message, check the description for the respective prefix and try the command again! An example of an error message is shown below.\n"),_c('a',{attrs:{"href":"/tp/images/FindCommandError.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/FindCommandError.png","alt":"FindCommandError"}})])])])]),_v(" "),_c('h3',{attrs:{"id":"email-format-description"}},[_v("Email Format Description"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#email-format-description","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_v("The email format is "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("local-part@domain")]),_v(".")]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("local-part")]),_v(" constraints:")]),_v(" "),_c('ul',[_c('li',[_v("Only contain alphanumeric characters and these special characters, excluding the parentheses, (+_.-).")]),_v(" "),_c('li',[_v("May not start or end with any special characters.")])]),_v(" "),_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("domain")]),_v(" name constraints:")]),_v(" "),_c('ul',[_c('li',[_v("Made up of domain labels separated by periods.")]),_v(" "),_c('li',[_v("End with a domain label at least 2 characters long.")]),_v(" "),_c('li',[_v("Have each domain label start and end with alphanumeric characters.")]),_v(" "),_c('li',[_v("Have each domain label consist of alphanumeric characters, separated only by hyphens, if any.")])]),_v(" "),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])]),_v(" "),_c('h1',{attrs:{"id":"command-summary"}},[_v("Command summary"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#command-summary","onclick":"event.stopPropagation()"}})]),_v(" "),_c('div',{staticClass:"table-responsive"},[_c('table',{staticClass:"markbind-table table table-bordered table-striped"},[_c('thead',[_c('tr',[_c('th',[_v("Action")]),_v(" "),_c('th',[_v("Format, Examples")])])]),_v(" "),_c('tbody',[_c('tr',[_c('td',[_c('strong',[_v("Add")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\NAME p\\PHONE e\\EMAIL i\\IC_NUMBER ag\\AGE s\\SEX a\\ADDRESS")]),_v(" "),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("add n\\John Doe p\\88888888 e\\johndoe@mail.com i\\T0123456A ag\\12 s\\M a\\John street, block 123, #01-01")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Clear")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("clear")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Delete")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete IC_NUMBER")]),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete T0123456A")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Edit")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit IC_NUMBER [n\\NAME] [p\\PHONE] [e\\EMAIL] [i\\IC_NUMBER] [ag\\AGE] [s\\SEX] [a\\ADDRESS]")]),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit T0123456A p\\88888888")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Add Note")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote IC_NUMBER n\\NOTE [-replace]")]),_c('br'),_v(" e.g., "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\Patient has diabetes")]),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("addnote T0123456A n\\Patient has diabetes -replace")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Find")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find IC_NUMBER")]),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("find T0123456A")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Show")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show [IC_NUMBER]")]),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show T0123456A")]),_v(" "),_c('br'),_v(" e.g. "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("show")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Help")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("help")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("List")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("list")])])]),_v(" "),_c('tr',[_c('td',[_c('strong',[_v("Exit")])]),_v(" "),_c('td',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("exit")])])])])])]),_c('p',[_c('span',{staticClass:"generated-only"},[_c('a',{attrs:{"href":"#welcome-to-clinicmate"}},[_v("↑ Back to Top")])]),_v(" "),_c('span',{staticClass:"print-only"},[_c('a',{attrs:{"href":"#table-of-contents"}},[_v("↑ Back to Table of Contents")])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/index.html b/index.html index d3c42d762d2..90b3c3da8c8 100644 --- a/index.html +++ b/index.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -19,8 +16,12 @@ Search
ClinicMate is a desktop application for managing your contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).
Acknowledgements
+
ClinicMate is a desktop application for managing your contact details. While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).
Acknowledgements
+
+
+
+
diff --git a/index.page-vue-render.js b/index.page-vue-render.js
index ac6d020816a..6730e45b598 100644
--- a/index.page-vue-render.js
+++ b/index.page-vue-render.js
@@ -8,6 +8,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":""
with(this){return _c('div',{attrs:{"id":"content-wrapper"}},[_c('h1',{attrs:{"id":"clinicmate"}},[_v("ClinicMate"),_c('a',{staticClass:"fa fa-anchor",attrs:{"href":"#clinicmate","onclick":"event.stopPropagation()"}})]),_v(" "),_c('p',[_c('a',{attrs:{"href":"https://github.com/AY2324S2-CS2103T-F14-2/tp/actions"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://github.com/AY2324S2-CS2103T-F14-2/tp/workflows/Java%20CI/badge.svg","alt":"CI Status"}})]),_v(" "),_c('a',{attrs:{"href":"https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"https://codecov.io/gh/AY2324S2-CS2103T-F14-2/tp/branch/master/graph/badge.svg","alt":"codecov"}})])]),_v(" "),_c('p',[_c('a',{attrs:{"href":"/tp/images/Ui.png","target":"_self"}},[_c('img',{staticClass:"img-fluid",attrs:{"src":"/tp/images/Ui.png","alt":"Ui"}})])]),_v(" "),_c('p',[_c('strong',[_v("ClinicMate is a desktop application for managing your contact details.")]),_v(" While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).")]),_v(" "),_c('ul',[_c('li',[_v("If you are interested in using ClinicMate, head over to the "),_c('a',{attrs:{"href":"/tp/UserGuide.html#quick-start"}},[_c('em',[_v("Quick Start")]),_v(" section of the "),_c('strong',[_v("User Guide")])]),_v(".")]),_v(" "),_c('li',[_v("If you are interested about developing ClinicMate, the "),_c('a',{attrs:{"href":"/tp/DeveloperGuide.html"}},[_c('strong',[_v("Developer Guide")])]),_v(" is a good place to start.")])]),_v(" "),_c('p',[_c('strong',[_v("Acknowledgements")])]),_v(" "),_c('ul',[_c('li',[_v("Libraries used: "),_c('a',{attrs:{"href":"https://openjfx.io/"}},[_v("JavaFX")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/FasterXML/jackson"}},[_v("Jackson")]),_v(", "),_c('a',{attrs:{"href":"https://github.com/junit-team/junit5"}},[_v("JUnit5")])]),_v(" "),_c('li',[_v("Logo: "),_c('a',{attrs:{"href":"https://www.flaticon.com/free-icons/red-cross"}},[_v("Red Cross icons by Freepik - Flaticon")])])])])}
},function anonymous(
) {
-with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])}
+with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])}
}];
\ No newline at end of file
diff --git a/markbind/bootstrap-icons/font/bootstrap-icons.css b/markbind/bootstrap-icons/font/bootstrap-icons.css
new file mode 100644
index 00000000000..bc84a5fe323
--- /dev/null
+++ b/markbind/bootstrap-icons/font/bootstrap-icons.css
@@ -0,0 +1,2078 @@
+/*!
+ * Bootstrap Icons v1.11.3 (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("./fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),
+url("./fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") 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"; }
diff --git a/markbind/bootstrap-icons/font/bootstrap-icons.json b/markbind/bootstrap-icons/font/bootstrap-icons.json
new file mode 100644
index 00000000000..56247e50b64
--- /dev/null
+++ b/markbind/bootstrap-icons/font/bootstrap-icons.json
@@ -0,0 +1,2052 @@
+{
+ "123": 63103,
+ "alarm-fill": 61697,
+ "alarm": 61698,
+ "align-bottom": 61699,
+ "align-center": 61700,
+ "align-end": 61701,
+ "align-middle": 61702,
+ "align-start": 61703,
+ "align-top": 61704,
+ "alt": 61705,
+ "app-indicator": 61706,
+ "app": 61707,
+ "archive-fill": 61708,
+ "archive": 61709,
+ "arrow-90deg-down": 61710,
+ "arrow-90deg-left": 61711,
+ "arrow-90deg-right": 61712,
+ "arrow-90deg-up": 61713,
+ "arrow-bar-down": 61714,
+ "arrow-bar-left": 61715,
+ "arrow-bar-right": 61716,
+ "arrow-bar-up": 61717,
+ "arrow-clockwise": 61718,
+ "arrow-counterclockwise": 61719,
+ "arrow-down-circle-fill": 61720,
+ "arrow-down-circle": 61721,
+ "arrow-down-left-circle-fill": 61722,
+ "arrow-down-left-circle": 61723,
+ "arrow-down-left-square-fill": 61724,
+ "arrow-down-left-square": 61725,
+ "arrow-down-left": 61726,
+ "arrow-down-right-circle-fill": 61727,
+ "arrow-down-right-circle": 61728,
+ "arrow-down-right-square-fill": 61729,
+ "arrow-down-right-square": 61730,
+ "arrow-down-right": 61731,
+ "arrow-down-short": 61732,
+ "arrow-down-square-fill": 61733,
+ "arrow-down-square": 61734,
+ "arrow-down-up": 61735,
+ "arrow-down": 61736,
+ "arrow-left-circle-fill": 61737,
+ "arrow-left-circle": 61738,
+ "arrow-left-right": 61739,
+ "arrow-left-short": 61740,
+ "arrow-left-square-fill": 61741,
+ "arrow-left-square": 61742,
+ "arrow-left": 61743,
+ "arrow-repeat": 61744,
+ "arrow-return-left": 61745,
+ "arrow-return-right": 61746,
+ "arrow-right-circle-fill": 61747,
+ "arrow-right-circle": 61748,
+ "arrow-right-short": 61749,
+ "arrow-right-square-fill": 61750,
+ "arrow-right-square": 61751,
+ "arrow-right": 61752,
+ "arrow-up-circle-fill": 61753,
+ "arrow-up-circle": 61754,
+ "arrow-up-left-circle-fill": 61755,
+ "arrow-up-left-circle": 61756,
+ "arrow-up-left-square-fill": 61757,
+ "arrow-up-left-square": 61758,
+ "arrow-up-left": 61759,
+ "arrow-up-right-circle-fill": 61760,
+ "arrow-up-right-circle": 61761,
+ "arrow-up-right-square-fill": 61762,
+ "arrow-up-right-square": 61763,
+ "arrow-up-right": 61764,
+ "arrow-up-short": 61765,
+ "arrow-up-square-fill": 61766,
+ "arrow-up-square": 61767,
+ "arrow-up": 61768,
+ "arrows-angle-contract": 61769,
+ "arrows-angle-expand": 61770,
+ "arrows-collapse": 61771,
+ "arrows-expand": 61772,
+ "arrows-fullscreen": 61773,
+ "arrows-move": 61774,
+ "aspect-ratio-fill": 61775,
+ "aspect-ratio": 61776,
+ "asterisk": 61777,
+ "at": 61778,
+ "award-fill": 61779,
+ "award": 61780,
+ "back": 61781,
+ "backspace-fill": 61782,
+ "backspace-reverse-fill": 61783,
+ "backspace-reverse": 61784,
+ "backspace": 61785,
+ "badge-3d-fill": 61786,
+ "badge-3d": 61787,
+ "badge-4k-fill": 61788,
+ "badge-4k": 61789,
+ "badge-8k-fill": 61790,
+ "badge-8k": 61791,
+ "badge-ad-fill": 61792,
+ "badge-ad": 61793,
+ "badge-ar-fill": 61794,
+ "badge-ar": 61795,
+ "badge-cc-fill": 61796,
+ "badge-cc": 61797,
+ "badge-hd-fill": 61798,
+ "badge-hd": 61799,
+ "badge-tm-fill": 61800,
+ "badge-tm": 61801,
+ "badge-vo-fill": 61802,
+ "badge-vo": 61803,
+ "badge-vr-fill": 61804,
+ "badge-vr": 61805,
+ "badge-wc-fill": 61806,
+ "badge-wc": 61807,
+ "bag-check-fill": 61808,
+ "bag-check": 61809,
+ "bag-dash-fill": 61810,
+ "bag-dash": 61811,
+ "bag-fill": 61812,
+ "bag-plus-fill": 61813,
+ "bag-plus": 61814,
+ "bag-x-fill": 61815,
+ "bag-x": 61816,
+ "bag": 61817,
+ "bar-chart-fill": 61818,
+ "bar-chart-line-fill": 61819,
+ "bar-chart-line": 61820,
+ "bar-chart-steps": 61821,
+ "bar-chart": 61822,
+ "basket-fill": 61823,
+ "basket": 61824,
+ "basket2-fill": 61825,
+ "basket2": 61826,
+ "basket3-fill": 61827,
+ "basket3": 61828,
+ "battery-charging": 61829,
+ "battery-full": 61830,
+ "battery-half": 61831,
+ "battery": 61832,
+ "bell-fill": 61833,
+ "bell": 61834,
+ "bezier": 61835,
+ "bezier2": 61836,
+ "bicycle": 61837,
+ "binoculars-fill": 61838,
+ "binoculars": 61839,
+ "blockquote-left": 61840,
+ "blockquote-right": 61841,
+ "book-fill": 61842,
+ "book-half": 61843,
+ "book": 61844,
+ "bookmark-check-fill": 61845,
+ "bookmark-check": 61846,
+ "bookmark-dash-fill": 61847,
+ "bookmark-dash": 61848,
+ "bookmark-fill": 61849,
+ "bookmark-heart-fill": 61850,
+ "bookmark-heart": 61851,
+ "bookmark-plus-fill": 61852,
+ "bookmark-plus": 61853,
+ "bookmark-star-fill": 61854,
+ "bookmark-star": 61855,
+ "bookmark-x-fill": 61856,
+ "bookmark-x": 61857,
+ "bookmark": 61858,
+ "bookmarks-fill": 61859,
+ "bookmarks": 61860,
+ "bookshelf": 61861,
+ "bootstrap-fill": 61862,
+ "bootstrap-reboot": 61863,
+ "bootstrap": 61864,
+ "border-all": 61865,
+ "border-bottom": 61866,
+ "border-center": 61867,
+ "border-inner": 61868,
+ "border-left": 61869,
+ "border-middle": 61870,
+ "border-outer": 61871,
+ "border-right": 61872,
+ "border-style": 61873,
+ "border-top": 61874,
+ "border-width": 61875,
+ "border": 61876,
+ "bounding-box-circles": 61877,
+ "bounding-box": 61878,
+ "box-arrow-down-left": 61879,
+ "box-arrow-down-right": 61880,
+ "box-arrow-down": 61881,
+ "box-arrow-in-down-left": 61882,
+ "box-arrow-in-down-right": 61883,
+ "box-arrow-in-down": 61884,
+ "box-arrow-in-left": 61885,
+ "box-arrow-in-right": 61886,
+ "box-arrow-in-up-left": 61887,
+ "box-arrow-in-up-right": 61888,
+ "box-arrow-in-up": 61889,
+ "box-arrow-left": 61890,
+ "box-arrow-right": 61891,
+ "box-arrow-up-left": 61892,
+ "box-arrow-up-right": 61893,
+ "box-arrow-up": 61894,
+ "box-seam": 61895,
+ "box": 61896,
+ "braces": 61897,
+ "bricks": 61898,
+ "briefcase-fill": 61899,
+ "briefcase": 61900,
+ "brightness-alt-high-fill": 61901,
+ "brightness-alt-high": 61902,
+ "brightness-alt-low-fill": 61903,
+ "brightness-alt-low": 61904,
+ "brightness-high-fill": 61905,
+ "brightness-high": 61906,
+ "brightness-low-fill": 61907,
+ "brightness-low": 61908,
+ "broadcast-pin": 61909,
+ "broadcast": 61910,
+ "brush-fill": 61911,
+ "brush": 61912,
+ "bucket-fill": 61913,
+ "bucket": 61914,
+ "bug-fill": 61915,
+ "bug": 61916,
+ "building": 61917,
+ "bullseye": 61918,
+ "calculator-fill": 61919,
+ "calculator": 61920,
+ "calendar-check-fill": 61921,
+ "calendar-check": 61922,
+ "calendar-date-fill": 61923,
+ "calendar-date": 61924,
+ "calendar-day-fill": 61925,
+ "calendar-day": 61926,
+ "calendar-event-fill": 61927,
+ "calendar-event": 61928,
+ "calendar-fill": 61929,
+ "calendar-minus-fill": 61930,
+ "calendar-minus": 61931,
+ "calendar-month-fill": 61932,
+ "calendar-month": 61933,
+ "calendar-plus-fill": 61934,
+ "calendar-plus": 61935,
+ "calendar-range-fill": 61936,
+ "calendar-range": 61937,
+ "calendar-week-fill": 61938,
+ "calendar-week": 61939,
+ "calendar-x-fill": 61940,
+ "calendar-x": 61941,
+ "calendar": 61942,
+ "calendar2-check-fill": 61943,
+ "calendar2-check": 61944,
+ "calendar2-date-fill": 61945,
+ "calendar2-date": 61946,
+ "calendar2-day-fill": 61947,
+ "calendar2-day": 61948,
+ "calendar2-event-fill": 61949,
+ "calendar2-event": 61950,
+ "calendar2-fill": 61951,
+ "calendar2-minus-fill": 61952,
+ "calendar2-minus": 61953,
+ "calendar2-month-fill": 61954,
+ "calendar2-month": 61955,
+ "calendar2-plus-fill": 61956,
+ "calendar2-plus": 61957,
+ "calendar2-range-fill": 61958,
+ "calendar2-range": 61959,
+ "calendar2-week-fill": 61960,
+ "calendar2-week": 61961,
+ "calendar2-x-fill": 61962,
+ "calendar2-x": 61963,
+ "calendar2": 61964,
+ "calendar3-event-fill": 61965,
+ "calendar3-event": 61966,
+ "calendar3-fill": 61967,
+ "calendar3-range-fill": 61968,
+ "calendar3-range": 61969,
+ "calendar3-week-fill": 61970,
+ "calendar3-week": 61971,
+ "calendar3": 61972,
+ "calendar4-event": 61973,
+ "calendar4-range": 61974,
+ "calendar4-week": 61975,
+ "calendar4": 61976,
+ "camera-fill": 61977,
+ "camera-reels-fill": 61978,
+ "camera-reels": 61979,
+ "camera-video-fill": 61980,
+ "camera-video-off-fill": 61981,
+ "camera-video-off": 61982,
+ "camera-video": 61983,
+ "camera": 61984,
+ "camera2": 61985,
+ "capslock-fill": 61986,
+ "capslock": 61987,
+ "card-checklist": 61988,
+ "card-heading": 61989,
+ "card-image": 61990,
+ "card-list": 61991,
+ "card-text": 61992,
+ "caret-down-fill": 61993,
+ "caret-down-square-fill": 61994,
+ "caret-down-square": 61995,
+ "caret-down": 61996,
+ "caret-left-fill": 61997,
+ "caret-left-square-fill": 61998,
+ "caret-left-square": 61999,
+ "caret-left": 62000,
+ "caret-right-fill": 62001,
+ "caret-right-square-fill": 62002,
+ "caret-right-square": 62003,
+ "caret-right": 62004,
+ "caret-up-fill": 62005,
+ "caret-up-square-fill": 62006,
+ "caret-up-square": 62007,
+ "caret-up": 62008,
+ "cart-check-fill": 62009,
+ "cart-check": 62010,
+ "cart-dash-fill": 62011,
+ "cart-dash": 62012,
+ "cart-fill": 62013,
+ "cart-plus-fill": 62014,
+ "cart-plus": 62015,
+ "cart-x-fill": 62016,
+ "cart-x": 62017,
+ "cart": 62018,
+ "cart2": 62019,
+ "cart3": 62020,
+ "cart4": 62021,
+ "cash-stack": 62022,
+ "cash": 62023,
+ "cast": 62024,
+ "chat-dots-fill": 62025,
+ "chat-dots": 62026,
+ "chat-fill": 62027,
+ "chat-left-dots-fill": 62028,
+ "chat-left-dots": 62029,
+ "chat-left-fill": 62030,
+ "chat-left-quote-fill": 62031,
+ "chat-left-quote": 62032,
+ "chat-left-text-fill": 62033,
+ "chat-left-text": 62034,
+ "chat-left": 62035,
+ "chat-quote-fill": 62036,
+ "chat-quote": 62037,
+ "chat-right-dots-fill": 62038,
+ "chat-right-dots": 62039,
+ "chat-right-fill": 62040,
+ "chat-right-quote-fill": 62041,
+ "chat-right-quote": 62042,
+ "chat-right-text-fill": 62043,
+ "chat-right-text": 62044,
+ "chat-right": 62045,
+ "chat-square-dots-fill": 62046,
+ "chat-square-dots": 62047,
+ "chat-square-fill": 62048,
+ "chat-square-quote-fill": 62049,
+ "chat-square-quote": 62050,
+ "chat-square-text-fill": 62051,
+ "chat-square-text": 62052,
+ "chat-square": 62053,
+ "chat-text-fill": 62054,
+ "chat-text": 62055,
+ "chat": 62056,
+ "check-all": 62057,
+ "check-circle-fill": 62058,
+ "check-circle": 62059,
+ "check-square-fill": 62060,
+ "check-square": 62061,
+ "check": 62062,
+ "check2-all": 62063,
+ "check2-circle": 62064,
+ "check2-square": 62065,
+ "check2": 62066,
+ "chevron-bar-contract": 62067,
+ "chevron-bar-down": 62068,
+ "chevron-bar-expand": 62069,
+ "chevron-bar-left": 62070,
+ "chevron-bar-right": 62071,
+ "chevron-bar-up": 62072,
+ "chevron-compact-down": 62073,
+ "chevron-compact-left": 62074,
+ "chevron-compact-right": 62075,
+ "chevron-compact-up": 62076,
+ "chevron-contract": 62077,
+ "chevron-double-down": 62078,
+ "chevron-double-left": 62079,
+ "chevron-double-right": 62080,
+ "chevron-double-up": 62081,
+ "chevron-down": 62082,
+ "chevron-expand": 62083,
+ "chevron-left": 62084,
+ "chevron-right": 62085,
+ "chevron-up": 62086,
+ "circle-fill": 62087,
+ "circle-half": 62088,
+ "circle-square": 62089,
+ "circle": 62090,
+ "clipboard-check": 62091,
+ "clipboard-data": 62092,
+ "clipboard-minus": 62093,
+ "clipboard-plus": 62094,
+ "clipboard-x": 62095,
+ "clipboard": 62096,
+ "clock-fill": 62097,
+ "clock-history": 62098,
+ "clock": 62099,
+ "cloud-arrow-down-fill": 62100,
+ "cloud-arrow-down": 62101,
+ "cloud-arrow-up-fill": 62102,
+ "cloud-arrow-up": 62103,
+ "cloud-check-fill": 62104,
+ "cloud-check": 62105,
+ "cloud-download-fill": 62106,
+ "cloud-download": 62107,
+ "cloud-drizzle-fill": 62108,
+ "cloud-drizzle": 62109,
+ "cloud-fill": 62110,
+ "cloud-fog-fill": 62111,
+ "cloud-fog": 62112,
+ "cloud-fog2-fill": 62113,
+ "cloud-fog2": 62114,
+ "cloud-hail-fill": 62115,
+ "cloud-hail": 62116,
+ "cloud-haze-fill": 62118,
+ "cloud-haze": 62119,
+ "cloud-haze2-fill": 62120,
+ "cloud-lightning-fill": 62121,
+ "cloud-lightning-rain-fill": 62122,
+ "cloud-lightning-rain": 62123,
+ "cloud-lightning": 62124,
+ "cloud-minus-fill": 62125,
+ "cloud-minus": 62126,
+ "cloud-moon-fill": 62127,
+ "cloud-moon": 62128,
+ "cloud-plus-fill": 62129,
+ "cloud-plus": 62130,
+ "cloud-rain-fill": 62131,
+ "cloud-rain-heavy-fill": 62132,
+ "cloud-rain-heavy": 62133,
+ "cloud-rain": 62134,
+ "cloud-slash-fill": 62135,
+ "cloud-slash": 62136,
+ "cloud-sleet-fill": 62137,
+ "cloud-sleet": 62138,
+ "cloud-snow-fill": 62139,
+ "cloud-snow": 62140,
+ "cloud-sun-fill": 62141,
+ "cloud-sun": 62142,
+ "cloud-upload-fill": 62143,
+ "cloud-upload": 62144,
+ "cloud": 62145,
+ "clouds-fill": 62146,
+ "clouds": 62147,
+ "cloudy-fill": 62148,
+ "cloudy": 62149,
+ "code-slash": 62150,
+ "code-square": 62151,
+ "code": 62152,
+ "collection-fill": 62153,
+ "collection-play-fill": 62154,
+ "collection-play": 62155,
+ "collection": 62156,
+ "columns-gap": 62157,
+ "columns": 62158,
+ "command": 62159,
+ "compass-fill": 62160,
+ "compass": 62161,
+ "cone-striped": 62162,
+ "cone": 62163,
+ "controller": 62164,
+ "cpu-fill": 62165,
+ "cpu": 62166,
+ "credit-card-2-back-fill": 62167,
+ "credit-card-2-back": 62168,
+ "credit-card-2-front-fill": 62169,
+ "credit-card-2-front": 62170,
+ "credit-card-fill": 62171,
+ "credit-card": 62172,
+ "crop": 62173,
+ "cup-fill": 62174,
+ "cup-straw": 62175,
+ "cup": 62176,
+ "cursor-fill": 62177,
+ "cursor-text": 62178,
+ "cursor": 62179,
+ "dash-circle-dotted": 62180,
+ "dash-circle-fill": 62181,
+ "dash-circle": 62182,
+ "dash-square-dotted": 62183,
+ "dash-square-fill": 62184,
+ "dash-square": 62185,
+ "dash": 62186,
+ "diagram-2-fill": 62187,
+ "diagram-2": 62188,
+ "diagram-3-fill": 62189,
+ "diagram-3": 62190,
+ "diamond-fill": 62191,
+ "diamond-half": 62192,
+ "diamond": 62193,
+ "dice-1-fill": 62194,
+ "dice-1": 62195,
+ "dice-2-fill": 62196,
+ "dice-2": 62197,
+ "dice-3-fill": 62198,
+ "dice-3": 62199,
+ "dice-4-fill": 62200,
+ "dice-4": 62201,
+ "dice-5-fill": 62202,
+ "dice-5": 62203,
+ "dice-6-fill": 62204,
+ "dice-6": 62205,
+ "disc-fill": 62206,
+ "disc": 62207,
+ "discord": 62208,
+ "display-fill": 62209,
+ "display": 62210,
+ "distribute-horizontal": 62211,
+ "distribute-vertical": 62212,
+ "door-closed-fill": 62213,
+ "door-closed": 62214,
+ "door-open-fill": 62215,
+ "door-open": 62216,
+ "dot": 62217,
+ "download": 62218,
+ "droplet-fill": 62219,
+ "droplet-half": 62220,
+ "droplet": 62221,
+ "earbuds": 62222,
+ "easel-fill": 62223,
+ "easel": 62224,
+ "egg-fill": 62225,
+ "egg-fried": 62226,
+ "egg": 62227,
+ "eject-fill": 62228,
+ "eject": 62229,
+ "emoji-angry-fill": 62230,
+ "emoji-angry": 62231,
+ "emoji-dizzy-fill": 62232,
+ "emoji-dizzy": 62233,
+ "emoji-expressionless-fill": 62234,
+ "emoji-expressionless": 62235,
+ "emoji-frown-fill": 62236,
+ "emoji-frown": 62237,
+ "emoji-heart-eyes-fill": 62238,
+ "emoji-heart-eyes": 62239,
+ "emoji-laughing-fill": 62240,
+ "emoji-laughing": 62241,
+ "emoji-neutral-fill": 62242,
+ "emoji-neutral": 62243,
+ "emoji-smile-fill": 62244,
+ "emoji-smile-upside-down-fill": 62245,
+ "emoji-smile-upside-down": 62246,
+ "emoji-smile": 62247,
+ "emoji-sunglasses-fill": 62248,
+ "emoji-sunglasses": 62249,
+ "emoji-wink-fill": 62250,
+ "emoji-wink": 62251,
+ "envelope-fill": 62252,
+ "envelope-open-fill": 62253,
+ "envelope-open": 62254,
+ "envelope": 62255,
+ "eraser-fill": 62256,
+ "eraser": 62257,
+ "exclamation-circle-fill": 62258,
+ "exclamation-circle": 62259,
+ "exclamation-diamond-fill": 62260,
+ "exclamation-diamond": 62261,
+ "exclamation-octagon-fill": 62262,
+ "exclamation-octagon": 62263,
+ "exclamation-square-fill": 62264,
+ "exclamation-square": 62265,
+ "exclamation-triangle-fill": 62266,
+ "exclamation-triangle": 62267,
+ "exclamation": 62268,
+ "exclude": 62269,
+ "eye-fill": 62270,
+ "eye-slash-fill": 62271,
+ "eye-slash": 62272,
+ "eye": 62273,
+ "eyedropper": 62274,
+ "eyeglasses": 62275,
+ "facebook": 62276,
+ "file-arrow-down-fill": 62277,
+ "file-arrow-down": 62278,
+ "file-arrow-up-fill": 62279,
+ "file-arrow-up": 62280,
+ "file-bar-graph-fill": 62281,
+ "file-bar-graph": 62282,
+ "file-binary-fill": 62283,
+ "file-binary": 62284,
+ "file-break-fill": 62285,
+ "file-break": 62286,
+ "file-check-fill": 62287,
+ "file-check": 62288,
+ "file-code-fill": 62289,
+ "file-code": 62290,
+ "file-diff-fill": 62291,
+ "file-diff": 62292,
+ "file-earmark-arrow-down-fill": 62293,
+ "file-earmark-arrow-down": 62294,
+ "file-earmark-arrow-up-fill": 62295,
+ "file-earmark-arrow-up": 62296,
+ "file-earmark-bar-graph-fill": 62297,
+ "file-earmark-bar-graph": 62298,
+ "file-earmark-binary-fill": 62299,
+ "file-earmark-binary": 62300,
+ "file-earmark-break-fill": 62301,
+ "file-earmark-break": 62302,
+ "file-earmark-check-fill": 62303,
+ "file-earmark-check": 62304,
+ "file-earmark-code-fill": 62305,
+ "file-earmark-code": 62306,
+ "file-earmark-diff-fill": 62307,
+ "file-earmark-diff": 62308,
+ "file-earmark-easel-fill": 62309,
+ "file-earmark-easel": 62310,
+ "file-earmark-excel-fill": 62311,
+ "file-earmark-excel": 62312,
+ "file-earmark-fill": 62313,
+ "file-earmark-font-fill": 62314,
+ "file-earmark-font": 62315,
+ "file-earmark-image-fill": 62316,
+ "file-earmark-image": 62317,
+ "file-earmark-lock-fill": 62318,
+ "file-earmark-lock": 62319,
+ "file-earmark-lock2-fill": 62320,
+ "file-earmark-lock2": 62321,
+ "file-earmark-medical-fill": 62322,
+ "file-earmark-medical": 62323,
+ "file-earmark-minus-fill": 62324,
+ "file-earmark-minus": 62325,
+ "file-earmark-music-fill": 62326,
+ "file-earmark-music": 62327,
+ "file-earmark-person-fill": 62328,
+ "file-earmark-person": 62329,
+ "file-earmark-play-fill": 62330,
+ "file-earmark-play": 62331,
+ "file-earmark-plus-fill": 62332,
+ "file-earmark-plus": 62333,
+ "file-earmark-post-fill": 62334,
+ "file-earmark-post": 62335,
+ "file-earmark-ppt-fill": 62336,
+ "file-earmark-ppt": 62337,
+ "file-earmark-richtext-fill": 62338,
+ "file-earmark-richtext": 62339,
+ "file-earmark-ruled-fill": 62340,
+ "file-earmark-ruled": 62341,
+ "file-earmark-slides-fill": 62342,
+ "file-earmark-slides": 62343,
+ "file-earmark-spreadsheet-fill": 62344,
+ "file-earmark-spreadsheet": 62345,
+ "file-earmark-text-fill": 62346,
+ "file-earmark-text": 62347,
+ "file-earmark-word-fill": 62348,
+ "file-earmark-word": 62349,
+ "file-earmark-x-fill": 62350,
+ "file-earmark-x": 62351,
+ "file-earmark-zip-fill": 62352,
+ "file-earmark-zip": 62353,
+ "file-earmark": 62354,
+ "file-easel-fill": 62355,
+ "file-easel": 62356,
+ "file-excel-fill": 62357,
+ "file-excel": 62358,
+ "file-fill": 62359,
+ "file-font-fill": 62360,
+ "file-font": 62361,
+ "file-image-fill": 62362,
+ "file-image": 62363,
+ "file-lock-fill": 62364,
+ "file-lock": 62365,
+ "file-lock2-fill": 62366,
+ "file-lock2": 62367,
+ "file-medical-fill": 62368,
+ "file-medical": 62369,
+ "file-minus-fill": 62370,
+ "file-minus": 62371,
+ "file-music-fill": 62372,
+ "file-music": 62373,
+ "file-person-fill": 62374,
+ "file-person": 62375,
+ "file-play-fill": 62376,
+ "file-play": 62377,
+ "file-plus-fill": 62378,
+ "file-plus": 62379,
+ "file-post-fill": 62380,
+ "file-post": 62381,
+ "file-ppt-fill": 62382,
+ "file-ppt": 62383,
+ "file-richtext-fill": 62384,
+ "file-richtext": 62385,
+ "file-ruled-fill": 62386,
+ "file-ruled": 62387,
+ "file-slides-fill": 62388,
+ "file-slides": 62389,
+ "file-spreadsheet-fill": 62390,
+ "file-spreadsheet": 62391,
+ "file-text-fill": 62392,
+ "file-text": 62393,
+ "file-word-fill": 62394,
+ "file-word": 62395,
+ "file-x-fill": 62396,
+ "file-x": 62397,
+ "file-zip-fill": 62398,
+ "file-zip": 62399,
+ "file": 62400,
+ "files-alt": 62401,
+ "files": 62402,
+ "film": 62403,
+ "filter-circle-fill": 62404,
+ "filter-circle": 62405,
+ "filter-left": 62406,
+ "filter-right": 62407,
+ "filter-square-fill": 62408,
+ "filter-square": 62409,
+ "filter": 62410,
+ "flag-fill": 62411,
+ "flag": 62412,
+ "flower1": 62413,
+ "flower2": 62414,
+ "flower3": 62415,
+ "folder-check": 62416,
+ "folder-fill": 62417,
+ "folder-minus": 62418,
+ "folder-plus": 62419,
+ "folder-symlink-fill": 62420,
+ "folder-symlink": 62421,
+ "folder-x": 62422,
+ "folder": 62423,
+ "folder2-open": 62424,
+ "folder2": 62425,
+ "fonts": 62426,
+ "forward-fill": 62427,
+ "forward": 62428,
+ "front": 62429,
+ "fullscreen-exit": 62430,
+ "fullscreen": 62431,
+ "funnel-fill": 62432,
+ "funnel": 62433,
+ "gear-fill": 62434,
+ "gear-wide-connected": 62435,
+ "gear-wide": 62436,
+ "gear": 62437,
+ "gem": 62438,
+ "geo-alt-fill": 62439,
+ "geo-alt": 62440,
+ "geo-fill": 62441,
+ "geo": 62442,
+ "gift-fill": 62443,
+ "gift": 62444,
+ "github": 62445,
+ "globe": 62446,
+ "globe2": 62447,
+ "google": 62448,
+ "graph-down": 62449,
+ "graph-up": 62450,
+ "grid-1x2-fill": 62451,
+ "grid-1x2": 62452,
+ "grid-3x2-gap-fill": 62453,
+ "grid-3x2-gap": 62454,
+ "grid-3x2": 62455,
+ "grid-3x3-gap-fill": 62456,
+ "grid-3x3-gap": 62457,
+ "grid-3x3": 62458,
+ "grid-fill": 62459,
+ "grid": 62460,
+ "grip-horizontal": 62461,
+ "grip-vertical": 62462,
+ "hammer": 62463,
+ "hand-index-fill": 62464,
+ "hand-index-thumb-fill": 62465,
+ "hand-index-thumb": 62466,
+ "hand-index": 62467,
+ "hand-thumbs-down-fill": 62468,
+ "hand-thumbs-down": 62469,
+ "hand-thumbs-up-fill": 62470,
+ "hand-thumbs-up": 62471,
+ "handbag-fill": 62472,
+ "handbag": 62473,
+ "hash": 62474,
+ "hdd-fill": 62475,
+ "hdd-network-fill": 62476,
+ "hdd-network": 62477,
+ "hdd-rack-fill": 62478,
+ "hdd-rack": 62479,
+ "hdd-stack-fill": 62480,
+ "hdd-stack": 62481,
+ "hdd": 62482,
+ "headphones": 62483,
+ "headset": 62484,
+ "heart-fill": 62485,
+ "heart-half": 62486,
+ "heart": 62487,
+ "heptagon-fill": 62488,
+ "heptagon-half": 62489,
+ "heptagon": 62490,
+ "hexagon-fill": 62491,
+ "hexagon-half": 62492,
+ "hexagon": 62493,
+ "hourglass-bottom": 62494,
+ "hourglass-split": 62495,
+ "hourglass-top": 62496,
+ "hourglass": 62497,
+ "house-door-fill": 62498,
+ "house-door": 62499,
+ "house-fill": 62500,
+ "house": 62501,
+ "hr": 62502,
+ "hurricane": 62503,
+ "image-alt": 62504,
+ "image-fill": 62505,
+ "image": 62506,
+ "images": 62507,
+ "inbox-fill": 62508,
+ "inbox": 62509,
+ "inboxes-fill": 62510,
+ "inboxes": 62511,
+ "info-circle-fill": 62512,
+ "info-circle": 62513,
+ "info-square-fill": 62514,
+ "info-square": 62515,
+ "info": 62516,
+ "input-cursor-text": 62517,
+ "input-cursor": 62518,
+ "instagram": 62519,
+ "intersect": 62520,
+ "journal-album": 62521,
+ "journal-arrow-down": 62522,
+ "journal-arrow-up": 62523,
+ "journal-bookmark-fill": 62524,
+ "journal-bookmark": 62525,
+ "journal-check": 62526,
+ "journal-code": 62527,
+ "journal-medical": 62528,
+ "journal-minus": 62529,
+ "journal-plus": 62530,
+ "journal-richtext": 62531,
+ "journal-text": 62532,
+ "journal-x": 62533,
+ "journal": 62534,
+ "journals": 62535,
+ "joystick": 62536,
+ "justify-left": 62537,
+ "justify-right": 62538,
+ "justify": 62539,
+ "kanban-fill": 62540,
+ "kanban": 62541,
+ "key-fill": 62542,
+ "key": 62543,
+ "keyboard-fill": 62544,
+ "keyboard": 62545,
+ "ladder": 62546,
+ "lamp-fill": 62547,
+ "lamp": 62548,
+ "laptop-fill": 62549,
+ "laptop": 62550,
+ "layer-backward": 62551,
+ "layer-forward": 62552,
+ "layers-fill": 62553,
+ "layers-half": 62554,
+ "layers": 62555,
+ "layout-sidebar-inset-reverse": 62556,
+ "layout-sidebar-inset": 62557,
+ "layout-sidebar-reverse": 62558,
+ "layout-sidebar": 62559,
+ "layout-split": 62560,
+ "layout-text-sidebar-reverse": 62561,
+ "layout-text-sidebar": 62562,
+ "layout-text-window-reverse": 62563,
+ "layout-text-window": 62564,
+ "layout-three-columns": 62565,
+ "layout-wtf": 62566,
+ "life-preserver": 62567,
+ "lightbulb-fill": 62568,
+ "lightbulb-off-fill": 62569,
+ "lightbulb-off": 62570,
+ "lightbulb": 62571,
+ "lightning-charge-fill": 62572,
+ "lightning-charge": 62573,
+ "lightning-fill": 62574,
+ "lightning": 62575,
+ "link-45deg": 62576,
+ "link": 62577,
+ "linkedin": 62578,
+ "list-check": 62579,
+ "list-nested": 62580,
+ "list-ol": 62581,
+ "list-stars": 62582,
+ "list-task": 62583,
+ "list-ul": 62584,
+ "list": 62585,
+ "lock-fill": 62586,
+ "lock": 62587,
+ "mailbox": 62588,
+ "mailbox2": 62589,
+ "map-fill": 62590,
+ "map": 62591,
+ "markdown-fill": 62592,
+ "markdown": 62593,
+ "mask": 62594,
+ "megaphone-fill": 62595,
+ "megaphone": 62596,
+ "menu-app-fill": 62597,
+ "menu-app": 62598,
+ "menu-button-fill": 62599,
+ "menu-button-wide-fill": 62600,
+ "menu-button-wide": 62601,
+ "menu-button": 62602,
+ "menu-down": 62603,
+ "menu-up": 62604,
+ "mic-fill": 62605,
+ "mic-mute-fill": 62606,
+ "mic-mute": 62607,
+ "mic": 62608,
+ "minecart-loaded": 62609,
+ "minecart": 62610,
+ "moisture": 62611,
+ "moon-fill": 62612,
+ "moon-stars-fill": 62613,
+ "moon-stars": 62614,
+ "moon": 62615,
+ "mouse-fill": 62616,
+ "mouse": 62617,
+ "mouse2-fill": 62618,
+ "mouse2": 62619,
+ "mouse3-fill": 62620,
+ "mouse3": 62621,
+ "music-note-beamed": 62622,
+ "music-note-list": 62623,
+ "music-note": 62624,
+ "music-player-fill": 62625,
+ "music-player": 62626,
+ "newspaper": 62627,
+ "node-minus-fill": 62628,
+ "node-minus": 62629,
+ "node-plus-fill": 62630,
+ "node-plus": 62631,
+ "nut-fill": 62632,
+ "nut": 62633,
+ "octagon-fill": 62634,
+ "octagon-half": 62635,
+ "octagon": 62636,
+ "option": 62637,
+ "outlet": 62638,
+ "paint-bucket": 62639,
+ "palette-fill": 62640,
+ "palette": 62641,
+ "palette2": 62642,
+ "paperclip": 62643,
+ "paragraph": 62644,
+ "patch-check-fill": 62645,
+ "patch-check": 62646,
+ "patch-exclamation-fill": 62647,
+ "patch-exclamation": 62648,
+ "patch-minus-fill": 62649,
+ "patch-minus": 62650,
+ "patch-plus-fill": 62651,
+ "patch-plus": 62652,
+ "patch-question-fill": 62653,
+ "patch-question": 62654,
+ "pause-btn-fill": 62655,
+ "pause-btn": 62656,
+ "pause-circle-fill": 62657,
+ "pause-circle": 62658,
+ "pause-fill": 62659,
+ "pause": 62660,
+ "peace-fill": 62661,
+ "peace": 62662,
+ "pen-fill": 62663,
+ "pen": 62664,
+ "pencil-fill": 62665,
+ "pencil-square": 62666,
+ "pencil": 62667,
+ "pentagon-fill": 62668,
+ "pentagon-half": 62669,
+ "pentagon": 62670,
+ "people-fill": 62671,
+ "people": 62672,
+ "percent": 62673,
+ "person-badge-fill": 62674,
+ "person-badge": 62675,
+ "person-bounding-box": 62676,
+ "person-check-fill": 62677,
+ "person-check": 62678,
+ "person-circle": 62679,
+ "person-dash-fill": 62680,
+ "person-dash": 62681,
+ "person-fill": 62682,
+ "person-lines-fill": 62683,
+ "person-plus-fill": 62684,
+ "person-plus": 62685,
+ "person-square": 62686,
+ "person-x-fill": 62687,
+ "person-x": 62688,
+ "person": 62689,
+ "phone-fill": 62690,
+ "phone-landscape-fill": 62691,
+ "phone-landscape": 62692,
+ "phone-vibrate-fill": 62693,
+ "phone-vibrate": 62694,
+ "phone": 62695,
+ "pie-chart-fill": 62696,
+ "pie-chart": 62697,
+ "pin-angle-fill": 62698,
+ "pin-angle": 62699,
+ "pin-fill": 62700,
+ "pin": 62701,
+ "pip-fill": 62702,
+ "pip": 62703,
+ "play-btn-fill": 62704,
+ "play-btn": 62705,
+ "play-circle-fill": 62706,
+ "play-circle": 62707,
+ "play-fill": 62708,
+ "play": 62709,
+ "plug-fill": 62710,
+ "plug": 62711,
+ "plus-circle-dotted": 62712,
+ "plus-circle-fill": 62713,
+ "plus-circle": 62714,
+ "plus-square-dotted": 62715,
+ "plus-square-fill": 62716,
+ "plus-square": 62717,
+ "plus": 62718,
+ "power": 62719,
+ "printer-fill": 62720,
+ "printer": 62721,
+ "puzzle-fill": 62722,
+ "puzzle": 62723,
+ "question-circle-fill": 62724,
+ "question-circle": 62725,
+ "question-diamond-fill": 62726,
+ "question-diamond": 62727,
+ "question-octagon-fill": 62728,
+ "question-octagon": 62729,
+ "question-square-fill": 62730,
+ "question-square": 62731,
+ "question": 62732,
+ "rainbow": 62733,
+ "receipt-cutoff": 62734,
+ "receipt": 62735,
+ "reception-0": 62736,
+ "reception-1": 62737,
+ "reception-2": 62738,
+ "reception-3": 62739,
+ "reception-4": 62740,
+ "record-btn-fill": 62741,
+ "record-btn": 62742,
+ "record-circle-fill": 62743,
+ "record-circle": 62744,
+ "record-fill": 62745,
+ "record": 62746,
+ "record2-fill": 62747,
+ "record2": 62748,
+ "reply-all-fill": 62749,
+ "reply-all": 62750,
+ "reply-fill": 62751,
+ "reply": 62752,
+ "rss-fill": 62753,
+ "rss": 62754,
+ "rulers": 62755,
+ "save-fill": 62756,
+ "save": 62757,
+ "save2-fill": 62758,
+ "save2": 62759,
+ "scissors": 62760,
+ "screwdriver": 62761,
+ "search": 62762,
+ "segmented-nav": 62763,
+ "server": 62764,
+ "share-fill": 62765,
+ "share": 62766,
+ "shield-check": 62767,
+ "shield-exclamation": 62768,
+ "shield-fill-check": 62769,
+ "shield-fill-exclamation": 62770,
+ "shield-fill-minus": 62771,
+ "shield-fill-plus": 62772,
+ "shield-fill-x": 62773,
+ "shield-fill": 62774,
+ "shield-lock-fill": 62775,
+ "shield-lock": 62776,
+ "shield-minus": 62777,
+ "shield-plus": 62778,
+ "shield-shaded": 62779,
+ "shield-slash-fill": 62780,
+ "shield-slash": 62781,
+ "shield-x": 62782,
+ "shield": 62783,
+ "shift-fill": 62784,
+ "shift": 62785,
+ "shop-window": 62786,
+ "shop": 62787,
+ "shuffle": 62788,
+ "signpost-2-fill": 62789,
+ "signpost-2": 62790,
+ "signpost-fill": 62791,
+ "signpost-split-fill": 62792,
+ "signpost-split": 62793,
+ "signpost": 62794,
+ "sim-fill": 62795,
+ "sim": 62796,
+ "skip-backward-btn-fill": 62797,
+ "skip-backward-btn": 62798,
+ "skip-backward-circle-fill": 62799,
+ "skip-backward-circle": 62800,
+ "skip-backward-fill": 62801,
+ "skip-backward": 62802,
+ "skip-end-btn-fill": 62803,
+ "skip-end-btn": 62804,
+ "skip-end-circle-fill": 62805,
+ "skip-end-circle": 62806,
+ "skip-end-fill": 62807,
+ "skip-end": 62808,
+ "skip-forward-btn-fill": 62809,
+ "skip-forward-btn": 62810,
+ "skip-forward-circle-fill": 62811,
+ "skip-forward-circle": 62812,
+ "skip-forward-fill": 62813,
+ "skip-forward": 62814,
+ "skip-start-btn-fill": 62815,
+ "skip-start-btn": 62816,
+ "skip-start-circle-fill": 62817,
+ "skip-start-circle": 62818,
+ "skip-start-fill": 62819,
+ "skip-start": 62820,
+ "slack": 62821,
+ "slash-circle-fill": 62822,
+ "slash-circle": 62823,
+ "slash-square-fill": 62824,
+ "slash-square": 62825,
+ "slash": 62826,
+ "sliders": 62827,
+ "smartwatch": 62828,
+ "snow": 62829,
+ "snow2": 62830,
+ "snow3": 62831,
+ "sort-alpha-down-alt": 62832,
+ "sort-alpha-down": 62833,
+ "sort-alpha-up-alt": 62834,
+ "sort-alpha-up": 62835,
+ "sort-down-alt": 62836,
+ "sort-down": 62837,
+ "sort-numeric-down-alt": 62838,
+ "sort-numeric-down": 62839,
+ "sort-numeric-up-alt": 62840,
+ "sort-numeric-up": 62841,
+ "sort-up-alt": 62842,
+ "sort-up": 62843,
+ "soundwave": 62844,
+ "speaker-fill": 62845,
+ "speaker": 62846,
+ "speedometer": 62847,
+ "speedometer2": 62848,
+ "spellcheck": 62849,
+ "square-fill": 62850,
+ "square-half": 62851,
+ "square": 62852,
+ "stack": 62853,
+ "star-fill": 62854,
+ "star-half": 62855,
+ "star": 62856,
+ "stars": 62857,
+ "stickies-fill": 62858,
+ "stickies": 62859,
+ "sticky-fill": 62860,
+ "sticky": 62861,
+ "stop-btn-fill": 62862,
+ "stop-btn": 62863,
+ "stop-circle-fill": 62864,
+ "stop-circle": 62865,
+ "stop-fill": 62866,
+ "stop": 62867,
+ "stoplights-fill": 62868,
+ "stoplights": 62869,
+ "stopwatch-fill": 62870,
+ "stopwatch": 62871,
+ "subtract": 62872,
+ "suit-club-fill": 62873,
+ "suit-club": 62874,
+ "suit-diamond-fill": 62875,
+ "suit-diamond": 62876,
+ "suit-heart-fill": 62877,
+ "suit-heart": 62878,
+ "suit-spade-fill": 62879,
+ "suit-spade": 62880,
+ "sun-fill": 62881,
+ "sun": 62882,
+ "sunglasses": 62883,
+ "sunrise-fill": 62884,
+ "sunrise": 62885,
+ "sunset-fill": 62886,
+ "sunset": 62887,
+ "symmetry-horizontal": 62888,
+ "symmetry-vertical": 62889,
+ "table": 62890,
+ "tablet-fill": 62891,
+ "tablet-landscape-fill": 62892,
+ "tablet-landscape": 62893,
+ "tablet": 62894,
+ "tag-fill": 62895,
+ "tag": 62896,
+ "tags-fill": 62897,
+ "tags": 62898,
+ "telegram": 62899,
+ "telephone-fill": 62900,
+ "telephone-forward-fill": 62901,
+ "telephone-forward": 62902,
+ "telephone-inbound-fill": 62903,
+ "telephone-inbound": 62904,
+ "telephone-minus-fill": 62905,
+ "telephone-minus": 62906,
+ "telephone-outbound-fill": 62907,
+ "telephone-outbound": 62908,
+ "telephone-plus-fill": 62909,
+ "telephone-plus": 62910,
+ "telephone-x-fill": 62911,
+ "telephone-x": 62912,
+ "telephone": 62913,
+ "terminal-fill": 62914,
+ "terminal": 62915,
+ "text-center": 62916,
+ "text-indent-left": 62917,
+ "text-indent-right": 62918,
+ "text-left": 62919,
+ "text-paragraph": 62920,
+ "text-right": 62921,
+ "textarea-resize": 62922,
+ "textarea-t": 62923,
+ "textarea": 62924,
+ "thermometer-half": 62925,
+ "thermometer-high": 62926,
+ "thermometer-low": 62927,
+ "thermometer-snow": 62928,
+ "thermometer-sun": 62929,
+ "thermometer": 62930,
+ "three-dots-vertical": 62931,
+ "three-dots": 62932,
+ "toggle-off": 62933,
+ "toggle-on": 62934,
+ "toggle2-off": 62935,
+ "toggle2-on": 62936,
+ "toggles": 62937,
+ "toggles2": 62938,
+ "tools": 62939,
+ "tornado": 62940,
+ "trash-fill": 62941,
+ "trash": 62942,
+ "trash2-fill": 62943,
+ "trash2": 62944,
+ "tree-fill": 62945,
+ "tree": 62946,
+ "triangle-fill": 62947,
+ "triangle-half": 62948,
+ "triangle": 62949,
+ "trophy-fill": 62950,
+ "trophy": 62951,
+ "tropical-storm": 62952,
+ "truck-flatbed": 62953,
+ "truck": 62954,
+ "tsunami": 62955,
+ "tv-fill": 62956,
+ "tv": 62957,
+ "twitch": 62958,
+ "twitter": 62959,
+ "type-bold": 62960,
+ "type-h1": 62961,
+ "type-h2": 62962,
+ "type-h3": 62963,
+ "type-italic": 62964,
+ "type-strikethrough": 62965,
+ "type-underline": 62966,
+ "type": 62967,
+ "ui-checks-grid": 62968,
+ "ui-checks": 62969,
+ "ui-radios-grid": 62970,
+ "ui-radios": 62971,
+ "umbrella-fill": 62972,
+ "umbrella": 62973,
+ "union": 62974,
+ "unlock-fill": 62975,
+ "unlock": 62976,
+ "upc-scan": 62977,
+ "upc": 62978,
+ "upload": 62979,
+ "vector-pen": 62980,
+ "view-list": 62981,
+ "view-stacked": 62982,
+ "vinyl-fill": 62983,
+ "vinyl": 62984,
+ "voicemail": 62985,
+ "volume-down-fill": 62986,
+ "volume-down": 62987,
+ "volume-mute-fill": 62988,
+ "volume-mute": 62989,
+ "volume-off-fill": 62990,
+ "volume-off": 62991,
+ "volume-up-fill": 62992,
+ "volume-up": 62993,
+ "vr": 62994,
+ "wallet-fill": 62995,
+ "wallet": 62996,
+ "wallet2": 62997,
+ "watch": 62998,
+ "water": 62999,
+ "whatsapp": 63000,
+ "wifi-1": 63001,
+ "wifi-2": 63002,
+ "wifi-off": 63003,
+ "wifi": 63004,
+ "wind": 63005,
+ "window-dock": 63006,
+ "window-sidebar": 63007,
+ "window": 63008,
+ "wrench": 63009,
+ "x-circle-fill": 63010,
+ "x-circle": 63011,
+ "x-diamond-fill": 63012,
+ "x-diamond": 63013,
+ "x-octagon-fill": 63014,
+ "x-octagon": 63015,
+ "x-square-fill": 63016,
+ "x-square": 63017,
+ "x": 63018,
+ "youtube": 63019,
+ "zoom-in": 63020,
+ "zoom-out": 63021,
+ "bank": 63022,
+ "bank2": 63023,
+ "bell-slash-fill": 63024,
+ "bell-slash": 63025,
+ "cash-coin": 63026,
+ "check-lg": 63027,
+ "coin": 63028,
+ "currency-bitcoin": 63029,
+ "currency-dollar": 63030,
+ "currency-euro": 63031,
+ "currency-exchange": 63032,
+ "currency-pound": 63033,
+ "currency-yen": 63034,
+ "dash-lg": 63035,
+ "exclamation-lg": 63036,
+ "file-earmark-pdf-fill": 63037,
+ "file-earmark-pdf": 63038,
+ "file-pdf-fill": 63039,
+ "file-pdf": 63040,
+ "gender-ambiguous": 63041,
+ "gender-female": 63042,
+ "gender-male": 63043,
+ "gender-trans": 63044,
+ "headset-vr": 63045,
+ "info-lg": 63046,
+ "mastodon": 63047,
+ "messenger": 63048,
+ "piggy-bank-fill": 63049,
+ "piggy-bank": 63050,
+ "pin-map-fill": 63051,
+ "pin-map": 63052,
+ "plus-lg": 63053,
+ "question-lg": 63054,
+ "recycle": 63055,
+ "reddit": 63056,
+ "safe-fill": 63057,
+ "safe2-fill": 63058,
+ "safe2": 63059,
+ "sd-card-fill": 63060,
+ "sd-card": 63061,
+ "skype": 63062,
+ "slash-lg": 63063,
+ "translate": 63064,
+ "x-lg": 63065,
+ "safe": 63066,
+ "apple": 63067,
+ "microsoft": 63069,
+ "windows": 63070,
+ "behance": 63068,
+ "dribbble": 63071,
+ "line": 63072,
+ "medium": 63073,
+ "paypal": 63074,
+ "pinterest": 63075,
+ "signal": 63076,
+ "snapchat": 63077,
+ "spotify": 63078,
+ "stack-overflow": 63079,
+ "strava": 63080,
+ "wordpress": 63081,
+ "vimeo": 63082,
+ "activity": 63083,
+ "easel2-fill": 63084,
+ "easel2": 63085,
+ "easel3-fill": 63086,
+ "easel3": 63087,
+ "fan": 63088,
+ "fingerprint": 63089,
+ "graph-down-arrow": 63090,
+ "graph-up-arrow": 63091,
+ "hypnotize": 63092,
+ "magic": 63093,
+ "person-rolodex": 63094,
+ "person-video": 63095,
+ "person-video2": 63096,
+ "person-video3": 63097,
+ "person-workspace": 63098,
+ "radioactive": 63099,
+ "webcam-fill": 63100,
+ "webcam": 63101,
+ "yin-yang": 63102,
+ "bandaid-fill": 63104,
+ "bandaid": 63105,
+ "bluetooth": 63106,
+ "body-text": 63107,
+ "boombox": 63108,
+ "boxes": 63109,
+ "dpad-fill": 63110,
+ "dpad": 63111,
+ "ear-fill": 63112,
+ "ear": 63113,
+ "envelope-check-fill": 63115,
+ "envelope-check": 63116,
+ "envelope-dash-fill": 63118,
+ "envelope-dash": 63119,
+ "envelope-exclamation-fill": 63121,
+ "envelope-exclamation": 63122,
+ "envelope-plus-fill": 63123,
+ "envelope-plus": 63124,
+ "envelope-slash-fill": 63126,
+ "envelope-slash": 63127,
+ "envelope-x-fill": 63129,
+ "envelope-x": 63130,
+ "explicit-fill": 63131,
+ "explicit": 63132,
+ "git": 63133,
+ "infinity": 63134,
+ "list-columns-reverse": 63135,
+ "list-columns": 63136,
+ "meta": 63137,
+ "nintendo-switch": 63140,
+ "pc-display-horizontal": 63141,
+ "pc-display": 63142,
+ "pc-horizontal": 63143,
+ "pc": 63144,
+ "playstation": 63145,
+ "plus-slash-minus": 63146,
+ "projector-fill": 63147,
+ "projector": 63148,
+ "qr-code-scan": 63149,
+ "qr-code": 63150,
+ "quora": 63151,
+ "quote": 63152,
+ "robot": 63153,
+ "send-check-fill": 63154,
+ "send-check": 63155,
+ "send-dash-fill": 63156,
+ "send-dash": 63157,
+ "send-exclamation-fill": 63159,
+ "send-exclamation": 63160,
+ "send-fill": 63161,
+ "send-plus-fill": 63162,
+ "send-plus": 63163,
+ "send-slash-fill": 63164,
+ "send-slash": 63165,
+ "send-x-fill": 63166,
+ "send-x": 63167,
+ "send": 63168,
+ "steam": 63169,
+ "terminal-dash": 63171,
+ "terminal-plus": 63172,
+ "terminal-split": 63173,
+ "ticket-detailed-fill": 63174,
+ "ticket-detailed": 63175,
+ "ticket-fill": 63176,
+ "ticket-perforated-fill": 63177,
+ "ticket-perforated": 63178,
+ "ticket": 63179,
+ "tiktok": 63180,
+ "window-dash": 63181,
+ "window-desktop": 63182,
+ "window-fullscreen": 63183,
+ "window-plus": 63184,
+ "window-split": 63185,
+ "window-stack": 63186,
+ "window-x": 63187,
+ "xbox": 63188,
+ "ethernet": 63189,
+ "hdmi-fill": 63190,
+ "hdmi": 63191,
+ "usb-c-fill": 63192,
+ "usb-c": 63193,
+ "usb-fill": 63194,
+ "usb-plug-fill": 63195,
+ "usb-plug": 63196,
+ "usb-symbol": 63197,
+ "usb": 63198,
+ "boombox-fill": 63199,
+ "displayport": 63201,
+ "gpu-card": 63202,
+ "memory": 63203,
+ "modem-fill": 63204,
+ "modem": 63205,
+ "motherboard-fill": 63206,
+ "motherboard": 63207,
+ "optical-audio-fill": 63208,
+ "optical-audio": 63209,
+ "pci-card": 63210,
+ "router-fill": 63211,
+ "router": 63212,
+ "thunderbolt-fill": 63215,
+ "thunderbolt": 63216,
+ "usb-drive-fill": 63217,
+ "usb-drive": 63218,
+ "usb-micro-fill": 63219,
+ "usb-micro": 63220,
+ "usb-mini-fill": 63221,
+ "usb-mini": 63222,
+ "cloud-haze2": 63223,
+ "device-hdd-fill": 63224,
+ "device-hdd": 63225,
+ "device-ssd-fill": 63226,
+ "device-ssd": 63227,
+ "displayport-fill": 63228,
+ "mortarboard-fill": 63229,
+ "mortarboard": 63230,
+ "terminal-x": 63231,
+ "arrow-through-heart-fill": 63232,
+ "arrow-through-heart": 63233,
+ "badge-sd-fill": 63234,
+ "badge-sd": 63235,
+ "bag-heart-fill": 63236,
+ "bag-heart": 63237,
+ "balloon-fill": 63238,
+ "balloon-heart-fill": 63239,
+ "balloon-heart": 63240,
+ "balloon": 63241,
+ "box2-fill": 63242,
+ "box2-heart-fill": 63243,
+ "box2-heart": 63244,
+ "box2": 63245,
+ "braces-asterisk": 63246,
+ "calendar-heart-fill": 63247,
+ "calendar-heart": 63248,
+ "calendar2-heart-fill": 63249,
+ "calendar2-heart": 63250,
+ "chat-heart-fill": 63251,
+ "chat-heart": 63252,
+ "chat-left-heart-fill": 63253,
+ "chat-left-heart": 63254,
+ "chat-right-heart-fill": 63255,
+ "chat-right-heart": 63256,
+ "chat-square-heart-fill": 63257,
+ "chat-square-heart": 63258,
+ "clipboard-check-fill": 63259,
+ "clipboard-data-fill": 63260,
+ "clipboard-fill": 63261,
+ "clipboard-heart-fill": 63262,
+ "clipboard-heart": 63263,
+ "clipboard-minus-fill": 63264,
+ "clipboard-plus-fill": 63265,
+ "clipboard-pulse": 63266,
+ "clipboard-x-fill": 63267,
+ "clipboard2-check-fill": 63268,
+ "clipboard2-check": 63269,
+ "clipboard2-data-fill": 63270,
+ "clipboard2-data": 63271,
+ "clipboard2-fill": 63272,
+ "clipboard2-heart-fill": 63273,
+ "clipboard2-heart": 63274,
+ "clipboard2-minus-fill": 63275,
+ "clipboard2-minus": 63276,
+ "clipboard2-plus-fill": 63277,
+ "clipboard2-plus": 63278,
+ "clipboard2-pulse-fill": 63279,
+ "clipboard2-pulse": 63280,
+ "clipboard2-x-fill": 63281,
+ "clipboard2-x": 63282,
+ "clipboard2": 63283,
+ "emoji-kiss-fill": 63284,
+ "emoji-kiss": 63285,
+ "envelope-heart-fill": 63286,
+ "envelope-heart": 63287,
+ "envelope-open-heart-fill": 63288,
+ "envelope-open-heart": 63289,
+ "envelope-paper-fill": 63290,
+ "envelope-paper-heart-fill": 63291,
+ "envelope-paper-heart": 63292,
+ "envelope-paper": 63293,
+ "filetype-aac": 63294,
+ "filetype-ai": 63295,
+ "filetype-bmp": 63296,
+ "filetype-cs": 63297,
+ "filetype-css": 63298,
+ "filetype-csv": 63299,
+ "filetype-doc": 63300,
+ "filetype-docx": 63301,
+ "filetype-exe": 63302,
+ "filetype-gif": 63303,
+ "filetype-heic": 63304,
+ "filetype-html": 63305,
+ "filetype-java": 63306,
+ "filetype-jpg": 63307,
+ "filetype-js": 63308,
+ "filetype-jsx": 63309,
+ "filetype-key": 63310,
+ "filetype-m4p": 63311,
+ "filetype-md": 63312,
+ "filetype-mdx": 63313,
+ "filetype-mov": 63314,
+ "filetype-mp3": 63315,
+ "filetype-mp4": 63316,
+ "filetype-otf": 63317,
+ "filetype-pdf": 63318,
+ "filetype-php": 63319,
+ "filetype-png": 63320,
+ "filetype-ppt": 63322,
+ "filetype-psd": 63323,
+ "filetype-py": 63324,
+ "filetype-raw": 63325,
+ "filetype-rb": 63326,
+ "filetype-sass": 63327,
+ "filetype-scss": 63328,
+ "filetype-sh": 63329,
+ "filetype-svg": 63330,
+ "filetype-tiff": 63331,
+ "filetype-tsx": 63332,
+ "filetype-ttf": 63333,
+ "filetype-txt": 63334,
+ "filetype-wav": 63335,
+ "filetype-woff": 63336,
+ "filetype-xls": 63338,
+ "filetype-xml": 63339,
+ "filetype-yml": 63340,
+ "heart-arrow": 63341,
+ "heart-pulse-fill": 63342,
+ "heart-pulse": 63343,
+ "heartbreak-fill": 63344,
+ "heartbreak": 63345,
+ "hearts": 63346,
+ "hospital-fill": 63347,
+ "hospital": 63348,
+ "house-heart-fill": 63349,
+ "house-heart": 63350,
+ "incognito": 63351,
+ "magnet-fill": 63352,
+ "magnet": 63353,
+ "person-heart": 63354,
+ "person-hearts": 63355,
+ "phone-flip": 63356,
+ "plugin": 63357,
+ "postage-fill": 63358,
+ "postage-heart-fill": 63359,
+ "postage-heart": 63360,
+ "postage": 63361,
+ "postcard-fill": 63362,
+ "postcard-heart-fill": 63363,
+ "postcard-heart": 63364,
+ "postcard": 63365,
+ "search-heart-fill": 63366,
+ "search-heart": 63367,
+ "sliders2-vertical": 63368,
+ "sliders2": 63369,
+ "trash3-fill": 63370,
+ "trash3": 63371,
+ "valentine": 63372,
+ "valentine2": 63373,
+ "wrench-adjustable-circle-fill": 63374,
+ "wrench-adjustable-circle": 63375,
+ "wrench-adjustable": 63376,
+ "filetype-json": 63377,
+ "filetype-pptx": 63378,
+ "filetype-xlsx": 63379,
+ "1-circle-fill": 63382,
+ "1-circle": 63383,
+ "1-square-fill": 63384,
+ "1-square": 63385,
+ "2-circle-fill": 63388,
+ "2-circle": 63389,
+ "2-square-fill": 63390,
+ "2-square": 63391,
+ "3-circle-fill": 63394,
+ "3-circle": 63395,
+ "3-square-fill": 63396,
+ "3-square": 63397,
+ "4-circle-fill": 63400,
+ "4-circle": 63401,
+ "4-square-fill": 63402,
+ "4-square": 63403,
+ "5-circle-fill": 63406,
+ "5-circle": 63407,
+ "5-square-fill": 63408,
+ "5-square": 63409,
+ "6-circle-fill": 63412,
+ "6-circle": 63413,
+ "6-square-fill": 63414,
+ "6-square": 63415,
+ "7-circle-fill": 63418,
+ "7-circle": 63419,
+ "7-square-fill": 63420,
+ "7-square": 63421,
+ "8-circle-fill": 63424,
+ "8-circle": 63425,
+ "8-square-fill": 63426,
+ "8-square": 63427,
+ "9-circle-fill": 63430,
+ "9-circle": 63431,
+ "9-square-fill": 63432,
+ "9-square": 63433,
+ "airplane-engines-fill": 63434,
+ "airplane-engines": 63435,
+ "airplane-fill": 63436,
+ "airplane": 63437,
+ "alexa": 63438,
+ "alipay": 63439,
+ "android": 63440,
+ "android2": 63441,
+ "box-fill": 63442,
+ "box-seam-fill": 63443,
+ "browser-chrome": 63444,
+ "browser-edge": 63445,
+ "browser-firefox": 63446,
+ "browser-safari": 63447,
+ "c-circle-fill": 63450,
+ "c-circle": 63451,
+ "c-square-fill": 63452,
+ "c-square": 63453,
+ "capsule-pill": 63454,
+ "capsule": 63455,
+ "car-front-fill": 63456,
+ "car-front": 63457,
+ "cassette-fill": 63458,
+ "cassette": 63459,
+ "cc-circle-fill": 63462,
+ "cc-circle": 63463,
+ "cc-square-fill": 63464,
+ "cc-square": 63465,
+ "cup-hot-fill": 63466,
+ "cup-hot": 63467,
+ "currency-rupee": 63468,
+ "dropbox": 63469,
+ "escape": 63470,
+ "fast-forward-btn-fill": 63471,
+ "fast-forward-btn": 63472,
+ "fast-forward-circle-fill": 63473,
+ "fast-forward-circle": 63474,
+ "fast-forward-fill": 63475,
+ "fast-forward": 63476,
+ "filetype-sql": 63477,
+ "fire": 63478,
+ "google-play": 63479,
+ "h-circle-fill": 63482,
+ "h-circle": 63483,
+ "h-square-fill": 63484,
+ "h-square": 63485,
+ "indent": 63486,
+ "lungs-fill": 63487,
+ "lungs": 63488,
+ "microsoft-teams": 63489,
+ "p-circle-fill": 63492,
+ "p-circle": 63493,
+ "p-square-fill": 63494,
+ "p-square": 63495,
+ "pass-fill": 63496,
+ "pass": 63497,
+ "prescription": 63498,
+ "prescription2": 63499,
+ "r-circle-fill": 63502,
+ "r-circle": 63503,
+ "r-square-fill": 63504,
+ "r-square": 63505,
+ "repeat-1": 63506,
+ "repeat": 63507,
+ "rewind-btn-fill": 63508,
+ "rewind-btn": 63509,
+ "rewind-circle-fill": 63510,
+ "rewind-circle": 63511,
+ "rewind-fill": 63512,
+ "rewind": 63513,
+ "train-freight-front-fill": 63514,
+ "train-freight-front": 63515,
+ "train-front-fill": 63516,
+ "train-front": 63517,
+ "train-lightrail-front-fill": 63518,
+ "train-lightrail-front": 63519,
+ "truck-front-fill": 63520,
+ "truck-front": 63521,
+ "ubuntu": 63522,
+ "unindent": 63523,
+ "unity": 63524,
+ "universal-access-circle": 63525,
+ "universal-access": 63526,
+ "virus": 63527,
+ "virus2": 63528,
+ "wechat": 63529,
+ "yelp": 63530,
+ "sign-stop-fill": 63531,
+ "sign-stop-lights-fill": 63532,
+ "sign-stop-lights": 63533,
+ "sign-stop": 63534,
+ "sign-turn-left-fill": 63535,
+ "sign-turn-left": 63536,
+ "sign-turn-right-fill": 63537,
+ "sign-turn-right": 63538,
+ "sign-turn-slight-left-fill": 63539,
+ "sign-turn-slight-left": 63540,
+ "sign-turn-slight-right-fill": 63541,
+ "sign-turn-slight-right": 63542,
+ "sign-yield-fill": 63543,
+ "sign-yield": 63544,
+ "ev-station-fill": 63545,
+ "ev-station": 63546,
+ "fuel-pump-diesel-fill": 63547,
+ "fuel-pump-diesel": 63548,
+ "fuel-pump-fill": 63549,
+ "fuel-pump": 63550,
+ "0-circle-fill": 63551,
+ "0-circle": 63552,
+ "0-square-fill": 63553,
+ "0-square": 63554,
+ "rocket-fill": 63555,
+ "rocket-takeoff-fill": 63556,
+ "rocket-takeoff": 63557,
+ "rocket": 63558,
+ "stripe": 63559,
+ "subscript": 63560,
+ "superscript": 63561,
+ "trello": 63562,
+ "envelope-at-fill": 63563,
+ "envelope-at": 63564,
+ "regex": 63565,
+ "text-wrap": 63566,
+ "sign-dead-end-fill": 63567,
+ "sign-dead-end": 63568,
+ "sign-do-not-enter-fill": 63569,
+ "sign-do-not-enter": 63570,
+ "sign-intersection-fill": 63571,
+ "sign-intersection-side-fill": 63572,
+ "sign-intersection-side": 63573,
+ "sign-intersection-t-fill": 63574,
+ "sign-intersection-t": 63575,
+ "sign-intersection-y-fill": 63576,
+ "sign-intersection-y": 63577,
+ "sign-intersection": 63578,
+ "sign-merge-left-fill": 63579,
+ "sign-merge-left": 63580,
+ "sign-merge-right-fill": 63581,
+ "sign-merge-right": 63582,
+ "sign-no-left-turn-fill": 63583,
+ "sign-no-left-turn": 63584,
+ "sign-no-parking-fill": 63585,
+ "sign-no-parking": 63586,
+ "sign-no-right-turn-fill": 63587,
+ "sign-no-right-turn": 63588,
+ "sign-railroad-fill": 63589,
+ "sign-railroad": 63590,
+ "building-add": 63591,
+ "building-check": 63592,
+ "building-dash": 63593,
+ "building-down": 63594,
+ "building-exclamation": 63595,
+ "building-fill-add": 63596,
+ "building-fill-check": 63597,
+ "building-fill-dash": 63598,
+ "building-fill-down": 63599,
+ "building-fill-exclamation": 63600,
+ "building-fill-gear": 63601,
+ "building-fill-lock": 63602,
+ "building-fill-slash": 63603,
+ "building-fill-up": 63604,
+ "building-fill-x": 63605,
+ "building-fill": 63606,
+ "building-gear": 63607,
+ "building-lock": 63608,
+ "building-slash": 63609,
+ "building-up": 63610,
+ "building-x": 63611,
+ "buildings-fill": 63612,
+ "buildings": 63613,
+ "bus-front-fill": 63614,
+ "bus-front": 63615,
+ "ev-front-fill": 63616,
+ "ev-front": 63617,
+ "globe-americas": 63618,
+ "globe-asia-australia": 63619,
+ "globe-central-south-asia": 63620,
+ "globe-europe-africa": 63621,
+ "house-add-fill": 63622,
+ "house-add": 63623,
+ "house-check-fill": 63624,
+ "house-check": 63625,
+ "house-dash-fill": 63626,
+ "house-dash": 63627,
+ "house-down-fill": 63628,
+ "house-down": 63629,
+ "house-exclamation-fill": 63630,
+ "house-exclamation": 63631,
+ "house-gear-fill": 63632,
+ "house-gear": 63633,
+ "house-lock-fill": 63634,
+ "house-lock": 63635,
+ "house-slash-fill": 63636,
+ "house-slash": 63637,
+ "house-up-fill": 63638,
+ "house-up": 63639,
+ "house-x-fill": 63640,
+ "house-x": 63641,
+ "person-add": 63642,
+ "person-down": 63643,
+ "person-exclamation": 63644,
+ "person-fill-add": 63645,
+ "person-fill-check": 63646,
+ "person-fill-dash": 63647,
+ "person-fill-down": 63648,
+ "person-fill-exclamation": 63649,
+ "person-fill-gear": 63650,
+ "person-fill-lock": 63651,
+ "person-fill-slash": 63652,
+ "person-fill-up": 63653,
+ "person-fill-x": 63654,
+ "person-gear": 63655,
+ "person-lock": 63656,
+ "person-slash": 63657,
+ "person-up": 63658,
+ "scooter": 63659,
+ "taxi-front-fill": 63660,
+ "taxi-front": 63661,
+ "amd": 63662,
+ "database-add": 63663,
+ "database-check": 63664,
+ "database-dash": 63665,
+ "database-down": 63666,
+ "database-exclamation": 63667,
+ "database-fill-add": 63668,
+ "database-fill-check": 63669,
+ "database-fill-dash": 63670,
+ "database-fill-down": 63671,
+ "database-fill-exclamation": 63672,
+ "database-fill-gear": 63673,
+ "database-fill-lock": 63674,
+ "database-fill-slash": 63675,
+ "database-fill-up": 63676,
+ "database-fill-x": 63677,
+ "database-fill": 63678,
+ "database-gear": 63679,
+ "database-lock": 63680,
+ "database-slash": 63681,
+ "database-up": 63682,
+ "database-x": 63683,
+ "database": 63684,
+ "houses-fill": 63685,
+ "houses": 63686,
+ "nvidia": 63687,
+ "person-vcard-fill": 63688,
+ "person-vcard": 63689,
+ "sina-weibo": 63690,
+ "tencent-qq": 63691,
+ "wikipedia": 63692,
+ "alphabet-uppercase": 62117,
+ "alphabet": 63114,
+ "amazon": 63117,
+ "arrows-collapse-vertical": 63120,
+ "arrows-expand-vertical": 63125,
+ "arrows-vertical": 63128,
+ "arrows": 63138,
+ "ban-fill": 63139,
+ "ban": 63158,
+ "bing": 63170,
+ "cake": 63200,
+ "cake2": 63213,
+ "cookie": 63214,
+ "copy": 63321,
+ "crosshair": 63337,
+ "crosshair2": 63380,
+ "emoji-astonished-fill": 63381,
+ "emoji-astonished": 63386,
+ "emoji-grimace-fill": 63387,
+ "emoji-grimace": 63392,
+ "emoji-grin-fill": 63393,
+ "emoji-grin": 63398,
+ "emoji-surprise-fill": 63399,
+ "emoji-surprise": 63404,
+ "emoji-tear-fill": 63405,
+ "emoji-tear": 63410,
+ "envelope-arrow-down-fill": 63411,
+ "envelope-arrow-down": 63416,
+ "envelope-arrow-up-fill": 63417,
+ "envelope-arrow-up": 63422,
+ "feather": 63423,
+ "feather2": 63428,
+ "floppy-fill": 63429,
+ "floppy": 63448,
+ "floppy2-fill": 63449,
+ "floppy2": 63460,
+ "gitlab": 63461,
+ "highlighter": 63480,
+ "marker-tip": 63490,
+ "nvme-fill": 63491,
+ "nvme": 63500,
+ "opencollective": 63501,
+ "pci-card-network": 63693,
+ "pci-card-sound": 63694,
+ "radar": 63695,
+ "send-arrow-down-fill": 63696,
+ "send-arrow-down": 63697,
+ "send-arrow-up-fill": 63698,
+ "send-arrow-up": 63699,
+ "sim-slash-fill": 63700,
+ "sim-slash": 63701,
+ "sourceforge": 63702,
+ "substack": 63703,
+ "threads-fill": 63704,
+ "threads": 63705,
+ "transparency": 63706,
+ "twitter-x": 63707,
+ "type-h4": 63708,
+ "type-h5": 63709,
+ "type-h6": 63710,
+ "backpack-fill": 63711,
+ "backpack": 63712,
+ "backpack2-fill": 63713,
+ "backpack2": 63714,
+ "backpack3-fill": 63715,
+ "backpack3": 63716,
+ "backpack4-fill": 63717,
+ "backpack4": 63718,
+ "brilliance": 63719,
+ "cake-fill": 63720,
+ "cake2-fill": 63721,
+ "duffle-fill": 63722,
+ "duffle": 63723,
+ "exposure": 63724,
+ "gender-neuter": 63725,
+ "highlights": 63726,
+ "luggage-fill": 63727,
+ "luggage": 63728,
+ "mailbox-flag": 63729,
+ "mailbox2-flag": 63730,
+ "noise-reduction": 63731,
+ "passport-fill": 63732,
+ "passport": 63733,
+ "person-arms-up": 63734,
+ "person-raised-hand": 63735,
+ "person-standing-dress": 63736,
+ "person-standing": 63737,
+ "person-walking": 63738,
+ "person-wheelchair": 63739,
+ "shadows": 63740,
+ "suitcase-fill": 63741,
+ "suitcase-lg-fill": 63742,
+ "suitcase-lg": 63743,
+ "suitcase": 63744,
+ "suitcase2-fill": 63745,
+ "suitcase2": 63746,
+ "vignette": 63747
+}
\ No newline at end of file
diff --git a/markbind/bootstrap-icons/font/bootstrap-icons.min.css b/markbind/bootstrap-icons/font/bootstrap-icons.min.css
new file mode 100644
index 00000000000..dadd6dcac4f
--- /dev/null
+++ b/markbind/bootstrap-icons/font/bootstrap-icons.min.css
@@ -0,0 +1,5 @@
+/*!
+ * Bootstrap Icons v1.11.3 (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("fonts/bootstrap-icons.woff2?dd67030699838ea613ee6dbda90effa6") format("woff2"),url("fonts/bootstrap-icons.woff?dd67030699838ea613ee6dbda90effa6") format("woff")}.bi::before,[class*=" bi-"]::before,[class^=bi-]::before{display:inline-block;font-family:bootstrap-icons!important;font-style:normal;font-weight:400!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"}
\ No newline at end of file
diff --git a/markbind/bootstrap-icons/font/bootstrap-icons.scss b/markbind/bootstrap-icons/font/bootstrap-icons.scss
new file mode 100644
index 00000000000..ea5c018f431
--- /dev/null
+++ b/markbind/bootstrap-icons/font/bootstrap-icons.scss
@@ -0,0 +1,2090 @@
+/*!
+ * Bootstrap Icons v1.11.3 (https://icons.getbootstrap.com/)
+ * Copyright 2019-2024 The Bootstrap Authors
+ * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
+ */
+
+$bootstrap-icons-font: "bootstrap-icons" !default;
+$bootstrap-icons-font-dir: "./fonts" !default;
+$bootstrap-icons-font-file: "#{$bootstrap-icons-font-dir}/#{$bootstrap-icons-font}" !default;
+$bootstrap-icons-font-hash: "24e3eb84d0bcaf83d77f904c78ac1f47" !default;
+$bootstrap-icons-font-src: url("#{$bootstrap-icons-font-file}.woff2?#{$bootstrap-icons-font-hash}") format("woff2"),
+ url("#{$bootstrap-icons-font-file}.woff?#{$bootstrap-icons-font-hash}") format("woff") !default;
+
+@font-face {
+ font-display: block;
+ font-family: $bootstrap-icons-font;
+ src: $bootstrap-icons-font-src;
+}
+
+.bi::before,
+[class^="bi-"]::before,
+[class*=" bi-"]::before {
+ display: inline-block;
+ font-family: $bootstrap-icons-font !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;
+}
+
+$bootstrap-icons-map: (
+ "123": "\f67f",
+ "alarm-fill": "\f101",
+ "alarm": "\f102",
+ "align-bottom": "\f103",
+ "align-center": "\f104",
+ "align-end": "\f105",
+ "align-middle": "\f106",
+ "align-start": "\f107",
+ "align-top": "\f108",
+ "alt": "\f109",
+ "app-indicator": "\f10a",
+ "app": "\f10b",
+ "archive-fill": "\f10c",
+ "archive": "\f10d",
+ "arrow-90deg-down": "\f10e",
+ "arrow-90deg-left": "\f10f",
+ "arrow-90deg-right": "\f110",
+ "arrow-90deg-up": "\f111",
+ "arrow-bar-down": "\f112",
+ "arrow-bar-left": "\f113",
+ "arrow-bar-right": "\f114",
+ "arrow-bar-up": "\f115",
+ "arrow-clockwise": "\f116",
+ "arrow-counterclockwise": "\f117",
+ "arrow-down-circle-fill": "\f118",
+ "arrow-down-circle": "\f119",
+ "arrow-down-left-circle-fill": "\f11a",
+ "arrow-down-left-circle": "\f11b",
+ "arrow-down-left-square-fill": "\f11c",
+ "arrow-down-left-square": "\f11d",
+ "arrow-down-left": "\f11e",
+ "arrow-down-right-circle-fill": "\f11f",
+ "arrow-down-right-circle": "\f120",
+ "arrow-down-right-square-fill": "\f121",
+ "arrow-down-right-square": "\f122",
+ "arrow-down-right": "\f123",
+ "arrow-down-short": "\f124",
+ "arrow-down-square-fill": "\f125",
+ "arrow-down-square": "\f126",
+ "arrow-down-up": "\f127",
+ "arrow-down": "\f128",
+ "arrow-left-circle-fill": "\f129",
+ "arrow-left-circle": "\f12a",
+ "arrow-left-right": "\f12b",
+ "arrow-left-short": "\f12c",
+ "arrow-left-square-fill": "\f12d",
+ "arrow-left-square": "\f12e",
+ "arrow-left": "\f12f",
+ "arrow-repeat": "\f130",
+ "arrow-return-left": "\f131",
+ "arrow-return-right": "\f132",
+ "arrow-right-circle-fill": "\f133",
+ "arrow-right-circle": "\f134",
+ "arrow-right-short": "\f135",
+ "arrow-right-square-fill": "\f136",
+ "arrow-right-square": "\f137",
+ "arrow-right": "\f138",
+ "arrow-up-circle-fill": "\f139",
+ "arrow-up-circle": "\f13a",
+ "arrow-up-left-circle-fill": "\f13b",
+ "arrow-up-left-circle": "\f13c",
+ "arrow-up-left-square-fill": "\f13d",
+ "arrow-up-left-square": "\f13e",
+ "arrow-up-left": "\f13f",
+ "arrow-up-right-circle-fill": "\f140",
+ "arrow-up-right-circle": "\f141",
+ "arrow-up-right-square-fill": "\f142",
+ "arrow-up-right-square": "\f143",
+ "arrow-up-right": "\f144",
+ "arrow-up-short": "\f145",
+ "arrow-up-square-fill": "\f146",
+ "arrow-up-square": "\f147",
+ "arrow-up": "\f148",
+ "arrows-angle-contract": "\f149",
+ "arrows-angle-expand": "\f14a",
+ "arrows-collapse": "\f14b",
+ "arrows-expand": "\f14c",
+ "arrows-fullscreen": "\f14d",
+ "arrows-move": "\f14e",
+ "aspect-ratio-fill": "\f14f",
+ "aspect-ratio": "\f150",
+ "asterisk": "\f151",
+ "at": "\f152",
+ "award-fill": "\f153",
+ "award": "\f154",
+ "back": "\f155",
+ "backspace-fill": "\f156",
+ "backspace-reverse-fill": "\f157",
+ "backspace-reverse": "\f158",
+ "backspace": "\f159",
+ "badge-3d-fill": "\f15a",
+ "badge-3d": "\f15b",
+ "badge-4k-fill": "\f15c",
+ "badge-4k": "\f15d",
+ "badge-8k-fill": "\f15e",
+ "badge-8k": "\f15f",
+ "badge-ad-fill": "\f160",
+ "badge-ad": "\f161",
+ "badge-ar-fill": "\f162",
+ "badge-ar": "\f163",
+ "badge-cc-fill": "\f164",
+ "badge-cc": "\f165",
+ "badge-hd-fill": "\f166",
+ "badge-hd": "\f167",
+ "badge-tm-fill": "\f168",
+ "badge-tm": "\f169",
+ "badge-vo-fill": "\f16a",
+ "badge-vo": "\f16b",
+ "badge-vr-fill": "\f16c",
+ "badge-vr": "\f16d",
+ "badge-wc-fill": "\f16e",
+ "badge-wc": "\f16f",
+ "bag-check-fill": "\f170",
+ "bag-check": "\f171",
+ "bag-dash-fill": "\f172",
+ "bag-dash": "\f173",
+ "bag-fill": "\f174",
+ "bag-plus-fill": "\f175",
+ "bag-plus": "\f176",
+ "bag-x-fill": "\f177",
+ "bag-x": "\f178",
+ "bag": "\f179",
+ "bar-chart-fill": "\f17a",
+ "bar-chart-line-fill": "\f17b",
+ "bar-chart-line": "\f17c",
+ "bar-chart-steps": "\f17d",
+ "bar-chart": "\f17e",
+ "basket-fill": "\f17f",
+ "basket": "\f180",
+ "basket2-fill": "\f181",
+ "basket2": "\f182",
+ "basket3-fill": "\f183",
+ "basket3": "\f184",
+ "battery-charging": "\f185",
+ "battery-full": "\f186",
+ "battery-half": "\f187",
+ "battery": "\f188",
+ "bell-fill": "\f189",
+ "bell": "\f18a",
+ "bezier": "\f18b",
+ "bezier2": "\f18c",
+ "bicycle": "\f18d",
+ "binoculars-fill": "\f18e",
+ "binoculars": "\f18f",
+ "blockquote-left": "\f190",
+ "blockquote-right": "\f191",
+ "book-fill": "\f192",
+ "book-half": "\f193",
+ "book": "\f194",
+ "bookmark-check-fill": "\f195",
+ "bookmark-check": "\f196",
+ "bookmark-dash-fill": "\f197",
+ "bookmark-dash": "\f198",
+ "bookmark-fill": "\f199",
+ "bookmark-heart-fill": "\f19a",
+ "bookmark-heart": "\f19b",
+ "bookmark-plus-fill": "\f19c",
+ "bookmark-plus": "\f19d",
+ "bookmark-star-fill": "\f19e",
+ "bookmark-star": "\f19f",
+ "bookmark-x-fill": "\f1a0",
+ "bookmark-x": "\f1a1",
+ "bookmark": "\f1a2",
+ "bookmarks-fill": "\f1a3",
+ "bookmarks": "\f1a4",
+ "bookshelf": "\f1a5",
+ "bootstrap-fill": "\f1a6",
+ "bootstrap-reboot": "\f1a7",
+ "bootstrap": "\f1a8",
+ "border-all": "\f1a9",
+ "border-bottom": "\f1aa",
+ "border-center": "\f1ab",
+ "border-inner": "\f1ac",
+ "border-left": "\f1ad",
+ "border-middle": "\f1ae",
+ "border-outer": "\f1af",
+ "border-right": "\f1b0",
+ "border-style": "\f1b1",
+ "border-top": "\f1b2",
+ "border-width": "\f1b3",
+ "border": "\f1b4",
+ "bounding-box-circles": "\f1b5",
+ "bounding-box": "\f1b6",
+ "box-arrow-down-left": "\f1b7",
+ "box-arrow-down-right": "\f1b8",
+ "box-arrow-down": "\f1b9",
+ "box-arrow-in-down-left": "\f1ba",
+ "box-arrow-in-down-right": "\f1bb",
+ "box-arrow-in-down": "\f1bc",
+ "box-arrow-in-left": "\f1bd",
+ "box-arrow-in-right": "\f1be",
+ "box-arrow-in-up-left": "\f1bf",
+ "box-arrow-in-up-right": "\f1c0",
+ "box-arrow-in-up": "\f1c1",
+ "box-arrow-left": "\f1c2",
+ "box-arrow-right": "\f1c3",
+ "box-arrow-up-left": "\f1c4",
+ "box-arrow-up-right": "\f1c5",
+ "box-arrow-up": "\f1c6",
+ "box-seam": "\f1c7",
+ "box": "\f1c8",
+ "braces": "\f1c9",
+ "bricks": "\f1ca",
+ "briefcase-fill": "\f1cb",
+ "briefcase": "\f1cc",
+ "brightness-alt-high-fill": "\f1cd",
+ "brightness-alt-high": "\f1ce",
+ "brightness-alt-low-fill": "\f1cf",
+ "brightness-alt-low": "\f1d0",
+ "brightness-high-fill": "\f1d1",
+ "brightness-high": "\f1d2",
+ "brightness-low-fill": "\f1d3",
+ "brightness-low": "\f1d4",
+ "broadcast-pin": "\f1d5",
+ "broadcast": "\f1d6",
+ "brush-fill": "\f1d7",
+ "brush": "\f1d8",
+ "bucket-fill": "\f1d9",
+ "bucket": "\f1da",
+ "bug-fill": "\f1db",
+ "bug": "\f1dc",
+ "building": "\f1dd",
+ "bullseye": "\f1de",
+ "calculator-fill": "\f1df",
+ "calculator": "\f1e0",
+ "calendar-check-fill": "\f1e1",
+ "calendar-check": "\f1e2",
+ "calendar-date-fill": "\f1e3",
+ "calendar-date": "\f1e4",
+ "calendar-day-fill": "\f1e5",
+ "calendar-day": "\f1e6",
+ "calendar-event-fill": "\f1e7",
+ "calendar-event": "\f1e8",
+ "calendar-fill": "\f1e9",
+ "calendar-minus-fill": "\f1ea",
+ "calendar-minus": "\f1eb",
+ "calendar-month-fill": "\f1ec",
+ "calendar-month": "\f1ed",
+ "calendar-plus-fill": "\f1ee",
+ "calendar-plus": "\f1ef",
+ "calendar-range-fill": "\f1f0",
+ "calendar-range": "\f1f1",
+ "calendar-week-fill": "\f1f2",
+ "calendar-week": "\f1f3",
+ "calendar-x-fill": "\f1f4",
+ "calendar-x": "\f1f5",
+ "calendar": "\f1f6",
+ "calendar2-check-fill": "\f1f7",
+ "calendar2-check": "\f1f8",
+ "calendar2-date-fill": "\f1f9",
+ "calendar2-date": "\f1fa",
+ "calendar2-day-fill": "\f1fb",
+ "calendar2-day": "\f1fc",
+ "calendar2-event-fill": "\f1fd",
+ "calendar2-event": "\f1fe",
+ "calendar2-fill": "\f1ff",
+ "calendar2-minus-fill": "\f200",
+ "calendar2-minus": "\f201",
+ "calendar2-month-fill": "\f202",
+ "calendar2-month": "\f203",
+ "calendar2-plus-fill": "\f204",
+ "calendar2-plus": "\f205",
+ "calendar2-range-fill": "\f206",
+ "calendar2-range": "\f207",
+ "calendar2-week-fill": "\f208",
+ "calendar2-week": "\f209",
+ "calendar2-x-fill": "\f20a",
+ "calendar2-x": "\f20b",
+ "calendar2": "\f20c",
+ "calendar3-event-fill": "\f20d",
+ "calendar3-event": "\f20e",
+ "calendar3-fill": "\f20f",
+ "calendar3-range-fill": "\f210",
+ "calendar3-range": "\f211",
+ "calendar3-week-fill": "\f212",
+ "calendar3-week": "\f213",
+ "calendar3": "\f214",
+ "calendar4-event": "\f215",
+ "calendar4-range": "\f216",
+ "calendar4-week": "\f217",
+ "calendar4": "\f218",
+ "camera-fill": "\f219",
+ "camera-reels-fill": "\f21a",
+ "camera-reels": "\f21b",
+ "camera-video-fill": "\f21c",
+ "camera-video-off-fill": "\f21d",
+ "camera-video-off": "\f21e",
+ "camera-video": "\f21f",
+ "camera": "\f220",
+ "camera2": "\f221",
+ "capslock-fill": "\f222",
+ "capslock": "\f223",
+ "card-checklist": "\f224",
+ "card-heading": "\f225",
+ "card-image": "\f226",
+ "card-list": "\f227",
+ "card-text": "\f228",
+ "caret-down-fill": "\f229",
+ "caret-down-square-fill": "\f22a",
+ "caret-down-square": "\f22b",
+ "caret-down": "\f22c",
+ "caret-left-fill": "\f22d",
+ "caret-left-square-fill": "\f22e",
+ "caret-left-square": "\f22f",
+ "caret-left": "\f230",
+ "caret-right-fill": "\f231",
+ "caret-right-square-fill": "\f232",
+ "caret-right-square": "\f233",
+ "caret-right": "\f234",
+ "caret-up-fill": "\f235",
+ "caret-up-square-fill": "\f236",
+ "caret-up-square": "\f237",
+ "caret-up": "\f238",
+ "cart-check-fill": "\f239",
+ "cart-check": "\f23a",
+ "cart-dash-fill": "\f23b",
+ "cart-dash": "\f23c",
+ "cart-fill": "\f23d",
+ "cart-plus-fill": "\f23e",
+ "cart-plus": "\f23f",
+ "cart-x-fill": "\f240",
+ "cart-x": "\f241",
+ "cart": "\f242",
+ "cart2": "\f243",
+ "cart3": "\f244",
+ "cart4": "\f245",
+ "cash-stack": "\f246",
+ "cash": "\f247",
+ "cast": "\f248",
+ "chat-dots-fill": "\f249",
+ "chat-dots": "\f24a",
+ "chat-fill": "\f24b",
+ "chat-left-dots-fill": "\f24c",
+ "chat-left-dots": "\f24d",
+ "chat-left-fill": "\f24e",
+ "chat-left-quote-fill": "\f24f",
+ "chat-left-quote": "\f250",
+ "chat-left-text-fill": "\f251",
+ "chat-left-text": "\f252",
+ "chat-left": "\f253",
+ "chat-quote-fill": "\f254",
+ "chat-quote": "\f255",
+ "chat-right-dots-fill": "\f256",
+ "chat-right-dots": "\f257",
+ "chat-right-fill": "\f258",
+ "chat-right-quote-fill": "\f259",
+ "chat-right-quote": "\f25a",
+ "chat-right-text-fill": "\f25b",
+ "chat-right-text": "\f25c",
+ "chat-right": "\f25d",
+ "chat-square-dots-fill": "\f25e",
+ "chat-square-dots": "\f25f",
+ "chat-square-fill": "\f260",
+ "chat-square-quote-fill": "\f261",
+ "chat-square-quote": "\f262",
+ "chat-square-text-fill": "\f263",
+ "chat-square-text": "\f264",
+ "chat-square": "\f265",
+ "chat-text-fill": "\f266",
+ "chat-text": "\f267",
+ "chat": "\f268",
+ "check-all": "\f269",
+ "check-circle-fill": "\f26a",
+ "check-circle": "\f26b",
+ "check-square-fill": "\f26c",
+ "check-square": "\f26d",
+ "check": "\f26e",
+ "check2-all": "\f26f",
+ "check2-circle": "\f270",
+ "check2-square": "\f271",
+ "check2": "\f272",
+ "chevron-bar-contract": "\f273",
+ "chevron-bar-down": "\f274",
+ "chevron-bar-expand": "\f275",
+ "chevron-bar-left": "\f276",
+ "chevron-bar-right": "\f277",
+ "chevron-bar-up": "\f278",
+ "chevron-compact-down": "\f279",
+ "chevron-compact-left": "\f27a",
+ "chevron-compact-right": "\f27b",
+ "chevron-compact-up": "\f27c",
+ "chevron-contract": "\f27d",
+ "chevron-double-down": "\f27e",
+ "chevron-double-left": "\f27f",
+ "chevron-double-right": "\f280",
+ "chevron-double-up": "\f281",
+ "chevron-down": "\f282",
+ "chevron-expand": "\f283",
+ "chevron-left": "\f284",
+ "chevron-right": "\f285",
+ "chevron-up": "\f286",
+ "circle-fill": "\f287",
+ "circle-half": "\f288",
+ "circle-square": "\f289",
+ "circle": "\f28a",
+ "clipboard-check": "\f28b",
+ "clipboard-data": "\f28c",
+ "clipboard-minus": "\f28d",
+ "clipboard-plus": "\f28e",
+ "clipboard-x": "\f28f",
+ "clipboard": "\f290",
+ "clock-fill": "\f291",
+ "clock-history": "\f292",
+ "clock": "\f293",
+ "cloud-arrow-down-fill": "\f294",
+ "cloud-arrow-down": "\f295",
+ "cloud-arrow-up-fill": "\f296",
+ "cloud-arrow-up": "\f297",
+ "cloud-check-fill": "\f298",
+ "cloud-check": "\f299",
+ "cloud-download-fill": "\f29a",
+ "cloud-download": "\f29b",
+ "cloud-drizzle-fill": "\f29c",
+ "cloud-drizzle": "\f29d",
+ "cloud-fill": "\f29e",
+ "cloud-fog-fill": "\f29f",
+ "cloud-fog": "\f2a0",
+ "cloud-fog2-fill": "\f2a1",
+ "cloud-fog2": "\f2a2",
+ "cloud-hail-fill": "\f2a3",
+ "cloud-hail": "\f2a4",
+ "cloud-haze-fill": "\f2a6",
+ "cloud-haze": "\f2a7",
+ "cloud-haze2-fill": "\f2a8",
+ "cloud-lightning-fill": "\f2a9",
+ "cloud-lightning-rain-fill": "\f2aa",
+ "cloud-lightning-rain": "\f2ab",
+ "cloud-lightning": "\f2ac",
+ "cloud-minus-fill": "\f2ad",
+ "cloud-minus": "\f2ae",
+ "cloud-moon-fill": "\f2af",
+ "cloud-moon": "\f2b0",
+ "cloud-plus-fill": "\f2b1",
+ "cloud-plus": "\f2b2",
+ "cloud-rain-fill": "\f2b3",
+ "cloud-rain-heavy-fill": "\f2b4",
+ "cloud-rain-heavy": "\f2b5",
+ "cloud-rain": "\f2b6",
+ "cloud-slash-fill": "\f2b7",
+ "cloud-slash": "\f2b8",
+ "cloud-sleet-fill": "\f2b9",
+ "cloud-sleet": "\f2ba",
+ "cloud-snow-fill": "\f2bb",
+ "cloud-snow": "\f2bc",
+ "cloud-sun-fill": "\f2bd",
+ "cloud-sun": "\f2be",
+ "cloud-upload-fill": "\f2bf",
+ "cloud-upload": "\f2c0",
+ "cloud": "\f2c1",
+ "clouds-fill": "\f2c2",
+ "clouds": "\f2c3",
+ "cloudy-fill": "\f2c4",
+ "cloudy": "\f2c5",
+ "code-slash": "\f2c6",
+ "code-square": "\f2c7",
+ "code": "\f2c8",
+ "collection-fill": "\f2c9",
+ "collection-play-fill": "\f2ca",
+ "collection-play": "\f2cb",
+ "collection": "\f2cc",
+ "columns-gap": "\f2cd",
+ "columns": "\f2ce",
+ "command": "\f2cf",
+ "compass-fill": "\f2d0",
+ "compass": "\f2d1",
+ "cone-striped": "\f2d2",
+ "cone": "\f2d3",
+ "controller": "\f2d4",
+ "cpu-fill": "\f2d5",
+ "cpu": "\f2d6",
+ "credit-card-2-back-fill": "\f2d7",
+ "credit-card-2-back": "\f2d8",
+ "credit-card-2-front-fill": "\f2d9",
+ "credit-card-2-front": "\f2da",
+ "credit-card-fill": "\f2db",
+ "credit-card": "\f2dc",
+ "crop": "\f2dd",
+ "cup-fill": "\f2de",
+ "cup-straw": "\f2df",
+ "cup": "\f2e0",
+ "cursor-fill": "\f2e1",
+ "cursor-text": "\f2e2",
+ "cursor": "\f2e3",
+ "dash-circle-dotted": "\f2e4",
+ "dash-circle-fill": "\f2e5",
+ "dash-circle": "\f2e6",
+ "dash-square-dotted": "\f2e7",
+ "dash-square-fill": "\f2e8",
+ "dash-square": "\f2e9",
+ "dash": "\f2ea",
+ "diagram-2-fill": "\f2eb",
+ "diagram-2": "\f2ec",
+ "diagram-3-fill": "\f2ed",
+ "diagram-3": "\f2ee",
+ "diamond-fill": "\f2ef",
+ "diamond-half": "\f2f0",
+ "diamond": "\f2f1",
+ "dice-1-fill": "\f2f2",
+ "dice-1": "\f2f3",
+ "dice-2-fill": "\f2f4",
+ "dice-2": "\f2f5",
+ "dice-3-fill": "\f2f6",
+ "dice-3": "\f2f7",
+ "dice-4-fill": "\f2f8",
+ "dice-4": "\f2f9",
+ "dice-5-fill": "\f2fa",
+ "dice-5": "\f2fb",
+ "dice-6-fill": "\f2fc",
+ "dice-6": "\f2fd",
+ "disc-fill": "\f2fe",
+ "disc": "\f2ff",
+ "discord": "\f300",
+ "display-fill": "\f301",
+ "display": "\f302",
+ "distribute-horizontal": "\f303",
+ "distribute-vertical": "\f304",
+ "door-closed-fill": "\f305",
+ "door-closed": "\f306",
+ "door-open-fill": "\f307",
+ "door-open": "\f308",
+ "dot": "\f309",
+ "download": "\f30a",
+ "droplet-fill": "\f30b",
+ "droplet-half": "\f30c",
+ "droplet": "\f30d",
+ "earbuds": "\f30e",
+ "easel-fill": "\f30f",
+ "easel": "\f310",
+ "egg-fill": "\f311",
+ "egg-fried": "\f312",
+ "egg": "\f313",
+ "eject-fill": "\f314",
+ "eject": "\f315",
+ "emoji-angry-fill": "\f316",
+ "emoji-angry": "\f317",
+ "emoji-dizzy-fill": "\f318",
+ "emoji-dizzy": "\f319",
+ "emoji-expressionless-fill": "\f31a",
+ "emoji-expressionless": "\f31b",
+ "emoji-frown-fill": "\f31c",
+ "emoji-frown": "\f31d",
+ "emoji-heart-eyes-fill": "\f31e",
+ "emoji-heart-eyes": "\f31f",
+ "emoji-laughing-fill": "\f320",
+ "emoji-laughing": "\f321",
+ "emoji-neutral-fill": "\f322",
+ "emoji-neutral": "\f323",
+ "emoji-smile-fill": "\f324",
+ "emoji-smile-upside-down-fill": "\f325",
+ "emoji-smile-upside-down": "\f326",
+ "emoji-smile": "\f327",
+ "emoji-sunglasses-fill": "\f328",
+ "emoji-sunglasses": "\f329",
+ "emoji-wink-fill": "\f32a",
+ "emoji-wink": "\f32b",
+ "envelope-fill": "\f32c",
+ "envelope-open-fill": "\f32d",
+ "envelope-open": "\f32e",
+ "envelope": "\f32f",
+ "eraser-fill": "\f330",
+ "eraser": "\f331",
+ "exclamation-circle-fill": "\f332",
+ "exclamation-circle": "\f333",
+ "exclamation-diamond-fill": "\f334",
+ "exclamation-diamond": "\f335",
+ "exclamation-octagon-fill": "\f336",
+ "exclamation-octagon": "\f337",
+ "exclamation-square-fill": "\f338",
+ "exclamation-square": "\f339",
+ "exclamation-triangle-fill": "\f33a",
+ "exclamation-triangle": "\f33b",
+ "exclamation": "\f33c",
+ "exclude": "\f33d",
+ "eye-fill": "\f33e",
+ "eye-slash-fill": "\f33f",
+ "eye-slash": "\f340",
+ "eye": "\f341",
+ "eyedropper": "\f342",
+ "eyeglasses": "\f343",
+ "facebook": "\f344",
+ "file-arrow-down-fill": "\f345",
+ "file-arrow-down": "\f346",
+ "file-arrow-up-fill": "\f347",
+ "file-arrow-up": "\f348",
+ "file-bar-graph-fill": "\f349",
+ "file-bar-graph": "\f34a",
+ "file-binary-fill": "\f34b",
+ "file-binary": "\f34c",
+ "file-break-fill": "\f34d",
+ "file-break": "\f34e",
+ "file-check-fill": "\f34f",
+ "file-check": "\f350",
+ "file-code-fill": "\f351",
+ "file-code": "\f352",
+ "file-diff-fill": "\f353",
+ "file-diff": "\f354",
+ "file-earmark-arrow-down-fill": "\f355",
+ "file-earmark-arrow-down": "\f356",
+ "file-earmark-arrow-up-fill": "\f357",
+ "file-earmark-arrow-up": "\f358",
+ "file-earmark-bar-graph-fill": "\f359",
+ "file-earmark-bar-graph": "\f35a",
+ "file-earmark-binary-fill": "\f35b",
+ "file-earmark-binary": "\f35c",
+ "file-earmark-break-fill": "\f35d",
+ "file-earmark-break": "\f35e",
+ "file-earmark-check-fill": "\f35f",
+ "file-earmark-check": "\f360",
+ "file-earmark-code-fill": "\f361",
+ "file-earmark-code": "\f362",
+ "file-earmark-diff-fill": "\f363",
+ "file-earmark-diff": "\f364",
+ "file-earmark-easel-fill": "\f365",
+ "file-earmark-easel": "\f366",
+ "file-earmark-excel-fill": "\f367",
+ "file-earmark-excel": "\f368",
+ "file-earmark-fill": "\f369",
+ "file-earmark-font-fill": "\f36a",
+ "file-earmark-font": "\f36b",
+ "file-earmark-image-fill": "\f36c",
+ "file-earmark-image": "\f36d",
+ "file-earmark-lock-fill": "\f36e",
+ "file-earmark-lock": "\f36f",
+ "file-earmark-lock2-fill": "\f370",
+ "file-earmark-lock2": "\f371",
+ "file-earmark-medical-fill": "\f372",
+ "file-earmark-medical": "\f373",
+ "file-earmark-minus-fill": "\f374",
+ "file-earmark-minus": "\f375",
+ "file-earmark-music-fill": "\f376",
+ "file-earmark-music": "\f377",
+ "file-earmark-person-fill": "\f378",
+ "file-earmark-person": "\f379",
+ "file-earmark-play-fill": "\f37a",
+ "file-earmark-play": "\f37b",
+ "file-earmark-plus-fill": "\f37c",
+ "file-earmark-plus": "\f37d",
+ "file-earmark-post-fill": "\f37e",
+ "file-earmark-post": "\f37f",
+ "file-earmark-ppt-fill": "\f380",
+ "file-earmark-ppt": "\f381",
+ "file-earmark-richtext-fill": "\f382",
+ "file-earmark-richtext": "\f383",
+ "file-earmark-ruled-fill": "\f384",
+ "file-earmark-ruled": "\f385",
+ "file-earmark-slides-fill": "\f386",
+ "file-earmark-slides": "\f387",
+ "file-earmark-spreadsheet-fill": "\f388",
+ "file-earmark-spreadsheet": "\f389",
+ "file-earmark-text-fill": "\f38a",
+ "file-earmark-text": "\f38b",
+ "file-earmark-word-fill": "\f38c",
+ "file-earmark-word": "\f38d",
+ "file-earmark-x-fill": "\f38e",
+ "file-earmark-x": "\f38f",
+ "file-earmark-zip-fill": "\f390",
+ "file-earmark-zip": "\f391",
+ "file-earmark": "\f392",
+ "file-easel-fill": "\f393",
+ "file-easel": "\f394",
+ "file-excel-fill": "\f395",
+ "file-excel": "\f396",
+ "file-fill": "\f397",
+ "file-font-fill": "\f398",
+ "file-font": "\f399",
+ "file-image-fill": "\f39a",
+ "file-image": "\f39b",
+ "file-lock-fill": "\f39c",
+ "file-lock": "\f39d",
+ "file-lock2-fill": "\f39e",
+ "file-lock2": "\f39f",
+ "file-medical-fill": "\f3a0",
+ "file-medical": "\f3a1",
+ "file-minus-fill": "\f3a2",
+ "file-minus": "\f3a3",
+ "file-music-fill": "\f3a4",
+ "file-music": "\f3a5",
+ "file-person-fill": "\f3a6",
+ "file-person": "\f3a7",
+ "file-play-fill": "\f3a8",
+ "file-play": "\f3a9",
+ "file-plus-fill": "\f3aa",
+ "file-plus": "\f3ab",
+ "file-post-fill": "\f3ac",
+ "file-post": "\f3ad",
+ "file-ppt-fill": "\f3ae",
+ "file-ppt": "\f3af",
+ "file-richtext-fill": "\f3b0",
+ "file-richtext": "\f3b1",
+ "file-ruled-fill": "\f3b2",
+ "file-ruled": "\f3b3",
+ "file-slides-fill": "\f3b4",
+ "file-slides": "\f3b5",
+ "file-spreadsheet-fill": "\f3b6",
+ "file-spreadsheet": "\f3b7",
+ "file-text-fill": "\f3b8",
+ "file-text": "\f3b9",
+ "file-word-fill": "\f3ba",
+ "file-word": "\f3bb",
+ "file-x-fill": "\f3bc",
+ "file-x": "\f3bd",
+ "file-zip-fill": "\f3be",
+ "file-zip": "\f3bf",
+ "file": "\f3c0",
+ "files-alt": "\f3c1",
+ "files": "\f3c2",
+ "film": "\f3c3",
+ "filter-circle-fill": "\f3c4",
+ "filter-circle": "\f3c5",
+ "filter-left": "\f3c6",
+ "filter-right": "\f3c7",
+ "filter-square-fill": "\f3c8",
+ "filter-square": "\f3c9",
+ "filter": "\f3ca",
+ "flag-fill": "\f3cb",
+ "flag": "\f3cc",
+ "flower1": "\f3cd",
+ "flower2": "\f3ce",
+ "flower3": "\f3cf",
+ "folder-check": "\f3d0",
+ "folder-fill": "\f3d1",
+ "folder-minus": "\f3d2",
+ "folder-plus": "\f3d3",
+ "folder-symlink-fill": "\f3d4",
+ "folder-symlink": "\f3d5",
+ "folder-x": "\f3d6",
+ "folder": "\f3d7",
+ "folder2-open": "\f3d8",
+ "folder2": "\f3d9",
+ "fonts": "\f3da",
+ "forward-fill": "\f3db",
+ "forward": "\f3dc",
+ "front": "\f3dd",
+ "fullscreen-exit": "\f3de",
+ "fullscreen": "\f3df",
+ "funnel-fill": "\f3e0",
+ "funnel": "\f3e1",
+ "gear-fill": "\f3e2",
+ "gear-wide-connected": "\f3e3",
+ "gear-wide": "\f3e4",
+ "gear": "\f3e5",
+ "gem": "\f3e6",
+ "geo-alt-fill": "\f3e7",
+ "geo-alt": "\f3e8",
+ "geo-fill": "\f3e9",
+ "geo": "\f3ea",
+ "gift-fill": "\f3eb",
+ "gift": "\f3ec",
+ "github": "\f3ed",
+ "globe": "\f3ee",
+ "globe2": "\f3ef",
+ "google": "\f3f0",
+ "graph-down": "\f3f1",
+ "graph-up": "\f3f2",
+ "grid-1x2-fill": "\f3f3",
+ "grid-1x2": "\f3f4",
+ "grid-3x2-gap-fill": "\f3f5",
+ "grid-3x2-gap": "\f3f6",
+ "grid-3x2": "\f3f7",
+ "grid-3x3-gap-fill": "\f3f8",
+ "grid-3x3-gap": "\f3f9",
+ "grid-3x3": "\f3fa",
+ "grid-fill": "\f3fb",
+ "grid": "\f3fc",
+ "grip-horizontal": "\f3fd",
+ "grip-vertical": "\f3fe",
+ "hammer": "\f3ff",
+ "hand-index-fill": "\f400",
+ "hand-index-thumb-fill": "\f401",
+ "hand-index-thumb": "\f402",
+ "hand-index": "\f403",
+ "hand-thumbs-down-fill": "\f404",
+ "hand-thumbs-down": "\f405",
+ "hand-thumbs-up-fill": "\f406",
+ "hand-thumbs-up": "\f407",
+ "handbag-fill": "\f408",
+ "handbag": "\f409",
+ "hash": "\f40a",
+ "hdd-fill": "\f40b",
+ "hdd-network-fill": "\f40c",
+ "hdd-network": "\f40d",
+ "hdd-rack-fill": "\f40e",
+ "hdd-rack": "\f40f",
+ "hdd-stack-fill": "\f410",
+ "hdd-stack": "\f411",
+ "hdd": "\f412",
+ "headphones": "\f413",
+ "headset": "\f414",
+ "heart-fill": "\f415",
+ "heart-half": "\f416",
+ "heart": "\f417",
+ "heptagon-fill": "\f418",
+ "heptagon-half": "\f419",
+ "heptagon": "\f41a",
+ "hexagon-fill": "\f41b",
+ "hexagon-half": "\f41c",
+ "hexagon": "\f41d",
+ "hourglass-bottom": "\f41e",
+ "hourglass-split": "\f41f",
+ "hourglass-top": "\f420",
+ "hourglass": "\f421",
+ "house-door-fill": "\f422",
+ "house-door": "\f423",
+ "house-fill": "\f424",
+ "house": "\f425",
+ "hr": "\f426",
+ "hurricane": "\f427",
+ "image-alt": "\f428",
+ "image-fill": "\f429",
+ "image": "\f42a",
+ "images": "\f42b",
+ "inbox-fill": "\f42c",
+ "inbox": "\f42d",
+ "inboxes-fill": "\f42e",
+ "inboxes": "\f42f",
+ "info-circle-fill": "\f430",
+ "info-circle": "\f431",
+ "info-square-fill": "\f432",
+ "info-square": "\f433",
+ "info": "\f434",
+ "input-cursor-text": "\f435",
+ "input-cursor": "\f436",
+ "instagram": "\f437",
+ "intersect": "\f438",
+ "journal-album": "\f439",
+ "journal-arrow-down": "\f43a",
+ "journal-arrow-up": "\f43b",
+ "journal-bookmark-fill": "\f43c",
+ "journal-bookmark": "\f43d",
+ "journal-check": "\f43e",
+ "journal-code": "\f43f",
+ "journal-medical": "\f440",
+ "journal-minus": "\f441",
+ "journal-plus": "\f442",
+ "journal-richtext": "\f443",
+ "journal-text": "\f444",
+ "journal-x": "\f445",
+ "journal": "\f446",
+ "journals": "\f447",
+ "joystick": "\f448",
+ "justify-left": "\f449",
+ "justify-right": "\f44a",
+ "justify": "\f44b",
+ "kanban-fill": "\f44c",
+ "kanban": "\f44d",
+ "key-fill": "\f44e",
+ "key": "\f44f",
+ "keyboard-fill": "\f450",
+ "keyboard": "\f451",
+ "ladder": "\f452",
+ "lamp-fill": "\f453",
+ "lamp": "\f454",
+ "laptop-fill": "\f455",
+ "laptop": "\f456",
+ "layer-backward": "\f457",
+ "layer-forward": "\f458",
+ "layers-fill": "\f459",
+ "layers-half": "\f45a",
+ "layers": "\f45b",
+ "layout-sidebar-inset-reverse": "\f45c",
+ "layout-sidebar-inset": "\f45d",
+ "layout-sidebar-reverse": "\f45e",
+ "layout-sidebar": "\f45f",
+ "layout-split": "\f460",
+ "layout-text-sidebar-reverse": "\f461",
+ "layout-text-sidebar": "\f462",
+ "layout-text-window-reverse": "\f463",
+ "layout-text-window": "\f464",
+ "layout-three-columns": "\f465",
+ "layout-wtf": "\f466",
+ "life-preserver": "\f467",
+ "lightbulb-fill": "\f468",
+ "lightbulb-off-fill": "\f469",
+ "lightbulb-off": "\f46a",
+ "lightbulb": "\f46b",
+ "lightning-charge-fill": "\f46c",
+ "lightning-charge": "\f46d",
+ "lightning-fill": "\f46e",
+ "lightning": "\f46f",
+ "link-45deg": "\f470",
+ "link": "\f471",
+ "linkedin": "\f472",
+ "list-check": "\f473",
+ "list-nested": "\f474",
+ "list-ol": "\f475",
+ "list-stars": "\f476",
+ "list-task": "\f477",
+ "list-ul": "\f478",
+ "list": "\f479",
+ "lock-fill": "\f47a",
+ "lock": "\f47b",
+ "mailbox": "\f47c",
+ "mailbox2": "\f47d",
+ "map-fill": "\f47e",
+ "map": "\f47f",
+ "markdown-fill": "\f480",
+ "markdown": "\f481",
+ "mask": "\f482",
+ "megaphone-fill": "\f483",
+ "megaphone": "\f484",
+ "menu-app-fill": "\f485",
+ "menu-app": "\f486",
+ "menu-button-fill": "\f487",
+ "menu-button-wide-fill": "\f488",
+ "menu-button-wide": "\f489",
+ "menu-button": "\f48a",
+ "menu-down": "\f48b",
+ "menu-up": "\f48c",
+ "mic-fill": "\f48d",
+ "mic-mute-fill": "\f48e",
+ "mic-mute": "\f48f",
+ "mic": "\f490",
+ "minecart-loaded": "\f491",
+ "minecart": "\f492",
+ "moisture": "\f493",
+ "moon-fill": "\f494",
+ "moon-stars-fill": "\f495",
+ "moon-stars": "\f496",
+ "moon": "\f497",
+ "mouse-fill": "\f498",
+ "mouse": "\f499",
+ "mouse2-fill": "\f49a",
+ "mouse2": "\f49b",
+ "mouse3-fill": "\f49c",
+ "mouse3": "\f49d",
+ "music-note-beamed": "\f49e",
+ "music-note-list": "\f49f",
+ "music-note": "\f4a0",
+ "music-player-fill": "\f4a1",
+ "music-player": "\f4a2",
+ "newspaper": "\f4a3",
+ "node-minus-fill": "\f4a4",
+ "node-minus": "\f4a5",
+ "node-plus-fill": "\f4a6",
+ "node-plus": "\f4a7",
+ "nut-fill": "\f4a8",
+ "nut": "\f4a9",
+ "octagon-fill": "\f4aa",
+ "octagon-half": "\f4ab",
+ "octagon": "\f4ac",
+ "option": "\f4ad",
+ "outlet": "\f4ae",
+ "paint-bucket": "\f4af",
+ "palette-fill": "\f4b0",
+ "palette": "\f4b1",
+ "palette2": "\f4b2",
+ "paperclip": "\f4b3",
+ "paragraph": "\f4b4",
+ "patch-check-fill": "\f4b5",
+ "patch-check": "\f4b6",
+ "patch-exclamation-fill": "\f4b7",
+ "patch-exclamation": "\f4b8",
+ "patch-minus-fill": "\f4b9",
+ "patch-minus": "\f4ba",
+ "patch-plus-fill": "\f4bb",
+ "patch-plus": "\f4bc",
+ "patch-question-fill": "\f4bd",
+ "patch-question": "\f4be",
+ "pause-btn-fill": "\f4bf",
+ "pause-btn": "\f4c0",
+ "pause-circle-fill": "\f4c1",
+ "pause-circle": "\f4c2",
+ "pause-fill": "\f4c3",
+ "pause": "\f4c4",
+ "peace-fill": "\f4c5",
+ "peace": "\f4c6",
+ "pen-fill": "\f4c7",
+ "pen": "\f4c8",
+ "pencil-fill": "\f4c9",
+ "pencil-square": "\f4ca",
+ "pencil": "\f4cb",
+ "pentagon-fill": "\f4cc",
+ "pentagon-half": "\f4cd",
+ "pentagon": "\f4ce",
+ "people-fill": "\f4cf",
+ "people": "\f4d0",
+ "percent": "\f4d1",
+ "person-badge-fill": "\f4d2",
+ "person-badge": "\f4d3",
+ "person-bounding-box": "\f4d4",
+ "person-check-fill": "\f4d5",
+ "person-check": "\f4d6",
+ "person-circle": "\f4d7",
+ "person-dash-fill": "\f4d8",
+ "person-dash": "\f4d9",
+ "person-fill": "\f4da",
+ "person-lines-fill": "\f4db",
+ "person-plus-fill": "\f4dc",
+ "person-plus": "\f4dd",
+ "person-square": "\f4de",
+ "person-x-fill": "\f4df",
+ "person-x": "\f4e0",
+ "person": "\f4e1",
+ "phone-fill": "\f4e2",
+ "phone-landscape-fill": "\f4e3",
+ "phone-landscape": "\f4e4",
+ "phone-vibrate-fill": "\f4e5",
+ "phone-vibrate": "\f4e6",
+ "phone": "\f4e7",
+ "pie-chart-fill": "\f4e8",
+ "pie-chart": "\f4e9",
+ "pin-angle-fill": "\f4ea",
+ "pin-angle": "\f4eb",
+ "pin-fill": "\f4ec",
+ "pin": "\f4ed",
+ "pip-fill": "\f4ee",
+ "pip": "\f4ef",
+ "play-btn-fill": "\f4f0",
+ "play-btn": "\f4f1",
+ "play-circle-fill": "\f4f2",
+ "play-circle": "\f4f3",
+ "play-fill": "\f4f4",
+ "play": "\f4f5",
+ "plug-fill": "\f4f6",
+ "plug": "\f4f7",
+ "plus-circle-dotted": "\f4f8",
+ "plus-circle-fill": "\f4f9",
+ "plus-circle": "\f4fa",
+ "plus-square-dotted": "\f4fb",
+ "plus-square-fill": "\f4fc",
+ "plus-square": "\f4fd",
+ "plus": "\f4fe",
+ "power": "\f4ff",
+ "printer-fill": "\f500",
+ "printer": "\f501",
+ "puzzle-fill": "\f502",
+ "puzzle": "\f503",
+ "question-circle-fill": "\f504",
+ "question-circle": "\f505",
+ "question-diamond-fill": "\f506",
+ "question-diamond": "\f507",
+ "question-octagon-fill": "\f508",
+ "question-octagon": "\f509",
+ "question-square-fill": "\f50a",
+ "question-square": "\f50b",
+ "question": "\f50c",
+ "rainbow": "\f50d",
+ "receipt-cutoff": "\f50e",
+ "receipt": "\f50f",
+ "reception-0": "\f510",
+ "reception-1": "\f511",
+ "reception-2": "\f512",
+ "reception-3": "\f513",
+ "reception-4": "\f514",
+ "record-btn-fill": "\f515",
+ "record-btn": "\f516",
+ "record-circle-fill": "\f517",
+ "record-circle": "\f518",
+ "record-fill": "\f519",
+ "record": "\f51a",
+ "record2-fill": "\f51b",
+ "record2": "\f51c",
+ "reply-all-fill": "\f51d",
+ "reply-all": "\f51e",
+ "reply-fill": "\f51f",
+ "reply": "\f520",
+ "rss-fill": "\f521",
+ "rss": "\f522",
+ "rulers": "\f523",
+ "save-fill": "\f524",
+ "save": "\f525",
+ "save2-fill": "\f526",
+ "save2": "\f527",
+ "scissors": "\f528",
+ "screwdriver": "\f529",
+ "search": "\f52a",
+ "segmented-nav": "\f52b",
+ "server": "\f52c",
+ "share-fill": "\f52d",
+ "share": "\f52e",
+ "shield-check": "\f52f",
+ "shield-exclamation": "\f530",
+ "shield-fill-check": "\f531",
+ "shield-fill-exclamation": "\f532",
+ "shield-fill-minus": "\f533",
+ "shield-fill-plus": "\f534",
+ "shield-fill-x": "\f535",
+ "shield-fill": "\f536",
+ "shield-lock-fill": "\f537",
+ "shield-lock": "\f538",
+ "shield-minus": "\f539",
+ "shield-plus": "\f53a",
+ "shield-shaded": "\f53b",
+ "shield-slash-fill": "\f53c",
+ "shield-slash": "\f53d",
+ "shield-x": "\f53e",
+ "shield": "\f53f",
+ "shift-fill": "\f540",
+ "shift": "\f541",
+ "shop-window": "\f542",
+ "shop": "\f543",
+ "shuffle": "\f544",
+ "signpost-2-fill": "\f545",
+ "signpost-2": "\f546",
+ "signpost-fill": "\f547",
+ "signpost-split-fill": "\f548",
+ "signpost-split": "\f549",
+ "signpost": "\f54a",
+ "sim-fill": "\f54b",
+ "sim": "\f54c",
+ "skip-backward-btn-fill": "\f54d",
+ "skip-backward-btn": "\f54e",
+ "skip-backward-circle-fill": "\f54f",
+ "skip-backward-circle": "\f550",
+ "skip-backward-fill": "\f551",
+ "skip-backward": "\f552",
+ "skip-end-btn-fill": "\f553",
+ "skip-end-btn": "\f554",
+ "skip-end-circle-fill": "\f555",
+ "skip-end-circle": "\f556",
+ "skip-end-fill": "\f557",
+ "skip-end": "\f558",
+ "skip-forward-btn-fill": "\f559",
+ "skip-forward-btn": "\f55a",
+ "skip-forward-circle-fill": "\f55b",
+ "skip-forward-circle": "\f55c",
+ "skip-forward-fill": "\f55d",
+ "skip-forward": "\f55e",
+ "skip-start-btn-fill": "\f55f",
+ "skip-start-btn": "\f560",
+ "skip-start-circle-fill": "\f561",
+ "skip-start-circle": "\f562",
+ "skip-start-fill": "\f563",
+ "skip-start": "\f564",
+ "slack": "\f565",
+ "slash-circle-fill": "\f566",
+ "slash-circle": "\f567",
+ "slash-square-fill": "\f568",
+ "slash-square": "\f569",
+ "slash": "\f56a",
+ "sliders": "\f56b",
+ "smartwatch": "\f56c",
+ "snow": "\f56d",
+ "snow2": "\f56e",
+ "snow3": "\f56f",
+ "sort-alpha-down-alt": "\f570",
+ "sort-alpha-down": "\f571",
+ "sort-alpha-up-alt": "\f572",
+ "sort-alpha-up": "\f573",
+ "sort-down-alt": "\f574",
+ "sort-down": "\f575",
+ "sort-numeric-down-alt": "\f576",
+ "sort-numeric-down": "\f577",
+ "sort-numeric-up-alt": "\f578",
+ "sort-numeric-up": "\f579",
+ "sort-up-alt": "\f57a",
+ "sort-up": "\f57b",
+ "soundwave": "\f57c",
+ "speaker-fill": "\f57d",
+ "speaker": "\f57e",
+ "speedometer": "\f57f",
+ "speedometer2": "\f580",
+ "spellcheck": "\f581",
+ "square-fill": "\f582",
+ "square-half": "\f583",
+ "square": "\f584",
+ "stack": "\f585",
+ "star-fill": "\f586",
+ "star-half": "\f587",
+ "star": "\f588",
+ "stars": "\f589",
+ "stickies-fill": "\f58a",
+ "stickies": "\f58b",
+ "sticky-fill": "\f58c",
+ "sticky": "\f58d",
+ "stop-btn-fill": "\f58e",
+ "stop-btn": "\f58f",
+ "stop-circle-fill": "\f590",
+ "stop-circle": "\f591",
+ "stop-fill": "\f592",
+ "stop": "\f593",
+ "stoplights-fill": "\f594",
+ "stoplights": "\f595",
+ "stopwatch-fill": "\f596",
+ "stopwatch": "\f597",
+ "subtract": "\f598",
+ "suit-club-fill": "\f599",
+ "suit-club": "\f59a",
+ "suit-diamond-fill": "\f59b",
+ "suit-diamond": "\f59c",
+ "suit-heart-fill": "\f59d",
+ "suit-heart": "\f59e",
+ "suit-spade-fill": "\f59f",
+ "suit-spade": "\f5a0",
+ "sun-fill": "\f5a1",
+ "sun": "\f5a2",
+ "sunglasses": "\f5a3",
+ "sunrise-fill": "\f5a4",
+ "sunrise": "\f5a5",
+ "sunset-fill": "\f5a6",
+ "sunset": "\f5a7",
+ "symmetry-horizontal": "\f5a8",
+ "symmetry-vertical": "\f5a9",
+ "table": "\f5aa",
+ "tablet-fill": "\f5ab",
+ "tablet-landscape-fill": "\f5ac",
+ "tablet-landscape": "\f5ad",
+ "tablet": "\f5ae",
+ "tag-fill": "\f5af",
+ "tag": "\f5b0",
+ "tags-fill": "\f5b1",
+ "tags": "\f5b2",
+ "telegram": "\f5b3",
+ "telephone-fill": "\f5b4",
+ "telephone-forward-fill": "\f5b5",
+ "telephone-forward": "\f5b6",
+ "telephone-inbound-fill": "\f5b7",
+ "telephone-inbound": "\f5b8",
+ "telephone-minus-fill": "\f5b9",
+ "telephone-minus": "\f5ba",
+ "telephone-outbound-fill": "\f5bb",
+ "telephone-outbound": "\f5bc",
+ "telephone-plus-fill": "\f5bd",
+ "telephone-plus": "\f5be",
+ "telephone-x-fill": "\f5bf",
+ "telephone-x": "\f5c0",
+ "telephone": "\f5c1",
+ "terminal-fill": "\f5c2",
+ "terminal": "\f5c3",
+ "text-center": "\f5c4",
+ "text-indent-left": "\f5c5",
+ "text-indent-right": "\f5c6",
+ "text-left": "\f5c7",
+ "text-paragraph": "\f5c8",
+ "text-right": "\f5c9",
+ "textarea-resize": "\f5ca",
+ "textarea-t": "\f5cb",
+ "textarea": "\f5cc",
+ "thermometer-half": "\f5cd",
+ "thermometer-high": "\f5ce",
+ "thermometer-low": "\f5cf",
+ "thermometer-snow": "\f5d0",
+ "thermometer-sun": "\f5d1",
+ "thermometer": "\f5d2",
+ "three-dots-vertical": "\f5d3",
+ "three-dots": "\f5d4",
+ "toggle-off": "\f5d5",
+ "toggle-on": "\f5d6",
+ "toggle2-off": "\f5d7",
+ "toggle2-on": "\f5d8",
+ "toggles": "\f5d9",
+ "toggles2": "\f5da",
+ "tools": "\f5db",
+ "tornado": "\f5dc",
+ "trash-fill": "\f5dd",
+ "trash": "\f5de",
+ "trash2-fill": "\f5df",
+ "trash2": "\f5e0",
+ "tree-fill": "\f5e1",
+ "tree": "\f5e2",
+ "triangle-fill": "\f5e3",
+ "triangle-half": "\f5e4",
+ "triangle": "\f5e5",
+ "trophy-fill": "\f5e6",
+ "trophy": "\f5e7",
+ "tropical-storm": "\f5e8",
+ "truck-flatbed": "\f5e9",
+ "truck": "\f5ea",
+ "tsunami": "\f5eb",
+ "tv-fill": "\f5ec",
+ "tv": "\f5ed",
+ "twitch": "\f5ee",
+ "twitter": "\f5ef",
+ "type-bold": "\f5f0",
+ "type-h1": "\f5f1",
+ "type-h2": "\f5f2",
+ "type-h3": "\f5f3",
+ "type-italic": "\f5f4",
+ "type-strikethrough": "\f5f5",
+ "type-underline": "\f5f6",
+ "type": "\f5f7",
+ "ui-checks-grid": "\f5f8",
+ "ui-checks": "\f5f9",
+ "ui-radios-grid": "\f5fa",
+ "ui-radios": "\f5fb",
+ "umbrella-fill": "\f5fc",
+ "umbrella": "\f5fd",
+ "union": "\f5fe",
+ "unlock-fill": "\f5ff",
+ "unlock": "\f600",
+ "upc-scan": "\f601",
+ "upc": "\f602",
+ "upload": "\f603",
+ "vector-pen": "\f604",
+ "view-list": "\f605",
+ "view-stacked": "\f606",
+ "vinyl-fill": "\f607",
+ "vinyl": "\f608",
+ "voicemail": "\f609",
+ "volume-down-fill": "\f60a",
+ "volume-down": "\f60b",
+ "volume-mute-fill": "\f60c",
+ "volume-mute": "\f60d",
+ "volume-off-fill": "\f60e",
+ "volume-off": "\f60f",
+ "volume-up-fill": "\f610",
+ "volume-up": "\f611",
+ "vr": "\f612",
+ "wallet-fill": "\f613",
+ "wallet": "\f614",
+ "wallet2": "\f615",
+ "watch": "\f616",
+ "water": "\f617",
+ "whatsapp": "\f618",
+ "wifi-1": "\f619",
+ "wifi-2": "\f61a",
+ "wifi-off": "\f61b",
+ "wifi": "\f61c",
+ "wind": "\f61d",
+ "window-dock": "\f61e",
+ "window-sidebar": "\f61f",
+ "window": "\f620",
+ "wrench": "\f621",
+ "x-circle-fill": "\f622",
+ "x-circle": "\f623",
+ "x-diamond-fill": "\f624",
+ "x-diamond": "\f625",
+ "x-octagon-fill": "\f626",
+ "x-octagon": "\f627",
+ "x-square-fill": "\f628",
+ "x-square": "\f629",
+ "x": "\f62a",
+ "youtube": "\f62b",
+ "zoom-in": "\f62c",
+ "zoom-out": "\f62d",
+ "bank": "\f62e",
+ "bank2": "\f62f",
+ "bell-slash-fill": "\f630",
+ "bell-slash": "\f631",
+ "cash-coin": "\f632",
+ "check-lg": "\f633",
+ "coin": "\f634",
+ "currency-bitcoin": "\f635",
+ "currency-dollar": "\f636",
+ "currency-euro": "\f637",
+ "currency-exchange": "\f638",
+ "currency-pound": "\f639",
+ "currency-yen": "\f63a",
+ "dash-lg": "\f63b",
+ "exclamation-lg": "\f63c",
+ "file-earmark-pdf-fill": "\f63d",
+ "file-earmark-pdf": "\f63e",
+ "file-pdf-fill": "\f63f",
+ "file-pdf": "\f640",
+ "gender-ambiguous": "\f641",
+ "gender-female": "\f642",
+ "gender-male": "\f643",
+ "gender-trans": "\f644",
+ "headset-vr": "\f645",
+ "info-lg": "\f646",
+ "mastodon": "\f647",
+ "messenger": "\f648",
+ "piggy-bank-fill": "\f649",
+ "piggy-bank": "\f64a",
+ "pin-map-fill": "\f64b",
+ "pin-map": "\f64c",
+ "plus-lg": "\f64d",
+ "question-lg": "\f64e",
+ "recycle": "\f64f",
+ "reddit": "\f650",
+ "safe-fill": "\f651",
+ "safe2-fill": "\f652",
+ "safe2": "\f653",
+ "sd-card-fill": "\f654",
+ "sd-card": "\f655",
+ "skype": "\f656",
+ "slash-lg": "\f657",
+ "translate": "\f658",
+ "x-lg": "\f659",
+ "safe": "\f65a",
+ "apple": "\f65b",
+ "microsoft": "\f65d",
+ "windows": "\f65e",
+ "behance": "\f65c",
+ "dribbble": "\f65f",
+ "line": "\f660",
+ "medium": "\f661",
+ "paypal": "\f662",
+ "pinterest": "\f663",
+ "signal": "\f664",
+ "snapchat": "\f665",
+ "spotify": "\f666",
+ "stack-overflow": "\f667",
+ "strava": "\f668",
+ "wordpress": "\f669",
+ "vimeo": "\f66a",
+ "activity": "\f66b",
+ "easel2-fill": "\f66c",
+ "easel2": "\f66d",
+ "easel3-fill": "\f66e",
+ "easel3": "\f66f",
+ "fan": "\f670",
+ "fingerprint": "\f671",
+ "graph-down-arrow": "\f672",
+ "graph-up-arrow": "\f673",
+ "hypnotize": "\f674",
+ "magic": "\f675",
+ "person-rolodex": "\f676",
+ "person-video": "\f677",
+ "person-video2": "\f678",
+ "person-video3": "\f679",
+ "person-workspace": "\f67a",
+ "radioactive": "\f67b",
+ "webcam-fill": "\f67c",
+ "webcam": "\f67d",
+ "yin-yang": "\f67e",
+ "bandaid-fill": "\f680",
+ "bandaid": "\f681",
+ "bluetooth": "\f682",
+ "body-text": "\f683",
+ "boombox": "\f684",
+ "boxes": "\f685",
+ "dpad-fill": "\f686",
+ "dpad": "\f687",
+ "ear-fill": "\f688",
+ "ear": "\f689",
+ "envelope-check-fill": "\f68b",
+ "envelope-check": "\f68c",
+ "envelope-dash-fill": "\f68e",
+ "envelope-dash": "\f68f",
+ "envelope-exclamation-fill": "\f691",
+ "envelope-exclamation": "\f692",
+ "envelope-plus-fill": "\f693",
+ "envelope-plus": "\f694",
+ "envelope-slash-fill": "\f696",
+ "envelope-slash": "\f697",
+ "envelope-x-fill": "\f699",
+ "envelope-x": "\f69a",
+ "explicit-fill": "\f69b",
+ "explicit": "\f69c",
+ "git": "\f69d",
+ "infinity": "\f69e",
+ "list-columns-reverse": "\f69f",
+ "list-columns": "\f6a0",
+ "meta": "\f6a1",
+ "nintendo-switch": "\f6a4",
+ "pc-display-horizontal": "\f6a5",
+ "pc-display": "\f6a6",
+ "pc-horizontal": "\f6a7",
+ "pc": "\f6a8",
+ "playstation": "\f6a9",
+ "plus-slash-minus": "\f6aa",
+ "projector-fill": "\f6ab",
+ "projector": "\f6ac",
+ "qr-code-scan": "\f6ad",
+ "qr-code": "\f6ae",
+ "quora": "\f6af",
+ "quote": "\f6b0",
+ "robot": "\f6b1",
+ "send-check-fill": "\f6b2",
+ "send-check": "\f6b3",
+ "send-dash-fill": "\f6b4",
+ "send-dash": "\f6b5",
+ "send-exclamation-fill": "\f6b7",
+ "send-exclamation": "\f6b8",
+ "send-fill": "\f6b9",
+ "send-plus-fill": "\f6ba",
+ "send-plus": "\f6bb",
+ "send-slash-fill": "\f6bc",
+ "send-slash": "\f6bd",
+ "send-x-fill": "\f6be",
+ "send-x": "\f6bf",
+ "send": "\f6c0",
+ "steam": "\f6c1",
+ "terminal-dash": "\f6c3",
+ "terminal-plus": "\f6c4",
+ "terminal-split": "\f6c5",
+ "ticket-detailed-fill": "\f6c6",
+ "ticket-detailed": "\f6c7",
+ "ticket-fill": "\f6c8",
+ "ticket-perforated-fill": "\f6c9",
+ "ticket-perforated": "\f6ca",
+ "ticket": "\f6cb",
+ "tiktok": "\f6cc",
+ "window-dash": "\f6cd",
+ "window-desktop": "\f6ce",
+ "window-fullscreen": "\f6cf",
+ "window-plus": "\f6d0",
+ "window-split": "\f6d1",
+ "window-stack": "\f6d2",
+ "window-x": "\f6d3",
+ "xbox": "\f6d4",
+ "ethernet": "\f6d5",
+ "hdmi-fill": "\f6d6",
+ "hdmi": "\f6d7",
+ "usb-c-fill": "\f6d8",
+ "usb-c": "\f6d9",
+ "usb-fill": "\f6da",
+ "usb-plug-fill": "\f6db",
+ "usb-plug": "\f6dc",
+ "usb-symbol": "\f6dd",
+ "usb": "\f6de",
+ "boombox-fill": "\f6df",
+ "displayport": "\f6e1",
+ "gpu-card": "\f6e2",
+ "memory": "\f6e3",
+ "modem-fill": "\f6e4",
+ "modem": "\f6e5",
+ "motherboard-fill": "\f6e6",
+ "motherboard": "\f6e7",
+ "optical-audio-fill": "\f6e8",
+ "optical-audio": "\f6e9",
+ "pci-card": "\f6ea",
+ "router-fill": "\f6eb",
+ "router": "\f6ec",
+ "thunderbolt-fill": "\f6ef",
+ "thunderbolt": "\f6f0",
+ "usb-drive-fill": "\f6f1",
+ "usb-drive": "\f6f2",
+ "usb-micro-fill": "\f6f3",
+ "usb-micro": "\f6f4",
+ "usb-mini-fill": "\f6f5",
+ "usb-mini": "\f6f6",
+ "cloud-haze2": "\f6f7",
+ "device-hdd-fill": "\f6f8",
+ "device-hdd": "\f6f9",
+ "device-ssd-fill": "\f6fa",
+ "device-ssd": "\f6fb",
+ "displayport-fill": "\f6fc",
+ "mortarboard-fill": "\f6fd",
+ "mortarboard": "\f6fe",
+ "terminal-x": "\f6ff",
+ "arrow-through-heart-fill": "\f700",
+ "arrow-through-heart": "\f701",
+ "badge-sd-fill": "\f702",
+ "badge-sd": "\f703",
+ "bag-heart-fill": "\f704",
+ "bag-heart": "\f705",
+ "balloon-fill": "\f706",
+ "balloon-heart-fill": "\f707",
+ "balloon-heart": "\f708",
+ "balloon": "\f709",
+ "box2-fill": "\f70a",
+ "box2-heart-fill": "\f70b",
+ "box2-heart": "\f70c",
+ "box2": "\f70d",
+ "braces-asterisk": "\f70e",
+ "calendar-heart-fill": "\f70f",
+ "calendar-heart": "\f710",
+ "calendar2-heart-fill": "\f711",
+ "calendar2-heart": "\f712",
+ "chat-heart-fill": "\f713",
+ "chat-heart": "\f714",
+ "chat-left-heart-fill": "\f715",
+ "chat-left-heart": "\f716",
+ "chat-right-heart-fill": "\f717",
+ "chat-right-heart": "\f718",
+ "chat-square-heart-fill": "\f719",
+ "chat-square-heart": "\f71a",
+ "clipboard-check-fill": "\f71b",
+ "clipboard-data-fill": "\f71c",
+ "clipboard-fill": "\f71d",
+ "clipboard-heart-fill": "\f71e",
+ "clipboard-heart": "\f71f",
+ "clipboard-minus-fill": "\f720",
+ "clipboard-plus-fill": "\f721",
+ "clipboard-pulse": "\f722",
+ "clipboard-x-fill": "\f723",
+ "clipboard2-check-fill": "\f724",
+ "clipboard2-check": "\f725",
+ "clipboard2-data-fill": "\f726",
+ "clipboard2-data": "\f727",
+ "clipboard2-fill": "\f728",
+ "clipboard2-heart-fill": "\f729",
+ "clipboard2-heart": "\f72a",
+ "clipboard2-minus-fill": "\f72b",
+ "clipboard2-minus": "\f72c",
+ "clipboard2-plus-fill": "\f72d",
+ "clipboard2-plus": "\f72e",
+ "clipboard2-pulse-fill": "\f72f",
+ "clipboard2-pulse": "\f730",
+ "clipboard2-x-fill": "\f731",
+ "clipboard2-x": "\f732",
+ "clipboard2": "\f733",
+ "emoji-kiss-fill": "\f734",
+ "emoji-kiss": "\f735",
+ "envelope-heart-fill": "\f736",
+ "envelope-heart": "\f737",
+ "envelope-open-heart-fill": "\f738",
+ "envelope-open-heart": "\f739",
+ "envelope-paper-fill": "\f73a",
+ "envelope-paper-heart-fill": "\f73b",
+ "envelope-paper-heart": "\f73c",
+ "envelope-paper": "\f73d",
+ "filetype-aac": "\f73e",
+ "filetype-ai": "\f73f",
+ "filetype-bmp": "\f740",
+ "filetype-cs": "\f741",
+ "filetype-css": "\f742",
+ "filetype-csv": "\f743",
+ "filetype-doc": "\f744",
+ "filetype-docx": "\f745",
+ "filetype-exe": "\f746",
+ "filetype-gif": "\f747",
+ "filetype-heic": "\f748",
+ "filetype-html": "\f749",
+ "filetype-java": "\f74a",
+ "filetype-jpg": "\f74b",
+ "filetype-js": "\f74c",
+ "filetype-jsx": "\f74d",
+ "filetype-key": "\f74e",
+ "filetype-m4p": "\f74f",
+ "filetype-md": "\f750",
+ "filetype-mdx": "\f751",
+ "filetype-mov": "\f752",
+ "filetype-mp3": "\f753",
+ "filetype-mp4": "\f754",
+ "filetype-otf": "\f755",
+ "filetype-pdf": "\f756",
+ "filetype-php": "\f757",
+ "filetype-png": "\f758",
+ "filetype-ppt": "\f75a",
+ "filetype-psd": "\f75b",
+ "filetype-py": "\f75c",
+ "filetype-raw": "\f75d",
+ "filetype-rb": "\f75e",
+ "filetype-sass": "\f75f",
+ "filetype-scss": "\f760",
+ "filetype-sh": "\f761",
+ "filetype-svg": "\f762",
+ "filetype-tiff": "\f763",
+ "filetype-tsx": "\f764",
+ "filetype-ttf": "\f765",
+ "filetype-txt": "\f766",
+ "filetype-wav": "\f767",
+ "filetype-woff": "\f768",
+ "filetype-xls": "\f76a",
+ "filetype-xml": "\f76b",
+ "filetype-yml": "\f76c",
+ "heart-arrow": "\f76d",
+ "heart-pulse-fill": "\f76e",
+ "heart-pulse": "\f76f",
+ "heartbreak-fill": "\f770",
+ "heartbreak": "\f771",
+ "hearts": "\f772",
+ "hospital-fill": "\f773",
+ "hospital": "\f774",
+ "house-heart-fill": "\f775",
+ "house-heart": "\f776",
+ "incognito": "\f777",
+ "magnet-fill": "\f778",
+ "magnet": "\f779",
+ "person-heart": "\f77a",
+ "person-hearts": "\f77b",
+ "phone-flip": "\f77c",
+ "plugin": "\f77d",
+ "postage-fill": "\f77e",
+ "postage-heart-fill": "\f77f",
+ "postage-heart": "\f780",
+ "postage": "\f781",
+ "postcard-fill": "\f782",
+ "postcard-heart-fill": "\f783",
+ "postcard-heart": "\f784",
+ "postcard": "\f785",
+ "search-heart-fill": "\f786",
+ "search-heart": "\f787",
+ "sliders2-vertical": "\f788",
+ "sliders2": "\f789",
+ "trash3-fill": "\f78a",
+ "trash3": "\f78b",
+ "valentine": "\f78c",
+ "valentine2": "\f78d",
+ "wrench-adjustable-circle-fill": "\f78e",
+ "wrench-adjustable-circle": "\f78f",
+ "wrench-adjustable": "\f790",
+ "filetype-json": "\f791",
+ "filetype-pptx": "\f792",
+ "filetype-xlsx": "\f793",
+ "1-circle-fill": "\f796",
+ "1-circle": "\f797",
+ "1-square-fill": "\f798",
+ "1-square": "\f799",
+ "2-circle-fill": "\f79c",
+ "2-circle": "\f79d",
+ "2-square-fill": "\f79e",
+ "2-square": "\f79f",
+ "3-circle-fill": "\f7a2",
+ "3-circle": "\f7a3",
+ "3-square-fill": "\f7a4",
+ "3-square": "\f7a5",
+ "4-circle-fill": "\f7a8",
+ "4-circle": "\f7a9",
+ "4-square-fill": "\f7aa",
+ "4-square": "\f7ab",
+ "5-circle-fill": "\f7ae",
+ "5-circle": "\f7af",
+ "5-square-fill": "\f7b0",
+ "5-square": "\f7b1",
+ "6-circle-fill": "\f7b4",
+ "6-circle": "\f7b5",
+ "6-square-fill": "\f7b6",
+ "6-square": "\f7b7",
+ "7-circle-fill": "\f7ba",
+ "7-circle": "\f7bb",
+ "7-square-fill": "\f7bc",
+ "7-square": "\f7bd",
+ "8-circle-fill": "\f7c0",
+ "8-circle": "\f7c1",
+ "8-square-fill": "\f7c2",
+ "8-square": "\f7c3",
+ "9-circle-fill": "\f7c6",
+ "9-circle": "\f7c7",
+ "9-square-fill": "\f7c8",
+ "9-square": "\f7c9",
+ "airplane-engines-fill": "\f7ca",
+ "airplane-engines": "\f7cb",
+ "airplane-fill": "\f7cc",
+ "airplane": "\f7cd",
+ "alexa": "\f7ce",
+ "alipay": "\f7cf",
+ "android": "\f7d0",
+ "android2": "\f7d1",
+ "box-fill": "\f7d2",
+ "box-seam-fill": "\f7d3",
+ "browser-chrome": "\f7d4",
+ "browser-edge": "\f7d5",
+ "browser-firefox": "\f7d6",
+ "browser-safari": "\f7d7",
+ "c-circle-fill": "\f7da",
+ "c-circle": "\f7db",
+ "c-square-fill": "\f7dc",
+ "c-square": "\f7dd",
+ "capsule-pill": "\f7de",
+ "capsule": "\f7df",
+ "car-front-fill": "\f7e0",
+ "car-front": "\f7e1",
+ "cassette-fill": "\f7e2",
+ "cassette": "\f7e3",
+ "cc-circle-fill": "\f7e6",
+ "cc-circle": "\f7e7",
+ "cc-square-fill": "\f7e8",
+ "cc-square": "\f7e9",
+ "cup-hot-fill": "\f7ea",
+ "cup-hot": "\f7eb",
+ "currency-rupee": "\f7ec",
+ "dropbox": "\f7ed",
+ "escape": "\f7ee",
+ "fast-forward-btn-fill": "\f7ef",
+ "fast-forward-btn": "\f7f0",
+ "fast-forward-circle-fill": "\f7f1",
+ "fast-forward-circle": "\f7f2",
+ "fast-forward-fill": "\f7f3",
+ "fast-forward": "\f7f4",
+ "filetype-sql": "\f7f5",
+ "fire": "\f7f6",
+ "google-play": "\f7f7",
+ "h-circle-fill": "\f7fa",
+ "h-circle": "\f7fb",
+ "h-square-fill": "\f7fc",
+ "h-square": "\f7fd",
+ "indent": "\f7fe",
+ "lungs-fill": "\f7ff",
+ "lungs": "\f800",
+ "microsoft-teams": "\f801",
+ "p-circle-fill": "\f804",
+ "p-circle": "\f805",
+ "p-square-fill": "\f806",
+ "p-square": "\f807",
+ "pass-fill": "\f808",
+ "pass": "\f809",
+ "prescription": "\f80a",
+ "prescription2": "\f80b",
+ "r-circle-fill": "\f80e",
+ "r-circle": "\f80f",
+ "r-square-fill": "\f810",
+ "r-square": "\f811",
+ "repeat-1": "\f812",
+ "repeat": "\f813",
+ "rewind-btn-fill": "\f814",
+ "rewind-btn": "\f815",
+ "rewind-circle-fill": "\f816",
+ "rewind-circle": "\f817",
+ "rewind-fill": "\f818",
+ "rewind": "\f819",
+ "train-freight-front-fill": "\f81a",
+ "train-freight-front": "\f81b",
+ "train-front-fill": "\f81c",
+ "train-front": "\f81d",
+ "train-lightrail-front-fill": "\f81e",
+ "train-lightrail-front": "\f81f",
+ "truck-front-fill": "\f820",
+ "truck-front": "\f821",
+ "ubuntu": "\f822",
+ "unindent": "\f823",
+ "unity": "\f824",
+ "universal-access-circle": "\f825",
+ "universal-access": "\f826",
+ "virus": "\f827",
+ "virus2": "\f828",
+ "wechat": "\f829",
+ "yelp": "\f82a",
+ "sign-stop-fill": "\f82b",
+ "sign-stop-lights-fill": "\f82c",
+ "sign-stop-lights": "\f82d",
+ "sign-stop": "\f82e",
+ "sign-turn-left-fill": "\f82f",
+ "sign-turn-left": "\f830",
+ "sign-turn-right-fill": "\f831",
+ "sign-turn-right": "\f832",
+ "sign-turn-slight-left-fill": "\f833",
+ "sign-turn-slight-left": "\f834",
+ "sign-turn-slight-right-fill": "\f835",
+ "sign-turn-slight-right": "\f836",
+ "sign-yield-fill": "\f837",
+ "sign-yield": "\f838",
+ "ev-station-fill": "\f839",
+ "ev-station": "\f83a",
+ "fuel-pump-diesel-fill": "\f83b",
+ "fuel-pump-diesel": "\f83c",
+ "fuel-pump-fill": "\f83d",
+ "fuel-pump": "\f83e",
+ "0-circle-fill": "\f83f",
+ "0-circle": "\f840",
+ "0-square-fill": "\f841",
+ "0-square": "\f842",
+ "rocket-fill": "\f843",
+ "rocket-takeoff-fill": "\f844",
+ "rocket-takeoff": "\f845",
+ "rocket": "\f846",
+ "stripe": "\f847",
+ "subscript": "\f848",
+ "superscript": "\f849",
+ "trello": "\f84a",
+ "envelope-at-fill": "\f84b",
+ "envelope-at": "\f84c",
+ "regex": "\f84d",
+ "text-wrap": "\f84e",
+ "sign-dead-end-fill": "\f84f",
+ "sign-dead-end": "\f850",
+ "sign-do-not-enter-fill": "\f851",
+ "sign-do-not-enter": "\f852",
+ "sign-intersection-fill": "\f853",
+ "sign-intersection-side-fill": "\f854",
+ "sign-intersection-side": "\f855",
+ "sign-intersection-t-fill": "\f856",
+ "sign-intersection-t": "\f857",
+ "sign-intersection-y-fill": "\f858",
+ "sign-intersection-y": "\f859",
+ "sign-intersection": "\f85a",
+ "sign-merge-left-fill": "\f85b",
+ "sign-merge-left": "\f85c",
+ "sign-merge-right-fill": "\f85d",
+ "sign-merge-right": "\f85e",
+ "sign-no-left-turn-fill": "\f85f",
+ "sign-no-left-turn": "\f860",
+ "sign-no-parking-fill": "\f861",
+ "sign-no-parking": "\f862",
+ "sign-no-right-turn-fill": "\f863",
+ "sign-no-right-turn": "\f864",
+ "sign-railroad-fill": "\f865",
+ "sign-railroad": "\f866",
+ "building-add": "\f867",
+ "building-check": "\f868",
+ "building-dash": "\f869",
+ "building-down": "\f86a",
+ "building-exclamation": "\f86b",
+ "building-fill-add": "\f86c",
+ "building-fill-check": "\f86d",
+ "building-fill-dash": "\f86e",
+ "building-fill-down": "\f86f",
+ "building-fill-exclamation": "\f870",
+ "building-fill-gear": "\f871",
+ "building-fill-lock": "\f872",
+ "building-fill-slash": "\f873",
+ "building-fill-up": "\f874",
+ "building-fill-x": "\f875",
+ "building-fill": "\f876",
+ "building-gear": "\f877",
+ "building-lock": "\f878",
+ "building-slash": "\f879",
+ "building-up": "\f87a",
+ "building-x": "\f87b",
+ "buildings-fill": "\f87c",
+ "buildings": "\f87d",
+ "bus-front-fill": "\f87e",
+ "bus-front": "\f87f",
+ "ev-front-fill": "\f880",
+ "ev-front": "\f881",
+ "globe-americas": "\f882",
+ "globe-asia-australia": "\f883",
+ "globe-central-south-asia": "\f884",
+ "globe-europe-africa": "\f885",
+ "house-add-fill": "\f886",
+ "house-add": "\f887",
+ "house-check-fill": "\f888",
+ "house-check": "\f889",
+ "house-dash-fill": "\f88a",
+ "house-dash": "\f88b",
+ "house-down-fill": "\f88c",
+ "house-down": "\f88d",
+ "house-exclamation-fill": "\f88e",
+ "house-exclamation": "\f88f",
+ "house-gear-fill": "\f890",
+ "house-gear": "\f891",
+ "house-lock-fill": "\f892",
+ "house-lock": "\f893",
+ "house-slash-fill": "\f894",
+ "house-slash": "\f895",
+ "house-up-fill": "\f896",
+ "house-up": "\f897",
+ "house-x-fill": "\f898",
+ "house-x": "\f899",
+ "person-add": "\f89a",
+ "person-down": "\f89b",
+ "person-exclamation": "\f89c",
+ "person-fill-add": "\f89d",
+ "person-fill-check": "\f89e",
+ "person-fill-dash": "\f89f",
+ "person-fill-down": "\f8a0",
+ "person-fill-exclamation": "\f8a1",
+ "person-fill-gear": "\f8a2",
+ "person-fill-lock": "\f8a3",
+ "person-fill-slash": "\f8a4",
+ "person-fill-up": "\f8a5",
+ "person-fill-x": "\f8a6",
+ "person-gear": "\f8a7",
+ "person-lock": "\f8a8",
+ "person-slash": "\f8a9",
+ "person-up": "\f8aa",
+ "scooter": "\f8ab",
+ "taxi-front-fill": "\f8ac",
+ "taxi-front": "\f8ad",
+ "amd": "\f8ae",
+ "database-add": "\f8af",
+ "database-check": "\f8b0",
+ "database-dash": "\f8b1",
+ "database-down": "\f8b2",
+ "database-exclamation": "\f8b3",
+ "database-fill-add": "\f8b4",
+ "database-fill-check": "\f8b5",
+ "database-fill-dash": "\f8b6",
+ "database-fill-down": "\f8b7",
+ "database-fill-exclamation": "\f8b8",
+ "database-fill-gear": "\f8b9",
+ "database-fill-lock": "\f8ba",
+ "database-fill-slash": "\f8bb",
+ "database-fill-up": "\f8bc",
+ "database-fill-x": "\f8bd",
+ "database-fill": "\f8be",
+ "database-gear": "\f8bf",
+ "database-lock": "\f8c0",
+ "database-slash": "\f8c1",
+ "database-up": "\f8c2",
+ "database-x": "\f8c3",
+ "database": "\f8c4",
+ "houses-fill": "\f8c5",
+ "houses": "\f8c6",
+ "nvidia": "\f8c7",
+ "person-vcard-fill": "\f8c8",
+ "person-vcard": "\f8c9",
+ "sina-weibo": "\f8ca",
+ "tencent-qq": "\f8cb",
+ "wikipedia": "\f8cc",
+ "alphabet-uppercase": "\f2a5",
+ "alphabet": "\f68a",
+ "amazon": "\f68d",
+ "arrows-collapse-vertical": "\f690",
+ "arrows-expand-vertical": "\f695",
+ "arrows-vertical": "\f698",
+ "arrows": "\f6a2",
+ "ban-fill": "\f6a3",
+ "ban": "\f6b6",
+ "bing": "\f6c2",
+ "cake": "\f6e0",
+ "cake2": "\f6ed",
+ "cookie": "\f6ee",
+ "copy": "\f759",
+ "crosshair": "\f769",
+ "crosshair2": "\f794",
+ "emoji-astonished-fill": "\f795",
+ "emoji-astonished": "\f79a",
+ "emoji-grimace-fill": "\f79b",
+ "emoji-grimace": "\f7a0",
+ "emoji-grin-fill": "\f7a1",
+ "emoji-grin": "\f7a6",
+ "emoji-surprise-fill": "\f7a7",
+ "emoji-surprise": "\f7ac",
+ "emoji-tear-fill": "\f7ad",
+ "emoji-tear": "\f7b2",
+ "envelope-arrow-down-fill": "\f7b3",
+ "envelope-arrow-down": "\f7b8",
+ "envelope-arrow-up-fill": "\f7b9",
+ "envelope-arrow-up": "\f7be",
+ "feather": "\f7bf",
+ "feather2": "\f7c4",
+ "floppy-fill": "\f7c5",
+ "floppy": "\f7d8",
+ "floppy2-fill": "\f7d9",
+ "floppy2": "\f7e4",
+ "gitlab": "\f7e5",
+ "highlighter": "\f7f8",
+ "marker-tip": "\f802",
+ "nvme-fill": "\f803",
+ "nvme": "\f80c",
+ "opencollective": "\f80d",
+ "pci-card-network": "\f8cd",
+ "pci-card-sound": "\f8ce",
+ "radar": "\f8cf",
+ "send-arrow-down-fill": "\f8d0",
+ "send-arrow-down": "\f8d1",
+ "send-arrow-up-fill": "\f8d2",
+ "send-arrow-up": "\f8d3",
+ "sim-slash-fill": "\f8d4",
+ "sim-slash": "\f8d5",
+ "sourceforge": "\f8d6",
+ "substack": "\f8d7",
+ "threads-fill": "\f8d8",
+ "threads": "\f8d9",
+ "transparency": "\f8da",
+ "twitter-x": "\f8db",
+ "type-h4": "\f8dc",
+ "type-h5": "\f8dd",
+ "type-h6": "\f8de",
+ "backpack-fill": "\f8df",
+ "backpack": "\f8e0",
+ "backpack2-fill": "\f8e1",
+ "backpack2": "\f8e2",
+ "backpack3-fill": "\f8e3",
+ "backpack3": "\f8e4",
+ "backpack4-fill": "\f8e5",
+ "backpack4": "\f8e6",
+ "brilliance": "\f8e7",
+ "cake-fill": "\f8e8",
+ "cake2-fill": "\f8e9",
+ "duffle-fill": "\f8ea",
+ "duffle": "\f8eb",
+ "exposure": "\f8ec",
+ "gender-neuter": "\f8ed",
+ "highlights": "\f8ee",
+ "luggage-fill": "\f8ef",
+ "luggage": "\f8f0",
+ "mailbox-flag": "\f8f1",
+ "mailbox2-flag": "\f8f2",
+ "noise-reduction": "\f8f3",
+ "passport-fill": "\f8f4",
+ "passport": "\f8f5",
+ "person-arms-up": "\f8f6",
+ "person-raised-hand": "\f8f7",
+ "person-standing-dress": "\f8f8",
+ "person-standing": "\f8f9",
+ "person-walking": "\f8fa",
+ "person-wheelchair": "\f8fb",
+ "shadows": "\f8fc",
+ "suitcase-fill": "\f8fd",
+ "suitcase-lg-fill": "\f8fe",
+ "suitcase-lg": "\f8ff",
+ "suitcase": "\f900",
+ "suitcase2-fill": "\f901",
+ "suitcase2": "\f902",
+ "vignette": "\f903",
+);
+
+@each $icon, $codepoint in $bootstrap-icons-map {
+ .bi-#{$icon}::before { content: $codepoint; }
+}
diff --git a/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff b/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff
new file mode 100644
index 00000000000..51204d27de9
Binary files /dev/null and b/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff differ
diff --git a/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff2 b/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff2
new file mode 100644
index 00000000000..92c48302160
Binary files /dev/null and b/markbind/bootstrap-icons/font/fonts/bootstrap-icons.woff2 differ
diff --git a/markbind/css/markbind.min.css b/markbind/css/markbind.min.css
index 911f688dc1a..013a111a9cf 100644
--- a/markbind/css/markbind.min.css
+++ b/markbind/css/markbind.min.css
@@ -1 +1 @@
-.resize-observer[data-v-8859cc6c]{background-color:transparent;border:none;opacity:0}.resize-observer[data-v-8859cc6c],.resize-observer[data-v-8859cc6c] object{display:block;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.v-popper__popper{left:0;top:0;z-index:10000}.v-popper__popper.v-popper__popper--hidden{opacity:0;pointer-events:none;transition:opacity .15s,visibility .15s;visibility:hidden}.v-popper__popper.v-popper__popper--shown{opacity:1;transition:opacity .15s;visibility:visible}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{display:none;height:100%;left:0;position:absolute;top:0;width:100%}.v-popper__inner{box-sizing:border-box;overflow-y:auto;position:relative}.v-popper__inner>div{max-height:inherit;max-width:inherit;position:relative;z-index:1}.v-popper__arrow-container{height:10px;position:absolute;width:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;height:0;left:0;position:absolute;top:0;width:0}.v-popper__arrow-inner{border-width:7px;visibility:hidden}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;border-top-width:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-left-color:transparent!important;border-left-width:0;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-right-color:transparent!important;border-right-width:0;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-dropdown .v-popper__inner{background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 6px 30px #0000001a;color:#000}.v-popper--theme-dropdown .v-popper__arrow-inner{border-color:#fff;visibility:visible}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);border-radius:6px;color:#fff;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.box-container[data-v-0eabf1c4]{border-radius:6px;padding:0}.box-header-wrapper[data-v-0eabf1c4]{align-items:center;border-radius:6px 6px 0 0;display:flex;flex-direction:row;padding:.4rem 1.25rem .28rem;width:100%}.box-body-wrapper[data-v-0eabf1c4]{display:flex;flex-direction:row;padding:.75rem 1.25rem;width:100%}.box-container.seamless>.header-and-body>.box-body-wrapper[data-v-0eabf1c4]{padding:.75rem .5rem}.contents[data-v-0eabf1c4]{min-width:0;padding:0 6px;width:100%}.box-container.seamless>.header-and-body>div.box-body-wrapper>.contents[data-v-0eabf1c4]{padding-left:12px}.heading[data-v-0eabf1c4]{background-color:hsla(0,0%,94%,.6);border-radius:0 6px;border-width:0;color:inherit;display:inline;float:right;font-weight:400;margin:-13px -27px 0 15px;padding:3px 5px 4px;width:auto}.box-body-wrapper-with-heading[data-v-0eabf1c4]{padding-top:.5rem}.alert-dismissible[data-v-0eabf1c4]{padding-right:4rem}.box-header[data-v-0eabf1c4]{font-weight:500}.icon-wrapper[data-v-0eabf1c4]{display:inline;margin-right:.5em;min-width:1em;text-align:center}.close-with-heading[data-v-0eabf1c4]{padding:1rem;position:absolute;right:0;top:0}.close-with-heading>span[data-v-0eabf1c4]{vertical-align:text-top}.alert-dismissible .btn-close[data-v-0eabf1c4]{padding:1rem}.contents[data-v-0eabf1c4]>:last-child{margin-bottom:0}.alert-default[data-v-0eabf1c4]{background-color:#f6f8fa;border-color:#e8ebef;color:#24292e}.alert-border-left[data-v-0eabf1c4]{background-color:#f9f8f8;border-left:solid;border-width:0 0 0 5px}.vertical-divider[data-v-0eabf1c4]{width:4px}.horizontal-divider[data-v-0eabf1c4]{height:3px;margin:0 auto;width:calc(100% - 2.5rem)}.no-background[data-v-0eabf1c4]{background:none}.no-border[data-v-0eabf1c4]{border:none}@media screen and (width <= 768px){.box-header-wrapper[data-v-0eabf1c4]{padding:.75rem .75rem .1rem}.box-body-wrapper[data-v-0eabf1c4]{padding:.75rem}.contents[data-v-0eabf1c4]{padding:0}}div.box-header>*{margin-bottom:0}.notlink[data-v-ef898034]{color:#6d757d}.breadcrumb-divider[data-v-ef898034]{--bs-breadcrumb-divider:"›"}.breadcrumb-item[data-v-ef898034]:before,.breadcrumb-marker[data-v-ef898034]{font-size:15px}.dropdown-submenu[data-v-3c82541c]{color:#212529!important;padding:0!important;position:relative}.dropdown-submenu ul.dropdown-menu[data-v-3c82541c]{margin-left:0}.btn-group>ul>.dropdown-submenu:last-child>ul[data-v-3c82541c],.dropdown>ul>.dropdown-submenu:last-child>ul[data-v-3c82541c]{margin-bottom:-.5rem}@media (width >= 768px){.submenu-toggle[data-v-3c82541c]:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;float:right;height:0;margin-top:.5em;vertical-align:.255em;width:0}}@media (width <= 767px){.dropdown-submenu>ul[data-v-3c82541c]{border-radius:0;float:none;margin:-.05rem;padding-bottom:0;position:static}.submenu-toggle[data-v-3c82541c]:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";display:inline-block;float:right;height:0;margin-left:.255em;margin-top:.5em;vertical-align:.255em;width:0}.navbar-default .dropdown[data-v-ccda25c0]{position:static}.navbar-default .dropdown-menu[data-v-ccda25c0]{max-height:75vh;max-width:100%;overflow-y:auto;overscroll-behavior:contain;position:absolute}.navbar-default .dropdown-menu-end[data-v-ccda25c0]{right:auto}}.secret[data-v-ccda25c0]{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.btn-with-before[data-v-ccda25c0]{padding-left:.2rem;padding-right:.4rem}.dropdown-toggle[data-v-ccda25c0]{cursor:pointer;display:block;width:max-content}.navbar .dropdown-toggle[data-v-ccda25c0]{text-decoration:none}.nav-link>.nav-link[data-v-ccda25c0]{padding:0}.toggle-site-nav-button[data-v-d6ffaa8e]{cursor:pointer;height:53px;left:0;padding:15px;position:absolute;transform:rotate(0deg);transition:all .25s ease-in-out;width:52px}.toggle-site-nav-button span[data-v-d6ffaa8e]{background-color:#000;display:block;height:3px;left:15px;position:absolute;top:50%;transition:all .25s ease-in-out;width:21px}.toggle-site-nav-button>span[data-v-d6ffaa8e]:first-child{transform:translateY(-8px)}.toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(2){transform-origin:100% 50%}.toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(3){transform:translateY(8px)}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:first-child{transform:rotate(135deg)}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(2){left:-60px;opacity:0}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(3){transform:rotate(-135deg)}.toggle-page-nav-button[data-v-4b08b1df]{cursor:pointer;padding:15px;position:absolute;right:0;top:6px}.toggle-page-nav-button span[data-v-4b08b1df]{background-color:#000;border-radius:50%;display:block;height:5px;margin-top:2px;position:absolute;right:15px;transform:rotate(0deg);transition:all .25s ease-in-out;width:5px}.toggle-page-nav-button>span[data-v-4b08b1df]:first-child{transform:translateY(-8px)}.toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(2){transform-origin:100% 50%}.toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(3){transform:translateY(8px)}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:first-child{border-radius:0;height:3px;transform:rotate(135deg);width:21px}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(2){transform:scale(0)}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(3){border-radius:0;height:3px;transform:rotate(-135deg);width:21px}@media (width <= 767px){.navbar[data-v-7c0fd418]{padding-bottom:0;padding-left:0;padding-right:0}.navbar-left[data-v-7c0fd418]{max-width:50%;order:1;padding-left:1rem}.navbar-left [data-v-7c0fd418]{white-space:normal}.navbar-right[data-v-7c0fd418]{max-width:50%;order:1;padding:0 16px}.navbar-default[data-v-7c0fd418]{-ms-overflow-style:none;display:block;margin-top:.3125rem;order:2;overflow-x:scroll;scrollbar-width:none;width:100%}.navbar-default[data-v-7c0fd418]::-webkit-scrollbar{display:none}.navbar-default ul[data-v-7c0fd418]{flex-direction:row;margin-top:0!important;width:100%}.navbar-default>ul>[data-v-7c0fd418]{background:rgba(0,0,0,.2);flex-grow:1;padding:.3125rem .625rem}.navbar-light .navbar-default>ul>[data-v-7c0fd418]{background:rgb(0 0 0/5%)}.navbar-default>ul>.current[data-v-7c0fd418]{background:transparent}.navbar-default a[data-v-7c0fd418],[data-v-7c0fd418] .dropdown-toggle{margin:0 auto;width:max-content}[data-v-7c0fd418] .dropdown{align-items:center;display:flex}.container-fluid[data-v-7c0fd418]{padding:0}}.navbar-brand[data-v-7c0fd418]{display:inline-block}.navbar-brand>img[data-v-7c0fd418],.navbar-brand>svg[data-v-7c0fd418]{display:block}.navbar-right[data-v-7c0fd418]{padding-right:1rem}.navbar-left[data-v-7c0fd418]{align-items:center;display:flex;font-size:1.25rem;line-height:inherit;padding:.3125rem 1rem;white-space:nowrap}.navbar-fixed[data-v-7c0fd418]{position:fixed;width:100%;z-index:1000}.navbar-default[data-v-7c0fd418]{align-items:center;display:flex;flex-basis:auto;flex-grow:1}[data-v-7c0fd418] .dropdown-current{background:#007bff;color:#fff!important}.lower-navbar-container[data-v-7c0fd418]{background-color:#fff;border-bottom:1px solid #c1c1c1;height:50px;position:relative;width:100%}.navbar.navbar-dark .navbar-nav[data-v-7c0fd418] .current:not(.dropdown) a,.navbar.navbar-dark .navbar-nav[data-v-7c0fd418] .dropdown.current>a{color:#fff}.navbar.navbar-light .navbar-nav[data-v-7c0fd418] .current:not(.dropdown) a,.navbar.navbar-light .navbar-nav[data-v-7c0fd418] .dropdown.current>a{color:#000}.collapse-button{float:right;font-size:10px!important;margin-left:3px;margin-top:2px;padding:3px 8px!important}.collapse-icon{transition:transform .4s ease-in-out}.collapse-icon.opened{transform:rotate(-180deg)}.card-container[data-v-3602e6fc]{scroll-margin-top:var(--sticky-header-height)}.card-collapse[data-v-3602e6fc]{overflow:hidden;transition:max-height .5s ease-in-out}.seamless-button[data-v-3602e6fc]{opacity:0;transition:opacity .3s}.card-header:hover .seamless-button[data-v-3602e6fc]{opacity:1}.card-peek-collapsed[data-v-3602e6fc]{position:relative}.card-peek-collapsed[data-v-3602e6fc]:after{background-image:linear-gradient(180deg,transparent,#fff 90%);bottom:0;content:"";height:125px;position:absolute;width:100%}.peek-read-more[data-v-3602e6fc]{opacity:.2;transition:opacity .5s;z-index:1}.peek-read-more[data-v-3602e6fc]:before{bottom:10px;position:absolute;text-align:center;width:100%}.peek-read-more[data-v-3602e6fc]:hover{cursor:pointer;opacity:.4}.peek-read-more-fade-enter[data-v-3602e6fc],.peek-read-more-fade-leave-to[data-v-3602e6fc]{opacity:0}.card-heading{width:100%}.card-title{display:inline-block;font-size:1em;line-height:1.2em;margin:0;text-align:left;white-space:normal}.card-title *{margin-bottom:0!important}.caret-wrapper{float:left;width:32px}.minimal-caret-wrapper{display:inline-block;font-size:13px;margin-right:5px}.header-wrapper{display:inline-block;transition:opacity .5s;width:calc(100% - 128px)}.header-transparent{opacity:0}.button-wrapper{float:right;width:96px}.header-toggle{cursor:pointer}.expandable-card{margin-bottom:0!important;margin-top:5px}.card-collapse>hr{margin-top:0}.card-group>.card-container>.expandable-card{margin-top:0!important}.bottom-button-wrapper{margin-bottom:13px;padding-bottom:13px}.bottom-button-wrapper>.collapse-button{margin-top:5px;opacity:.2}.bottom-button-wrapper>.collapse-button:hover{opacity:1}.close-button{margin-left:3px}.close-button,.popup-button{float:right;font-size:10px!important;margin-top:2px;padding:3px 8px!important}.morph{display:inline-block}.morph-display-wrapper{align-items:center;display:flex;margin-top:5px}@media (width <= 575.98px){.header-wrapper{display:inline-block;width:calc(100% - 64px)}.button-wrapper{float:right;width:32px}.card-body{padding:.5rem}.card-collapse>hr{margin-top:.5rem}.card-header{padding:.5rem}}.card-peek-collapsed[data-v-6cec1f15]{position:relative}.card-peek-collapsed[data-v-6cec1f15]:after{background-image:linear-gradient(180deg,transparent,#fff 90%);bottom:0;content:"";height:125px;position:absolute;width:100%}.morph-title[data-v-6cec1f15]{background-color:transparent;border-color:#000;padding:0 .3em;vertical-align:top}.morph-title[data-v-6cec1f15]:active,.morph-title[data-v-6cec1f15]:focus,.morph-title[data-v-6cec1f15]:hover{background-color:#343a40;border-color:#343a40;color:#fff}.card-collapse[data-v-6cec1f15]{overflow:hidden;transition:max-height .5s ease-in-out}.card-flex[data-v-6cec1f15]{border:0;display:flex;flex-direction:column;margin:0}.header-fade-enter[data-v-6cec1f15]{opacity:0}.header-fade-leave-active[data-v-6cec1f15]{position:absolute}.header-fade-leave-to[data-v-6cec1f15]{opacity:0!important}.card-title-inline[data-v-6cec1f15]{display:inline-block}.card-body[data-v-6cec1f15]{padding:0}.header-wrapper[data-v-6cec1f15]{background-color:#fff;display:inline-block;width:100%}.header-wrapper-bottom[data-v-6cec1f15]{order:1}.ellipses[data-v-6cec1f15]:before{bottom:3px;content:"...";font-weight:900;margin-right:4px;position:relative}.button-wrapper[data-v-6cec1f15]{border:solid hsla(0,0%,59%,.2);border-width:0 0 0 1px;display:inline-block;float:none;margin-left:2px;opacity:0;padding-left:2px;transition:opacity .5s;vertical-align:text-top;width:auto}.button-wrapper-expanded[data-v-6cec1f15]{border:0;margin-left:0;padding-left:0}.card:hover .button-wrapper[data-v-6cec1f15]{opacity:1}.header-toggle[data-v-6cec1f15]{cursor:pointer}.glyphicon[data-v-6cec1f15]{font-size:12px}.minimal-button[data-v-6cec1f15]{background-color:transparent;border:0;color:#969696;cursor:pointer;padding:0 3px}.minimal-button[data-v-6cec1f15]:active,.minimal-button[data-v-6cec1f15]:focus,.minimal-button[data-v-6cec1f15]:hover{color:#1e1e1e}.minimal-popup-button[data-v-6cec1f15]{font-size:9px;top:1px}.minimal-menu-up[data-v-6cec1f15]{font-size:13px;top:2px}.minimal-menu-down[data-v-6cec1f15]{font-size:13px;top:1px}.minimal-close-button[data-v-6cec1f15]{font-size:11px;top:0}@media (width <= 575.98px){.button-wrapper-expanded[data-v-6cec1f15]{border:0;margin-left:0;opacity:.15;padding-left:0}.button-wrapper-visible[data-v-6cec1f15]{opacity:1}}.annotate-image-wrapper{display:inline-block;position:relative;text-align:left}.annotate-image{height:auto;max-width:100%}.annotate-point{bottom:0;left:0;pointer-events:none;top:0}.annotate-point,.popover-annotation{height:100%;position:absolute;width:100%}.hover-point{border-radius:50%;border-style:solid;border-width:1px;z-index:1}.hover-label{pointer-events:none;position:absolute;text-align:center;z-index:2}.hover-wrapper{align-items:center;background:transparent;display:inline-flex;justify-content:center;z-index:0}.legend-wrapper{height:100%;position:relative}.text-header{font-size:1.1em;font-weight:500;margin-top:1em}.image-wrapper{display:inline-block;padding:4px;text-align:center}.image-caption{display:block}.quiz-container[data-v-2b2275c0]{isolation:isolate;overflow:hidden}.intro-outro-card[data-v-2b2275c0]{transition:transform .35s ease-out,opacity .35s linear}.intro-outro-card-enter-active[data-v-2b2275c0],.intro-outro-card-leave-to[data-v-2b2275c0]{opacity:0}.intro-outro-card>.card-body[data-v-2b2275c0]{align-items:center;display:flex;flex-direction:column;justify-content:center}.score[data-v-2b2275c0]{font-size:1.4rem;font-weight:700}.score-circle[data-v-2b2275c0]{stroke-dasharray:264;fill:none;stroke:rgba(132,215,255,.8);stroke-width:8;transition:stroke-dashoffset 1.5s ease-out,stroke 1.5s linear}.score-background-circle[data-v-2b2275c0]{fill:none;stroke:hsla(0,2%,89%,.5);stroke-width:8}.btn[data-v-2b2275c0]{border-radius:2em}.progress-bar-z[data-v-2b2275c0]{z-index:1}.result-icon[data-v-ae369d74]{align-items:center;border-radius:2em;border-style:solid;border-width:2px;display:inline-flex;height:2em;justify-content:center;width:2em}.question[data-v-ae369d74]{margin-bottom:1rem;transition:transform .35s ease-out,opacity .35s linear}.question-enter-active[data-v-ae369d74]{opacity:0;transform:translateY(-2%)}.question-leave-to[data-v-ae369d74]{opacity:0;transform:translateY(2%)}.q-btn[data-v-ae369d74]{border-radius:2.5em;transition:opacity .5s,transform .7s}.q-btn-enter[data-v-ae369d74]{opacity:0;transform:translateY(30px)}.q-btn-leave-to[data-v-ae369d74]{opacity:0;transform:translateX(calc(-100% - .25rem))}.q-btn-leave-active[data-v-ae369d74]{position:absolute}.card-header[data-v-ae369d74]{font-size:1.05em;font-weight:400}.answer[data-v-ae369d74]>:last-child,.card-header[data-v-ae369d74]>:last-child{margin-bottom:0}@keyframes shake-data-v-ae369d74{50%{transform:translate(-2px)}to{transform:translate(2px)}}.shake[data-v-ae369d74]{animation:shake-data-v-ae369d74 .15s;animation-iteration-count:1}textarea.form-control[data-v-ae369d74]{height:auto;margin-bottom:10px;min-height:75px}.fa-check[data-v-1074287c],.fa-times[data-v-1074287c]{font-size:1.2em}.content[data-v-1074287c] :last-child,.reason[data-v-1074287c] :last-child{margin-bottom:0}.reason[data-v-1074287c]{padding:0 .5rem}.checkbox-label[data-v-1074287c]{cursor:pointer}.form-control[data-v-1074287c]{cursor:pointer;height:auto;margin-bottom:10px}.form-control.danger>.checkbox-label[data-v-1074287c],.form-control.danger[data-v-1074287c],.form-control.success>.checkbox-label[data-v-1074287c],.form-control.success[data-v-1074287c]{cursor:default}.disabled[data-v-1074287c]{opacity:.9}.radio-svg[data-v-1074287c]{height:1em;vertical-align:text-top;width:1em}.checkbox[data-v-1074287c]{height:1em;margin-right:5px;vertical-align:middle;width:1em}.row[data-v-1074287c]{align-items:center;margin:.2rem 0 0}input.form-control[data-v-1074287c]{cursor:text;height:auto;margin-bottom:0;min-height:20px;width:50%}.blanks-keywords[data-v-1074287c],input.form-control[data-v-1074287c]:disabled{margin-bottom:.5rem}.blanks-form-control[data-v-1074287c]{border:none;cursor:default}.blanks-cross[data-v-1074287c]{margin-left:3px;margin-right:3px}.fa-hashtag[data-v-98afe086],.fa-key[data-v-98afe086]{padding-right:.2em}.mark[data-v-98afe086]{padding:0!important}.heading[data-v-98afe086]{padding:0 0 .1rem .2rem}.heading-text[data-v-98afe086]{display:inline-block;vertical-align:top;white-space:normal;width:92%;word-break:break-word}.keyword-text[data-v-98afe086]{font-size:smaller}.page-title[data-v-98afe086]{font-size:1.05rem;font-weight:700}.page-headings-separator[data-v-98afe086]{margin:.2rem 0}.dropdown[data-v-cea1a814]{display:block}.form-control[data-v-cea1a814]{max-width:25.4em;min-width:12.7em}@media screen and (width <= 878px) and (orientation:portrait){.form-control[data-v-cea1a814]{max-width:16em;min-width:8em}}@media screen and (width >= 768px) and (width <= 878px) and (orientation:landscape){.form-control[data-v-cea1a814]{max-width:18em;min-width:9em}}.table-active[data-v-cea1a814]{background-color:rgba(0,0,0,.075)}.dropdown-menu-end[data-v-cea1a814]{left:auto;right:0}.placeholder-div-hidden[data-v-cea1a814]{border-bottom:0;border-top:0;height:0;overflow:hidden;padding-bottom:0;padding-top:0;visibility:hidden}.search-dropdown-menu{max-height:30em;min-width:30em;overflow-y:scroll}.dropdown-menu>li>a{cursor:pointer}@media screen and (width <= 768px){.search-dropdown-menu{max-height:30em;min-width:90vw;overflow-y:scroll}.dropdown-menu.search-dropdown-menu{position:absolute}}.tab-pane>hr[data-v-661c1b61]{margin:0}.printable-tab-header[data-v-661c1b61],.tab-pane-hide[data-v-661c1b61]{display:none}@media print{.printable-tab-header[data-v-661c1b61]{border-bottom:1px solid #dee2e6;display:flex;margin-bottom:15px}.printable-tab-header>div[data-v-661c1b61]{margin-bottom:-2px}.printable-tab-pane[data-v-661c1b61]{display:block;padding:10px}}.nav-tabs[data-v-a785351c]{margin-bottom:15px}.printable-tab-group-header[data-v-a785351c]{display:none}@media print{.printable-tab-group[data-v-a785351c]{border:1px solid #dee2e6;border-radius:5px;margin:10px 0;padding:10px}.printable-tab-group-header[data-v-a785351c]{display:block;margin-bottom:10px;text-decoration:underline}}.nav-tabs[data-v-70a68808]{margin-bottom:15px}.tab-content[data-v-70a68808]{margin-bottom:1.5rem}@media print{.printable-tabs[data-v-70a68808]{border:1px solid #dee2e6;border-radius:5px;padding:20px}}.thumb-wrapper{display:inline-block;overflow:hidden;position:relative;text-align:center;vertical-align:middle}.thumb-circle{border-radius:50%}.thumb-image{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.site-nav-root a.current{color:#0072ec}.site-nav-list{list-style-type:none;padding-left:0}.site-nav-default-list-item{cursor:pointer;display:flex;transition:background-color .08s}.site-nav-custom-list-item,.site-nav-default-list-item{color:#454545;padding:.5rem 0 0 2.8rem}.site-nav-list-item-0{font-size:1.2em;font-weight:500;padding:.5rem 0 .5rem .8rem}.site-nav-list-item-1{font-size:1.03em;padding:.4rem 0 .4rem 1.3rem}.site-nav-list-item-2{font-size:.89em;padding:.3rem 0 .3rem 1.8rem}.site-nav-list-item-3{font-size:.76em;padding:.2rem 0 .2rem 2.4rem}.site-nav-default-list-item:hover{background-color:rgba(214,233,255,.35)}.site-nav-default-list-item a{color:#454545;display:inline-block;height:100%}.site-nav-default-list-item:hover a{color:#000;text-decoration:none}.site-nav-dropdown-btn-container{display:flex;height:1.5em;margin:0 .75rem 0 auto;place-content:center center;width:2rem}.site-nav-dropdown-btn-icon{align-self:center;border-radius:1rem;display:inline-block;height:1.5em;padding:0;text-align:center;transform:rotate(0deg);transition:.4s;vertical-align:baseline;width:1.5em}.site-nav-dropdown-btn-icon:hover{background-color:#d8e3fb}.site-nav-rotate-icon{color:#4c7ff1;transform:rotate(-180deg)}.site-nav-dropdown-container{background:transparent;max-height:0;overflow:hidden;transition:max-height .15s ease-out}.site-nav-dropdown-container-open{max-height:1000px;transition:max-height .25s ease-in}.nav-menu[data-v-1a3e7aee]{display:none;overflow-y:auto;padding:0 10px 20px;position:absolute;top:100%}.nav-menu-open[data-v-1a3e7aee]{background:#fff;clear:both;display:block!important;width:100%!important}.mb-mobile-nav[data-v-e6005420]{border:none!important;display:block!important;margin:0!important;max-width:100%!important;padding:10px!important;width:100%!important}.popover-container{max-height:50vh;max-width:276px;overflow:auto}.popover-body{font-size:.875rem}.v-popper{display:inline}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.9);font-size:.875rem;max-width:200px;padding:4px 8px;text-align:center}.modal{display:block}.modal-zoom{opacity:0;transform:scale(.1);transition:all .3s}.modal-zoom-show{opacity:1;transform:scale(1);transition:all .3s}.scroll-top-button{bottom:20px;cursor:pointer;display:none;opacity:.4;position:fixed;right:30px;transition-duration:.25s;transition-property:opacity;z-index:99}.scroll-top-button.lighten{opacity:.15}@media (hover:hover){.scroll-top-button:hover{opacity:.7}}.scroll-top-button:active{opacity:1}@media print{.hljs{background:#f8f8ff;color:#333;display:block;overflow-x:auto;padding:.5em}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs span.highlighted{background:#e6e6fa}.hljs.inline{background:#f8f8f8}.hljs.inline.no-lang{color:#e83e8c}.hljs:not(.inline){border:1px solid #c8c8c8;border:1px solid hsla(0,0%,78%,.3)}.code-block-heading{background:#f2f2ff;color:#8787a5}button.function-btn{background-color:#f8f8ff}}:root{--sticky-header-height:0}a{text-decoration:none}blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1rem}code{background:#f8f8f8;border-radius:3px;padding:.2em .4em;word-break:normal}mark code{background:#ffffffd4}pre.hljs>code{background:none}pre>code.hljs{background-clip:padding-box;border-radius:5px;counter-reset:line;width:100%}pre>code.hljs[heading]{border-top-right-radius:0}.code-block{position:relative}.code-block-heading{border-radius:6px 6px 0 0;float:right;font-size:85%;line-height:1;margin-top:5px;max-width:85%;overflow-wrap:break-word;padding:.25em .4em;text-align:right}.inline-markdown-heading{line-height:1.5}.code-block-content{clear:both;display:block}@media print{pre>code.hljs{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.hljs:not(.inline).line-numbers-print>span{padding:0 .5em 0 3.5em;position:relative}.hljs:not(.inline).line-numbers-print>span:before{border-right:1px solid #ddd;color:#888;content:counter(line);counter-increment:line;display:inline-block;height:100%;left:0;margin-right:.5em;padding-right:.5em;position:absolute;text-align:right;top:0;width:3em}.hljs span.highlighted{background:#e6e6fa!important;-webkit-print-color-adjust:exact}}kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;box-shadow:inset 0 -1px 0 #959da5;color:#444d56}.btn:active,.btn:focus{box-shadow:none!important;outline:none!important}code.hljs.inline{display:initial;padding:.2em .4em}.markbind-table{width:auto}.radio-list-item,.task-list-item{list-style-type:none;margin:0 0 0 -1.2em}.radio-list-item label{font-weight:inherit}.table-striped>tbody>tr:nth-of-type(2n),.table-striped>thead{background-color:#fff}header[sticky]{position:sticky;top:0;transition:transform .3s ease-in-out;width:100%;z-index:1001}header[sticky].hide-header{transform:translateY(calc(var(--sticky-header-height)*-1))}span.anchor{position:relative;top:calc(var(--sticky-header-height)*-1 - 1rem)}#app{display:flex;flex-direction:column;min-height:100vh}footer{background-color:#f5f5f5;color:dimgrey;padding:10px 0}.dimmed{color:#777}.large{font-size:125%}.small{font-size:80%}.underline{text-decoration:underline}.mkb-text-red{color:red!important}.mkb-text-green{color:green!important}.mkb-text-blue{color:blue!important}.mkb-text-cyan{color:cyan!important}.mkb-text-magenta{color:#f0f!important}.mkb-text-yellow{color:#ff0!important}.mkb-text-black{color:#000!important}.mkb-text-white{color:#fff!important}@media (width <= 767.98px){.dropdown-menu>li>a{white-space:normal}.navbar-nav .open .dropdown-menu{background-color:#fff}}li.footnote-item:target{background-color:#eee}.hljs:not(.inline)>span{display:block}.hljs:not(.inline).line-numbers>span{padding:0 .5em 0 3.5em;position:relative}.hljs:not(.inline).line-numbers>span:before{border-right:1px solid #ddd;color:#888;content:counter(line);counter-increment:line;display:inline-block;height:100%;left:0;margin-right:.5em;padding-right:.5em;position:absolute;text-align:right;top:0;width:3em}.trigger{border-bottom:1px dotted}.trigger-click{border-bottom:1px dashed;cursor:pointer}.trigger-click:focus{outline:none}pre{display:flex;position:relative}button.function-btn{border:1px solid #d7dadc;border-radius:5px;color:#a9a9a9;cursor:pointer;display:none;margin:.17rem;padding:.35rem;position:absolute;right:0;text-align:center;white-space:nowrap}button.function-btn+button.function-btn{right:36px}pre:hover>.function-btn-container>button.function-btn{display:block}.function-btn:hover{color:gray;transition:all .5s ease}.function-btn-body{align-items:center;display:flex}.function-btn svg{fill:currentcolor}code.wrap{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.octicon{height:1em;width:1em}hr{background-color:transparent;border-top:1px solid rgba(0,0,0,.1);opacity:1}hr.dotted{border-top-style:dotted;border-top-width:.1rem}hr.double{border-top-style:double;border-top-width:.2rem}hr.dashed{border-top-style:dashed;border-top-width:.1rem}hr.thick{border-top-width:.15rem}hr.thick-1{border-top-width:.25rem}hr.thick-2{border-top-width:.5rem}hr.thick-3{border-top-width:.75rem}ol,ul{padding-left:1.5rem}h1,h2,h3,h4,h5,h6{margin-bottom:1rem;scroll-margin-top:var(--sticky-header-height)}.block-embed{overflow-x:auto;position:relative;width:100%}.block-embed iframe{height:100%;left:0;position:absolute;top:0;width:100%}#mb-page-nav{padding:.8rem 12px 0}#mb-page-nav a:link,#mb-page-nav a:visited{color:#9b9b9b;text-decoration:none}#mb-page-nav a:hover{color:#000}#mb-page-nav a.active{background-color:transparent;color:#000}.page-nav-title{color:#000;display:block;padding-left:.5rem;white-space:inherit}.nested{margin-left:5%}.no-flex-wrap{flex-wrap:nowrap}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(../fonts/KaTeX_AMS-Regular.woff) format("woff"),url(../fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Main-Bold.woff) format("woff"),url(../fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Main-Italic.woff) format("woff"),url(../fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Main-Regular.woff) format("woff"),url(../fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Math-Italic.woff) format("woff"),url(../fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(../fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Script-Regular.woff) format("woff"),url(../fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size1-Regular.woff) format("woff"),url(../fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size2-Regular.woff) format("woff"),url(../fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size3-Regular.woff) format("woff"),url(../fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size4-Regular.woff) format("woff"),url(../fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(../fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.15.6"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.katex{font-size:1em!important}eq{display:inline-block}eqn{display:block}section.eqno{align-content:space-between;align-items:center;display:flex;flex-direction:row}section.eqno>eqn{margin-left:3em;width:100%}section.eqno>span{text-align:right;width:3em}
\ No newline at end of file
+.resize-observer[data-v-8859cc6c]{background-color:transparent;border:none;opacity:0}.resize-observer[data-v-8859cc6c],.resize-observer[data-v-8859cc6c] object{display:block;height:100%;left:0;overflow:hidden;pointer-events:none;position:absolute;top:0;width:100%;z-index:-1}.v-popper__popper{left:0;top:0;z-index:10000}.v-popper__popper.v-popper__popper--hidden{opacity:0;pointer-events:none;transition:opacity .15s,visibility .15s;visibility:hidden}.v-popper__popper.v-popper__popper--shown{opacity:1;transition:opacity .15s;visibility:visible}.v-popper__popper.v-popper__popper--skip-transition,.v-popper__popper.v-popper__popper--skip-transition>.v-popper__wrapper{transition:none!important}.v-popper__backdrop{display:none;height:100%;left:0;position:absolute;top:0;width:100%}.v-popper__inner{box-sizing:border-box;overflow-y:auto;position:relative}.v-popper__inner>div{max-height:inherit;max-width:inherit;position:relative;z-index:1}.v-popper__arrow-container{height:10px;position:absolute;width:10px}.v-popper__popper--arrow-overflow .v-popper__arrow-container,.v-popper__popper--no-positioning .v-popper__arrow-container{display:none}.v-popper__arrow-inner,.v-popper__arrow-outer{border-style:solid;height:0;left:0;position:absolute;top:0;width:0}.v-popper__arrow-inner{border-width:7px;visibility:hidden}.v-popper__arrow-outer{border-width:6px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{left:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{left:-1px}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-bottom-width:0;border-left-color:transparent!important;border-right-color:transparent!important}.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{border-left-color:transparent!important;border-right-color:transparent!important;border-top-color:transparent!important;border-top-width:0}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-inner{top:-4px}.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-outer{top:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{top:-2px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{top:-1px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-left-color:transparent!important;border-left-width:0;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-inner{left:-4px}.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-outer{left:-6px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner,.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-outer{border-bottom-color:transparent!important;border-right-color:transparent!important;border-right-width:0;border-top-color:transparent!important}.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-inner{left:-2px}.v-popper--theme-dropdown .v-popper__inner{background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 6px 30px #0000001a;color:#000}.v-popper--theme-dropdown .v-popper__arrow-inner{border-color:#fff;visibility:visible}.v-popper--theme-dropdown .v-popper__arrow-outer{border-color:#ddd}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.8);border-radius:6px;color:#fff;padding:7px 12px 6px}.v-popper--theme-tooltip .v-popper__arrow-outer{border-color:#000c}.box-container[data-v-6607c59e]{border-radius:6px;padding:0}.box-header-wrapper[data-v-6607c59e]{align-items:center;border-radius:6px 6px 0 0;display:flex;flex-direction:row;padding:.4rem 1.25rem .28rem;width:100%}.box-body-wrapper[data-v-6607c59e]{display:flex;flex-direction:row;padding:.75rem 1.25rem;width:100%}.box-container.seamless>.header-and-body>.box-body-wrapper[data-v-6607c59e]{padding:.75rem .5rem}.contents[data-v-6607c59e]{min-width:0;padding:0 6px;width:100%}.box-container.seamless>.header-and-body>div.box-body-wrapper>.contents[data-v-6607c59e]{padding-left:12px}.heading[data-v-6607c59e]{background-color:hsla(0,0%,94%,.6);border-radius:0 6px;border-width:0;color:inherit;display:inline;float:right;font-weight:400;margin:-13px -27px 0 15px;padding:3px 5px 4px;width:auto}.box-body-wrapper-with-heading[data-v-6607c59e]{padding-top:.5rem}.alert-dismissible-box[data-v-6607c59e]{padding-right:4rem}.box-header[data-v-6607c59e]{font-weight:500}.icon-wrapper[data-v-6607c59e]{display:inline;margin-right:.5em;min-width:1em;text-align:center}.close-with-heading[data-v-6607c59e]{padding:1rem;position:absolute;right:0;top:0}.close-with-heading>span[data-v-6607c59e]{vertical-align:text-top}.alert-dismissible-box .btn-close[data-v-6607c59e]{padding:1rem}.contents[data-v-6607c59e]>:last-child{margin-bottom:0}.alert-default[data-v-6607c59e]{background-color:#f6f8fa;border-color:#e8ebef;color:#24292e}.alert-border-left[data-v-6607c59e]{background-color:#f9f8f8;border-left:solid;border-width:0 0 0 5px}.vertical-divider[data-v-6607c59e]{width:4px}.horizontal-divider[data-v-6607c59e]{height:3px;margin:0 auto;width:calc(100% - 2.5rem)}.no-background[data-v-6607c59e]{background:none}.no-border[data-v-6607c59e]{border:none}@media screen and (width <= 768px){.box-header-wrapper[data-v-6607c59e]{padding:.75rem .75rem .1rem}.box-body-wrapper[data-v-6607c59e]{padding:.75rem}.contents[data-v-6607c59e]{padding:0}}div.box-header>*{margin-bottom:0}.notlink[data-v-ef898034]{color:#6d757d}.breadcrumb-divider[data-v-ef898034]{--bs-breadcrumb-divider:"›"}.breadcrumb-item[data-v-ef898034]:before,.breadcrumb-marker[data-v-ef898034]{font-size:15px}.dropdown-submenu[data-v-3c82541c]{color:#212529!important;padding:0!important;position:relative}.dropdown-submenu ul.dropdown-menu[data-v-3c82541c]{margin-left:0}.btn-group>ul>.dropdown-submenu:last-child>ul[data-v-3c82541c],.dropdown>ul>.dropdown-submenu:last-child>ul[data-v-3c82541c]{margin-bottom:-.5rem}@media (width >= 768px){.submenu-toggle[data-v-3c82541c]:after{border-bottom:.3em solid transparent;border-left:.3em solid;border-right:0;border-top:.3em solid transparent;content:"";display:inline-block;float:right;height:0;margin-top:.5em;vertical-align:.255em;width:0}}@media (width <= 767px){.dropdown-submenu>ul[data-v-3c82541c]{border-radius:0;float:none;margin:-.05rem;padding-bottom:0;position:static}.submenu-toggle[data-v-3c82541c]:after{border-bottom:0;border-left:.3em solid transparent;border-right:.3em solid transparent;border-top:.3em solid;content:"";display:inline-block;float:right;height:0;margin-left:.255em;margin-top:.5em;vertical-align:.255em;width:0}.navbar-default .dropdown[data-v-ccda25c0]{position:static}.navbar-default .dropdown-menu[data-v-ccda25c0]{max-height:75vh;max-width:100%;overflow-y:auto;overscroll-behavior:contain;position:absolute}.navbar-default .dropdown-menu-end[data-v-ccda25c0]{right:auto}}.secret[data-v-ccda25c0]{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.btn-with-before[data-v-ccda25c0]{padding-left:.2rem;padding-right:.4rem}.dropdown-toggle[data-v-ccda25c0]{cursor:pointer;display:block;width:max-content}.navbar .dropdown-toggle[data-v-ccda25c0]{text-decoration:none}.nav-link>.nav-link[data-v-ccda25c0]{padding:0}.toggle-site-nav-button[data-v-d6ffaa8e]{cursor:pointer;height:53px;left:0;padding:15px;position:absolute;transform:rotate(0deg);transition:all .25s ease-in-out;width:52px}.toggle-site-nav-button span[data-v-d6ffaa8e]{background-color:#000;display:block;height:3px;left:15px;position:absolute;top:50%;transition:all .25s ease-in-out;width:21px}.toggle-site-nav-button>span[data-v-d6ffaa8e]:first-child{transform:translateY(-8px)}.toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(2){transform-origin:100% 50%}.toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(3){transform:translateY(8px)}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:first-child{transform:rotate(135deg)}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(2){left:-60px;opacity:0}.nav-menu-close-icon .toggle-site-nav-button>span[data-v-d6ffaa8e]:nth-child(3){transform:rotate(-135deg)}.toggle-page-nav-button[data-v-4b08b1df]{cursor:pointer;padding:15px;position:absolute;right:0;top:6px}.toggle-page-nav-button span[data-v-4b08b1df]{background-color:#000;border-radius:50%;display:block;height:5px;margin-top:2px;position:absolute;right:15px;transform:rotate(0deg);transition:all .25s ease-in-out;width:5px}.toggle-page-nav-button>span[data-v-4b08b1df]:first-child{transform:translateY(-8px)}.toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(2){transform-origin:100% 50%}.toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(3){transform:translateY(8px)}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:first-child{border-radius:0;height:3px;transform:rotate(135deg);width:21px}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(2){transform:scale(0)}.nav-menu-close-icon .toggle-page-nav-button>span[data-v-4b08b1df]:nth-child(3){border-radius:0;height:3px;transform:rotate(-135deg);width:21px}@media (width <= 767px){.navbar[data-v-7c0fd418]{padding-bottom:0;padding-left:0;padding-right:0}.navbar-left[data-v-7c0fd418]{max-width:50%;order:1;padding-left:1rem}.navbar-left [data-v-7c0fd418]{white-space:normal}.navbar-right[data-v-7c0fd418]{max-width:50%;order:1;padding:0 16px}.navbar-default[data-v-7c0fd418]{-ms-overflow-style:none;display:block;margin-top:.3125rem;order:2;overflow-x:scroll;scrollbar-width:none;width:100%}.navbar-default[data-v-7c0fd418]::-webkit-scrollbar{display:none}.navbar-default ul[data-v-7c0fd418]{flex-direction:row;margin-top:0!important;width:100%}.navbar-default>ul>[data-v-7c0fd418]{background:rgba(0,0,0,.2);flex-grow:1;padding:.3125rem .625rem}.navbar-light .navbar-default>ul>[data-v-7c0fd418]{background:rgb(0 0 0/5%)}.navbar-default>ul>.current[data-v-7c0fd418]{background:transparent}.navbar-default a[data-v-7c0fd418],[data-v-7c0fd418] .dropdown-toggle{margin:0 auto;width:max-content}[data-v-7c0fd418] .dropdown{align-items:center;display:flex}.container-fluid[data-v-7c0fd418]{padding:0}}.navbar-brand[data-v-7c0fd418]{display:inline-block}.navbar-brand>img[data-v-7c0fd418],.navbar-brand>svg[data-v-7c0fd418]{display:block}.navbar-right[data-v-7c0fd418]{padding-right:1rem}.navbar-left[data-v-7c0fd418]{align-items:center;display:flex;font-size:1.25rem;line-height:inherit;padding:.3125rem 1rem;white-space:nowrap}.navbar-fixed[data-v-7c0fd418]{position:fixed;width:100%;z-index:1000}.navbar-default[data-v-7c0fd418]{align-items:center;display:flex;flex-basis:auto;flex-grow:1}[data-v-7c0fd418] .dropdown-current{background:#007bff;color:#fff!important}.lower-navbar-container[data-v-7c0fd418]{background-color:#fff;border-bottom:1px solid #c1c1c1;height:50px;position:relative;width:100%}.navbar.navbar-dark .navbar-nav[data-v-7c0fd418] .current:not(.dropdown) a,.navbar.navbar-dark .navbar-nav[data-v-7c0fd418] .dropdown.current>a{color:#fff}.navbar.navbar-light .navbar-nav[data-v-7c0fd418] .current:not(.dropdown) a,.navbar.navbar-light .navbar-nav[data-v-7c0fd418] .dropdown.current>a{color:#000}.btn-seamless{border-color:inherit;color:inherit}.btn-seamless:hover{background-color:inherit;color:inherit}.collapse-button{float:right;font-size:10px!important;margin-left:3px;margin-top:2px;padding:3px 8px!important}.collapse-icon{transition:transform .4s ease-in-out}.collapse-icon.opened{transform:rotate(-180deg)}.card-container[data-v-c545cba4]{scroll-margin-top:var(--sticky-header-height)}.card-collapse[data-v-c545cba4]{overflow:hidden;transition:max-height .5s ease-in-out}.seamless-button[data-v-c545cba4]{border-color:inherit;color:inherit;opacity:0;transition:opacity .3s}.seamless-button[data-v-c545cba4]:hover{background-color:color-mix(in srgb,currentcolor 25%,transparent);border-color:transparent}.card-header:hover .seamless-button[data-v-c545cba4]{opacity:1}.card-peek-collapsed[data-v-c545cba4]{position:relative}.card-peek-collapsed[data-v-c545cba4]:after{background-image:linear-gradient(180deg,transparent,#fff 90%);bottom:0;content:"";height:125px;position:absolute;width:100%}.peek-read-more[data-v-c545cba4]{opacity:.2;transition:opacity .5s;z-index:1}.peek-read-more[data-v-c545cba4]:before{bottom:10px;position:absolute;text-align:center;width:100%}.peek-read-more[data-v-c545cba4]:hover{cursor:pointer;opacity:.4}.peek-read-more-fade-enter[data-v-c545cba4],.peek-read-more-fade-leave-to[data-v-c545cba4]{opacity:0}.card-heading{width:100%}.card-seamless{background-color:inherit}.card-title{display:inline-block;font-size:1em;line-height:1.2em;margin:0;text-align:left;white-space:normal}.card-title *{margin-bottom:0!important}.caret-wrapper{float:left;width:32px}.minimal-caret-wrapper{display:inline-block;font-size:13px;margin-right:5px}.header-wrapper{display:inline-block;transition:opacity .5s;width:calc(100% - 128px)}.header-transparent{opacity:0}.button-wrapper{float:right;width:96px}.header-toggle{cursor:pointer}.expandable-card{margin-bottom:0!important;margin-top:5px}.card-collapse>hr{background-color:currentcolor;margin-top:0;opacity:.5}.card-group>.card-container>.expandable-card{margin-top:0!important}.bottom-button-wrapper{margin-bottom:13px;padding-bottom:13px}.bottom-button-wrapper>.collapse-button{margin-top:5px;opacity:.5}.bottom-button-wrapper>.collapse-button:hover{opacity:1}.close-button{margin-left:3px}.close-button,.popup-button{float:right;font-size:10px!important;margin-top:2px;padding:3px 8px!important}.morph{display:inline-block}.morph-display-wrapper{align-items:center;display:flex;margin-top:5px}.morph-display-wrapper-seamless,.morph-display-wrapper-seamless:hover{color:inherit}@media (width <= 575.98px){.header-wrapper{display:inline-block;width:calc(100% - 64px)}.button-wrapper{float:right;width:32px}.card-body{padding:.5rem}.card-collapse>hr{margin-top:.5rem}.card-header{padding:.5rem}}.card-peek-collapsed[data-v-6cec1f15]{position:relative}.card-peek-collapsed[data-v-6cec1f15]:after{background-image:linear-gradient(180deg,transparent,#fff 90%);bottom:0;content:"";height:125px;position:absolute;width:100%}.morph-title[data-v-6cec1f15]{background-color:transparent;border-color:#000;padding:0 .3em;vertical-align:top}.morph-title[data-v-6cec1f15]:active,.morph-title[data-v-6cec1f15]:focus,.morph-title[data-v-6cec1f15]:hover{background-color:#343a40;border-color:#343a40;color:#fff}.card-collapse[data-v-6cec1f15]{overflow:hidden;transition:max-height .5s ease-in-out}.card-flex[data-v-6cec1f15]{border:0;display:flex;flex-direction:column;margin:0}.header-fade-enter[data-v-6cec1f15]{opacity:0}.header-fade-leave-active[data-v-6cec1f15]{position:absolute}.header-fade-leave-to[data-v-6cec1f15]{opacity:0!important}.card-title-inline[data-v-6cec1f15]{display:inline-block}.card-body[data-v-6cec1f15]{padding:0}.header-wrapper[data-v-6cec1f15]{background-color:#fff;display:inline-block;width:100%}.header-wrapper-bottom[data-v-6cec1f15]{order:1}.ellipses[data-v-6cec1f15]:before{bottom:3px;content:"...";font-weight:900;margin-right:4px;position:relative}.button-wrapper[data-v-6cec1f15]{border:solid hsla(0,0%,59%,.2);border-width:0 0 0 1px;display:inline-block;float:none;margin-left:2px;opacity:0;padding-left:2px;transition:opacity .5s;vertical-align:text-top;width:auto}.button-wrapper-expanded[data-v-6cec1f15]{border:0;margin-left:0;padding-left:0}.card:hover .button-wrapper[data-v-6cec1f15]{opacity:1}.header-toggle[data-v-6cec1f15]{cursor:pointer}.glyphicon[data-v-6cec1f15]{font-size:12px}.minimal-button[data-v-6cec1f15]{background-color:transparent;border:0;color:#969696;cursor:pointer;padding:0 3px}.minimal-button[data-v-6cec1f15]:active,.minimal-button[data-v-6cec1f15]:focus,.minimal-button[data-v-6cec1f15]:hover{color:#1e1e1e}.minimal-popup-button[data-v-6cec1f15]{font-size:9px;top:1px}.minimal-menu-up[data-v-6cec1f15]{font-size:13px;top:2px}.minimal-menu-down[data-v-6cec1f15]{font-size:13px;top:1px}.minimal-close-button[data-v-6cec1f15]{font-size:11px;top:0}@media (width <= 575.98px){.button-wrapper-expanded[data-v-6cec1f15]{border:0;margin-left:0;opacity:.15;padding-left:0}.button-wrapper-visible[data-v-6cec1f15]{opacity:1}}.annotate-image-wrapper{display:inline-block;position:relative;text-align:left}.annotate-image{height:auto;max-width:100%}.annotate-point{bottom:0;left:0;pointer-events:none;top:0}.annotate-point,.popover-annotation{height:100%;position:absolute;width:100%}.hover-point{border-radius:50%;border-style:solid;border-width:1px;z-index:1}.hover-label{pointer-events:none;position:absolute;text-align:center;z-index:2}.hover-wrapper{align-items:center;background:transparent;display:inline-flex;justify-content:center;z-index:0}.legend-wrapper{height:100%;position:relative}.text-header{font-size:1.1em;font-weight:500;margin-top:1em}.image-wrapper{display:inline-block;padding:4px;text-align:center}.image-caption{display:block}.quiz-container[data-v-2b2275c0]{isolation:isolate;overflow:hidden}.intro-outro-card[data-v-2b2275c0]{transition:transform .35s ease-out,opacity .35s linear}.intro-outro-card-enter-active[data-v-2b2275c0],.intro-outro-card-leave-to[data-v-2b2275c0]{opacity:0}.intro-outro-card>.card-body[data-v-2b2275c0]{align-items:center;display:flex;flex-direction:column;justify-content:center}.score[data-v-2b2275c0]{font-size:1.4rem;font-weight:700}.score-circle[data-v-2b2275c0]{stroke-dasharray:264;fill:none;stroke:rgba(132,215,255,.8);stroke-width:8;transition:stroke-dashoffset 1.5s ease-out,stroke 1.5s linear}.score-background-circle[data-v-2b2275c0]{fill:none;stroke:hsla(0,2%,89%,.5);stroke-width:8}.btn[data-v-2b2275c0]{border-radius:2em}.progress-bar-z[data-v-2b2275c0]{z-index:1}.result-icon[data-v-ae369d74]{align-items:center;border-radius:2em;border-style:solid;border-width:2px;display:inline-flex;height:2em;justify-content:center;width:2em}.question[data-v-ae369d74]{margin-bottom:1rem;transition:transform .35s ease-out,opacity .35s linear}.question-enter-active[data-v-ae369d74]{opacity:0;transform:translateY(-2%)}.question-leave-to[data-v-ae369d74]{opacity:0;transform:translateY(2%)}.q-btn[data-v-ae369d74]{border-radius:2.5em;transition:opacity .5s,transform .7s}.q-btn-enter[data-v-ae369d74]{opacity:0;transform:translateY(30px)}.q-btn-leave-to[data-v-ae369d74]{opacity:0;transform:translateX(calc(-100% - .25rem))}.q-btn-leave-active[data-v-ae369d74]{position:absolute}.card-header[data-v-ae369d74]{font-size:1.05em;font-weight:400}.answer[data-v-ae369d74]>:last-child,.card-header[data-v-ae369d74]>:last-child{margin-bottom:0}@keyframes shake-data-v-ae369d74{50%{transform:translate(-2px)}to{transform:translate(2px)}}.shake[data-v-ae369d74]{animation:shake-data-v-ae369d74 .15s;animation-iteration-count:1}textarea.form-control[data-v-ae369d74]{height:auto;margin-bottom:10px;min-height:75px}.fa-check[data-v-1074287c],.fa-times[data-v-1074287c]{font-size:1.2em}.content[data-v-1074287c] :last-child,.reason[data-v-1074287c] :last-child{margin-bottom:0}.reason[data-v-1074287c]{padding:0 .5rem}.checkbox-label[data-v-1074287c]{cursor:pointer}.form-control[data-v-1074287c]{cursor:pointer;height:auto;margin-bottom:10px}.form-control.danger>.checkbox-label[data-v-1074287c],.form-control.danger[data-v-1074287c],.form-control.success>.checkbox-label[data-v-1074287c],.form-control.success[data-v-1074287c]{cursor:default}.disabled[data-v-1074287c]{opacity:.9}.radio-svg[data-v-1074287c]{height:1em;vertical-align:text-top;width:1em}.checkbox[data-v-1074287c]{height:1em;margin-right:5px;vertical-align:middle;width:1em}.row[data-v-1074287c]{align-items:center;margin:.2rem 0 0}input.form-control[data-v-1074287c]{cursor:text;height:auto;margin-bottom:0;min-height:20px;width:50%}.blanks-keywords[data-v-1074287c],input.form-control[data-v-1074287c]:disabled{margin-bottom:.5rem}.blanks-form-control[data-v-1074287c]{border:none;cursor:default}.blanks-cross[data-v-1074287c]{margin-left:3px;margin-right:3px}.fa-hashtag[data-v-98afe086],.fa-key[data-v-98afe086]{padding-right:.2em}.mark[data-v-98afe086]{padding:0!important}.heading[data-v-98afe086]{padding:0 0 .1rem .2rem}.heading-text[data-v-98afe086]{display:inline-block;vertical-align:top;white-space:normal;width:92%;word-break:break-word}.keyword-text[data-v-98afe086]{font-size:smaller}.page-title[data-v-98afe086]{font-size:1.05rem;font-weight:700}.page-headings-separator[data-v-98afe086]{margin:.2rem 0}.dropdown[data-v-cea1a814]{display:block}.form-control[data-v-cea1a814]{max-width:25.4em;min-width:12.7em}@media screen and (width <= 878px) and (orientation:portrait){.form-control[data-v-cea1a814]{max-width:16em;min-width:8em}}@media screen and (width >= 768px) and (width <= 878px) and (orientation:landscape){.form-control[data-v-cea1a814]{max-width:18em;min-width:9em}}.table-active[data-v-cea1a814]{background-color:rgba(0,0,0,.075)}.dropdown-menu-end[data-v-cea1a814]{left:auto;right:0}.placeholder-div-hidden[data-v-cea1a814]{border-bottom:0;border-top:0;height:0;overflow:hidden;padding-bottom:0;padding-top:0;visibility:hidden}.search-dropdown-menu{max-height:30em;min-width:30em;overflow-y:scroll}.dropdown-menu>li>a{cursor:pointer}@media screen and (width <= 768px){.search-dropdown-menu{max-height:30em;min-width:90vw;overflow-y:scroll}.dropdown-menu.search-dropdown-menu{position:absolute}}.tab-pane>hr[data-v-661c1b61]{margin:0}.printable-tab-header[data-v-661c1b61],.tab-pane-hide[data-v-661c1b61]{display:none}@media print{.printable-tab-header[data-v-661c1b61]{border-bottom:1px solid #dee2e6;display:flex;margin-bottom:15px}.printable-tab-header>div[data-v-661c1b61]{margin-bottom:-2px}.printable-tab-pane[data-v-661c1b61]{display:block;padding:10px}}.nav-tabs[data-v-a785351c]{margin-bottom:15px}.printable-tab-group-header[data-v-a785351c]{display:none}@media print{.printable-tab-group[data-v-a785351c]{border:1px solid #dee2e6;border-radius:5px;margin:10px 0;padding:10px}.printable-tab-group-header[data-v-a785351c]{display:block;margin-bottom:10px;text-decoration:underline}}.nav-tabs[data-v-70a68808]{margin-bottom:15px}.tab-content[data-v-70a68808]{margin-bottom:1.5rem}@media print{.printable-tabs[data-v-70a68808]{border:1px solid #dee2e6;border-radius:5px;padding:20px}}.thumb-wrapper{display:inline-block;overflow:hidden;position:relative;text-align:center;vertical-align:middle}.thumb-circle{border-radius:50%}.thumb-image{left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.site-nav-root a.current{color:#0072ec}.site-nav-list{list-style-type:none;padding-left:0}.site-nav-default-list-item{cursor:pointer;display:flex;transition:background-color .08s}.site-nav-custom-list-item,.site-nav-default-list-item{color:#454545;padding:.5rem 0 0 2.8rem}.site-nav-list-item-0{font-size:1.2em;font-weight:500;padding:.5rem 0 .5rem .8rem}.site-nav-list-item-1{font-size:1.03em;padding:.4rem 0 .4rem 1.3rem}.site-nav-list-item-2{font-size:.89em;padding:.3rem 0 .3rem 1.8rem}.site-nav-list-item-3{font-size:.76em;padding:.2rem 0 .2rem 2.4rem}.site-nav-default-list-item:hover{background-color:rgba(214,233,255,.35)}.site-nav-default-list-item a{color:#454545;display:inline-block;height:100%}.site-nav-default-list-item:hover a{color:#000;text-decoration:none}.site-nav-dropdown-btn-container{display:flex;height:1.5em;margin:0 .75rem 0 auto;place-content:center center;width:2rem}.site-nav-dropdown-btn-icon{align-self:center;border-radius:1rem;display:inline-block;height:1.5em;padding:0;text-align:center;transform:rotate(0deg);transition:.4s;vertical-align:baseline;width:1.5em}.site-nav-dropdown-btn-icon:hover{background-color:#d8e3fb}.site-nav-rotate-icon{color:#4c7ff1;transform:rotate(-180deg)}.site-nav-dropdown-container{background:transparent;max-height:0;overflow:hidden;transition:max-height .15s ease-out}.site-nav-dropdown-container-open{max-height:1000px;transition:max-height .25s ease-in}.nav-menu[data-v-1a3e7aee]{display:none;overflow-y:auto;padding:0 10px 20px;position:absolute;top:100%}.nav-menu-open[data-v-1a3e7aee]{background:#fff;clear:both;display:block!important;width:100%!important}.mb-mobile-nav[data-v-e6005420]{border:none!important;display:block!important;margin:0!important;max-width:100%!important;padding:10px!important;width:100%!important}.popover-container{max-height:50vh;max-width:276px;overflow:auto}.popover-body{font-size:.875rem}.v-popper{display:inline}.v-popper--theme-tooltip .v-popper__inner{background:rgba(0,0,0,.9);font-size:.875rem;max-width:200px;padding:4px 8px;text-align:center}.modal{display:block}.modal-zoom{opacity:0;transform:scale(.1);transition:all .3s}.modal-zoom-show{opacity:1;transform:scale(1);transition:all .3s}.scroll-top-button{bottom:20px;cursor:pointer;display:none;opacity:.4;position:fixed;right:30px;transition-duration:.25s;transition-property:opacity;z-index:99}.scroll-top-button.lighten{opacity:.15}@media (hover:hover){.scroll-top-button:hover{opacity:.7}}.scroll-top-button:active{opacity:1}@media print{.hljs{background:#f8f8ff;color:#333;display:block;overflow-x:auto;padding:.5em}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs span.highlighted{background:#e6e6fa}.hljs.inline{background:#f8f8f8}.hljs.inline.no-lang{color:#e83e8c}.hljs:not(.inline){border:1px solid #c8c8c8;border:1px solid hsla(0,0%,78%,.3)}.code-block-heading{background:#f2f2ff;color:#8787a5}button.function-btn{background-color:#f8f8ff}}:root{--sticky-header-height:0}a{text-decoration:none}blockquote{border-left:.25em solid #dfe2e5;color:#6a737d;padding:0 1rem}code{background:#f8f8f8;border-radius:3px;padding:.2em .4em;word-break:normal}mark code{background:#ffffffd4}pre.hljs>code{background:none}pre>code.hljs{background-clip:padding-box;border-radius:5px;counter-reset:line;width:100%}pre>code.hljs[heading]{border-top-right-radius:0}.code-block{position:relative}.code-block-heading{border-radius:6px 6px 0 0;float:right;font-size:85%;line-height:1;margin-top:5px;max-width:85%;overflow-wrap:break-word;padding:.25em .4em;text-align:right}.inline-markdown-heading{line-height:1.5}.code-block-content{clear:both;display:block}@media print{pre>code.hljs{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.hljs:not(.inline).line-numbers-print>span{padding:0 .5em 0 3.5em;position:relative}.hljs:not(.inline).line-numbers-print>span:before{border-right:1px solid #ddd;color:#888;content:counter(line);counter-increment:line;display:inline-block;height:100%;left:0;margin-right:.5em;padding-right:.5em;position:absolute;text-align:right;top:0;width:3em}.hljs span.highlighted{background:#e6e6fa!important;-webkit-print-color-adjust:exact}}kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;box-shadow:inset 0 -1px 0 #959da5;color:#444d56}.btn:active,.btn:focus{box-shadow:none!important;outline:none!important}code.hljs.inline{display:initial;padding:.2em .4em}.markbind-table{width:auto}.radio-list-item,.task-list-item{list-style-type:none;margin:0 0 0 -1.2em}.radio-list-item label{font-weight:inherit}.table-striped>tbody>tr:nth-of-type(2n),.table-striped>thead{background-color:#fff}header[sticky]{position:sticky;top:0;transition:transform .3s ease-in-out;width:100%;z-index:1001}header[sticky].hide-header{transform:translateY(calc(var(--sticky-header-height)*-1))}span.anchor{position:relative;top:calc(var(--sticky-header-height)*-1 - 1rem)}#app{display:flex;flex-direction:column;min-height:100vh}footer{background-color:#f5f5f5;color:dimgrey;padding:10px 0}.dimmed{color:#777}.large{font-size:125%}.small{font-size:80%}.underline{text-decoration:underline}.mkb-text-red{color:red!important}.mkb-text-green{color:green!important}.mkb-text-blue{color:blue!important}.mkb-text-cyan{color:cyan!important}.mkb-text-magenta{color:#f0f!important}.mkb-text-yellow{color:#ff0!important}.mkb-text-black{color:#000!important}.mkb-text-white{color:#fff!important}@media (width <= 767.98px){.dropdown-menu>li>a{white-space:normal}.navbar-nav .open .dropdown-menu{background-color:#fff}}li.footnote-item:target{background-color:#eee}.hljs:not(.inline)>span{display:block}.hljs:not(.inline).line-numbers>span{padding:0 .5em 0 3.5em;position:relative}.hljs:not(.inline).line-numbers>span:before{border-right:1px solid #ddd;color:#888;content:counter(line);counter-increment:line;display:inline-block;height:100%;left:0;margin-right:.5em;padding-right:.5em;position:absolute;text-align:right;top:0;width:3em}.trigger{border-bottom:1px dotted}.trigger-click{border-bottom:1px dashed;cursor:pointer}.trigger-click:focus{outline:none}pre{display:flex;position:relative}button.function-btn{border:1px solid #d7dadc;border-radius:5px;color:#a9a9a9;cursor:pointer;display:none;margin:.17rem;padding:.35rem;position:absolute;right:0;text-align:center;white-space:nowrap}button.function-btn+button.function-btn{right:36px}pre:hover>.function-btn-container>button.function-btn{display:block}.function-btn:hover{color:gray;transition:all .5s ease}.function-btn-body{align-items:center;display:flex}.function-btn svg{fill:currentcolor}code.wrap{word-wrap:break-word;white-space:pre-wrap;word-break:break-all}.octicon{height:1em;width:1em}hr{background-color:transparent;border-top:1px solid rgba(0,0,0,.1);opacity:1}hr.dotted{border-top-style:dotted;border-top-width:.1rem}hr.double{border-top-style:double;border-top-width:.2rem}hr.dashed{border-top-style:dashed;border-top-width:.1rem}hr.thick{border-top-width:.15rem}hr.thick-1{border-top-width:.25rem}hr.thick-2{border-top-width:.5rem}hr.thick-3{border-top-width:.75rem}ol,ul{padding-left:1.5rem}h1,h2,h3,h4,h5,h6{margin-bottom:1rem;scroll-margin-top:var(--sticky-header-height)}.block-embed{overflow-x:auto;position:relative;width:100%}.block-embed iframe{height:100%;left:0;position:absolute;top:0;width:100%}#mb-page-nav{padding:.8rem 12px 0}#mb-page-nav a:link,#mb-page-nav a:visited{color:#9b9b9b;text-decoration:none}#mb-page-nav a:hover{color:#000}#mb-page-nav a.active{background-color:transparent;color:#000}.page-nav-title{color:#000;display:block;padding-left:.5rem;white-space:inherit}.nested{margin-left:5%}.no-flex-wrap{flex-wrap:nowrap}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(../fonts/KaTeX_AMS-Regular.woff) format("woff"),url(../fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Main-Bold.woff) format("woff"),url(../fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Main-Italic.woff) format("woff"),url(../fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Main-Regular.woff) format("woff"),url(../fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Math-Italic.woff) format("woff"),url(../fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(../fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Script-Regular.woff) format("woff"),url(../fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size1-Regular.woff) format("woff"),url(../fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size2-Regular.woff) format("woff"),url(../fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size3-Regular.woff) format("woff"),url(../fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size4-Regular.woff) format("woff"),url(../fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(../fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.15.6"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.katex{font-size:1em!important}eq{display:inline-block}eqn{display:block}section.eqno{align-content:space-between;align-items:center;display:flex;flex-direction:row}section.eqno>eqn{margin-left:3em;width:100%}section.eqno>span{text-align:right;width:3em}
\ No newline at end of file
diff --git a/markbind/js/markbind.min.js b/markbind/js/markbind.min.js
index f748f522ea9..54998799bc1 100644
--- a/markbind/js/markbind.min.js
+++ b/markbind/js/markbind.min.js
@@ -1 +1 @@
-!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e(require("Vue")):"function"==typeof define&&define.amd?define(["Vue"],e):"object"==typeof exports?exports.MarkBind=e(require("Vue")):t.MarkBind=e(t.Vue)}(self,t=>(()=>{var e={605:()=>{function t(){document.querySelectorAll(".".concat("page-nav-clone")).forEach((function(t){t.remove()}))}window.addEventListener("beforeprint",(function(){var e=document.querySelector("#".concat("mb-page-nav")),n=document.querySelectorAll(".".concat("page-nav-print"));e&&n.length>=1&&(t(),n.forEach((function(t){t.appendChild(function(t){var e=t.cloneNode(!0);return e.removeAttribute("id"),e.querySelectorAll("a.active").forEach((function(t){t.classList.remove("active")})),e.classList.add("page-nav-clone"),e}(e))})))})),window.addEventListener("afterprint",(function(){t()})),window.addEventListener("beforeprint",(function(){document.querySelectorAll("pre > code.hljs").forEach((function(t){Array.from(t.querySelectorAll("span")).some((function(t){return t.scrollWidth>t.clientWidth}))&&t.classList.add("line-numbers-print")}))}))},3:t=>{t.exports={bind:function(t){function e(){t.dataset.isShown="false",r.style.display="",o.style.display="none",i.style.display="none"}function n(){t.dataset.isShown="true",r.style.display="none",i.style.display=""}t.dataset.isShown="true",t.style.position="relative";var i=document.createElement("div");i.classList.add("content"),Array.from(t.children).forEach((function(t){return i.append(t)})),t.replaceChildren(),t.append(i),t.classList.add("closeable-wrapper");var o=function(){var t=document.createElement("span");return t.classList.add("closeable-button","label","label-default","hidden-print"),t.style.cssText+="display: none; position: absolute; top: 0; left: 0; cursor: pointer;background: #d9534f",t.innerHTML='',t.addEventListener("click",e),t}();t.append(o);var r=function(t){var e=document.createElement("a");return e.classList.add("closeable-show","hidden-print"),e.style.cssText+="display: none; cursor: pointer;text-decoration: underline",e.innerHTML=t,e.addEventListener("click",n),e}(t.getAttribute("alt")||"Expand Content");t.append(r),t.addEventListener("mouseover",(function(){"false"!==t.dataset.isShown&&(o.style.display="")})),t.addEventListener("mouseout",(function(){"false"!==t.dataset.isShown&&(o.style.display="none")}))}}},383:(t,e,n)=>{"use strict";var i,o=(i=n(740))&&"object"==typeof i&&"default"in i?i.default:i;function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function s(t){return function(t){if(Array.isArray(t)){for(var e=0,n=new Array(t.length);e AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC. Given below are my contributions to the project. New Feature: Added the ability to undo/redo previous commands. New Feature: Added a history command that allows the user to navigate to previous commands using up/down keys. Code contributed: RepoSense link Project management: Enhancements to existing features: Documentation: Community: Tools: {you can add/remove categories in the list above} Community: Tools: {you can add/remove categories in the list above} Don’t forget to update If you are stuck, check out the sample
+ Don’t forget to update If you are stuck, check out the sample
here. Now that we have all the information that we need, let’s lay the groundwork for propagating the remarks added into the in-memory storage of person data. We achieve that by working with the Create a new A copy-paste and search-replace later, you should have something like this. Note how Let’s change Without getting too deep into Simply add the following to Then insert the following into That’s it! Fire up the application again and you should see something like this: ![ Since We change the constructor of Unfortunately, a change to Use the Refer to this commit and check that you have got everything in order! AddressBook stores data by serializing While the changes to code may be minimal, the test data will have to be updated as well. You must delete AddressBook’s storage file located at Check out this commit
+ That’s it! Fire up the application again and you should see something like this: ![ Since We change the constructor of Unfortunately, a change to Use the Refer to this commit and check that you have got everything in order! AddressBook stores data by serializing While the changes to code may be minimal, the test data will have to be updated as well. You must delete AddressBook’s storage file located at Check out this commit
to see what the changes entail. Now that we have finalized the Just add this one line of code! Tests are crucial to ensuring that bugs don’t slip into the codebase unnoticed. This is especially true for large code bases where a change might lead to unintended behavior. Let’s verify the correctness of our code by writing some tests! Of course you can simply add the test cases manually, like you've been doing all along this tutorial. The result would be like the test cases in here. Alternatively, you can get the help of IntelliJ to generate the skeletons of the test cases, as explained in the next section. The goal is to write effective and efficient tests to ensure that The convention for test names is Let’s create a test for Then, create a test for the Following convention, let’s change the name of the generated method to Let’s use the utility functions provided in You should end up with a test that looks something like this. This concludes the tutorial for adding a new 0&&(this.current-=1,this.scrollListView())},scrollListView:function(){var t=this.$refs.dropdown,e=t.children[this.current],n=t.scrollTop,i=n+t.clientHeight,o=e.offsetTop+e.offsetHeight;e.offsetTop0&&(this.current-=1,this.scrollListView())},scrollListView:function(){var t=this.$refs.dropdown,e=t.children[this.current],n=t.scrollTop,i=n+t.clientHeight,o=e.offsetTop+e.offsetHeight;e.offsetTopProject: AddressBook Level 3
v1.3
- v1.5rc
(3 releases) on GitHubdelete
feature.AddressBookParser
to use our new RemarkCommandParser
!AddressBookParser
to use our new RemarkCommandParser
!Add
Remark
to the modelPerson
model. Each field in a Person is implemented as a separate class (e.g. a Name
object represents the person’s name). That means we should add a Remark
class so that we can use a Remark
object to represent a remark given to a person.Add a new
Remark
classRemark
in seedu.address.model.person
. Since a Remark
is a field that is similar to Address
, we can reuse a significant bit of code.Remark
has no constrains and thus does not require input
validation.Make use of
Remark
RemarkCommand
and RemarkCommandParser
to use the new Remark
class instead of plain String
. These should be relatively simple changes.Add a placeholder element for remark to the UI
fxml
, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.seedu.address.ui.PersonCard
.PersonCard.java
:@FXML
private Label remark;
@FXML
is an annotation that marks a private or protected field and makes it accessible to FXML. It might sound like Greek to you right now, don’t worry — we will get back to it later.main/resources/view/PersonListCard.fxml
.PersonListCard.fxml
:<Label fx:id="remark" styleClass="cell_small_label" text="\$remark" />
-
Modify
Person
to support a Remark
fieldPersonCard
displays data from a Person
, we need to update Person
to get our Remark
displayed!Modify
Person
Person
to take a Remark
. We will also need to define new fields and accessors accordingly to store our new addition.Update other usages of
Person
Person
will cause other commands to break, you will have to modify these commands to use the updated Person
!Find Usages
feature in IntelliJ IDEA on the Person
class to find these commands.Updating Storage
JsonAdaptedPerson
into json
with the help of an external library — Jackson. Let’s update JsonAdaptedPerson
to work with our new Person
!/data/clinicmate.json
before running it! Not doing so will cause AddressBook to default to an empty address book!Modify
Person
to support a Remark
fieldPersonCard
displays data from a Person
, we need to update Person
to get our Remark
displayed!Modify
Person
Person
to take a Remark
. We will also need to define new fields and accessors accordingly to store our new addition.Update other usages of
Person
Person
will cause other commands to break, you will have to modify these commands to use the updated Person
!Find Usages
feature in IntelliJ IDEA on the Person
class to find these commands.Updating Storage
JsonAdaptedPerson
into json
with the help of an external library — Jackson. Let’s update JsonAdaptedPerson
to work with our new Person
!/data/clinicmate.json
before running it! Not doing so will cause AddressBook to default to an empty address book!Finalizing the UI
Person
class and its dependencies, we can now bind the Remark
field to the UI.PersonCard.java
:public PersonCard(Person person, int displayedIndex) {
//...
remark.setText(person.getRemark().value);
@@ -174,8 +171,12 @@
return String.format(message, personToEdit);
}
Writing tests
Automatically generating tests
RemarkCommand#execute()
behaves as expected.methodName_testScenario_expectedResult
. An example would be
-execute_filteredList_success
.RemarkCommand#execute()
to test that adding a remark works. On IntelliJ IDEA
you can bring up the context menu and choose to Go To
> Test
or use the appropriate keyboard shortcut.execute
method.execute_addRemarkUnfilteredList_success
.CommandTestUtil
. The functions ensure that commands produce the expected CommandResult
and output the correct message. In this case, CommandTestUtil#assertCommandSuccess
is the best fit as we are testing that a RemarkCommand
will successfully add a Remark
.Conclusion
Command
to AddressBook.execute_filteredList_success
.
Let’s create a test for RemarkCommand#execute()
to test that adding a remark works. On IntelliJ IDEA
you can bring up the context menu and choose to Go To
> Test
or use the appropriate keyboard shortcut.
Then, create a test for the execute
method.
Following convention, let’s change the name of the generated method to execute_addRemarkUnfilteredList_success
.
Let’s use the utility functions provided in CommandTestUtil
. The functions ensure that commands produce the expected CommandResult
and output the correct message. In this case, CommandTestUtil#assertCommandSuccess
is the best fit as we are testing that a RemarkCommand
will successfully add a Remark
.
You should end up with a test that looks something like this.
This concludes the tutorial for adding a new Command
to AddressBook.
+ + + + diff --git a/tutorials/AddRemark.page-vue-render.js b/tutorials/AddRemark.page-vue-render.js index d8d9dcf350a..f0e5a679e31 100644 --- a/tutorials/AddRemark.page-vue-render.js +++ b/tutorials/AddRemark.page-vue-render.js @@ -290,6 +290,6 @@ with(this){return _c('h2',{attrs:{"id":"conclusion"}},[_v("Conclusion"),_c('a',{ with(this){return _c('p',[_v("This concludes the tutorial for adding a new "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Command")]),_v(" to AddressBook.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/tutorials/RemovingFields.html b/tutorials/RemovingFields.html index f2b5bcfba62..314ec56ed9d 100644 --- a/tutorials/RemovingFields.html +++ b/tutorials/RemovingFields.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -20,9 +17,9 @@
Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.
— Antoine de Saint-Exupery
When working on an existing code base, you will most likely find that some features that are no longer necessary.
-This tutorial aims to give you some practice on such a code 'removal' activity by removing the address
field from Person
class.
If you have done the Add remark
command tutorial already, you should know where the code had to be updated to add the field remark
. From that experience, you can deduce where the code needs to be changed to remove that field too. The removing of the address
field can be done similarly.
-
-However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. At least have a read even if you don't actually do the steps yourself.
Address
IntelliJ IDEA provides a refactoring tool that can identify most parts of a removal easily. Let’s try to use it as much as we can.
The address
field in Person
is actually an instance of the seedu.address.model.person.Address
class. Since removing the Address
class will break the application, we start by identifying Address
's usages. This allows us to see code that depends on Address
to function properly and edit them on a case-by-case basis. Right-click the Address
class and select Refactor
> Safe Delete
through the menu.
Search in comments and strings
and Search for text occurrences
Choose to View Usages
and you should be presented with a list of Safe Delete Conflicts
. These conflicts describe locations in which the Address
class is used.
Remove usages of Address
by performing Safe Delete
s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose Refactor
-> Safe delete
as before). You will need to exercise discretion when removing usages of Address
. Functions like ParserUtil#parseAddress()
can be safely removed but its usages must be removed as well. Other usages like in EditPersonDescriptor
may require more careful inspection.
Let’s try removing references to Address
in EditPersonDescriptor
.
Safe delete the field address
in EditPersonDescriptor
.
Select Yes
when prompted to remove getters and setters.
Remove the usages of address
and select Do refactor
when you are done.
Tip: Removing usages may result in errors. Exercise discretion and fix them. For example, removing the address
field from the Person
class will require you to modify its constructor.
Repeat the steps for the remaining usages of Address
After you are done, verify that the application still works by compiling and running it again.
Unfortunately, there are usages of Address
that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word address
in your code (Edit
> Find
> Find in path
).
Places of interest to look out for would be resources used by the application. main/resources
contains images and fxml
files used by the application and test/resources
contains test data. For example, there is a $address
in each PersonCard
that has not been removed nor identified.
![
A quick look at the PersonCard
class and its fxml
file quickly reveals why it slipped past the automated refactoring.
PersonCard.java
...
+This tutorial aims to give you some practice on such a code 'removal' activity by removing the address
field from Person
class. If you have done the Add remark
command tutorial already, you should know where the code had to be updated to add the field remark
. From that experience, you can deduce where the code needs to be changed to remove that field too. The removing of the address
field can be done similarly.
+
+However, if you have no such prior knowledge, removing a field can take a quite a bit of detective work. This tutorial takes you through that process. At least have a read even if you don't actually do the steps yourself.
Safely deleting Address
IntelliJ IDEA provides a refactoring tool that can identify most parts of a removal easily. Let’s try to use it as much as we can.
Assisted refactoring
The address
field in Person
is actually an instance of the seedu.address.model.person.Address
class. Since removing the Address
class will break the application, we start by identifying Address
's usages. This allows us to see code that depends on Address
to function properly and edit them on a case-by-case basis. Right-click the Address
class and select Refactor
> Safe Delete
through the menu.
- 💡 To make things simpler, you can unselect the options
Search in comments and strings
and Search for text occurrences
Choose to View Usages
and you should be presented with a list of Safe Delete Conflicts
. These conflicts describe locations in which the Address
class is used.
Remove usages of Address
by performing Safe Delete
s on each entry i.e., double-click on the entry (which takes you to the code in concern, right-click on that entity, and choose Refactor
-> Safe delete
as before). You will need to exercise discretion when removing usages of Address
. Functions like ParserUtil#parseAddress()
can be safely removed but its usages must be removed as well. Other usages like in EditPersonDescriptor
may require more careful inspection.
Let’s try removing references to Address
in EditPersonDescriptor
.
Safe delete the field address
in EditPersonDescriptor
.
Select Yes
when prompted to remove getters and setters.
Remove the usages of address
and select Do refactor
when you are done.
Tip: Removing usages may result in errors. Exercise discretion and fix them. For example, removing the address
field from the Person
class will require you to modify its constructor.
Repeat the steps for the remaining usages of Address
After you are done, verify that the application still works by compiling and running it again.
Manual refactoring
Unfortunately, there are usages of Address
that IntelliJ IDEA cannot identify. You can find them by searching for instances of the word address
in your code (Edit
> Find
> Find in path
).
Places of interest to look out for would be resources used by the application. main/resources
contains images and fxml
files used by the application and test/resources
contains test data. For example, there is a $address
in each PersonCard
that has not been removed nor identified.
![ address.png)
A quick look at the PersonCard
class and its fxml
file quickly reveals why it slipped past the automated refactoring.
PersonCard.java
...
@FXML
private Label address;
...
@@ -39,8 +36,12 @@
"address": "4th street"
} ]
}
-
You can go through each individual json
file and manually remove the address
field.
+
You can go through each individual json
file and manually remove the address
field.
+ + + + diff --git a/tutorials/RemovingFields.page-vue-render.js b/tutorials/RemovingFields.page-vue-render.js index 348309054e4..534a02df791 100644 --- a/tutorials/RemovingFields.page-vue-render.js +++ b/tutorials/RemovingFields.page-vue-render.js @@ -107,6 +107,6 @@ with(this){return _c('pre',[_c('code',{pre:true,attrs:{"class":"hljs json"}},[_c with(this){return _c('p',[_v("You can go through each individual "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("json")]),_v(" file and manually remove the "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("address")]),_v(" field.")])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file diff --git a/tutorials/TracingCode.html b/tutorials/TracingCode.html index d9f687e62e7..24f67654df0 100644 --- a/tutorials/TracingCode.html +++ b/tutorials/TracingCode.html @@ -3,11 +3,8 @@
- -
- - - + +
@@ -20,7 +17,7 @@
Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …[Therefore,] making it easy to read makes it easier to write.
— Robert C. Martin Clean Code: A Handbook of Agile Software Craftsmanship
When trying to understand an unfamiliar code base, one common strategy used is to trace some representative execution path through the code base. One easy way to trace an execution path is to use a debugger to step through the code. In this tutorial, you will be using the IntelliJ IDEA’s debugger to trace the execution path of a specific user command.
Before we jump into the code, it is useful to get an idea of the overall structure and the high-level behavior of the application. This is provided in the 'Architecture' section of the developer guide. In particular, the architecture diagram (reproduced below), tells us that the App consists of several components.
It also has a sequence diagram (reproduced below) that tells us how a command propagates through the App.
Note how the diagram shows only the execution flows between the main components. That is, it does not show details of the execution path inside each component. By hiding those details, the diagram aims to inform the reader about the overall execution path of a command without overwhelming the reader with too much details. In this tutorial, you aim to find those omitted details so that you get a more in-depth understanding of how the code works.
Before we proceed, ensure that you have done the following:
As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the main
method.
In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various event-driven mechanisms used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the UI
transfers control to the Logic
component.
According to the sequence diagram you saw earlier (and repeated above for reference), the UI
component yields control to the Logic
component through a method named execute
. Searching through the code base for an execute()
method that belongs to the Logic
component yields a promising candidate in seedu.address.logic.Logic
.
Intellij Tip: The 'Search Everywhere' feature can be used here. In particular, the 'Find Symbol' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a method named execute
, not simply the text execute
.
A quick look at the seedu.address.logic.Logic
(an extract given below) confirms that this indeed might be what we’re looking for.
public interface Logic {
+- If you are using a different IDE, we'll leave it to you to figure out the equivalent feature to use in your IDE.
- If you are not using an IDE, we'll let you figure out how to achieve the same using your coding toolchain.
Setting a breakpoint
As you know, the first step of debugging is to put in a breakpoint where you want the debugger to pause the execution. For example, if you are trying to understand how the App starts up, you would put a breakpoint in the first statement of the main
method.
In our case, we would want to begin the tracing at the very point where the App start processing user input (i.e., somewhere in the UI component), and then trace through how the execution proceeds through the UI component. However, the execution path through a GUI is often somewhat obscure due to various event-driven mechanisms used by GUI frameworks, which happens to be the case here too. Therefore, let us put the breakpoint where the UI
transfers control to the Logic
component.
According to the sequence diagram you saw earlier (and repeated above for reference), the UI
component yields control to the Logic
component through a method named execute
. Searching through the code base for an execute()
method that belongs to the Logic
component yields a promising candidate in seedu.address.logic.Logic
.
Intellij Tip: The 'Search Everywhere' feature can be used here. In particular, the 'Find Symbol' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a method named execute
, not simply the text execute
.
A quick look at the seedu.address.logic.Logic
(an extract given below) confirms that this indeed might be what we’re looking for.
public interface Logic {
/**
* Executes the command and returns the result.
* @param commandText The command as entered by the user.
@@ -32,8 +29,8 @@
...
}
But apparently, this is an interface, not a concrete implementation.
-That should be fine because the Architecture section of the Developer Guide tells us that components interact through interfaces. Here's the relevant diagram:
Next, let's find out which statement(s) in the UI
code is calling this method, thus transferring control from the UI
to the Logic
.
Intellij Tip: The 'Find Usages' feature can find from which parts of the code a class/method/variable is being used.
Bingo! MainWindow#executeCommand()
seems to be exactly what we’re looking for!
Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.
-
Tracing the execution path
Recall from the User Guide that the edit
command has the format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
For this tutorial we will be issuing the command edit 1 n/Alice Yeoh
.
Tip: Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.
To start the debugging session, simply Run
> Debug Main
When the GUI appears, enter edit 1 n/Alice Yeoh
into the command box and press Enter
.
The Debugger tool window should show up and show something like this:
Use the Show execution point feature to jump to the line of code that we stopped at:
CommandResult commandResult = logic.execute(commandText);
is the line that you end up at (i.e., the place where we put the breakpoint).
We are interested in the logic.execute(commandText)
portion of that line so let’s Step in into that method call:
We end up in LogicManager#execute()
(not Logic#execute
-- but this is expected because we know the execute()
method in the Logic
interface is actually implemented by the LogicManager
class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.
LogicManager#execute().
@Override
+That should be fine because the Architecture section of the Developer Guide tells us that components interact through interfaces. Here's the relevant diagram: Next, let's find out which statement(s) in the UI
code is calling this method, thus transferring control from the UI
to the Logic
.
Intellij Tip: The 'Find Usages' feature can find from which parts of the code a class/method/variable is being used.
Bingo! MainWindow#executeCommand()
seems to be exactly what we’re looking for!
Now let’s set the breakpoint. First, double-click the item to reach the corresponding code. Once there, click on the left gutter to set a breakpoint, as shown below.
+
Tracing the execution path
Recall from the User Guide that the edit
command has the format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
For this tutorial we will be issuing the command edit 1 n/Alice Yeoh
.
Tip: Over the course of the debugging session, you will encounter every major component in the application. Try to keep track of what happens inside the component and where the execution transfers to another component.
To start the debugging session, simply Run
> Debug Main
When the GUI appears, enter edit 1 n/Alice Yeoh
into the command box and press Enter
.
The Debugger tool window should show up and show something like this:
Use the Show execution point feature to jump to the line of code that we stopped at:
CommandResult commandResult = logic.execute(commandText);
is the line that you end up at (i.e., the place where we put the breakpoint).
We are interested in the logic.execute(commandText)
portion of that line so let’s Step in into that method call:
We end up in LogicManager#execute()
(not Logic#execute
-- but this is expected because we know the execute()
method in the Logic
interface is actually implemented by the LogicManager
class). Let’s take a look at the body of the method. Given below is the same code, with additional explanatory comments.
LogicManager#execute().
@Override
public CommandResult execute(String commandText)
throws CommandException, ParseException {
@@ -66,7 +63,7 @@
case EditCommand.COMMAND_WORD:
return new EditCommandParser().parse(arguments);
...
-
Let’s see what EditCommandParser#parse()
does by stepping into it. You might have to click the 'step into' button multiple times here because there are two method calls in that statement: EditCommandParser()
and parse()
.
Intellij Tip: Sometimes, you might end up stepping into functions that are not of interest. Simply use the step out
button to get out of them!
Stepping through the method shows that it calls ArgumentTokenizer#tokenize()
and ParserUtil#parseIndex()
to obtain the arguments and index required.
The rest of the method seems to exhaustively check for the existence of each possible parameter of the edit
command and store any possible changes in an EditPersonDescriptor
. Recall that we can verify the contents of editPersonDesciptor
through the 'Variables' window.
As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the Logic
component.
Let’s continue stepping through until we return to LogicManager#execute()
.
The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?
Now, step over until you read the statement that calls the execute()
method of the EditCommand
object received, and step into that execute()
method (partial code given below):
EditCommand#execute()
:
@Override
+
Let’s see what EditCommandParser#parse()
does by stepping into it. You might have to click the 'step into' button multiple times here because there are two method calls in that statement: EditCommandParser()
and parse()
.
Intellij Tip: Sometimes, you might end up stepping into functions that are not of interest. Simply use the step out
button to get out of them!
Stepping through the method shows that it calls ArgumentTokenizer#tokenize()
and ParserUtil#parseIndex()
to obtain the arguments and index required.
The rest of the method seems to exhaustively check for the existence of each possible parameter of the edit
command and store any possible changes in an EditPersonDescriptor
. Recall that we can verify the contents of editPersonDesciptor
through the 'Variables' window.
As you just traced through some code involved in parsing a command, you can take a look at this class diagram to see where the various parsing-related classes you encountered fit into the design of the Logic
component.
Let’s continue stepping through until we return to LogicManager#execute()
.
The sequence diagram below shows the details of the execution path through the Logic component. Does the execution path you traced in the code so far match the diagram?
Now, step over until you read the statement that calls the execute()
method of the EditCommand
object received, and step into that execute()
method (partial code given below):
EditCommand#execute()
:
@Override
public CommandResult execute(Model model) throws CommandException {
...
Person personToEdit = lastShownList.get(index.getZeroBased());
@@ -81,7 +78,7 @@
As suspected, command#execute()
does indeed make changes to the model
object. Specifically,
- it uses the
setPerson()
method (defined in the interface Model
and implemented in ModelManager
as per the usual pattern) to update the person data. - it uses the
updateFilteredPersonList
method to ask the Model
to populate the 'filtered list' with all persons.
FYI, The 'filtered list' is the list of persons resulting from the most recent operation that will be shown to the user immediately after. For the edit
command, we populate it with all the persons so that the user can see the edited person along with all other persons. If this was a find
command, we would be setting that list to contain the search results instead.
To provide some context, given below is the class diagram of the Model
component. See if you can figure out where the 'filtered list' of persons is being tracked.
- 💡 This may be a good time to read through the
Model
component section of the DG
As you step through the rest of the statements in the EditCommand#execute()
method, you'll see that it creates a CommandResult
object (containing information about the result of the execution) and returns it.
-Advancing the debugger by one more step should take you back to the middle of the LogicManager#execute()
method.
Given that you have already seen quite a few classes in the Logic
component in action, see if you can identify in this partial class diagram some of the classes you've encountered so far, and see how they fit into the class structure of the Logic
component:
- 💡 This may be a good time to read through the
Logic
component section of the DG
Similar to before, you can step over/into statements in the LogicManager#execute()
method to examine how the control is transferred to the Storage
component and what happens inside that component.
Intellij Tip: When trying to step into a statement such as storage.saveAddressBook(model.getAddressBook())
which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.
As you step through the code inside the Storage
component, you will eventually arrive at the JsonAddressBook#saveAddressBook()
method which calls the JsonSerializableAddressBook
constructor, to create an object that can be serialized (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):
JsonSerializableAddressBook
constructor:
/**
+Advancing the debugger by one more step should take you back to the middle of the LogicManager#execute()
method.
Given that you have already seen quite a few classes in the Logic
component in action, see if you can identify in this partial class diagram some of the classes you've encountered so far, and see how they fit into the class structure of the Logic
component:
- 💡 This may be a good time to read through the
Logic
component section of the DG
Similar to before, you can step over/into statements in the LogicManager#execute()
method to examine how the control is transferred to the Storage
component and what happens inside that component.
Intellij Tip: When trying to step into a statement such as storage.saveAddressBook(model.getAddressBook())
which contains multiple method calls, Intellij will let you choose (by clicking) which one you want to step into.
As you step through the code inside the Storage
component, you will eventually arrive at the JsonAddressBook#saveAddressBook()
method which calls the JsonSerializableAddressBook
constructor, to create an object that can be serialized (i.e., stored in storage medium) in JSON format. That constructor is given below (with added line breaks for easier readability):
JsonSerializableAddressBook
constructor:
/**
* Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.
*
* @param source future changes to this will not affect the created
@@ -104,8 +101,12 @@
do you think will happen if we traced the following commands
instead? What exceptions do you think will be thrown (if any), where
will the exceptions be thrown and where will they be handled? redit 1 n/Alice Yu
edit 0 n/Alice Yu
edit 1 n/Alex Yeoh
edit 1
edit 1 n/アリス ユー
edit 1 t/one t/two t/three t/one
What components will you have to modify to perform the following
-enhancements to the application?
Make command words case-insensitive
Allow delete
to remove more than one index at a time
Save the address book in the CSV format instead
Add a new command
Add a new field to Person
Add a new entity to the address book
+enhancements to the application?
Make command words case-insensitive
Allow delete
to remove more than one index at a time
Save the address book in the CSV format instead
Add a new command
Add a new field to Person
Add a new entity to the address book
+ + + + diff --git a/tutorials/TracingCode.page-vue-render.js b/tutorials/TracingCode.page-vue-render.js index 217b1e33561..bae6c32422e 100644 --- a/tutorials/TracingCode.page-vue-render.js +++ b/tutorials/TracingCode.page-vue-render.js @@ -164,6 +164,6 @@ with(this){return _c('h2',{attrs:{"id":"conclusion"}},[_v("Conclusion"),_c('a',{ with(this){return _c('ol',[_c('li',[_c('p',[_v("In this tutorial, we traced the \"happy path\" (i.e., no errors). What\ndo you think will happen if we traced the following commands\ninstead? What exceptions do you think will be thrown (if any), where\nwill the exceptions be thrown and where will they be handled?")]),_v(" "),_c('ol',[_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("redit 1 n/Alice Yu")])])]),_v(" "),_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 0 n/Alice Yu")])])]),_v(" "),_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 1 n/Alex Yeoh")])])]),_v(" "),_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 1")])])]),_v(" "),_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 1 n/アリス ユー")])])]),_v(" "),_c('li',[_c('p',[_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("edit 1 t/one t/two t/three t/one")])])])])]),_v(" "),_c('li',[_c('p',[_v("What components will you have to modify to perform the following\nenhancements to the application?")]),_v(" "),_c('ol',[_c('li',[_c('p',[_v("Make command words case-insensitive")])]),_v(" "),_c('li',[_c('p',[_v("Allow "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("delete")]),_v(" to remove more than one index at a time")])]),_v(" "),_c('li',[_c('p',[_v("Save the address book in the CSV format instead")])]),_v(" "),_c('li',[_c('p',[_v("Add a new command")])]),_v(" "),_c('li',[_c('p',[_v("Add a new field to "),_c('code',{pre:true,attrs:{"class":"hljs inline no-lang"}},[_v("Person")])])]),_v(" "),_c('li',[_c('p',[_v("Add a new entity to the address book")])])])])])} },function anonymous( ) { -with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.4.0")]),_v(", generated on Mon, 15 Apr 2024, 2:28:18 GMT+8]")])])])} +with(this){return _c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("["),_c('span',[_c('strong',[_v("Powered by")])]),_v(" "),_c('img',{attrs:{"src":"https://markbind.org/favicon.ico","width":"30"}}),_v(" "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.5.2")]),_v(", generated on Fri, 24 May 2024, 8:45:15 GMT+8]")])])])} }]; \ No newline at end of file