From 9867d86f8935960e4d0389006daa1d8b20bf3ab4 Mon Sep 17 00:00:00 2001
From: Robert Lanzafame <R.C.Lanzafame@tudelft.nl>
Date: Fri, 22 Nov 2024 05:37:14 +0100
Subject: [PATCH] GA 2.2 files ready

---
 src/students/GA_2_2/README.html          |  396 ++
 src/students/GA_2_2/Report.html          |  432 ++
 src/students/GA_2_2/environment.yml      |   11 +
 src/students/GA_2_2/the_big_M.html       | 8024 ++++++++++++++++++++++
 src/teachers/GA_2_2/GA_2_2_all_files.zip |  Bin 0 -> 189728 bytes
 src/teachers/GA_2_2/README.html          |  396 ++
 src/teachers/GA_2_2/Report.html          |  432 ++
 src/teachers/GA_2_2/Report_solution.html |  682 ++
 src/teachers/GA_2_2/environment.yml      |   11 +
 src/teachers/GA_2_2/the_big_M.html       | 8024 ++++++++++++++++++++++
 10 files changed, 18408 insertions(+)
 create mode 100644 src/students/GA_2_2/README.html
 create mode 100644 src/students/GA_2_2/Report.html
 create mode 100644 src/students/GA_2_2/environment.yml
 create mode 100644 src/students/GA_2_2/the_big_M.html
 create mode 100644 src/teachers/GA_2_2/GA_2_2_all_files.zip
 create mode 100644 src/teachers/GA_2_2/README.html
 create mode 100644 src/teachers/GA_2_2/Report.html
 create mode 100644 src/teachers/GA_2_2/Report_solution.html
 create mode 100644 src/teachers/GA_2_2/environment.yml
 create mode 100644 src/teachers/GA_2_2/the_big_M.html

diff --git a/src/students/GA_2_2/README.html b/src/students/GA_2_2/README.html
new file mode 100644
index 00000000..c2f4a514
--- /dev/null
+++ b/src/students/GA_2_2/README.html
@@ -0,0 +1,396 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>README.md</title>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+<style>
+/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+body {
+	font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
+	font-size: var(--vscode-markdown-font-size, 14px);
+	padding: 0 26px;
+	line-height: var(--vscode-markdown-line-height, 22px);
+	word-wrap: break-word;
+}
+
+#code-csp-warning {
+	position: fixed;
+	top: 0;
+	right: 0;
+	color: white;
+	margin: 16px;
+	text-align: center;
+	font-size: 12px;
+	font-family: sans-serif;
+	background-color:#444444;
+	cursor: pointer;
+	padding: 6px;
+	box-shadow: 1px 1px 1px rgba(0,0,0,.25);
+}
+
+#code-csp-warning:hover {
+	text-decoration: none;
+	background-color:#007acc;
+	box-shadow: 2px 2px 2px rgba(0,0,0,.25);
+}
+
+body.scrollBeyondLastLine {
+	margin-bottom: calc(100vh - 22px);
+}
+
+body.showEditorSelection .code-line {
+	position: relative;
+}
+
+body.showEditorSelection .code-active-line:before,
+body.showEditorSelection .code-line:hover:before {
+	content: "";
+	display: block;
+	position: absolute;
+	top: 0;
+	left: -12px;
+	height: 100%;
+}
+
+body.showEditorSelection li.code-active-line:before,
+body.showEditorSelection li.code-line:hover:before {
+	left: -30px;
+}
+
+.vscode-light.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.15);
+}
+
+.vscode-light.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.40);
+}
+
+.vscode-light.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-dark.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.4);
+}
+
+.vscode-dark.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.60);
+}
+
+.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-high-contrast.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 160, 0, 0.7);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 160, 0, 1);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+a {
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a:focus,
+input:focus,
+select:focus,
+textarea:focus {
+	outline: 1px solid -webkit-focus-ring-color;
+	outline-offset: -1px;
+}
+
+hr {
+	border: 0;
+	height: 2px;
+	border-bottom: 2px solid;
+}
+
+h1 {
+	padding-bottom: 0.3em;
+	line-height: 1.2;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+h1, h2, h3 {
+	font-weight: normal;
+}
+
+table {
+	border-collapse: collapse;
+}
+
+table > thead > tr > th {
+	text-align: left;
+	border-bottom: 1px solid;
+}
+
+table > thead > tr > th,
+table > thead > tr > td,
+table > tbody > tr > th,
+table > tbody > tr > td {
+	padding: 5px 10px;
+}
+
+table > tbody > tr + tr > td {
+	border-top: 1px solid;
+}
+
+blockquote {
+	margin: 0 7px 0 5px;
+	padding: 0 16px 0 10px;
+	border-left-width: 5px;
+	border-left-style: solid;
+}
+
+code {
+	font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
+	font-size: 1em;
+	line-height: 1.357em;
+}
+
+body.wordWrap pre {
+	white-space: pre-wrap;
+}
+
+pre:not(.hljs),
+pre.hljs code > div {
+	padding: 16px;
+	border-radius: 3px;
+	overflow: auto;
+}
+
+pre code {
+	color: var(--vscode-editor-foreground);
+	tab-size: 4;
+}
+
+/** Theming */
+
+.vscode-light pre {
+	background-color: rgba(220, 220, 220, 0.4);
+}
+
+.vscode-dark pre {
+	background-color: rgba(10, 10, 10, 0.4);
+}
+
+.vscode-high-contrast pre {
+	background-color: rgb(0, 0, 0);
+}
+
+.vscode-high-contrast h1 {
+	border-color: rgb(0, 0, 0);
+}
+
+.vscode-light table > thead > tr > th {
+	border-color: rgba(0, 0, 0, 0.69);
+}
+
+.vscode-dark table > thead > tr > th {
+	border-color: rgba(255, 255, 255, 0.69);
+}
+
+.vscode-light h1,
+.vscode-light hr,
+.vscode-light table > tbody > tr + tr > td {
+	border-color: rgba(0, 0, 0, 0.18);
+}
+
+.vscode-dark h1,
+.vscode-dark hr,
+.vscode-dark table > tbody > tr + tr > td {
+	border-color: rgba(255, 255, 255, 0.18);
+}
+
+</style>
+
+<style>
+/* Tomorrow Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #8e908c;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #f5871f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #718c00;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #4271ae;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #8959a8;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	color: #4d4d4c;
+	padding: 0.5em;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}
+</style>
+
+<style>
+/*
+ * Markdown PDF CSS
+ */
+
+ body {
+	font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
+	padding: 0 12px;
+}
+
+pre {
+	background-color: #f8f8f8;
+	border: 1px solid #cccccc;
+	border-radius: 3px;
+	overflow-x: auto;
+	white-space: pre-wrap;
+	overflow-wrap: break-word;
+}
+
+pre:not(.hljs) {
+	padding: 23px;
+	line-height: 19px;
+}
+
+blockquote {
+	background: rgba(127, 127, 127, 0.1);
+	border-color: rgba(0, 122, 204, 0.5);
+}
+
+.emoji {
+	height: 1.4em;
+}
+
+code {
+	font-size: 14px;
+	line-height: 19px;
+}
+
+/* for inline code */
+:not(pre):not(.hljs) > code {
+	color: #C9AE75; /* Change the old color so it seems less like an error */
+	font-size: inherit;
+}
+
+/* Page Break : use <div class="page"/> to insert page break
+-------------------------------------------------------- */
+.page {
+	page-break-after: always;
+}
+
+</style>
+
+<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</head>
+<body>
+  <script>
+    mermaid.initialize({
+      startOnLoad: true,
+      theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
+          ? 'dark'
+          : 'default'
+    });
+  </script>
+<h1 id="readme-for-group-assignment-22">README for Group Assignment 2.2</h1>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2, Friday, Nov 22, 2024.</em></p>
+<p><em>You can access this assignment with the following link: <a href="https://classroom.github.com/a/6gksW4N3">classroom.github.com/a/6gksW4N3</a>.</em></p>
+<p>GA 2.2 applies the finite element method (FEM) to a 2D problem with a fun geometry.</p>
+<p>There are several files to be aware of:</p>
+<ol>
+<li><code>README.md</code></li>
+<li>A notebook <code>the_big_M.ipynb</code> (equivalent to the previous <code>Analysis.ipynb</code> files)</li>
+<li>A <code>Report.md</code> file for answering questions</li>
+<li>File <code>big_M.msh</code> and <code>big_M_fine.msh</code>: two FEM meshes to use in the analysis. Only the first one is needed, but the second one can be tried as well by modifying a single line in the notebook.</li>
+</ol>
+<h2 id="primary-task">Primary Task</h2>
+<p>Run the analysis in <code>the_big_M.ipynb</code>, inspect the code (really <strong>really</strong> read it!) and results, then answer the questions in <code>Report.md</code>.</p>
+<p>Note that unlike other GA's, besides reading and understanding the contents, you don't have to do anything with the code in the notebook before reading the Report questions. The questions mostly focus on what is happening in the analysis. The provided finite element code is complete, but you will need to look at the details of the implementation to answer the questions. For the final question you will have to perform some additional operations in the notebook.</p>
+<h2 id="python-environment">Python environment</h2>
+<p>To run the code for this assignment <strong>add a new Python package</strong> to your <code>mude-base</code> environment:</p>
+<pre class="hljs"><code><div>conda activate mude-base
+conda install ipympl
+</div></code></pre>
+<p>Remember to install <em>before</em> running your notebook. If you did not do this, you may have to restart the kernel in your notebook.</p>
+<p>There are occasionally issues with the visualizations in VS Code. If you cannot see the animations, try uncommenting the cell magic lines (those beggining with <code>%matplotlib ...</code>). You can start a text search by using <code>CTRL+F</code>.</p>
+<h2 id="task-overview">Task Overview</h2>
+<p>You may be able to divide work on the last two questions once the derivation and determination of boundary conditions is complete. Note that the first question in particular is essential exam practice and every group member should be able to complete it individually.</p>
+<p><strong>End of file.</strong></p>
+<span style="font-size: 75%">
+&copy; Copyright 2024 <a rel="MUDE" href="http://mude.citg.tudelft.nl/">MUDE</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0 License</a>.
+
+</body>
+</html>
diff --git a/src/students/GA_2_2/Report.html b/src/students/GA_2_2/Report.html
new file mode 100644
index 00000000..be9b7e23
--- /dev/null
+++ b/src/students/GA_2_2/Report.html
@@ -0,0 +1,432 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Report.md</title>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+<style>
+/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+body {
+	font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
+	font-size: var(--vscode-markdown-font-size, 14px);
+	padding: 0 26px;
+	line-height: var(--vscode-markdown-line-height, 22px);
+	word-wrap: break-word;
+}
+
+#code-csp-warning {
+	position: fixed;
+	top: 0;
+	right: 0;
+	color: white;
+	margin: 16px;
+	text-align: center;
+	font-size: 12px;
+	font-family: sans-serif;
+	background-color:#444444;
+	cursor: pointer;
+	padding: 6px;
+	box-shadow: 1px 1px 1px rgba(0,0,0,.25);
+}
+
+#code-csp-warning:hover {
+	text-decoration: none;
+	background-color:#007acc;
+	box-shadow: 2px 2px 2px rgba(0,0,0,.25);
+}
+
+body.scrollBeyondLastLine {
+	margin-bottom: calc(100vh - 22px);
+}
+
+body.showEditorSelection .code-line {
+	position: relative;
+}
+
+body.showEditorSelection .code-active-line:before,
+body.showEditorSelection .code-line:hover:before {
+	content: "";
+	display: block;
+	position: absolute;
+	top: 0;
+	left: -12px;
+	height: 100%;
+}
+
+body.showEditorSelection li.code-active-line:before,
+body.showEditorSelection li.code-line:hover:before {
+	left: -30px;
+}
+
+.vscode-light.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.15);
+}
+
+.vscode-light.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.40);
+}
+
+.vscode-light.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-dark.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.4);
+}
+
+.vscode-dark.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.60);
+}
+
+.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-high-contrast.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 160, 0, 0.7);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 160, 0, 1);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+a {
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a:focus,
+input:focus,
+select:focus,
+textarea:focus {
+	outline: 1px solid -webkit-focus-ring-color;
+	outline-offset: -1px;
+}
+
+hr {
+	border: 0;
+	height: 2px;
+	border-bottom: 2px solid;
+}
+
+h1 {
+	padding-bottom: 0.3em;
+	line-height: 1.2;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+h1, h2, h3 {
+	font-weight: normal;
+}
+
+table {
+	border-collapse: collapse;
+}
+
+table > thead > tr > th {
+	text-align: left;
+	border-bottom: 1px solid;
+}
+
+table > thead > tr > th,
+table > thead > tr > td,
+table > tbody > tr > th,
+table > tbody > tr > td {
+	padding: 5px 10px;
+}
+
+table > tbody > tr + tr > td {
+	border-top: 1px solid;
+}
+
+blockquote {
+	margin: 0 7px 0 5px;
+	padding: 0 16px 0 10px;
+	border-left-width: 5px;
+	border-left-style: solid;
+}
+
+code {
+	font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
+	font-size: 1em;
+	line-height: 1.357em;
+}
+
+body.wordWrap pre {
+	white-space: pre-wrap;
+}
+
+pre:not(.hljs),
+pre.hljs code > div {
+	padding: 16px;
+	border-radius: 3px;
+	overflow: auto;
+}
+
+pre code {
+	color: var(--vscode-editor-foreground);
+	tab-size: 4;
+}
+
+/** Theming */
+
+.vscode-light pre {
+	background-color: rgba(220, 220, 220, 0.4);
+}
+
+.vscode-dark pre {
+	background-color: rgba(10, 10, 10, 0.4);
+}
+
+.vscode-high-contrast pre {
+	background-color: rgb(0, 0, 0);
+}
+
+.vscode-high-contrast h1 {
+	border-color: rgb(0, 0, 0);
+}
+
+.vscode-light table > thead > tr > th {
+	border-color: rgba(0, 0, 0, 0.69);
+}
+
+.vscode-dark table > thead > tr > th {
+	border-color: rgba(255, 255, 255, 0.69);
+}
+
+.vscode-light h1,
+.vscode-light hr,
+.vscode-light table > tbody > tr + tr > td {
+	border-color: rgba(0, 0, 0, 0.18);
+}
+
+.vscode-dark h1,
+.vscode-dark hr,
+.vscode-dark table > tbody > tr + tr > td {
+	border-color: rgba(255, 255, 255, 0.18);
+}
+
+</style>
+
+<style>
+/* Tomorrow Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #8e908c;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #f5871f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #718c00;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #4271ae;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #8959a8;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	color: #4d4d4c;
+	padding: 0.5em;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}
+</style>
+
+<style>
+/*
+ * Markdown PDF CSS
+ */
+
+ body {
+	font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
+	padding: 0 12px;
+}
+
+pre {
+	background-color: #f8f8f8;
+	border: 1px solid #cccccc;
+	border-radius: 3px;
+	overflow-x: auto;
+	white-space: pre-wrap;
+	overflow-wrap: break-word;
+}
+
+pre:not(.hljs) {
+	padding: 23px;
+	line-height: 19px;
+}
+
+blockquote {
+	background: rgba(127, 127, 127, 0.1);
+	border-color: rgba(0, 122, 204, 0.5);
+}
+
+.emoji {
+	height: 1.4em;
+}
+
+code {
+	font-size: 14px;
+	line-height: 19px;
+}
+
+/* for inline code */
+:not(pre):not(.hljs) > code {
+	color: #C9AE75; /* Change the old color so it seems less like an error */
+	font-size: inherit;
+}
+
+/* Page Break : use <div class="page"/> to insert page break
+-------------------------------------------------------- */
+.page {
+	page-break-after: always;
+}
+
+</style>
+
+<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</head>
+<body>
+  <script>
+    mermaid.initialize({
+      startOnLoad: true,
+      theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
+          ? 'dark'
+          : 'default'
+    });
+  </script>
+<h1 id="ga-22-report-m-is-for-modelling">GA 2.2 Report: M is for Modelling</h1>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2. Due: November 22, 2024.</em></p>
+<h2 id="report-instructions">Report Instructions</h2>
+<p>Use Markdown features to clearly indicate your answers for each question below. For example, headings (<code>##</code> and <code>###</code>), <strong>bold</strong> or <em>italic</em> text, or ordered lists. Show your work using either LaTeX equations, like this:</p>
+<p>$$
+u(x=?) = \dots
+$$</p>
+<p>or by including an image with your (clearly written) handwriting.</p>
+<p><strong>Tip:</strong> <em>most IDE's have live Markdown previewers. In Jupyter Lab, right-click on the Markdown file and select &quot;Show Markdown Preview.&quot; If you are using VS Code, <code>ctrl + shift + v</code> should work (you may need the extension &quot;Markdown All in One&quot;). We are not sure how to do this in Deepnote.</em></p>
+<p>Please keep your solutions as <strong>concise</strong> as possible, and, where possible, answer in <strong>bullet points</strong>!</p>
+<h2 id="questions">Questions</h2>
+<p><strong>Question 1: Derivation</strong></p>
+<p>Follow the steps from strong form to discretized form to derive the expression $\mathbf{M}=\int_\Omega\mathbf{N}^T\mathbf{N},\mathrm{d}\Omega$ in the term $\mathbf{M}\dot{\mathbf{u}}$. You will only be assessed on how you deal with the term that contains the time derivative. The other terms exactly following the recipe outlined for the <a href="https://mude.citg.tudelft.nl/2024/book/fem/poisson2d.html">Poisson equation in 2D</a> in the book.</p>
+<p><strong>Question 2: Problem definition</strong></p>
+<p>Investigate the code and results to find out which problem is being solved.</p>
+<ul>
+<li>
+<p>Give a mathematical description of the problem in terms of governing equation and boundary conditions. Be as specific as possible, indicating the values that are used as input to the calculation.</p>
+</li>
+<li>
+<p>In the final visualization contour lines are visible, connecting points that have the same temperature. As the solution evolves, these contour lines remain approximately perpendicular to the boundary. Which boundary condition does this observation relate to?</p>
+</li>
+</ul>
+<p><strong>Question 3: Integration scheme</strong></p>
+<ul>
+<li>
+<p>In the <code>get_element_M</code> function, how many integration points are used and where in the triangles are they positioned?</p>
+</li>
+<li>
+<p>In the <code>get_element_K</code> a simpler implementation is used. What is the essential difference between $\mathbf{K}_e$ and $\mathbf{M}_e$ that is the reason why this simpler implementation is valid for $\mathbf{K}_e$? (The subscript $_e$ is used to indicate the contribution to the matrix from a single element, or the <em>element matrix</em>).</p>
+</li>
+</ul>
+<p><strong>Question 4: Shape functions</strong></p>
+<p>Investigate the shape functions for the element with index 10 in the mesh. Use the <code>get_shape_functions_T3</code> function defined in the notebook to find expressions for the shape functions in that element and check that they satisfy the shape function properties.</p>
+<ul>
+<li>
+<p>What are the coordinates of the nodes of element 10?</p>
+</li>
+<li>
+<p>What are the shape functions of the element?</p>
+</li>
+<li>
+<p>Assert that the shape functions satisfy the partition of unity property:</p>
+</li>
+</ul>
+<p>$$
+\sum_i N_i(\mathbf{x}) = 1
+$$</p>
+<ul>
+<li>Assert for one of the shape functions that it satisfies the Kronecker delta property</li>
+</ul>
+<p>$$
+N_i(\mathbf{x}_j) = \begin{cases}
+1, &amp; i = j \
+0, &amp; i\neq j
+\end{cases}
+$$</p>
+<p><strong>Last Question: How did things go? (Optional)</strong></p>
+<p><em>Use this space to let us know if you ran into any challenges while working on this GA, and if you have any feedback to report.</em></p>
+<p><strong>End of file.</strong></p>
+<span style="font-size: 75%">
+&copy; Copyright 2024 <a rel="MUDE" href="http://mude.citg.tudelft.nl/">MUDE</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0 License</a>.
+
+</body>
+</html>
diff --git a/src/students/GA_2_2/environment.yml b/src/students/GA_2_2/environment.yml
new file mode 100644
index 00000000..765e2f0a
--- /dev/null
+++ b/src/students/GA_2_2/environment.yml
@@ -0,0 +1,11 @@
+name: mude-week-2-2
+dependencies:
+  - python=3.12
+  - numpy
+  - scipy
+  - pandas
+  - matplotlib
+  - jupyter
+  - ipykernel
+  - ipympl
+  - pip
\ No newline at end of file
diff --git a/src/students/GA_2_2/the_big_M.html b/src/students/GA_2_2/the_big_M.html
new file mode 100644
index 00000000..e3e13348
--- /dev/null
+++ b/src/students/GA_2_2/the_big_M.html
@@ -0,0 +1,8024 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head><meta charset="utf-8"/>
+<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+<title>the_big_M</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
+<style type="text/css">
+    pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
+.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
+.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
+.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
+.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
+.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
+.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
+.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
+.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
+.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
+.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
+.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
+.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
+.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
+.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
+.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
+.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
+.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
+.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
+.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
+.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
+.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
+.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
+.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
+.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
+.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
+.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
+.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
+.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
+.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
+.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
+.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
+.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
+.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
+  </style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+ * Mozilla scrollbar styling
+ */
+
+/* use standard opaque scrollbars for most nodes */
+[data-jp-theme-scrollbars='true'] {
+  scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
+    var(--jp-scrollbar-background-color);
+}
+
+/* for code nodes, use a transparent style of scrollbar. These selectors
+ * will match lower in the tree, and so will override the above */
+[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
+[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
+  scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny {
+  scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+  scrollbar-width: thin;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny::-webkit-scrollbar,
+.jp-scrollbar-tiny::-webkit-scrollbar-corner {
+  background-color: transparent;
+  height: 4px;
+  width: 4px;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
+  background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
+  border-left: 0 solid transparent;
+  border-right: 0 solid transparent;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
+  border-top: 0 solid transparent;
+  border-bottom: 0 solid transparent;
+}
+
+/*
+ * Lumino
+ */
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+  min-height: 16px;
+  max-height: 16px;
+  min-width: 45px;
+  border-top: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+  min-width: 16px;
+  max-width: 16px;
+  min-height: 45px;
+  border-left: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar-button {
+  background-color: #f0f0f0;
+  background-position: center center;
+  min-height: 15px;
+  max-height: 15px;
+  min-width: 15px;
+  max-width: 15px;
+}
+
+.lm-ScrollBar-button:hover {
+  background-color: #dadada;
+}
+
+.lm-ScrollBar-button.lm-mod-active {
+  background-color: #cdcdcd;
+}
+
+.lm-ScrollBar-track {
+  background: #f0f0f0;
+}
+
+.lm-ScrollBar-thumb {
+  background: #cdcdcd;
+}
+
+.lm-ScrollBar-thumb:hover {
+  background: #bababa;
+}
+
+.lm-ScrollBar-thumb.lm-mod-active {
+  background: #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
+  height: 100%;
+  min-width: 15px;
+  border-left: 1px solid #a0a0a0;
+  border-right: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
+  width: 100%;
+  min-height: 15px;
+  border-top: 1px solid #a0a0a0;
+  border-bottom: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+  .lm-ScrollBar-button[data-action='decrement'] {
+  background-image: var(--jp-icon-caret-left);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+  .lm-ScrollBar-button[data-action='increment'] {
+  background-image: var(--jp-icon-caret-right);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+  .lm-ScrollBar-button[data-action='decrement'] {
+  background-image: var(--jp-icon-caret-up);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+  .lm-ScrollBar-button[data-action='increment'] {
+  background-image: var(--jp-icon-caret-down);
+  background-size: 17px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Widget {
+  box-sizing: border-box;
+  position: relative;
+  overflow: hidden;
+}
+
+.lm-Widget.lm-mod-hidden {
+  display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
+  /* Title is rotated for horizontal accordion panel using CSS */
+  display: block;
+  transform-origin: top left;
+  transform: rotate(-90deg) translate(-100%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+  display: flex;
+  flex-direction: column;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-CommandPalette-search {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-content {
+  flex: 1 1 auto;
+  margin: 0;
+  padding: 0;
+  min-height: 0;
+  overflow: auto;
+  list-style-type: none;
+}
+
+.lm-CommandPalette-header {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.lm-CommandPalette-item {
+  display: flex;
+  flex-direction: row;
+}
+
+.lm-CommandPalette-itemIcon {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemContent {
+  flex: 1 1 auto;
+  overflow: hidden;
+}
+
+.lm-CommandPalette-itemShortcut {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemLabel {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.lm-close-icon {
+  border: 1px solid transparent;
+  background-color: transparent;
+  position: absolute;
+  z-index: 1;
+  right: 3%;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  padding: 7px 0;
+  display: none;
+  vertical-align: middle;
+  outline: 0;
+  cursor: pointer;
+}
+.lm-close-icon:after {
+  content: 'X';
+  display: block;
+  width: 15px;
+  height: 15px;
+  text-align: center;
+  color: #000;
+  font-weight: normal;
+  font-size: 12px;
+  cursor: pointer;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-DockPanel {
+  z-index: 0;
+}
+
+.lm-DockPanel-widget {
+  z-index: 0;
+}
+
+.lm-DockPanel-tabBar {
+  z-index: 1;
+}
+
+.lm-DockPanel-handle {
+  z-index: 2;
+}
+
+.lm-DockPanel-handle.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-DockPanel-handle:after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  content: '';
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal'] {
+  cursor: ew-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='vertical'] {
+  cursor: ns-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal']:after {
+  left: 50%;
+  min-width: 8px;
+  transform: translateX(-50%);
+}
+
+.lm-DockPanel-handle[data-orientation='vertical']:after {
+  top: 50%;
+  min-height: 8px;
+  transform: translateY(-50%);
+}
+
+.lm-DockPanel-overlay {
+  z-index: 3;
+  box-sizing: border-box;
+  pointer-events: none;
+}
+
+.lm-DockPanel-overlay.lm-mod-hidden {
+  display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Menu {
+  z-index: 10000;
+  position: absolute;
+  white-space: nowrap;
+  overflow-x: hidden;
+  overflow-y: auto;
+  outline: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-Menu-content {
+  margin: 0;
+  padding: 0;
+  display: table;
+  list-style-type: none;
+}
+
+.lm-Menu-item {
+  display: table-row;
+}
+
+.lm-Menu-item.lm-mod-hidden,
+.lm-Menu-item.lm-mod-collapsed {
+  display: none !important;
+}
+
+.lm-Menu-itemIcon,
+.lm-Menu-itemSubmenuIcon {
+  display: table-cell;
+  text-align: center;
+}
+
+.lm-Menu-itemLabel {
+  display: table-cell;
+  text-align: left;
+}
+
+.lm-Menu-itemShortcut {
+  display: table-cell;
+  text-align: right;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-MenuBar {
+  outline: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-MenuBar-content {
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex-direction: row;
+  list-style-type: none;
+}
+
+.lm-MenuBar-item {
+  box-sizing: border-box;
+}
+
+.lm-MenuBar-itemIcon,
+.lm-MenuBar-itemLabel {
+  display: inline-block;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-ScrollBar {
+  display: flex;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+  flex-direction: row;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+  flex-direction: column;
+}
+
+.lm-ScrollBar-button {
+  box-sizing: border-box;
+  flex: 0 0 auto;
+}
+
+.lm-ScrollBar-track {
+  box-sizing: border-box;
+  position: relative;
+  overflow: hidden;
+  flex: 1 1 auto;
+}
+
+.lm-ScrollBar-thumb {
+  box-sizing: border-box;
+  position: absolute;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-SplitPanel-child {
+  z-index: 0;
+}
+
+.lm-SplitPanel-handle {
+  z-index: 1;
+}
+
+.lm-SplitPanel-handle.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-SplitPanel-handle:after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  content: '';
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
+  cursor: ew-resize;
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
+  cursor: ns-resize;
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
+  left: 50%;
+  min-width: 8px;
+  transform: translateX(-50%);
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
+  top: 50%;
+  min-height: 8px;
+  transform: translateY(-50%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar {
+  display: flex;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] {
+  flex-direction: row;
+  align-items: flex-end;
+}
+
+.lm-TabBar[data-orientation='vertical'] {
+  flex-direction: column;
+  align-items: flex-end;
+}
+
+.lm-TabBar-content {
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex: 1 1 auto;
+  list-style-type: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
+  flex-direction: row;
+}
+
+.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
+  flex-direction: column;
+}
+
+.lm-TabBar-tab {
+  display: flex;
+  flex-direction: row;
+  box-sizing: border-box;
+  overflow: hidden;
+  touch-action: none; /* Disable native Drag/Drop */
+}
+
+.lm-TabBar-tabIcon,
+.lm-TabBar-tabCloseIcon {
+  flex: 0 0 auto;
+}
+
+.lm-TabBar-tabLabel {
+  flex: 1 1 auto;
+  overflow: hidden;
+  white-space: nowrap;
+}
+
+.lm-TabBar-tabInput {
+  user-select: all;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.lm-TabBar-tab.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-TabBar-addButton.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
+  position: relative;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
+  left: 0;
+  transition: left 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
+  top: 0;
+  transition: top 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
+  transition: none;
+}
+
+.lm-TabBar-tabLabel .lm-TabBar-tabInput {
+  user-select: all;
+  width: 100%;
+  box-sizing: border-box;
+  background: inherit;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabPanel-tabBar {
+  z-index: 1;
+}
+
+.lm-TabPanel-stackedPanel {
+  z-index: 0;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapse {
+  display: flex;
+  flex-direction: column;
+  align-items: stretch;
+}
+
+.jp-Collapse-header {
+  padding: 1px 12px;
+  background-color: var(--jp-layout-color1);
+  border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+  color: var(--jp-ui-font-color1);
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  text-transform: uppercase;
+  user-select: none;
+}
+
+.jp-Collapser-icon {
+  height: 16px;
+}
+
+.jp-Collapse-header-collapsed .jp-Collapser-icon {
+  transform: rotate(-90deg);
+  margin: auto 0;
+}
+
+.jp-Collapser-title {
+  line-height: 25px;
+}
+
+.jp-Collapse-contents {
+  padding: 0 12px;
+  background-color: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  overflow: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+/* Icons urls */
+
+:root {
+  --jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
+  --jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
+  --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
+  --jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
+  --jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
+  --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
+  --jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
+  --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
+  --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
+  --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
+  --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
+  --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
+  --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
+  --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
+  --jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
+  --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
+  --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
+  --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
+  --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
+  --jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
+  --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
+  --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
+  --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
+}
+
+/* Icon CSS class declarations */
+
+.jp-AddAboveIcon {
+  background-image: var(--jp-icon-add-above);
+}
+
+.jp-AddBelowIcon {
+  background-image: var(--jp-icon-add-below);
+}
+
+.jp-AddIcon {
+  background-image: var(--jp-icon-add);
+}
+
+.jp-BellIcon {
+  background-image: var(--jp-icon-bell);
+}
+
+.jp-BugDotIcon {
+  background-image: var(--jp-icon-bug-dot);
+}
+
+.jp-BugIcon {
+  background-image: var(--jp-icon-bug);
+}
+
+.jp-BuildIcon {
+  background-image: var(--jp-icon-build);
+}
+
+.jp-CaretDownEmptyIcon {
+  background-image: var(--jp-icon-caret-down-empty);
+}
+
+.jp-CaretDownEmptyThinIcon {
+  background-image: var(--jp-icon-caret-down-empty-thin);
+}
+
+.jp-CaretDownIcon {
+  background-image: var(--jp-icon-caret-down);
+}
+
+.jp-CaretLeftIcon {
+  background-image: var(--jp-icon-caret-left);
+}
+
+.jp-CaretRightIcon {
+  background-image: var(--jp-icon-caret-right);
+}
+
+.jp-CaretUpEmptyThinIcon {
+  background-image: var(--jp-icon-caret-up-empty-thin);
+}
+
+.jp-CaretUpIcon {
+  background-image: var(--jp-icon-caret-up);
+}
+
+.jp-CaseSensitiveIcon {
+  background-image: var(--jp-icon-case-sensitive);
+}
+
+.jp-CheckIcon {
+  background-image: var(--jp-icon-check);
+}
+
+.jp-CircleEmptyIcon {
+  background-image: var(--jp-icon-circle-empty);
+}
+
+.jp-CircleIcon {
+  background-image: var(--jp-icon-circle);
+}
+
+.jp-ClearIcon {
+  background-image: var(--jp-icon-clear);
+}
+
+.jp-CloseIcon {
+  background-image: var(--jp-icon-close);
+}
+
+.jp-CodeCheckIcon {
+  background-image: var(--jp-icon-code-check);
+}
+
+.jp-CodeIcon {
+  background-image: var(--jp-icon-code);
+}
+
+.jp-CollapseAllIcon {
+  background-image: var(--jp-icon-collapse-all);
+}
+
+.jp-ConsoleIcon {
+  background-image: var(--jp-icon-console);
+}
+
+.jp-CopyIcon {
+  background-image: var(--jp-icon-copy);
+}
+
+.jp-CopyrightIcon {
+  background-image: var(--jp-icon-copyright);
+}
+
+.jp-CutIcon {
+  background-image: var(--jp-icon-cut);
+}
+
+.jp-DeleteIcon {
+  background-image: var(--jp-icon-delete);
+}
+
+.jp-DownloadIcon {
+  background-image: var(--jp-icon-download);
+}
+
+.jp-DuplicateIcon {
+  background-image: var(--jp-icon-duplicate);
+}
+
+.jp-EditIcon {
+  background-image: var(--jp-icon-edit);
+}
+
+.jp-EllipsesIcon {
+  background-image: var(--jp-icon-ellipses);
+}
+
+.jp-ErrorIcon {
+  background-image: var(--jp-icon-error);
+}
+
+.jp-ExpandAllIcon {
+  background-image: var(--jp-icon-expand-all);
+}
+
+.jp-ExtensionIcon {
+  background-image: var(--jp-icon-extension);
+}
+
+.jp-FastForwardIcon {
+  background-image: var(--jp-icon-fast-forward);
+}
+
+.jp-FileIcon {
+  background-image: var(--jp-icon-file);
+}
+
+.jp-FileUploadIcon {
+  background-image: var(--jp-icon-file-upload);
+}
+
+.jp-FilterDotIcon {
+  background-image: var(--jp-icon-filter-dot);
+}
+
+.jp-FilterIcon {
+  background-image: var(--jp-icon-filter);
+}
+
+.jp-FilterListIcon {
+  background-image: var(--jp-icon-filter-list);
+}
+
+.jp-FolderFavoriteIcon {
+  background-image: var(--jp-icon-folder-favorite);
+}
+
+.jp-FolderIcon {
+  background-image: var(--jp-icon-folder);
+}
+
+.jp-HomeIcon {
+  background-image: var(--jp-icon-home);
+}
+
+.jp-Html5Icon {
+  background-image: var(--jp-icon-html5);
+}
+
+.jp-ImageIcon {
+  background-image: var(--jp-icon-image);
+}
+
+.jp-InfoIcon {
+  background-image: var(--jp-icon-info);
+}
+
+.jp-InspectorIcon {
+  background-image: var(--jp-icon-inspector);
+}
+
+.jp-JsonIcon {
+  background-image: var(--jp-icon-json);
+}
+
+.jp-JuliaIcon {
+  background-image: var(--jp-icon-julia);
+}
+
+.jp-JupyterFaviconIcon {
+  background-image: var(--jp-icon-jupyter-favicon);
+}
+
+.jp-JupyterIcon {
+  background-image: var(--jp-icon-jupyter);
+}
+
+.jp-JupyterlabWordmarkIcon {
+  background-image: var(--jp-icon-jupyterlab-wordmark);
+}
+
+.jp-KernelIcon {
+  background-image: var(--jp-icon-kernel);
+}
+
+.jp-KeyboardIcon {
+  background-image: var(--jp-icon-keyboard);
+}
+
+.jp-LaunchIcon {
+  background-image: var(--jp-icon-launch);
+}
+
+.jp-LauncherIcon {
+  background-image: var(--jp-icon-launcher);
+}
+
+.jp-LineFormIcon {
+  background-image: var(--jp-icon-line-form);
+}
+
+.jp-LinkIcon {
+  background-image: var(--jp-icon-link);
+}
+
+.jp-ListIcon {
+  background-image: var(--jp-icon-list);
+}
+
+.jp-MarkdownIcon {
+  background-image: var(--jp-icon-markdown);
+}
+
+.jp-MoveDownIcon {
+  background-image: var(--jp-icon-move-down);
+}
+
+.jp-MoveUpIcon {
+  background-image: var(--jp-icon-move-up);
+}
+
+.jp-NewFolderIcon {
+  background-image: var(--jp-icon-new-folder);
+}
+
+.jp-NotTrustedIcon {
+  background-image: var(--jp-icon-not-trusted);
+}
+
+.jp-NotebookIcon {
+  background-image: var(--jp-icon-notebook);
+}
+
+.jp-NumberingIcon {
+  background-image: var(--jp-icon-numbering);
+}
+
+.jp-OfflineBoltIcon {
+  background-image: var(--jp-icon-offline-bolt);
+}
+
+.jp-PaletteIcon {
+  background-image: var(--jp-icon-palette);
+}
+
+.jp-PasteIcon {
+  background-image: var(--jp-icon-paste);
+}
+
+.jp-PdfIcon {
+  background-image: var(--jp-icon-pdf);
+}
+
+.jp-PythonIcon {
+  background-image: var(--jp-icon-python);
+}
+
+.jp-RKernelIcon {
+  background-image: var(--jp-icon-r-kernel);
+}
+
+.jp-ReactIcon {
+  background-image: var(--jp-icon-react);
+}
+
+.jp-RedoIcon {
+  background-image: var(--jp-icon-redo);
+}
+
+.jp-RefreshIcon {
+  background-image: var(--jp-icon-refresh);
+}
+
+.jp-RegexIcon {
+  background-image: var(--jp-icon-regex);
+}
+
+.jp-RunIcon {
+  background-image: var(--jp-icon-run);
+}
+
+.jp-RunningIcon {
+  background-image: var(--jp-icon-running);
+}
+
+.jp-SaveIcon {
+  background-image: var(--jp-icon-save);
+}
+
+.jp-SearchIcon {
+  background-image: var(--jp-icon-search);
+}
+
+.jp-SettingsIcon {
+  background-image: var(--jp-icon-settings);
+}
+
+.jp-ShareIcon {
+  background-image: var(--jp-icon-share);
+}
+
+.jp-SpreadsheetIcon {
+  background-image: var(--jp-icon-spreadsheet);
+}
+
+.jp-StopIcon {
+  background-image: var(--jp-icon-stop);
+}
+
+.jp-TabIcon {
+  background-image: var(--jp-icon-tab);
+}
+
+.jp-TableRowsIcon {
+  background-image: var(--jp-icon-table-rows);
+}
+
+.jp-TagIcon {
+  background-image: var(--jp-icon-tag);
+}
+
+.jp-TerminalIcon {
+  background-image: var(--jp-icon-terminal);
+}
+
+.jp-TextEditorIcon {
+  background-image: var(--jp-icon-text-editor);
+}
+
+.jp-TocIcon {
+  background-image: var(--jp-icon-toc);
+}
+
+.jp-TreeViewIcon {
+  background-image: var(--jp-icon-tree-view);
+}
+
+.jp-TrustedIcon {
+  background-image: var(--jp-icon-trusted);
+}
+
+.jp-UndoIcon {
+  background-image: var(--jp-icon-undo);
+}
+
+.jp-UserIcon {
+  background-image: var(--jp-icon-user);
+}
+
+.jp-UsersIcon {
+  background-image: var(--jp-icon-users);
+}
+
+.jp-VegaIcon {
+  background-image: var(--jp-icon-vega);
+}
+
+.jp-WordIcon {
+  background-image: var(--jp-icon-word);
+}
+
+.jp-YamlIcon {
+  background-image: var(--jp-icon-yaml);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+.jp-Icon,
+.jp-MaterialIcon {
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: 16px;
+  min-width: 16px;
+  min-height: 16px;
+}
+
+.jp-Icon-cover {
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+
+/**
+ * (DEPRECATED) Support for specific CSS icon sizes
+ */
+
+.jp-Icon-16 {
+  background-size: 16px;
+  min-width: 16px;
+  min-height: 16px;
+}
+
+.jp-Icon-18 {
+  background-size: 18px;
+  min-width: 18px;
+  min-height: 18px;
+}
+
+.jp-Icon-20 {
+  background-size: 20px;
+  min-width: 20px;
+  min-height: 20px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar .lm-TabBar-addButton {
+  align-items: center;
+  display: flex;
+  padding: 4px;
+  padding-bottom: 5px;
+  margin-right: 1px;
+  background-color: var(--jp-layout-color2);
+}
+
+.lm-TabBar .lm-TabBar-addButton:hover {
+  background-color: var(--jp-layout-color1);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-tab {
+  width: var(--jp-private-horizontal-tab-width);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-content {
+  flex: unset;
+}
+
+.lm-DockPanel-tabBar[data-orientation='horizontal'] {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for icons as inline SVG HTMLElements
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon0[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon0[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-accent0[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-accent0[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-none[fill] {
+  fill: none;
+}
+
+.jp-icon-none[stroke] {
+  stroke: none;
+}
+
+/* brand icon colors. Same for light and dark */
+.jp-icon-brand0[fill] {
+  fill: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[fill] {
+  fill: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[fill] {
+  fill: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[fill] {
+  fill: var(--jp-brand-color4);
+}
+
+.jp-icon-brand0[stroke] {
+  stroke: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[stroke] {
+  stroke: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[stroke] {
+  stroke: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[stroke] {
+  stroke: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[stroke] {
+  stroke: var(--jp-brand-color4);
+}
+
+/* warn icon colors. Same for light and dark */
+.jp-icon-warn0[fill] {
+  fill: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[fill] {
+  fill: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[fill] {
+  fill: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[fill] {
+  fill: var(--jp-warn-color3);
+}
+
+.jp-icon-warn0[stroke] {
+  stroke: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[stroke] {
+  stroke: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[stroke] {
+  stroke: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[stroke] {
+  stroke: var(--jp-warn-color3);
+}
+
+/* icon colors that contrast well with each other and most backgrounds */
+.jp-icon-contrast0[fill] {
+  fill: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[fill] {
+  fill: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[fill] {
+  fill: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[fill] {
+  fill: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-contrast0[stroke] {
+  stroke: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[stroke] {
+  stroke: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[stroke] {
+  stroke: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[stroke] {
+  stroke: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-dot[fill] {
+  fill: var(--jp-warn-color0);
+}
+
+.jp-jupyter-icon-color[fill] {
+  fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
+}
+
+.jp-notebook-icon-color[fill] {
+  fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
+}
+
+.jp-json-icon-color[fill] {
+  fill: var(--jp-json-icon-color, var(--jp-warn-color1));
+}
+
+.jp-console-icon-color[fill] {
+  fill: var(--jp-console-icon-color, white);
+}
+
+.jp-console-icon-background-color[fill] {
+  fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
+}
+
+.jp-terminal-icon-color[fill] {
+  fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
+}
+
+.jp-terminal-icon-background-color[fill] {
+  fill: var(
+    --jp-terminal-icon-background-color,
+    var(--jp-inverse-layout-color2)
+  );
+}
+
+.jp-text-editor-icon-color[fill] {
+  fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
+}
+
+.jp-inspector-icon-color[fill] {
+  fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
+}
+
+/* CSS for icons in selected filebrowser listing items */
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
+  fill: #fff;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+/* stylelint-disable selector-max-class, selector-max-compound-selectors */
+
+/**
+* TODO: come up with non css-hack solution for showing the busy icon on top
+*  of the close icon
+* CSS for complex behavior of close icon of tabs in the main area tabbar
+*/
+.lm-DockPanel-tabBar
+  .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+  > .lm-TabBar-tabCloseIcon
+  > :not(:hover)
+  > .jp-icon3[fill] {
+  fill: none;
+}
+
+.lm-DockPanel-tabBar
+  .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+  > .lm-TabBar-tabCloseIcon
+  > :not(:hover)
+  > .jp-icon-busy[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+/* stylelint-enable selector-max-class, selector-max-compound-selectors */
+
+/* CSS for icons in status bar */
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
+  fill: #fff;
+}
+
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+/* special handling for splash icon CSS. While the theme CSS reloads during
+   splash, the splash icon can loose theming. To prevent that, we set a
+   default for its color variable */
+:root {
+  --jp-warn-color0: var(--md-orange-700);
+}
+
+/* not sure what to do with this one, used in filebrowser listing */
+.jp-DragIcon {
+  margin-right: 4px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for alt colors for icons as inline SVG HTMLElements
+ */
+
+/* alt recolor the primary elements of an icon */
+.jp-icon-alt .jp-icon0[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-alt .jp-icon0[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* alt recolor the accent elements of an icon */
+.jp-icon-alt .jp-icon-accent0[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-alt .jp-icon-accent0[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
+  display: none !important;
+}
+
+/**
+ * Support for hover colors for icons as inline SVG HTMLElements
+ */
+
+/**
+ * regular colors
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon-hover :hover .jp-icon0-hover[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon0-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-hover :hover .jp-icon-none-hover[fill] {
+  fill: none;
+}
+
+.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
+  stroke: none;
+}
+
+/**
+ * inverse colors
+ */
+
+/* inverse recolor the primary elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* inverse recolor the accent elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-IFrame {
+  width: 100%;
+  height: 100%;
+}
+
+.jp-IFrame > iframe {
+  border: none;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-IFrame {
+  position: relative;
+}
+
+body.lm-mod-override-cursor .jp-IFrame::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-HoverBox {
+  position: fixed;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FormGroup-content fieldset {
+  border: none;
+  padding: 0;
+  min-width: 0;
+  width: 100%;
+}
+
+/* stylelint-disable selector-max-type */
+
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
+  font-size: var(--jp-content-font-size2);
+  border-color: var(--jp-input-border-color);
+  border-style: solid;
+  border-radius: var(--jp-border-radius);
+  border-width: 1px;
+  padding: 6px 8px;
+  background: none;
+  color: var(--jp-ui-font-color0);
+  height: inherit;
+}
+
+.jp-FormGroup-content fieldset input[type='checkbox'] {
+  position: relative;
+  top: 2px;
+  margin-left: 0;
+}
+
+.jp-FormGroup-content button.jp-mod-styled {
+  cursor: pointer;
+}
+
+.jp-FormGroup-content .checkbox label {
+  cursor: pointer;
+  font-size: var(--jp-content-font-size1);
+}
+
+.jp-FormGroup-content .jp-root > fieldset > legend {
+  display: none;
+}
+
+.jp-FormGroup-content .jp-root > fieldset > p {
+  display: none;
+}
+
+/** copy of `input.jp-mod-styled:focus` style */
+.jp-FormGroup-content fieldset input:focus,
+.jp-FormGroup-content fieldset select:focus {
+  -moz-outline-radius: unset;
+  outline: var(--jp-border-width) solid var(--md-blue-500);
+  outline-offset: -1px;
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-FormGroup-content fieldset input:hover:not(:focus),
+.jp-FormGroup-content fieldset select:hover:not(:focus) {
+  background-color: var(--jp-border-color2);
+}
+
+/* stylelint-enable selector-max-type */
+
+.jp-FormGroup-content .checkbox .field-description {
+  /* Disable default description field for checkbox:
+   because other widgets do not have description fields,
+   we add descriptions to each widget on the field level.
+  */
+  display: none;
+}
+
+.jp-FormGroup-content #root__description {
+  display: none;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator {
+  width: 5px;
+  background-color: var(--jp-brand-color2);
+  margin-top: 0;
+  margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
+  flex-shrink: 0;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
+  background-color: var(--jp-error-color0);
+  margin-right: 0.5em;
+}
+
+/* RJSF ARRAY style */
+
+.jp-arrayFieldWrapper legend {
+  font-size: var(--jp-content-font-size2);
+  color: var(--jp-ui-font-color0);
+  flex-basis: 100%;
+  padding: 4px 0;
+  font-weight: var(--jp-content-heading-font-weight);
+  border-bottom: 1px solid var(--jp-border-color2);
+}
+
+.jp-arrayFieldWrapper .field-description {
+  padding: 4px 0;
+  white-space: pre-wrap;
+}
+
+.jp-arrayFieldWrapper .array-item {
+  width: 100%;
+  border: 1px solid var(--jp-border-color2);
+  border-radius: 4px;
+  margin: 4px;
+}
+
+.jp-ArrayOperations {
+  display: flex;
+  margin-left: 8px;
+}
+
+.jp-ArrayOperationsButton {
+  margin: 2px;
+}
+
+.jp-ArrayOperationsButton .jp-icon3[fill] {
+  fill: var(--jp-ui-font-color0);
+}
+
+button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
+  cursor: not-allowed;
+  opacity: 0.5;
+}
+
+/* RJSF form validation error */
+
+.jp-FormGroup-content .validationErrors {
+  color: var(--jp-error-color0);
+}
+
+/* Hide panel level error as duplicated the field level error */
+.jp-FormGroup-content .panel.errors {
+  display: none;
+}
+
+/* RJSF normal content (settings-editor) */
+
+.jp-FormGroup-contentNormal {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
+  margin-left: 7px;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-description {
+  flex-basis: 100%;
+  padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-default {
+  flex-basis: 100%;
+  padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
+  font-size: var(--jp-content-font-size1);
+  font-weight: normal;
+  min-width: 120px;
+}
+
+.jp-FormGroup-contentNormal fieldset:not(:first-child) {
+  margin-left: 7px;
+}
+
+.jp-FormGroup-contentNormal .field-array-of-string .array-item {
+  /* Display `jp-ArrayOperations` buttons side-by-side with content except
+    for small screens where flex-wrap will place them one below the other.
+  */
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
+  padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+  margin-top: 2px;
+}
+
+/* RJSF compact content (metadata-form) */
+
+.jp-FormGroup-content.jp-FormGroup-contentCompact {
+  width: 100%;
+}
+
+.jp-FormGroup-contentCompact .form-group {
+  display: flex;
+  padding: 0.5em 0.2em 0.5em 0;
+}
+
+.jp-FormGroup-contentCompact
+  .jp-FormGroup-compactTitle
+  .jp-FormGroup-description {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
+  padding-bottom: 0.3em;
+}
+
+.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
+  padding-bottom: 7px;
+}
+
+.jp-FormGroup-contentCompact
+  .jp-objectFieldWrapper
+  .jp-objectFieldWrapper
+  .form-group {
+  padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+  margin-top: 2px;
+}
+
+.jp-FormGroup-contentCompact ul.error-detail {
+  margin-block-start: 0.5em;
+  margin-block-end: 0.5em;
+  padding-inline-start: 1em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-SidePanel {
+  display: flex;
+  flex-direction: column;
+  min-width: var(--jp-sidebar-min-width);
+  overflow-y: auto;
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+  font-size: var(--jp-ui-font-size1);
+}
+
+.jp-SidePanel-header {
+  flex: 0 0 auto;
+  display: flex;
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  letter-spacing: 1px;
+  margin: 0;
+  padding: 2px;
+  text-transform: uppercase;
+}
+
+.jp-SidePanel-toolbar {
+  flex: 0 0 auto;
+}
+
+.jp-SidePanel-content {
+  flex: 1 1 auto;
+}
+
+.jp-SidePanel-toolbar,
+.jp-AccordionPanel-toolbar {
+  height: var(--jp-private-toolbar-height);
+}
+
+.jp-SidePanel-toolbar.jp-Toolbar-micro {
+  display: none;
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-title {
+  box-sizing: border-box;
+  line-height: 25px;
+  margin: 0;
+  display: flex;
+  align-items: center;
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  font-size: var(--jp-ui-font-size0);
+}
+
+.jp-AccordionPanel-title {
+  cursor: pointer;
+  user-select: none;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  text-transform: uppercase;
+}
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
+  /* Title is rotated for horizontal accordion panel using CSS */
+  display: block;
+  transform-origin: top left;
+  transform: rotate(-90deg) translate(-100%);
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
+  user-select: none;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
+  transform: rotate(-90deg);
+  margin: auto 0;
+  height: 16px;
+}
+
+.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
+  transform: rotate(0deg);
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-toolbar {
+  background: none;
+  box-shadow: none;
+  border: none;
+  margin-left: auto;
+}
+
+.lm-AccordionPanel .lm-SplitPanel-handle:hover {
+  background: var(--jp-layout-color3);
+}
+
+.jp-text-truncated {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Spinner {
+  position: absolute;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 10;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background: var(--jp-layout-color0);
+  outline: none;
+}
+
+.jp-SpinnerContent {
+  font-size: 10px;
+  margin: 50px auto;
+  text-indent: -9999em;
+  width: 3em;
+  height: 3em;
+  border-radius: 50%;
+  background: var(--jp-brand-color3);
+  background: linear-gradient(
+    to right,
+    #f37626 10%,
+    rgba(255, 255, 255, 0) 42%
+  );
+  position: relative;
+  animation: load3 1s infinite linear, fadeIn 1s;
+}
+
+.jp-SpinnerContent::before {
+  width: 50%;
+  height: 50%;
+  background: #f37626;
+  border-radius: 100% 0 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  content: '';
+}
+
+.jp-SpinnerContent::after {
+  background: var(--jp-layout-color0);
+  width: 75%;
+  height: 75%;
+  border-radius: 50%;
+  content: '';
+  margin: auto;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+@keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+
+  100% {
+    opacity: 1;
+  }
+}
+
+@keyframes load3 {
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+button.jp-mod-styled {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  border: none;
+  box-sizing: border-box;
+  text-align: center;
+  line-height: 32px;
+  height: 32px;
+  padding: 0 12px;
+  letter-spacing: 0.8px;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+input.jp-mod-styled {
+  background: var(--jp-input-background);
+  height: 28px;
+  box-sizing: border-box;
+  border: var(--jp-border-width) solid var(--jp-border-color1);
+  padding-left: 7px;
+  padding-right: 7px;
+  font-size: var(--jp-ui-font-size2);
+  color: var(--jp-ui-font-color0);
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+input[type='checkbox'].jp-mod-styled {
+  appearance: checkbox;
+  -webkit-appearance: checkbox;
+  -moz-appearance: checkbox;
+  height: auto;
+}
+
+input.jp-mod-styled:focus {
+  border: var(--jp-border-width) solid var(--md-blue-500);
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-select-wrapper {
+  display: flex;
+  position: relative;
+  flex-direction: column;
+  padding: 1px;
+  background-color: var(--jp-layout-color1);
+  box-sizing: border-box;
+  margin-bottom: 12px;
+}
+
+.jp-select-wrapper:not(.multiple) {
+  height: 28px;
+}
+
+.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
+  border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+  background-color: var(--jp-input-active-background);
+}
+
+select.jp-mod-styled:hover {
+  cursor: pointer;
+  color: var(--jp-ui-font-color0);
+  background-color: var(--jp-input-hover-background);
+  box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
+}
+
+select.jp-mod-styled {
+  flex: 1 1 auto;
+  width: 100%;
+  font-size: var(--jp-ui-font-size2);
+  background: var(--jp-input-background);
+  color: var(--jp-ui-font-color0);
+  padding: 0 25px 0 8px;
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  border-radius: 0;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+select.jp-mod-styled:not([multiple]) {
+  height: 32px;
+}
+
+select.jp-mod-styled[multiple] {
+  max-height: 200px;
+  overflow-y: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-switch {
+  display: flex;
+  align-items: center;
+  padding-left: 4px;
+  padding-right: 4px;
+  font-size: var(--jp-ui-font-size1);
+  background-color: transparent;
+  color: var(--jp-ui-font-color1);
+  border: none;
+  height: 20px;
+}
+
+.jp-switch:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-switch-label {
+  margin-right: 5px;
+  font-family: var(--jp-ui-font-family);
+}
+
+.jp-switch-track {
+  cursor: pointer;
+  background-color: var(--jp-switch-color, var(--jp-border-color1));
+  -webkit-transition: 0.4s;
+  transition: 0.4s;
+  border-radius: 34px;
+  height: 16px;
+  width: 35px;
+  position: relative;
+}
+
+.jp-switch-track::before {
+  content: '';
+  position: absolute;
+  height: 10px;
+  width: 10px;
+  margin: 3px;
+  left: 0;
+  background-color: var(--jp-ui-inverse-font-color1);
+  -webkit-transition: 0.4s;
+  transition: 0.4s;
+  border-radius: 50%;
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track {
+  background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track::before {
+  /* track width (35) - margins (3 + 3) - thumb width (10) */
+  left: 19px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-toolbar-height: calc(
+    28px + var(--jp-border-width)
+  ); /* leave 28px for content */
+}
+
+.jp-Toolbar {
+  color: var(--jp-ui-font-color1);
+  flex: 0 0 auto;
+  display: flex;
+  flex-direction: row;
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  background: var(--jp-toolbar-background);
+  min-height: var(--jp-toolbar-micro-height);
+  padding: 2px;
+  z-index: 8;
+  overflow-x: hidden;
+}
+
+/* Toolbar items */
+
+.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
+  flex-grow: 1;
+  flex-shrink: 1;
+}
+
+.jp-Toolbar-item.jp-Toolbar-kernelStatus {
+  display: inline-block;
+  width: 32px;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 16px;
+}
+
+.jp-Toolbar > .jp-Toolbar-item {
+  flex: 0 0 auto;
+  display: flex;
+  padding-left: 1px;
+  padding-right: 1px;
+  font-size: var(--jp-ui-font-size1);
+  line-height: var(--jp-private-toolbar-height);
+  height: 100%;
+}
+
+/* Toolbar buttons */
+
+/* This is the div we use to wrap the react component into a Widget */
+div.jp-ToolbarButton {
+  color: transparent;
+  border: none;
+  box-sizing: border-box;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  padding: 0;
+  margin: 0;
+}
+
+button.jp-ToolbarButtonComponent {
+  background: var(--jp-layout-color1);
+  border: none;
+  box-sizing: border-box;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  padding: 0 6px;
+  margin: 0;
+  height: 24px;
+  border-radius: var(--jp-border-radius);
+  display: flex;
+  align-items: center;
+  text-align: center;
+  font-size: 14px;
+  min-width: unset;
+  min-height: unset;
+}
+
+button.jp-ToolbarButtonComponent:disabled {
+  opacity: 0.4;
+}
+
+button.jp-ToolbarButtonComponent > span {
+  padding: 0;
+  flex: 0 0 auto;
+}
+
+button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
+  font-size: var(--jp-ui-font-size1);
+  line-height: 100%;
+  padding-left: 2px;
+  color: var(--jp-ui-font-color1);
+  font-family: var(--jp-ui-font-family);
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+  .jp-MainAreaWidget
+  > .jp-Toolbar.jp-Toolbar-micro {
+  padding: 0;
+  min-height: 0;
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+  .jp-MainAreaWidget
+  > .jp-Toolbar {
+  border: none;
+  box-shadow: none;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-WindowedPanel-outer {
+  position: relative;
+  overflow-y: auto;
+}
+
+.jp-WindowedPanel-inner {
+  position: relative;
+}
+
+.jp-WindowedPanel-window {
+  position: absolute;
+  left: 0;
+  right: 0;
+  overflow: visible;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* Sibling imports */
+
+body {
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+}
+
+/* Disable native link decoration styles everywhere outside of dialog boxes */
+a {
+  text-decoration: unset;
+  color: unset;
+}
+
+a:hover {
+  text-decoration: unset;
+  color: unset;
+}
+
+/* Accessibility for links inside dialog box text */
+.jp-Dialog-content a {
+  text-decoration: revert;
+  color: var(--jp-content-link-color);
+}
+
+.jp-Dialog-content a:hover {
+  text-decoration: revert;
+}
+
+/* Styles for ui-components */
+.jp-Button {
+  color: var(--jp-ui-font-color2);
+  border-radius: var(--jp-border-radius);
+  padding: 0 12px;
+  font-size: var(--jp-ui-font-size1);
+
+  /* Copy from blueprint 3 */
+  display: inline-flex;
+  flex-direction: row;
+  border: none;
+  cursor: pointer;
+  align-items: center;
+  justify-content: center;
+  text-align: left;
+  vertical-align: middle;
+  min-height: 30px;
+  min-width: 30px;
+}
+
+.jp-Button:disabled {
+  cursor: not-allowed;
+}
+
+.jp-Button:empty {
+  padding: 0 !important;
+}
+
+.jp-Button.jp-mod-small {
+  min-height: 24px;
+  min-width: 24px;
+  font-size: 12px;
+  padding: 0 7px;
+}
+
+/* Use our own theme for hover styles */
+.jp-Button.jp-mod-minimal:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-Button.jp-mod-minimal {
+  background: none;
+}
+
+.jp-InputGroup {
+  display: block;
+  position: relative;
+}
+
+.jp-InputGroup input {
+  box-sizing: border-box;
+  border: none;
+  border-radius: 0;
+  background-color: transparent;
+  color: var(--jp-ui-font-color0);
+  box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+  padding-bottom: 0;
+  padding-top: 0;
+  padding-left: 10px;
+  padding-right: 28px;
+  position: relative;
+  width: 100%;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  font-size: 14px;
+  font-weight: 400;
+  height: 30px;
+  line-height: 30px;
+  outline: none;
+  vertical-align: middle;
+}
+
+.jp-InputGroup input:focus {
+  box-shadow: inset 0 0 0 var(--jp-border-width)
+      var(--jp-input-active-box-shadow-color),
+    inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-InputGroup input:disabled {
+  cursor: not-allowed;
+  resize: block;
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input:disabled ~ span {
+  cursor: not-allowed;
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input::placeholder,
+input::placeholder {
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroupAction {
+  position: absolute;
+  bottom: 1px;
+  right: 0;
+  padding: 6px;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select {
+  background-color: initial;
+  border: none;
+  border-radius: 0;
+  box-shadow: none;
+  color: var(--jp-ui-font-color0);
+  display: block;
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  height: 24px;
+  line-height: 14px;
+  padding: 0 25px 0 10px;
+  text-align: left;
+  -moz-appearance: none;
+  -webkit-appearance: none;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled {
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color2);
+  cursor: not-allowed;
+  resize: block;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
+  cursor: not-allowed;
+}
+
+/* Use our own theme for hover and option styles */
+/* stylelint-disable-next-line selector-max-type */
+.jp-HTMLSelect.jp-DefaultStyle select:hover,
+.jp-HTMLSelect.jp-DefaultStyle select > option {
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color0);
+}
+
+select {
+  box-sizing: border-box;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-StatusBar-Widget {
+  display: flex;
+  align-items: center;
+  background: var(--jp-layout-color2);
+  min-height: var(--jp-statusbar-height);
+  justify-content: space-between;
+  padding: 0 10px;
+}
+
+.jp-StatusBar-Left {
+  display: flex;
+  align-items: center;
+  flex-direction: row;
+}
+
+.jp-StatusBar-Middle {
+  display: flex;
+  align-items: center;
+}
+
+.jp-StatusBar-Right {
+  display: flex;
+  align-items: center;
+  flex-direction: row-reverse;
+}
+
+.jp-StatusBar-Item {
+  max-height: var(--jp-statusbar-height);
+  margin: 0 2px;
+  height: var(--jp-statusbar-height);
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  color: var(--jp-ui-font-color1);
+  padding: 0 6px;
+}
+
+.jp-mod-highlighted:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-mod-clicked {
+  background-color: var(--jp-brand-color1);
+}
+
+.jp-mod-clicked:hover {
+  background-color: var(--jp-brand-color0);
+}
+
+.jp-mod-clicked .jp-StatusBar-TextItem {
+  color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-StatusBar-HoverItem {
+  box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
+}
+
+.jp-StatusBar-TextItem {
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  line-height: 24px;
+  color: var(--jp-ui-font-color1);
+}
+
+.jp-StatusBar-GroupItem {
+  display: flex;
+  align-items: center;
+  flex-direction: row;
+}
+
+.jp-Statusbar-ProgressCircle svg {
+  display: block;
+  margin: 0 auto;
+  width: 16px;
+  height: 24px;
+  align-self: normal;
+}
+
+.jp-Statusbar-ProgressCircle path {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-Statusbar-ProgressBar-progress-bar {
+  height: 10px;
+  width: 100px;
+  border: solid 0.25px var(--jp-brand-color2);
+  border-radius: 3px;
+  overflow: hidden;
+  align-self: center;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar > div {
+  background-color: var(--jp-brand-color2);
+  background-image: linear-gradient(
+    -45deg,
+    rgba(255, 255, 255, 0.2) 25%,
+    transparent 25%,
+    transparent 50%,
+    rgba(255, 255, 255, 0.2) 50%,
+    rgba(255, 255, 255, 0.2) 75%,
+    transparent 75%,
+    transparent
+  );
+  background-size: 40px 40px;
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: 12px;
+  line-height: 14px;
+  color: #fff;
+  text-align: center;
+  animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar p {
+  color: var(--jp-ui-font-color1);
+  font-family: var(--jp-ui-font-family);
+  font-size: var(--jp-ui-font-size1);
+  line-height: 10px;
+  width: 100px;
+}
+
+@keyframes jp-Statusbar-ExecutionTime-progress-bar {
+  0% {
+    background-position: 0 0;
+  }
+
+  100% {
+    background-position: 40px 40px;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-commandpalette-search-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Overall styles
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+  padding-bottom: 0;
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+
+  /* This is needed so that all font sizing of children done in ems is
+   * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Modal variant
+|----------------------------------------------------------------------------*/
+
+.jp-ModalCommandPalette {
+  position: absolute;
+  z-index: 10000;
+  top: 38px;
+  left: 30%;
+  margin: 0;
+  padding: 4px;
+  width: 40%;
+  box-shadow: var(--jp-elevation-z4);
+  border-radius: 4px;
+  background: var(--jp-layout-color0);
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette {
+  max-height: 40vh;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
+  display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
+  display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
+  margin-left: 4px;
+  margin-right: 4px;
+}
+
+.jp-ModalCommandPalette
+  .lm-CommandPalette
+  .lm-CommandPalette-item.lm-mod-disabled {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Search
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-search {
+  padding: 4px;
+  background-color: var(--jp-layout-color1);
+  z-index: 2;
+}
+
+.lm-CommandPalette-wrapper {
+  overflow: overlay;
+  padding: 0 9px;
+  background-color: var(--jp-input-active-background);
+  height: 30px;
+  box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+}
+
+.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
+  box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
+    inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-SearchIconGroup {
+  color: white;
+  background-color: var(--jp-brand-color1);
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  padding: 5px 5px 1px;
+}
+
+.jp-SearchIconGroup svg {
+  height: 20px;
+  width: 20px;
+}
+
+.jp-SearchIconGroup .jp-icon3[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-input {
+  background: transparent;
+  width: calc(100% - 18px);
+  float: left;
+  border: none;
+  outline: none;
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  line-height: var(--jp-private-commandpalette-search-height);
+}
+
+.lm-CommandPalette-input::-webkit-input-placeholder,
+.lm-CommandPalette-input::-moz-placeholder,
+.lm-CommandPalette-input:-ms-input-placeholder {
+  color: var(--jp-ui-font-color2);
+  font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Results
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-header:first-child {
+  margin-top: 0;
+}
+
+.lm-CommandPalette-header {
+  border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+  color: var(--jp-ui-font-color1);
+  cursor: pointer;
+  display: flex;
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  letter-spacing: 1px;
+  margin-top: 8px;
+  padding: 8px 0 8px 12px;
+  text-transform: uppercase;
+}
+
+.lm-CommandPalette-header.lm-mod-active {
+  background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-header > mark {
+  background-color: transparent;
+  font-weight: bold;
+  color: var(--jp-ui-font-color1);
+}
+
+.lm-CommandPalette-item {
+  padding: 4px 12px 4px 4px;
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  font-weight: 400;
+  display: flex;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled {
+  color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item.lm-mod-active {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
+  background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-itemContent {
+  overflow: hidden;
+}
+
+.lm-CommandPalette-itemLabel > mark {
+  color: var(--jp-ui-font-color0);
+  background-color: transparent;
+  font-weight: bold;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled mark {
+  color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
+  margin: 0 4px 0 0;
+  position: relative;
+  width: 16px;
+  top: 2px;
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
+  opacity: 0.6;
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemCaption {
+  display: none;
+}
+
+.lm-CommandPalette-content {
+  background-color: var(--jp-layout-color1);
+}
+
+.lm-CommandPalette-content:empty::after {
+  content: 'No results';
+  margin: auto;
+  margin-top: 20px;
+  width: 100px;
+  display: block;
+  font-size: var(--jp-ui-font-size2);
+  font-family: var(--jp-ui-font-family);
+  font-weight: lighter;
+}
+
+.lm-CommandPalette-emptyMessage {
+  text-align: center;
+  margin-top: 24px;
+  line-height: 1.32;
+  padding: 0 8px;
+  color: var(--jp-content-font-color3);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Dialog {
+  position: absolute;
+  z-index: 10000;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  top: 0;
+  left: 0;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  height: 100%;
+  background: var(--jp-dialog-background);
+}
+
+.jp-Dialog-content {
+  display: flex;
+  flex-direction: column;
+  margin-left: auto;
+  margin-right: auto;
+  background: var(--jp-layout-color1);
+  padding: 24px 24px 12px;
+  min-width: 300px;
+  min-height: 150px;
+  max-width: 1000px;
+  max-height: 500px;
+  box-sizing: border-box;
+  box-shadow: var(--jp-elevation-z20);
+  word-wrap: break-word;
+  border-radius: var(--jp-border-radius);
+
+  /* This is needed so that all font sizing of children done in ems is
+   * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color1);
+  resize: both;
+}
+
+.jp-Dialog-content.jp-Dialog-content-small {
+  max-width: 500px;
+}
+
+.jp-Dialog-button {
+  overflow: visible;
+}
+
+button.jp-Dialog-button:focus {
+  outline: 1px solid var(--jp-brand-color1);
+  outline-offset: 4px;
+  -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button:focus::-moz-focus-inner {
+  border: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+  outline-offset: 4px;
+  -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
+  outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
+  outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+  outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
+}
+
+button.jp-Dialog-close-button {
+  padding: 0;
+  height: 100%;
+  min-width: unset;
+  min-height: unset;
+}
+
+.jp-Dialog-header {
+  display: flex;
+  justify-content: space-between;
+  flex: 0 0 auto;
+  padding-bottom: 12px;
+  font-size: var(--jp-ui-font-size3);
+  font-weight: 400;
+  color: var(--jp-ui-font-color1);
+}
+
+.jp-Dialog-body {
+  display: flex;
+  flex-direction: column;
+  flex: 1 1 auto;
+  font-size: var(--jp-ui-font-size1);
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  overflow: auto;
+}
+
+.jp-Dialog-footer {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-end;
+  align-items: center;
+  flex: 0 0 auto;
+  margin-left: -12px;
+  margin-right: -12px;
+  padding: 12px;
+}
+
+.jp-Dialog-checkbox {
+  padding-right: 5px;
+}
+
+.jp-Dialog-checkbox > input:focus-visible {
+  outline: 1px solid var(--jp-input-active-border-color);
+  outline-offset: 1px;
+}
+
+.jp-Dialog-spacer {
+  flex: 1 1 auto;
+}
+
+.jp-Dialog-title {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.jp-Dialog-body > .jp-select-wrapper {
+  width: 100%;
+}
+
+.jp-Dialog-body > button {
+  padding: 0 16px;
+}
+
+.jp-Dialog-body > label {
+  line-height: 1.4;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-Dialog-button.jp-mod-styled:not(:last-child) {
+  margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Input-Boolean-Dialog {
+  flex-direction: row-reverse;
+  align-items: end;
+  width: 100%;
+}
+
+.jp-Input-Boolean-Dialog > label {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MainAreaWidget > :focus {
+  outline: none;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error {
+  padding: 6px;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
+  width: auto;
+  padding: 10px;
+  background: var(--jp-error-color3);
+  border: var(--jp-border-width) solid var(--jp-error-color1);
+  border-radius: var(--jp-border-radius);
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/**
+ * google-material-color v1.2.6
+ * https://github.com/danlevan/google-material-color
+ */
+:root {
+  --md-red-50: #ffebee;
+  --md-red-100: #ffcdd2;
+  --md-red-200: #ef9a9a;
+  --md-red-300: #e57373;
+  --md-red-400: #ef5350;
+  --md-red-500: #f44336;
+  --md-red-600: #e53935;
+  --md-red-700: #d32f2f;
+  --md-red-800: #c62828;
+  --md-red-900: #b71c1c;
+  --md-red-A100: #ff8a80;
+  --md-red-A200: #ff5252;
+  --md-red-A400: #ff1744;
+  --md-red-A700: #d50000;
+  --md-pink-50: #fce4ec;
+  --md-pink-100: #f8bbd0;
+  --md-pink-200: #f48fb1;
+  --md-pink-300: #f06292;
+  --md-pink-400: #ec407a;
+  --md-pink-500: #e91e63;
+  --md-pink-600: #d81b60;
+  --md-pink-700: #c2185b;
+  --md-pink-800: #ad1457;
+  --md-pink-900: #880e4f;
+  --md-pink-A100: #ff80ab;
+  --md-pink-A200: #ff4081;
+  --md-pink-A400: #f50057;
+  --md-pink-A700: #c51162;
+  --md-purple-50: #f3e5f5;
+  --md-purple-100: #e1bee7;
+  --md-purple-200: #ce93d8;
+  --md-purple-300: #ba68c8;
+  --md-purple-400: #ab47bc;
+  --md-purple-500: #9c27b0;
+  --md-purple-600: #8e24aa;
+  --md-purple-700: #7b1fa2;
+  --md-purple-800: #6a1b9a;
+  --md-purple-900: #4a148c;
+  --md-purple-A100: #ea80fc;
+  --md-purple-A200: #e040fb;
+  --md-purple-A400: #d500f9;
+  --md-purple-A700: #a0f;
+  --md-deep-purple-50: #ede7f6;
+  --md-deep-purple-100: #d1c4e9;
+  --md-deep-purple-200: #b39ddb;
+  --md-deep-purple-300: #9575cd;
+  --md-deep-purple-400: #7e57c2;
+  --md-deep-purple-500: #673ab7;
+  --md-deep-purple-600: #5e35b1;
+  --md-deep-purple-700: #512da8;
+  --md-deep-purple-800: #4527a0;
+  --md-deep-purple-900: #311b92;
+  --md-deep-purple-A100: #b388ff;
+  --md-deep-purple-A200: #7c4dff;
+  --md-deep-purple-A400: #651fff;
+  --md-deep-purple-A700: #6200ea;
+  --md-indigo-50: #e8eaf6;
+  --md-indigo-100: #c5cae9;
+  --md-indigo-200: #9fa8da;
+  --md-indigo-300: #7986cb;
+  --md-indigo-400: #5c6bc0;
+  --md-indigo-500: #3f51b5;
+  --md-indigo-600: #3949ab;
+  --md-indigo-700: #303f9f;
+  --md-indigo-800: #283593;
+  --md-indigo-900: #1a237e;
+  --md-indigo-A100: #8c9eff;
+  --md-indigo-A200: #536dfe;
+  --md-indigo-A400: #3d5afe;
+  --md-indigo-A700: #304ffe;
+  --md-blue-50: #e3f2fd;
+  --md-blue-100: #bbdefb;
+  --md-blue-200: #90caf9;
+  --md-blue-300: #64b5f6;
+  --md-blue-400: #42a5f5;
+  --md-blue-500: #2196f3;
+  --md-blue-600: #1e88e5;
+  --md-blue-700: #1976d2;
+  --md-blue-800: #1565c0;
+  --md-blue-900: #0d47a1;
+  --md-blue-A100: #82b1ff;
+  --md-blue-A200: #448aff;
+  --md-blue-A400: #2979ff;
+  --md-blue-A700: #2962ff;
+  --md-light-blue-50: #e1f5fe;
+  --md-light-blue-100: #b3e5fc;
+  --md-light-blue-200: #81d4fa;
+  --md-light-blue-300: #4fc3f7;
+  --md-light-blue-400: #29b6f6;
+  --md-light-blue-500: #03a9f4;
+  --md-light-blue-600: #039be5;
+  --md-light-blue-700: #0288d1;
+  --md-light-blue-800: #0277bd;
+  --md-light-blue-900: #01579b;
+  --md-light-blue-A100: #80d8ff;
+  --md-light-blue-A200: #40c4ff;
+  --md-light-blue-A400: #00b0ff;
+  --md-light-blue-A700: #0091ea;
+  --md-cyan-50: #e0f7fa;
+  --md-cyan-100: #b2ebf2;
+  --md-cyan-200: #80deea;
+  --md-cyan-300: #4dd0e1;
+  --md-cyan-400: #26c6da;
+  --md-cyan-500: #00bcd4;
+  --md-cyan-600: #00acc1;
+  --md-cyan-700: #0097a7;
+  --md-cyan-800: #00838f;
+  --md-cyan-900: #006064;
+  --md-cyan-A100: #84ffff;
+  --md-cyan-A200: #18ffff;
+  --md-cyan-A400: #00e5ff;
+  --md-cyan-A700: #00b8d4;
+  --md-teal-50: #e0f2f1;
+  --md-teal-100: #b2dfdb;
+  --md-teal-200: #80cbc4;
+  --md-teal-300: #4db6ac;
+  --md-teal-400: #26a69a;
+  --md-teal-500: #009688;
+  --md-teal-600: #00897b;
+  --md-teal-700: #00796b;
+  --md-teal-800: #00695c;
+  --md-teal-900: #004d40;
+  --md-teal-A100: #a7ffeb;
+  --md-teal-A200: #64ffda;
+  --md-teal-A400: #1de9b6;
+  --md-teal-A700: #00bfa5;
+  --md-green-50: #e8f5e9;
+  --md-green-100: #c8e6c9;
+  --md-green-200: #a5d6a7;
+  --md-green-300: #81c784;
+  --md-green-400: #66bb6a;
+  --md-green-500: #4caf50;
+  --md-green-600: #43a047;
+  --md-green-700: #388e3c;
+  --md-green-800: #2e7d32;
+  --md-green-900: #1b5e20;
+  --md-green-A100: #b9f6ca;
+  --md-green-A200: #69f0ae;
+  --md-green-A400: #00e676;
+  --md-green-A700: #00c853;
+  --md-light-green-50: #f1f8e9;
+  --md-light-green-100: #dcedc8;
+  --md-light-green-200: #c5e1a5;
+  --md-light-green-300: #aed581;
+  --md-light-green-400: #9ccc65;
+  --md-light-green-500: #8bc34a;
+  --md-light-green-600: #7cb342;
+  --md-light-green-700: #689f38;
+  --md-light-green-800: #558b2f;
+  --md-light-green-900: #33691e;
+  --md-light-green-A100: #ccff90;
+  --md-light-green-A200: #b2ff59;
+  --md-light-green-A400: #76ff03;
+  --md-light-green-A700: #64dd17;
+  --md-lime-50: #f9fbe7;
+  --md-lime-100: #f0f4c3;
+  --md-lime-200: #e6ee9c;
+  --md-lime-300: #dce775;
+  --md-lime-400: #d4e157;
+  --md-lime-500: #cddc39;
+  --md-lime-600: #c0ca33;
+  --md-lime-700: #afb42b;
+  --md-lime-800: #9e9d24;
+  --md-lime-900: #827717;
+  --md-lime-A100: #f4ff81;
+  --md-lime-A200: #eeff41;
+  --md-lime-A400: #c6ff00;
+  --md-lime-A700: #aeea00;
+  --md-yellow-50: #fffde7;
+  --md-yellow-100: #fff9c4;
+  --md-yellow-200: #fff59d;
+  --md-yellow-300: #fff176;
+  --md-yellow-400: #ffee58;
+  --md-yellow-500: #ffeb3b;
+  --md-yellow-600: #fdd835;
+  --md-yellow-700: #fbc02d;
+  --md-yellow-800: #f9a825;
+  --md-yellow-900: #f57f17;
+  --md-yellow-A100: #ffff8d;
+  --md-yellow-A200: #ff0;
+  --md-yellow-A400: #ffea00;
+  --md-yellow-A700: #ffd600;
+  --md-amber-50: #fff8e1;
+  --md-amber-100: #ffecb3;
+  --md-amber-200: #ffe082;
+  --md-amber-300: #ffd54f;
+  --md-amber-400: #ffca28;
+  --md-amber-500: #ffc107;
+  --md-amber-600: #ffb300;
+  --md-amber-700: #ffa000;
+  --md-amber-800: #ff8f00;
+  --md-amber-900: #ff6f00;
+  --md-amber-A100: #ffe57f;
+  --md-amber-A200: #ffd740;
+  --md-amber-A400: #ffc400;
+  --md-amber-A700: #ffab00;
+  --md-orange-50: #fff3e0;
+  --md-orange-100: #ffe0b2;
+  --md-orange-200: #ffcc80;
+  --md-orange-300: #ffb74d;
+  --md-orange-400: #ffa726;
+  --md-orange-500: #ff9800;
+  --md-orange-600: #fb8c00;
+  --md-orange-700: #f57c00;
+  --md-orange-800: #ef6c00;
+  --md-orange-900: #e65100;
+  --md-orange-A100: #ffd180;
+  --md-orange-A200: #ffab40;
+  --md-orange-A400: #ff9100;
+  --md-orange-A700: #ff6d00;
+  --md-deep-orange-50: #fbe9e7;
+  --md-deep-orange-100: #ffccbc;
+  --md-deep-orange-200: #ffab91;
+  --md-deep-orange-300: #ff8a65;
+  --md-deep-orange-400: #ff7043;
+  --md-deep-orange-500: #ff5722;
+  --md-deep-orange-600: #f4511e;
+  --md-deep-orange-700: #e64a19;
+  --md-deep-orange-800: #d84315;
+  --md-deep-orange-900: #bf360c;
+  --md-deep-orange-A100: #ff9e80;
+  --md-deep-orange-A200: #ff6e40;
+  --md-deep-orange-A400: #ff3d00;
+  --md-deep-orange-A700: #dd2c00;
+  --md-brown-50: #efebe9;
+  --md-brown-100: #d7ccc8;
+  --md-brown-200: #bcaaa4;
+  --md-brown-300: #a1887f;
+  --md-brown-400: #8d6e63;
+  --md-brown-500: #795548;
+  --md-brown-600: #6d4c41;
+  --md-brown-700: #5d4037;
+  --md-brown-800: #4e342e;
+  --md-brown-900: #3e2723;
+  --md-grey-50: #fafafa;
+  --md-grey-100: #f5f5f5;
+  --md-grey-200: #eee;
+  --md-grey-300: #e0e0e0;
+  --md-grey-400: #bdbdbd;
+  --md-grey-500: #9e9e9e;
+  --md-grey-600: #757575;
+  --md-grey-700: #616161;
+  --md-grey-800: #424242;
+  --md-grey-900: #212121;
+  --md-blue-grey-50: #eceff1;
+  --md-blue-grey-100: #cfd8dc;
+  --md-blue-grey-200: #b0bec5;
+  --md-blue-grey-300: #90a4ae;
+  --md-blue-grey-400: #78909c;
+  --md-blue-grey-500: #607d8b;
+  --md-blue-grey-600: #546e7a;
+  --md-blue-grey-700: #455a64;
+  --md-blue-grey-800: #37474f;
+  --md-blue-grey-900: #263238;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| RenderedText
+|----------------------------------------------------------------------------*/
+
+:root {
+  /* This is the padding value to fill the gaps between lines containing spans with background color. */
+  --jp-private-code-span-padding: calc(
+    (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
+  );
+}
+
+.jp-RenderedText {
+  text-align: left;
+  padding-left: var(--jp-code-padding);
+  line-height: var(--jp-code-line-height);
+  font-family: var(--jp-code-font-family);
+}
+
+.jp-RenderedText pre,
+.jp-RenderedJavaScript pre,
+.jp-RenderedHTMLCommon pre {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-code-font-size);
+  border: none;
+  margin: 0;
+  padding: 0;
+}
+
+.jp-RenderedText pre a:link {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:hover {
+  text-decoration: underline;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:visited {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+/* console foregrounds and backgrounds */
+.jp-RenderedText pre .ansi-black-fg {
+  color: #3e424d;
+}
+
+.jp-RenderedText pre .ansi-red-fg {
+  color: #e75c58;
+}
+
+.jp-RenderedText pre .ansi-green-fg {
+  color: #00a250;
+}
+
+.jp-RenderedText pre .ansi-yellow-fg {
+  color: #ddb62b;
+}
+
+.jp-RenderedText pre .ansi-blue-fg {
+  color: #208ffb;
+}
+
+.jp-RenderedText pre .ansi-magenta-fg {
+  color: #d160c4;
+}
+
+.jp-RenderedText pre .ansi-cyan-fg {
+  color: #60c6c8;
+}
+
+.jp-RenderedText pre .ansi-white-fg {
+  color: #c5c1b4;
+}
+
+.jp-RenderedText pre .ansi-black-bg {
+  background-color: #3e424d;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-bg {
+  background-color: #e75c58;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-bg {
+  background-color: #00a250;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-bg {
+  background-color: #ddb62b;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-bg {
+  background-color: #208ffb;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-bg {
+  background-color: #d160c4;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-bg {
+  background-color: #60c6c8;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-bg {
+  background-color: #c5c1b4;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-black-intense-fg {
+  color: #282c36;
+}
+
+.jp-RenderedText pre .ansi-red-intense-fg {
+  color: #b22b31;
+}
+
+.jp-RenderedText pre .ansi-green-intense-fg {
+  color: #007427;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-fg {
+  color: #b27d12;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-fg {
+  color: #0065ca;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-fg {
+  color: #a03196;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-fg {
+  color: #258f8f;
+}
+
+.jp-RenderedText pre .ansi-white-intense-fg {
+  color: #a1a6b2;
+}
+
+.jp-RenderedText pre .ansi-black-intense-bg {
+  background-color: #282c36;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-intense-bg {
+  background-color: #b22b31;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-intense-bg {
+  background-color: #007427;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-bg {
+  background-color: #b27d12;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-bg {
+  background-color: #0065ca;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-bg {
+  background-color: #a03196;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-bg {
+  background-color: #258f8f;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-intense-bg {
+  background-color: #a1a6b2;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-default-inverse-fg {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+.jp-RenderedText pre .ansi-default-inverse-bg {
+  background-color: var(--jp-inverse-layout-color0);
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-bold {
+  font-weight: bold;
+}
+
+.jp-RenderedText pre .ansi-underline {
+  text-decoration: underline;
+}
+
+.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
+  background: var(--jp-rendermime-error-background);
+  padding-top: var(--jp-code-padding);
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedLatex
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedLatex {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-content-font-size1);
+  line-height: var(--jp-content-line-height);
+}
+
+/* Left-justify outputs.*/
+.jp-OutputArea-output.jp-RenderedLatex {
+  padding: var(--jp-code-padding);
+  text-align: left;
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedHTML
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedHTMLCommon {
+  color: var(--jp-content-font-color1);
+  font-family: var(--jp-content-font-family);
+  font-size: var(--jp-content-font-size1);
+  line-height: var(--jp-content-line-height);
+
+  /* Give a bit more R padding on Markdown text to keep line lengths reasonable */
+  padding-right: 20px;
+}
+
+.jp-RenderedHTMLCommon em {
+  font-style: italic;
+}
+
+.jp-RenderedHTMLCommon strong {
+  font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon u {
+  text-decoration: underline;
+}
+
+.jp-RenderedHTMLCommon a:link {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:hover {
+  text-decoration: underline;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:visited {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+/* Headings */
+
+.jp-RenderedHTMLCommon h1,
+.jp-RenderedHTMLCommon h2,
+.jp-RenderedHTMLCommon h3,
+.jp-RenderedHTMLCommon h4,
+.jp-RenderedHTMLCommon h5,
+.jp-RenderedHTMLCommon h6 {
+  line-height: var(--jp-content-heading-line-height);
+  font-weight: var(--jp-content-heading-font-weight);
+  font-style: normal;
+  margin: var(--jp-content-heading-margin-top) 0
+    var(--jp-content-heading-margin-bottom) 0;
+}
+
+.jp-RenderedHTMLCommon h1:first-child,
+.jp-RenderedHTMLCommon h2:first-child,
+.jp-RenderedHTMLCommon h3:first-child,
+.jp-RenderedHTMLCommon h4:first-child,
+.jp-RenderedHTMLCommon h5:first-child,
+.jp-RenderedHTMLCommon h6:first-child {
+  margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
+}
+
+.jp-RenderedHTMLCommon h1:last-child,
+.jp-RenderedHTMLCommon h2:last-child,
+.jp-RenderedHTMLCommon h3:last-child,
+.jp-RenderedHTMLCommon h4:last-child,
+.jp-RenderedHTMLCommon h5:last-child,
+.jp-RenderedHTMLCommon h6:last-child {
+  margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
+}
+
+.jp-RenderedHTMLCommon h1 {
+  font-size: var(--jp-content-font-size5);
+}
+
+.jp-RenderedHTMLCommon h2 {
+  font-size: var(--jp-content-font-size4);
+}
+
+.jp-RenderedHTMLCommon h3 {
+  font-size: var(--jp-content-font-size3);
+}
+
+.jp-RenderedHTMLCommon h4 {
+  font-size: var(--jp-content-font-size2);
+}
+
+.jp-RenderedHTMLCommon h5 {
+  font-size: var(--jp-content-font-size1);
+}
+
+.jp-RenderedHTMLCommon h6 {
+  font-size: var(--jp-content-font-size0);
+}
+
+/* Lists */
+
+/* stylelint-disable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon ul:not(.list-inline),
+.jp-RenderedHTMLCommon ol:not(.list-inline) {
+  padding-left: 2em;
+}
+
+.jp-RenderedHTMLCommon ul {
+  list-style: disc;
+}
+
+.jp-RenderedHTMLCommon ul ul {
+  list-style: square;
+}
+
+.jp-RenderedHTMLCommon ul ul ul {
+  list-style: circle;
+}
+
+.jp-RenderedHTMLCommon ol {
+  list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol ol {
+  list-style: upper-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol {
+  list-style: lower-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol {
+  list-style: lower-roman;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol ol {
+  list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol,
+.jp-RenderedHTMLCommon ul {
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon ul ul,
+.jp-RenderedHTMLCommon ul ol,
+.jp-RenderedHTMLCommon ol ul,
+.jp-RenderedHTMLCommon ol ol {
+  margin-bottom: 0;
+}
+
+/* stylelint-enable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon hr {
+  color: var(--jp-border-color2);
+  background-color: var(--jp-border-color1);
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon > pre {
+  margin: 1.5em 2em;
+}
+
+.jp-RenderedHTMLCommon pre,
+.jp-RenderedHTMLCommon code {
+  border: 0;
+  background-color: var(--jp-layout-color0);
+  color: var(--jp-content-font-color1);
+  font-family: var(--jp-code-font-family);
+  font-size: inherit;
+  line-height: var(--jp-code-line-height);
+  padding: 0;
+  white-space: pre-wrap;
+}
+
+.jp-RenderedHTMLCommon :not(pre) > code {
+  background-color: var(--jp-layout-color2);
+  padding: 1px 5px;
+}
+
+/* Tables */
+
+.jp-RenderedHTMLCommon table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  border: none;
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  table-layout: fixed;
+  margin-left: auto;
+  margin-bottom: 1em;
+  margin-right: auto;
+}
+
+.jp-RenderedHTMLCommon thead {
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+  vertical-align: bottom;
+}
+
+.jp-RenderedHTMLCommon td,
+.jp-RenderedHTMLCommon th,
+.jp-RenderedHTMLCommon tr {
+  vertical-align: middle;
+  padding: 0.5em;
+  line-height: normal;
+  white-space: normal;
+  max-width: none;
+  border: none;
+}
+
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
+  max-width: none;
+}
+
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
+  text-align: right;
+}
+
+.jp-RenderedHTMLCommon th {
+  font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
+  background: var(--jp-layout-color0);
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
+  background: var(--jp-rendermime-table-row-background);
+}
+
+.jp-RenderedHTMLCommon tbody tr:hover {
+  background: var(--jp-rendermime-table-row-hover-background);
+}
+
+.jp-RenderedHTMLCommon p {
+  text-align: left;
+  margin: 0;
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon img {
+  -moz-force-broken-image-icon: 1;
+}
+
+/* Restrict to direct children as other images could be nested in other content. */
+.jp-RenderedHTMLCommon > img {
+  display: block;
+  margin-left: 0;
+  margin-right: 0;
+  margin-bottom: 1em;
+}
+
+/* Change color behind transparent images if they need it... */
+[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
+  background-color: var(--jp-inverse-layout-color1);
+}
+
+[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
+  background-color: var(--jp-inverse-layout-color1);
+}
+
+.jp-RenderedHTMLCommon img,
+.jp-RenderedImage img,
+.jp-RenderedHTMLCommon svg,
+.jp-RenderedSVG svg {
+  max-width: 100%;
+  height: auto;
+}
+
+.jp-RenderedHTMLCommon img.jp-mod-unconfined,
+.jp-RenderedImage img.jp-mod-unconfined,
+.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
+.jp-RenderedSVG svg.jp-mod-unconfined {
+  max-width: none;
+}
+
+.jp-RenderedHTMLCommon .alert {
+  padding: var(--jp-notebook-padding);
+  border: var(--jp-border-width) solid transparent;
+  border-radius: var(--jp-border-radius);
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon .alert-info {
+  color: var(--jp-info-color0);
+  background-color: var(--jp-info-color3);
+  border-color: var(--jp-info-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-info hr {
+  border-color: var(--jp-info-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-info > p:last-child,
+.jp-RenderedHTMLCommon .alert-info > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-warning {
+  color: var(--jp-warn-color0);
+  background-color: var(--jp-warn-color3);
+  border-color: var(--jp-warn-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-warning hr {
+  border-color: var(--jp-warn-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-warning > p:last-child,
+.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-success {
+  color: var(--jp-success-color0);
+  background-color: var(--jp-success-color3);
+  border-color: var(--jp-success-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-success hr {
+  border-color: var(--jp-success-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-success > p:last-child,
+.jp-RenderedHTMLCommon .alert-success > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-danger {
+  color: var(--jp-error-color0);
+  background-color: var(--jp-error-color3);
+  border-color: var(--jp-error-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-danger hr {
+  border-color: var(--jp-error-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-danger > p:last-child,
+.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon blockquote {
+  margin: 1em 2em;
+  padding: 0 1em;
+  border-left: 5px solid var(--jp-border-color2);
+}
+
+a.jp-InternalAnchorLink {
+  visibility: hidden;
+  margin-left: 8px;
+  color: var(--md-blue-800);
+}
+
+h1:hover .jp-InternalAnchorLink,
+h2:hover .jp-InternalAnchorLink,
+h3:hover .jp-InternalAnchorLink,
+h4:hover .jp-InternalAnchorLink,
+h5:hover .jp-InternalAnchorLink,
+h6:hover .jp-InternalAnchorLink {
+  visibility: visible;
+}
+
+.jp-RenderedHTMLCommon kbd {
+  background-color: var(--jp-rendermime-table-row-background);
+  border: 1px solid var(--jp-border-color0);
+  border-bottom-color: var(--jp-border-color2);
+  border-radius: 3px;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+  display: inline-block;
+  font-size: var(--jp-ui-font-size0);
+  line-height: 1em;
+  padding: 0.2em 0.5em;
+}
+
+/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
+ * At the bottom of cells this is a bit too much as there is also spacing
+ * between cells. Going all the way to 0 gets too tight between markdown and
+ * code cells.
+ */
+.jp-RenderedHTMLCommon > *:last-child {
+  margin-bottom: 0.5em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-cursor-backdrop {
+  position: fixed;
+  width: 200px;
+  height: 200px;
+  margin-top: -100px;
+  margin-left: -100px;
+  will-change: transform;
+  z-index: 100;
+}
+
+.lm-mod-drag-image {
+  will-change: transform;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-lineFormSearch {
+  padding: 4px 12px;
+  background-color: var(--jp-layout-color2);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  z-index: 2;
+  font-size: var(--jp-ui-font-size1);
+}
+
+.jp-lineFormCaption {
+  font-size: var(--jp-ui-font-size0);
+  line-height: var(--jp-ui-font-size1);
+  margin-top: 4px;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-baseLineForm {
+  border: none;
+  border-radius: 0;
+  position: absolute;
+  background-size: 16px;
+  background-repeat: no-repeat;
+  background-position: center;
+  outline: none;
+}
+
+.jp-lineFormButtonContainer {
+  top: 4px;
+  right: 8px;
+  height: 24px;
+  padding: 0 12px;
+  width: 12px;
+}
+
+.jp-lineFormButtonIcon {
+  top: 0;
+  right: 0;
+  background-color: var(--jp-brand-color1);
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+  padding: 4px 6px;
+}
+
+.jp-lineFormButton {
+  top: 0;
+  right: 0;
+  background-color: transparent;
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.jp-lineFormWrapper {
+  overflow: hidden;
+  padding: 0 8px;
+  border: 1px solid var(--jp-border-color0);
+  background-color: var(--jp-input-active-background);
+  height: 22px;
+}
+
+.jp-lineFormWrapperFocusWithin {
+  border: var(--jp-border-width) solid var(--md-blue-500);
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-lineFormInput {
+  background: transparent;
+  width: 200px;
+  height: 100%;
+  border: none;
+  outline: none;
+  color: var(--jp-ui-font-color0);
+  line-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-JSONEditor {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+}
+
+.jp-JSONEditor-host {
+  flex: 1 1 auto;
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  border-radius: 0;
+  background: var(--jp-layout-color0);
+  min-height: 50px;
+  padding: 1px;
+}
+
+.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
+  border-color: red;
+  outline-color: red;
+}
+
+.jp-JSONEditor-header {
+  display: flex;
+  flex: 1 0 auto;
+  padding: 0 0 0 12px;
+}
+
+.jp-JSONEditor-header label {
+  flex: 0 0 auto;
+}
+
+.jp-JSONEditor-commitButton {
+  height: 16px;
+  width: 16px;
+  background-size: 18px;
+  background-repeat: no-repeat;
+  background-position: center;
+}
+
+.jp-JSONEditor-host.jp-mod-focused {
+  background-color: var(--jp-input-active-background);
+  border: 1px solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+}
+
+.jp-Editor.jp-mod-dropTarget {
+  border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+.jp-DocumentSearch-input {
+  border: none;
+  outline: none;
+  color: var(--jp-ui-font-color0);
+  font-size: var(--jp-ui-font-size1);
+  background-color: var(--jp-layout-color0);
+  font-family: var(--jp-ui-font-family);
+  padding: 2px 1px;
+  resize: none;
+}
+
+.jp-DocumentSearch-overlay {
+  position: absolute;
+  background-color: var(--jp-toolbar-background);
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  top: 0;
+  right: 0;
+  z-index: 7;
+  min-width: 405px;
+  padding: 2px;
+  font-size: var(--jp-ui-font-size1);
+
+  --jp-private-document-search-button-height: 20px;
+}
+
+.jp-DocumentSearch-overlay button {
+  background-color: var(--jp-toolbar-background);
+  outline: 0;
+}
+
+.jp-DocumentSearch-overlay button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-overlay button:active {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-overlay-row {
+  display: flex;
+  align-items: center;
+  margin-bottom: 2px;
+}
+
+.jp-DocumentSearch-button-content {
+  display: inline-block;
+  cursor: pointer;
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-button-content svg {
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-input-wrapper {
+  border: var(--jp-border-width) solid var(--jp-border-color0);
+  display: flex;
+  background-color: var(--jp-layout-color0);
+  margin: 2px;
+}
+
+.jp-DocumentSearch-input-wrapper:focus-within {
+  border-color: var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper {
+  all: initial;
+  overflow: hidden;
+  display: inline-block;
+  border: none;
+  box-sizing: border-box;
+}
+
+.jp-DocumentSearch-toggle-wrapper {
+  width: 14px;
+  height: 14px;
+}
+
+.jp-DocumentSearch-button-wrapper {
+  width: var(--jp-private-document-search-button-height);
+  height: var(--jp-private-document-search-button-height);
+}
+
+.jp-DocumentSearch-toggle-wrapper:focus,
+.jp-DocumentSearch-button-wrapper:focus {
+  outline: var(--jp-border-width) solid
+    var(--jp-cell-editor-active-border-color);
+  outline-offset: -1px;
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper,
+.jp-DocumentSearch-button-content:focus {
+  outline: none;
+}
+
+.jp-DocumentSearch-toggle-placeholder {
+  width: 5px;
+}
+
+.jp-DocumentSearch-input-button::before {
+  display: block;
+  padding-top: 100%;
+}
+
+.jp-DocumentSearch-input-button-off {
+  opacity: var(--jp-search-toggle-off-opacity);
+}
+
+.jp-DocumentSearch-input-button-off:hover {
+  opacity: var(--jp-search-toggle-hover-opacity);
+}
+
+.jp-DocumentSearch-input-button-on {
+  opacity: var(--jp-search-toggle-on-opacity);
+}
+
+.jp-DocumentSearch-index-counter {
+  padding-left: 10px;
+  padding-right: 10px;
+  user-select: none;
+  min-width: 35px;
+  display: inline-block;
+}
+
+.jp-DocumentSearch-up-down-wrapper {
+  display: inline-block;
+  padding-right: 2px;
+  margin-left: auto;
+  white-space: nowrap;
+}
+
+.jp-DocumentSearch-spacer {
+  margin-left: auto;
+}
+
+.jp-DocumentSearch-up-down-wrapper button {
+  outline: 0;
+  border: none;
+  width: var(--jp-private-document-search-button-height);
+  height: var(--jp-private-document-search-button-height);
+  vertical-align: middle;
+  margin: 1px 5px 2px;
+}
+
+.jp-DocumentSearch-up-down-button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-up-down-button:active {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-filter-button {
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-filter-button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-search-options {
+  padding: 0 8px;
+  margin-left: 3px;
+  width: 100%;
+  display: grid;
+  justify-content: start;
+  grid-template-columns: 1fr 1fr;
+  align-items: center;
+  justify-items: stretch;
+}
+
+.jp-DocumentSearch-search-filter-disabled {
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-DocumentSearch-search-filter {
+  display: flex;
+  align-items: center;
+  user-select: none;
+}
+
+.jp-DocumentSearch-regex-error {
+  color: var(--jp-error-color0);
+}
+
+.jp-DocumentSearch-replace-button-wrapper {
+  overflow: hidden;
+  display: inline-block;
+  box-sizing: border-box;
+  border: var(--jp-border-width) solid var(--jp-border-color0);
+  margin: auto 2px;
+  padding: 1px 4px;
+  height: calc(var(--jp-private-document-search-button-height) + 2px);
+}
+
+.jp-DocumentSearch-replace-button-wrapper:focus {
+  border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-replace-button {
+  display: inline-block;
+  text-align: center;
+  cursor: pointer;
+  box-sizing: border-box;
+  color: var(--jp-ui-font-color1);
+
+  /* height - 2 * (padding of wrapper) */
+  line-height: calc(var(--jp-private-document-search-button-height) - 2px);
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-replace-button:focus {
+  outline: none;
+}
+
+.jp-DocumentSearch-replace-wrapper-class {
+  margin-left: 14px;
+  display: flex;
+}
+
+.jp-DocumentSearch-replace-toggle {
+  border: none;
+  background-color: var(--jp-toolbar-background);
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-replace-toggle:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.cm-editor {
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  font-family: var(--jp-code-font-family);
+  border: 0;
+  border-radius: 0;
+  height: auto;
+
+  /* Changed to auto to autogrow */
+}
+
+.cm-editor pre {
+  padding: 0 var(--jp-code-padding);
+}
+
+.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
+  background-color: var(--jp-layout-color0);
+  color: var(--jp-content-font-color1);
+}
+
+.jp-CodeMirrorEditor {
+  cursor: text;
+}
+
+/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+  .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+    border-left: var(--jp-code-cursor-width1) solid
+      var(--jp-editor-cursor-color);
+  }
+}
+
+/* When zoomed out less than 33% */
+@media screen and (min-width: 4320px) {
+  .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+    border-left: var(--jp-code-cursor-width2) solid
+      var(--jp-editor-cursor-color);
+  }
+}
+
+.cm-editor.jp-mod-readOnly .cm-cursor {
+  display: none;
+}
+
+.jp-CollaboratorCursor {
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: none;
+  border-bottom: 3px solid;
+  background-clip: content-box;
+  margin-left: -5px;
+  margin-right: -5px;
+}
+
+.cm-searching,
+.cm-searching span {
+  /* `.cm-searching span`: we need to override syntax highlighting */
+  background-color: var(--jp-search-unselected-match-background-color);
+  color: var(--jp-search-unselected-match-color);
+}
+
+.cm-searching::selection,
+.cm-searching span::selection {
+  background-color: var(--jp-search-unselected-match-background-color);
+  color: var(--jp-search-unselected-match-color);
+}
+
+.jp-current-match > .cm-searching,
+.jp-current-match > .cm-searching span,
+.cm-searching > .jp-current-match,
+.cm-searching > .jp-current-match span {
+  background-color: var(--jp-search-selected-match-background-color);
+  color: var(--jp-search-selected-match-color);
+}
+
+.jp-current-match > .cm-searching::selection,
+.cm-searching > .jp-current-match::selection,
+.jp-current-match > .cm-searching span::selection {
+  background-color: var(--jp-search-selected-match-background-color);
+  color: var(--jp-search-selected-match-color);
+}
+
+.cm-trailingspace {
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
+  background-position: center left;
+  background-repeat: repeat-x;
+}
+
+.jp-CollaboratorCursor-hover {
+  position: absolute;
+  z-index: 1;
+  transform: translateX(-50%);
+  color: white;
+  border-radius: 3px;
+  padding-left: 4px;
+  padding-right: 4px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  text-align: center;
+  font-size: var(--jp-ui-font-size1);
+  white-space: nowrap;
+}
+
+.jp-CodeMirror-ruler {
+  border-left: 1px dashed var(--jp-border-color2);
+}
+
+/* Styles for shared cursors (remote cursor locations and selected ranges) */
+.jp-CodeMirrorEditor .cm-ySelectionCaret {
+  position: relative;
+  border-left: 1px solid black;
+  margin-left: -1px;
+  margin-right: -1px;
+  box-sizing: border-box;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
+  white-space: nowrap;
+  position: absolute;
+  top: -1.15em;
+  padding-bottom: 0.05em;
+  left: -1px;
+  font-size: 0.95em;
+  font-family: var(--jp-ui-font-family);
+  font-weight: bold;
+  line-height: normal;
+  user-select: none;
+  color: white;
+  padding-left: 2px;
+  padding-right: 2px;
+  z-index: 101;
+  transition: opacity 0.3s ease-in-out;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionInfo {
+  transition-delay: 0.7s;
+  opacity: 0;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
+  opacity: 1;
+  transition-delay: 0s;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MimeDocument {
+  outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-filebrowser-button-height: 28px;
+  --jp-private-filebrowser-button-width: 48px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser .jp-SidePanel-content {
+  display: flex;
+  flex-direction: column;
+}
+
+.jp-FileBrowser-toolbar.jp-Toolbar {
+  flex-wrap: wrap;
+  row-gap: 12px;
+  border-bottom: none;
+  height: auto;
+  margin: 8px 12px 0;
+  box-shadow: none;
+  padding: 0;
+  justify-content: flex-start;
+}
+
+.jp-FileBrowser-Panel {
+  flex: 1 1 auto;
+  display: flex;
+  flex-direction: column;
+}
+
+.jp-BreadCrumbs {
+  flex: 0 0 auto;
+  margin: 8px 12px;
+}
+
+.jp-BreadCrumbs-item {
+  margin: 0 2px;
+  padding: 0 2px;
+  border-radius: var(--jp-border-radius);
+  cursor: pointer;
+}
+
+.jp-BreadCrumbs-item:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-BreadCrumbs-item:first-child {
+  margin-left: 0;
+}
+
+.jp-BreadCrumbs-item.jp-mod-dropTarget {
+  background-color: var(--jp-brand-color2);
+  opacity: 0.7;
+}
+
+/*-----------------------------------------------------------------------------
+| Buttons
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item {
+  flex: 0 0 auto;
+  padding-left: 0;
+  padding-right: 2px;
+  align-items: center;
+  height: unset;
+}
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
+  width: 40px;
+}
+
+/*-----------------------------------------------------------------------------
+| Other styles
+|----------------------------------------------------------------------------*/
+
+.jp-FileDialog.jp-mod-conflict input {
+  color: var(--jp-error-color1);
+}
+
+.jp-FileDialog .jp-new-name-title {
+  margin-top: 12px;
+}
+
+.jp-LastModified-hidden {
+  display: none;
+}
+
+.jp-FileSize-hidden {
+  display: none;
+}
+
+.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| DirListing
+|----------------------------------------------------------------------------*/
+
+.jp-DirListing {
+  flex: 1 1 auto;
+  display: flex;
+  flex-direction: column;
+  outline: 0;
+}
+
+.jp-DirListing-header {
+  flex: 0 0 auto;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  overflow: hidden;
+  border-top: var(--jp-border-width) solid var(--jp-border-color2);
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  z-index: 2;
+}
+
+.jp-DirListing-headerItem {
+  padding: 4px 12px 2px;
+  font-weight: 500;
+}
+
+.jp-DirListing-headerItem:hover {
+  background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-headerItem.jp-id-name {
+  flex: 1 0 84px;
+}
+
+.jp-DirListing-headerItem.jp-id-modified {
+  flex: 0 0 112px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+}
+
+.jp-DirListing-headerItem.jp-id-filesize {
+  flex: 0 0 75px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+}
+
+.jp-id-narrow {
+  display: none;
+  flex: 0 0 5px;
+  padding: 4px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+  color: var(--jp-border-color2);
+}
+
+.jp-DirListing-narrow .jp-id-narrow {
+  display: block;
+}
+
+.jp-DirListing-narrow .jp-id-modified,
+.jp-DirListing-narrow .jp-DirListing-itemModified {
+  display: none;
+}
+
+.jp-DirListing-headerItem.jp-mod-selected {
+  font-weight: 600;
+}
+
+/* increase specificity to override bundled default */
+.jp-DirListing-content {
+  flex: 1 1 auto;
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  overflow: auto;
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-content mark {
+  color: var(--jp-ui-font-color0);
+  background-color: transparent;
+  font-weight: bold;
+}
+
+.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+/* Style the directory listing content when a user drops a file to upload */
+.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
+  outline: 5px dashed rgba(128, 128, 128, 0.5);
+  outline-offset: -10px;
+  cursor: copy;
+}
+
+.jp-DirListing-item {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  padding: 4px 12px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-DirListing-checkboxWrapper {
+  /* Increases hit area of checkbox. */
+  padding: 4px;
+}
+
+.jp-DirListing-header
+  .jp-DirListing-checkboxWrapper
+  + .jp-DirListing-headerItem {
+  padding-left: 4px;
+}
+
+.jp-DirListing-content .jp-DirListing-checkboxWrapper {
+  position: relative;
+  left: -4px;
+  margin: -4px 0 -4px -8px;
+}
+
+.jp-DirListing-checkboxWrapper.jp-mod-visible {
+  visibility: visible;
+}
+
+/* For devices that support hovering, hide checkboxes until hovered, selected...
+*/
+@media (hover: hover) {
+  .jp-DirListing-checkboxWrapper {
+    visibility: hidden;
+  }
+
+  .jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
+  .jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
+    visibility: visible;
+  }
+}
+
+.jp-DirListing-item[data-is-dot] {
+  opacity: 75%;
+}
+
+.jp-DirListing-item.jp-mod-selected {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.jp-DirListing-item.jp-mod-dropTarget {
+  background: var(--jp-brand-color3);
+}
+
+.jp-DirListing-item:hover:not(.jp-mod-selected) {
+  background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-itemIcon {
+  flex: 0 0 20px;
+  margin-right: 4px;
+}
+
+.jp-DirListing-itemText {
+  flex: 1 0 64px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  user-select: none;
+}
+
+.jp-DirListing-itemText:focus {
+  outline-width: 2px;
+  outline-color: var(--jp-inverse-layout-color1);
+  outline-style: solid;
+  outline-offset: 1px;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
+  outline-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-itemModified {
+  flex: 0 0 125px;
+  text-align: right;
+}
+
+.jp-DirListing-itemFileSize {
+  flex: 0 0 90px;
+  text-align: right;
+}
+
+.jp-DirListing-editor {
+  flex: 1 0 64px;
+  outline: none;
+  border: none;
+  color: var(--jp-ui-font-color1);
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
+  color: var(--jp-success-color1);
+  content: '\25CF';
+  font-size: 8px;
+  position: absolute;
+  left: -8px;
+}
+
+.jp-DirListing-item.jp-mod-running.jp-mod-selected
+  .jp-DirListing-itemIcon::before {
+  color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-DirListing-item.lm-mod-drag-image,
+.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
+  font-size: var(--jp-ui-font-size1);
+  padding-left: 4px;
+  margin-left: 4px;
+  width: 160px;
+  background-color: var(--jp-ui-inverse-font-color2);
+  box-shadow: var(--jp-elevation-z2);
+  border-radius: 0;
+  color: var(--jp-ui-font-color1);
+  transform: translateX(-40%) translateY(-58%);
+}
+
+.jp-Document {
+  min-width: 120px;
+  min-height: 120px;
+  outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Main OutputArea
+| OutputArea has a list of Outputs
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea {
+  overflow-y: auto;
+}
+
+.jp-OutputArea-child {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+  overflow: hidden;
+}
+
+.jp-OutputPrompt {
+  width: var(--jp-cell-prompt-width);
+  color: var(--jp-cell-outprompt-font-color);
+  font-family: var(--jp-cell-prompt-font-family);
+  padding: var(--jp-code-padding);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+  opacity: var(--jp-cell-prompt-opacity);
+
+  /* Right align prompt text, don't wrap to handle large prompt numbers */
+  text-align: right;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+
+  /* Disable text selection */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-OutputArea-prompt {
+  display: table-cell;
+  vertical-align: top;
+}
+
+.jp-OutputArea-output {
+  display: table-cell;
+  width: 100%;
+  height: auto;
+  overflow: auto;
+  user-select: text;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+}
+
+.jp-OutputArea .jp-RenderedText {
+  padding-left: 1ch;
+}
+
+/**
+ * Prompt overlay.
+ */
+
+.jp-OutputArea-promptOverlay {
+  position: absolute;
+  top: 0;
+  width: var(--jp-cell-prompt-width);
+  height: 100%;
+  opacity: 0.5;
+}
+
+.jp-OutputArea-promptOverlay:hover {
+  background: var(--jp-layout-color2);
+  box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
+  cursor: zoom-out;
+}
+
+.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
+  cursor: zoom-in;
+}
+
+/**
+ * Isolated output.
+ */
+.jp-OutputArea-output.jp-mod-isolated {
+  width: 100%;
+  display: block;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
+  position: relative;
+}
+
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: transparent;
+}
+
+/* pre */
+
+.jp-OutputArea-output pre {
+  border: none;
+  margin: 0;
+  padding: 0;
+  overflow-x: auto;
+  overflow-y: auto;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre-wrap;
+}
+
+/* tables */
+
+.jp-OutputArea-output.jp-RenderedHTMLCommon table {
+  margin-left: 0;
+  margin-right: 0;
+}
+
+/* description lists */
+
+.jp-OutputArea-output dl,
+.jp-OutputArea-output dt,
+.jp-OutputArea-output dd {
+  display: block;
+}
+
+.jp-OutputArea-output dl {
+  width: 100%;
+  overflow: hidden;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-OutputArea-output dt {
+  font-weight: bold;
+  float: left;
+  width: 20%;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-OutputArea-output dd {
+  float: left;
+  width: 80%;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-TrimmedOutputs pre {
+  background: var(--jp-layout-color3);
+  font-size: calc(var(--jp-code-font-size) * 1.4);
+  text-align: center;
+  text-transform: uppercase;
+}
+
+/* Hide the gutter in case of
+ *  - nested output areas (e.g. in the case of output widgets)
+ *  - mirrored output areas
+ */
+.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
+  display: none;
+}
+
+/* Hide empty lines in the output area, for instance due to cleared widgets */
+.jp-OutputArea-prompt:empty {
+  padding: 0;
+  border: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| executeResult is added to any Output-result for the display of the object
+| returned by a cell
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea-output.jp-OutputArea-executeResult {
+  margin-left: 0;
+  width: 100%;
+}
+
+/* Text output with the Out[] prompt needs a top padding to match the
+ * alignment of the Out[] prompt itself.
+ */
+.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
+  padding-top: var(--jp-code-padding);
+  border-top: var(--jp-border-width) solid transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| The Stdin output
+|----------------------------------------------------------------------------*/
+
+.jp-Stdin-prompt {
+  color: var(--jp-content-font-color0);
+  padding-right: var(--jp-code-padding);
+  vertical-align: baseline;
+  flex: 0 0 auto;
+}
+
+.jp-Stdin-input {
+  font-family: var(--jp-code-font-family);
+  font-size: inherit;
+  color: inherit;
+  background-color: inherit;
+  width: 42%;
+  min-width: 200px;
+
+  /* make sure input baseline aligns with prompt */
+  vertical-align: baseline;
+
+  /* padding + margin = 0.5em between prompt and cursor */
+  padding: 0 0.25em;
+  margin: 0 0.25em;
+  flex: 0 0 70%;
+}
+
+.jp-Stdin-input::placeholder {
+  opacity: 0;
+}
+
+.jp-Stdin-input:focus {
+  box-shadow: none;
+}
+
+.jp-Stdin-input:focus::placeholder {
+  opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Output Area View
+|----------------------------------------------------------------------------*/
+
+.jp-LinkedOutputView .jp-OutputArea {
+  height: 100%;
+  display: block;
+}
+
+.jp-LinkedOutputView .jp-OutputArea-output:only-child {
+  height: 100%;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+@media print {
+  .jp-OutputArea-child {
+    break-inside: avoid-page;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+  .jp-OutputPrompt {
+    display: table-row;
+    text-align: left;
+  }
+
+  .jp-OutputArea-child .jp-OutputArea-output {
+    display: table-row;
+    margin-left: var(--jp-notebook-padding);
+  }
+}
+
+/* Trimmed outputs warning */
+.jp-TrimmedOutputs > a {
+  margin: 10px;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.jp-TrimmedOutputs > a:hover {
+  text-decoration: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Table of Contents
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-toc-active-width: 4px;
+}
+
+.jp-TableOfContents {
+  display: flex;
+  flex-direction: column;
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  height: 100%;
+}
+
+.jp-TableOfContents-placeholder {
+  text-align: center;
+}
+
+.jp-TableOfContents-placeholderContent {
+  color: var(--jp-content-font-color2);
+  padding: 8px;
+}
+
+.jp-TableOfContents-placeholderContent > h3 {
+  margin-bottom: var(--jp-content-heading-margin-bottom);
+}
+
+.jp-TableOfContents .jp-SidePanel-content {
+  overflow-y: auto;
+}
+
+.jp-TableOfContents-tree {
+  margin: 4px;
+}
+
+.jp-TableOfContents ol {
+  list-style-type: none;
+}
+
+/* stylelint-disable-next-line selector-max-type */
+.jp-TableOfContents li > ol {
+  /* Align left border with triangle icon center */
+  padding-left: 11px;
+}
+
+.jp-TableOfContents-content {
+  /* left margin for the active heading indicator */
+  margin: 0 0 0 var(--jp-private-toc-active-width);
+  padding: 0;
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-tocItem {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-tocItem-heading {
+  display: flex;
+  cursor: pointer;
+}
+
+.jp-tocItem-heading:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-tocItem-content {
+  display: block;
+  padding: 4px 0;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow-x: hidden;
+}
+
+.jp-tocItem-collapser {
+  height: 20px;
+  margin: 2px 2px 0;
+  padding: 0;
+  background: none;
+  border: none;
+  cursor: pointer;
+}
+
+.jp-tocItem-collapser:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+/* Active heading indicator */
+
+.jp-tocItem-heading::before {
+  content: ' ';
+  background: transparent;
+  width: var(--jp-private-toc-active-width);
+  height: 24px;
+  position: absolute;
+  left: 0;
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-tocItem-heading.jp-tocItem-active::before {
+  background-color: var(--jp-brand-color1);
+}
+
+.jp-tocItem-heading:hover.jp-tocItem-active::before {
+  background: var(--jp-brand-color0);
+  opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapser {
+  flex: 0 0 var(--jp-cell-collapser-width);
+  padding: 0;
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+  border-radius: var(--jp-border-radius);
+  opacity: 1;
+}
+
+.jp-Collapser-child {
+  display: block;
+  width: 100%;
+  box-sizing: border-box;
+
+  /* height: 100% doesn't work because the height of its parent is computed from content */
+  position: absolute;
+  top: 0;
+  bottom: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Hiding collapsers in print mode.
+
+Note: input and output wrappers have "display: block" propery in print mode.
+*/
+
+@media print {
+  .jp-Collapser {
+    display: none;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Header/Footer
+|----------------------------------------------------------------------------*/
+
+/* Hidden by zero height by default */
+.jp-CellHeader,
+.jp-CellFooter {
+  height: 0;
+  width: 100%;
+  padding: 0;
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Input
+|----------------------------------------------------------------------------*/
+
+/* All input areas */
+.jp-InputArea {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+  overflow: hidden;
+}
+
+.jp-InputArea-editor {
+  display: table-cell;
+  overflow: hidden;
+  vertical-align: top;
+
+  /* This is the non-active, default styling */
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  border-radius: 0;
+  background: var(--jp-cell-editor-background);
+}
+
+.jp-InputPrompt {
+  display: table-cell;
+  vertical-align: top;
+  width: var(--jp-cell-prompt-width);
+  color: var(--jp-cell-inprompt-font-color);
+  font-family: var(--jp-cell-prompt-font-family);
+  padding: var(--jp-code-padding);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  opacity: var(--jp-cell-prompt-opacity);
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+
+  /* Right align prompt text, don't wrap to handle large prompt numbers */
+  text-align: right;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+
+  /* Disable text selection */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+  .jp-InputArea-editor {
+    display: table-row;
+    margin-left: var(--jp-notebook-padding);
+  }
+
+  .jp-InputPrompt {
+    display: table-row;
+    text-align: left;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Placeholder {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+}
+
+.jp-Placeholder-prompt {
+  display: table-cell;
+  box-sizing: border-box;
+}
+
+.jp-Placeholder-content {
+  display: table-cell;
+  padding: 4px 6px;
+  border: 1px solid transparent;
+  border-radius: 0;
+  background: none;
+  box-sizing: border-box;
+  cursor: pointer;
+}
+
+.jp-Placeholder-contentContainer {
+  display: flex;
+}
+
+.jp-Placeholder-content:hover,
+.jp-InputPlaceholder > .jp-Placeholder-content:hover {
+  border-color: var(--jp-layout-color3);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon {
+  width: 32px;
+  height: 16px;
+  border: 1px solid transparent;
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon:hover {
+  border: 1px solid var(--jp-border-color1);
+  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
+  background-color: var(--jp-layout-color0);
+}
+
+.jp-PlaceholderText {
+  white-space: nowrap;
+  overflow-x: hidden;
+  color: var(--jp-inverse-layout-color3);
+  font-family: var(--jp-code-font-family);
+}
+
+.jp-InputPlaceholder > .jp-Placeholder-content {
+  border-color: var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Private CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-cell-scrolling-output-offset: 5px;
+}
+
+/*-----------------------------------------------------------------------------
+| Cell
+|----------------------------------------------------------------------------*/
+
+.jp-Cell {
+  padding: var(--jp-cell-padding);
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Common input/output
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-inputWrapper,
+.jp-Cell-outputWrapper {
+  display: flex;
+  flex-direction: row;
+  padding: 0;
+  margin: 0;
+
+  /* Added to reveal the box-shadow on the input and output collapsers. */
+  overflow: visible;
+}
+
+/* Only input/output areas inside cells */
+.jp-Cell-inputArea,
+.jp-Cell-outputArea {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Collapser
+|----------------------------------------------------------------------------*/
+
+/* Make the output collapser disappear when there is not output, but do so
+ * in a manner that leaves it in the layout and preserves its width.
+ */
+.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
+  border: none !important;
+  background: transparent !important;
+}
+
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
+  min-height: var(--jp-cell-collapser-min-height);
+}
+
+/*-----------------------------------------------------------------------------
+| Output
+|----------------------------------------------------------------------------*/
+
+/* Put a space between input and output when there IS output */
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
+  margin-top: 5px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
+  overflow-y: auto;
+  max-height: 24em;
+  margin-left: var(--jp-private-cell-scrolling-output-offset);
+  resize: vertical;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
+  max-height: unset;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
+  content: ' ';
+  box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
+  width: 100%;
+  height: 100%;
+  position: sticky;
+  bottom: 0;
+  top: 0;
+  margin-top: -50%;
+  float: left;
+  display: block;
+  pointer-events: none;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
+  padding-top: 6px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
+  width: calc(
+    var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
+  );
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
+  left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
+}
+
+/*-----------------------------------------------------------------------------
+| CodeCell
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| MarkdownCell
+|----------------------------------------------------------------------------*/
+
+.jp-MarkdownOutput {
+  display: table-cell;
+  width: 100%;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-left: var(--jp-code-padding);
+}
+
+.jp-MarkdownOutput.jp-RenderedHTMLCommon {
+  overflow: auto;
+}
+
+/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
+.jp-collapseHeadingButton {
+  display: flex;
+  min-height: var(--jp-cell-collapser-min-height);
+  font-size: var(--jp-code-font-size);
+  position: absolute;
+  background-color: transparent;
+  background-size: 25px;
+  background-repeat: no-repeat;
+  background-position-x: center;
+  background-position-y: top;
+  background-image: var(--jp-icon-caret-down);
+  right: 0;
+  top: 0;
+  bottom: 0;
+}
+
+.jp-collapseHeadingButton.jp-mod-collapsed {
+  background-image: var(--jp-icon-caret-right);
+}
+
+/*
+ set the container font size to match that of content
+ so that the nested collapse buttons have the right size
+*/
+.jp-MarkdownCell .jp-InputPrompt {
+  font-size: var(--jp-content-font-size1);
+}
+
+/*
+  Align collapseHeadingButton with cell top header
+  The font sizes are identical to the ones in packages/rendermime/style/base.css
+*/
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
+  font-size: var(--jp-content-font-size5);
+  background-position-y: calc(0.3 * var(--jp-content-font-size5));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
+  font-size: var(--jp-content-font-size4);
+  background-position-y: calc(0.3 * var(--jp-content-font-size4));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
+  font-size: var(--jp-content-font-size3);
+  background-position-y: calc(0.3 * var(--jp-content-font-size3));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
+  font-size: var(--jp-content-font-size2);
+  background-position-y: calc(0.3 * var(--jp-content-font-size2));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
+  font-size: var(--jp-content-font-size1);
+  background-position-y: top;
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
+  font-size: var(--jp-content-font-size0);
+  background-position-y: top;
+}
+
+/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
+  display: none;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton
+  :is(.jp-MarkdownCell:hover, .jp-mod-active)
+  .jp-collapseHeadingButton {
+  display: flex;
+}
+
+/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
+is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
+  margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
+  margin-top: var(--jp-code-padding);
+  border: 1px solid var(--jp-border-color2);
+  background-color: var(--jp-border-color3) !important;
+  color: var(--jp-content-font-color0) !important;
+  display: flex;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
+  background-color: var(--jp-border-color2) !important;
+}
+
+.jp-showHiddenCellsButton {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Using block instead of flex to allow the use of the break-inside CSS property for
+cell outputs.
+*/
+
+@media print {
+  .jp-Cell-inputWrapper,
+  .jp-Cell-outputWrapper {
+    display: block;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-notebook-toolbar-padding: 2px 5px 2px 2px;
+}
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookPanel-toolbar {
+  padding: var(--jp-notebook-toolbar-padding);
+
+  /* disable paint containment from lumino 2.0 default strict CSS containment */
+  contain: style size !important;
+}
+
+.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
+  border: none;
+  box-shadow: none;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown select {
+  height: 24px;
+  font-size: var(--jp-ui-font-size1);
+  line-height: 14px;
+  border-radius: 0;
+  display: block;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown span {
+  top: 5px !important;
+}
+
+.jp-Toolbar-responsive-popup {
+  position: absolute;
+  height: fit-content;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-end;
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  background: var(--jp-toolbar-background);
+  min-height: var(--jp-toolbar-micro-height);
+  padding: var(--jp-notebook-toolbar-padding);
+  z-index: 1;
+  right: 0;
+  top: 0;
+}
+
+.jp-Toolbar > .jp-Toolbar-responsive-opener {
+  margin-left: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-ExecutionIndicator {
+  position: relative;
+  display: inline-block;
+  height: 100%;
+  z-index: 9997;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip {
+  visibility: hidden;
+  height: auto;
+  width: max-content;
+  width: -moz-max-content;
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color1);
+  text-align: justify;
+  border-radius: 6px;
+  padding: 0 5px;
+  position: fixed;
+  display: table;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.up {
+  transform: translateX(-50%) translateY(-100%) translateY(-32px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.down {
+  transform: translateX(calc(-100% + 16px)) translateY(5px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.hidden {
+  display: none;
+}
+
+.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
+  visibility: visible;
+}
+
+.jp-Notebook-ExecutionIndicator span {
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  color: var(--jp-ui-font-color1);
+  line-height: 24px;
+  display: block;
+}
+
+.jp-Notebook-ExecutionIndicator-progress-bar {
+  display: flex;
+  justify-content: center;
+  height: 100%;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*
+ * Execution indicator
+ */
+.jp-tocItem-content::after {
+  content: '';
+
+  /* Must be identical to form a circle */
+  width: 12px;
+  height: 12px;
+  background: none;
+  border: none;
+  position: absolute;
+  right: 0;
+}
+
+.jp-tocItem-content[data-running='0']::after {
+  border-radius: 50%;
+  border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+  background: none;
+}
+
+.jp-tocItem-content[data-running='1']::after {
+  border-radius: 50%;
+  border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+  background-color: var(--jp-inverse-layout-color3);
+}
+
+.jp-tocItem-content[data-running='0'],
+.jp-tocItem-content[data-running='1'] {
+  margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Notebook-footer {
+  height: 27px;
+  margin-left: calc(
+    var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+      var(--jp-cell-padding)
+  );
+  width: calc(
+    100% -
+      (
+        var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+          var(--jp-cell-padding) + var(--jp-cell-padding)
+      )
+  );
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  color: var(--jp-ui-font-color3);
+  margin-top: 6px;
+  background: none;
+  cursor: pointer;
+}
+
+.jp-Notebook-footer:focus {
+  border-color: var(--jp-cell-editor-active-border-color);
+}
+
+/* For devices that support hovering, hide footer until hover */
+@media (hover: hover) {
+  .jp-Notebook-footer {
+    opacity: 0;
+  }
+
+  .jp-Notebook-footer:focus,
+  .jp-Notebook-footer:hover {
+    opacity: 1;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Imports
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-side-by-side-output-size: 1fr;
+  --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
+  --jp-private-notebook-dragImage-width: 304px;
+  --jp-private-notebook-dragImage-height: 36px;
+  --jp-private-notebook-selected-color: var(--md-blue-400);
+  --jp-private-notebook-active-color: var(--md-green-400);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook
+|----------------------------------------------------------------------------*/
+
+/* stylelint-disable selector-max-class */
+
+.jp-NotebookPanel {
+  display: block;
+  height: 100%;
+}
+
+.jp-NotebookPanel.jp-Document {
+  min-width: 240px;
+  min-height: 120px;
+}
+
+.jp-Notebook {
+  padding: var(--jp-notebook-padding);
+  outline: none;
+  overflow: auto;
+  background: var(--jp-layout-color0);
+}
+
+.jp-Notebook.jp-mod-scrollPastEnd::after {
+  display: block;
+  content: '';
+  min-height: var(--jp-notebook-scroll-padding);
+}
+
+.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
+  contain: strict;
+}
+
+.jp-Notebook .jp-Cell {
+  overflow: visible;
+}
+
+.jp-Notebook .jp-Cell .jp-InputPrompt {
+  cursor: move;
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook state related styling
+|
+| The notebook and cells each have states, here are the possibilities:
+|
+| - Notebook
+|   - Command
+|   - Edit
+| - Cell
+|   - None
+|   - Active (only one can be active)
+|   - Selected (the cells actions are applied to)
+|   - Multiselected (when multiple selected, the cursor)
+|   - No outputs
+|----------------------------------------------------------------------------*/
+
+/* Command or edit modes */
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
+  opacity: var(--jp-cell-prompt-not-active-opacity);
+  color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
+  opacity: var(--jp-cell-prompt-not-active-opacity);
+  color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+/* cell is active */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
+  background: var(--jp-brand-color1);
+}
+
+/* cell is dirty */
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
+  color: var(--jp-warn-color1);
+}
+
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
+  color: var(--jp-warn-color1);
+  content: '•';
+}
+
+.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
+  background: var(--jp-warn-color1);
+}
+
+/* collapser is hovered */
+.jp-Notebook .jp-Cell .jp-Collapser:hover {
+  box-shadow: var(--jp-elevation-z2);
+  background: var(--jp-brand-color1);
+  opacity: var(--jp-cell-collapser-not-active-hover-opacity);
+}
+
+/* cell is active and collapser is hovered */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
+  background: var(--jp-brand-color0);
+  opacity: 1;
+}
+
+/* Command mode */
+
+.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
+  background: var(--jp-notebook-multiselected-color);
+}
+
+.jp-Notebook.jp-mod-commandMode
+  .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
+  background: transparent;
+}
+
+/* Edit mode */
+
+.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
+  border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+  background-color: var(--jp-cell-editor-active-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook drag and drop
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-cell.jp-mod-dropSource {
+  opacity: 0.5;
+}
+
+.jp-Notebook-cell.jp-mod-dropTarget,
+.jp-Notebook.jp-mod-commandMode
+  .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
+  border-top-color: var(--jp-private-notebook-selected-color);
+  border-top-style: solid;
+  border-top-width: 2px;
+}
+
+.jp-dragImage {
+  display: block;
+  flex-direction: row;
+  width: var(--jp-private-notebook-dragImage-width);
+  height: var(--jp-private-notebook-dragImage-height);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background);
+  overflow: visible;
+}
+
+.jp-dragImage-singlePrompt {
+  box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+.jp-dragImage .jp-dragImage-content {
+  flex: 1 1 auto;
+  z-index: 2;
+  font-size: var(--jp-code-font-size);
+  font-family: var(--jp-code-font-family);
+  line-height: var(--jp-code-line-height);
+  padding: var(--jp-code-padding);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background-color);
+  color: var(--jp-content-font-color3);
+  text-align: left;
+  margin: 4px 4px 4px 0;
+}
+
+.jp-dragImage .jp-dragImage-prompt {
+  flex: 0 0 auto;
+  min-width: 36px;
+  color: var(--jp-cell-inprompt-font-color);
+  padding: var(--jp-code-padding);
+  padding-left: 12px;
+  font-family: var(--jp-cell-prompt-font-family);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  line-height: 1.9;
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+}
+
+.jp-dragImage-multipleBack {
+  z-index: -1;
+  position: absolute;
+  height: 32px;
+  width: 300px;
+  top: 8px;
+  left: 8px;
+  background: var(--jp-layout-color2);
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+/*-----------------------------------------------------------------------------
+| Cell toolbar
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookTools {
+  display: block;
+  min-width: var(--jp-sidebar-min-width);
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+
+  /* This is needed so that all font sizing of children done in ems is
+    * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+  overflow: auto;
+}
+
+.jp-ActiveCellTool {
+  padding: 12px 0;
+  display: flex;
+}
+
+.jp-ActiveCellTool-Content {
+  flex: 1 1 auto;
+}
+
+.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
+  background: var(--jp-cell-editor-background);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  border-radius: 0;
+  min-height: 29px;
+}
+
+.jp-ActiveCellTool .jp-InputPrompt {
+  min-width: calc(var(--jp-cell-prompt-width) * 0.75);
+}
+
+.jp-ActiveCellTool-CellContent > pre {
+  padding: 5px 4px;
+  margin: 0;
+  white-space: normal;
+}
+
+.jp-MetadataEditorTool {
+  flex-direction: column;
+  padding: 12px 0;
+}
+
+.jp-RankedPanel > :not(:first-child) {
+  margin-top: 12px;
+}
+
+.jp-KeySelector select.jp-mod-styled {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  border: var(--jp-border-width) solid var(--jp-border-color1);
+}
+
+.jp-KeySelector label,
+.jp-MetadataEditorTool label,
+.jp-NumberSetter label {
+  line-height: 1.4;
+}
+
+.jp-NotebookTools .jp-select-wrapper {
+  margin-top: 4px;
+  margin-bottom: 0;
+}
+
+.jp-NumberSetter input {
+  width: 100%;
+  margin-top: 4px;
+}
+
+.jp-NotebookTools .jp-Collapse {
+  margin-top: 16px;
+}
+
+/*-----------------------------------------------------------------------------
+| Presentation Mode (.jp-mod-presentationMode)
+|----------------------------------------------------------------------------*/
+
+.jp-mod-presentationMode .jp-Notebook {
+  --jp-content-font-size1: var(--jp-content-presentation-font-size1);
+  --jp-code-font-size: var(--jp-code-presentation-font-size);
+}
+
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
+  flex: 0 0 110px;
+}
+
+/*-----------------------------------------------------------------------------
+| Side-by-side Mode (.jp-mod-sideBySide)
+|----------------------------------------------------------------------------*/
+.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
+  margin-top: 3em;
+  margin-bottom: 3em;
+  margin-left: 5%;
+  margin-right: 5%;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
+  display: grid;
+  grid-template-columns: minmax(0, 1fr) min-content minmax(
+      0,
+      var(--jp-side-by-side-output-size)
+    );
+  grid-template-rows: auto minmax(0, 1fr) auto;
+  grid-template-areas:
+    'header header header'
+    'input handle output'
+    'footer footer footer';
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
+  grid-template-columns: minmax(0, 1fr) min-content minmax(
+      0,
+      var(--jp-side-by-side-resized-cell)
+    );
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
+  grid-area: header;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
+  grid-area: input;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
+  /* overwrite the default margin (no vertical separation needed in side by side move */
+  margin-top: 0;
+  grid-area: output;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
+  grid-area: footer;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
+  grid-area: handle;
+  user-select: none;
+  display: block;
+  height: 100%;
+  cursor: ew-resize;
+  padding: 0 var(--jp-cell-padding);
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
+  content: '';
+  display: block;
+  background: var(--jp-border-color2);
+  height: 100%;
+  width: 5px;
+}
+
+.jp-mod-sideBySide.jp-Notebook
+  .jp-CodeCell.jp-mod-resizedCell
+  .jp-CellResizeHandle::after {
+  background: var(--jp-border-color0);
+}
+
+.jp-CellResizeHandle {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-Placeholder {
+  padding-left: 55px;
+}
+
+.jp-Cell-Placeholder-wrapper {
+  background: #fff;
+  border: 1px solid;
+  border-color: #e5e6e9 #dfe0e4 #d0d1d5;
+  border-radius: 4px;
+  -webkit-border-radius: 4px;
+  margin: 10px 15px;
+}
+
+.jp-Cell-Placeholder-wrapper-inner {
+  padding: 15px;
+  position: relative;
+}
+
+.jp-Cell-Placeholder-wrapper-body {
+  background-repeat: repeat;
+  background-size: 50% auto;
+}
+
+.jp-Cell-Placeholder-wrapper-body div {
+  background: #f6f7f8;
+  background-image: -webkit-linear-gradient(
+    left,
+    #f6f7f8 0%,
+    #edeef1 20%,
+    #f6f7f8 40%,
+    #f6f7f8 100%
+  );
+  background-repeat: no-repeat;
+  background-size: 800px 104px;
+  height: 104px;
+  position: absolute;
+  right: 15px;
+  left: 15px;
+  top: 15px;
+}
+
+div.jp-Cell-Placeholder-h1 {
+  top: 20px;
+  height: 20px;
+  left: 15px;
+  width: 150px;
+}
+
+div.jp-Cell-Placeholder-h2 {
+  left: 15px;
+  top: 50px;
+  height: 10px;
+  width: 100px;
+}
+
+div.jp-Cell-Placeholder-content-1,
+div.jp-Cell-Placeholder-content-2,
+div.jp-Cell-Placeholder-content-3 {
+  left: 15px;
+  right: 15px;
+  height: 10px;
+}
+
+div.jp-Cell-Placeholder-content-1 {
+  top: 100px;
+}
+
+div.jp-Cell-Placeholder-content-2 {
+  top: 120px;
+}
+
+div.jp-Cell-Placeholder-content-3 {
+  top: 140px;
+}
+
+</style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+The following CSS variables define the main, public API for styling JupyterLab.
+These variables should be used by all plugins wherever possible. In other
+words, plugins should not define custom colors, sizes, etc unless absolutely
+necessary. This enables users to change the visual theme of JupyterLab
+by changing these variables.
+
+Many variables appear in an ordered sequence (0,1,2,3). These sequences
+are designed to work well together, so for example, `--jp-border-color1` should
+be used with `--jp-layout-color1`. The numbers have the following meanings:
+
+* 0: super-primary, reserved for special emphasis
+* 1: primary, most important under normal situations
+* 2: secondary, next most important under normal situations
+* 3: tertiary, next most important under normal situations
+
+Throughout JupyterLab, we are mostly following principles from Google's
+Material Design when selecting colors. We are not, however, following
+all of MD as it is not optimized for dense, information rich UIs.
+*/
+
+:root {
+  /* Elevation
+   *
+   * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
+   *
+   * https://github.com/material-components/material-components-web
+   * https://material-components-web.appspot.com/elevation.html
+   */
+
+  --jp-shadow-base-lightness: 0;
+  --jp-shadow-umbra-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.2
+  );
+  --jp-shadow-penumbra-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.14
+  );
+  --jp-shadow-ambient-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.12
+  );
+  --jp-elevation-z0: none;
+  --jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
+    0 1px 1px 0 var(--jp-shadow-penumbra-color),
+    0 1px 3px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
+    0 2px 2px 0 var(--jp-shadow-penumbra-color),
+    0 1px 5px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
+    0 4px 5px 0 var(--jp-shadow-penumbra-color),
+    0 1px 10px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
+    0 6px 10px 0 var(--jp-shadow-penumbra-color),
+    0 1px 18px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
+    0 8px 10px 1px var(--jp-shadow-penumbra-color),
+    0 3px 14px 2px var(--jp-shadow-ambient-color);
+  --jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
+    0 12px 17px 2px var(--jp-shadow-penumbra-color),
+    0 5px 22px 4px var(--jp-shadow-ambient-color);
+  --jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
+    0 16px 24px 2px var(--jp-shadow-penumbra-color),
+    0 6px 30px 5px var(--jp-shadow-ambient-color);
+  --jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
+    0 20px 31px 3px var(--jp-shadow-penumbra-color),
+    0 8px 38px 7px var(--jp-shadow-ambient-color);
+  --jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
+    0 24px 38px 3px var(--jp-shadow-penumbra-color),
+    0 9px 46px 8px var(--jp-shadow-ambient-color);
+
+  /* Borders
+   *
+   * The following variables, specify the visual styling of borders in JupyterLab.
+   */
+
+  --jp-border-width: 1px;
+  --jp-border-color0: var(--md-grey-400);
+  --jp-border-color1: var(--md-grey-400);
+  --jp-border-color2: var(--md-grey-300);
+  --jp-border-color3: var(--md-grey-200);
+  --jp-inverse-border-color: var(--md-grey-600);
+  --jp-border-radius: 2px;
+
+  /* UI Fonts
+   *
+   * The UI font CSS variables are used for the typography all of the JupyterLab
+   * user interface elements that are not directly user generated content.
+   *
+   * The font sizing here is done assuming that the body font size of --jp-ui-font-size1
+   * is applied to a parent element. When children elements, such as headings, are sized
+   * in em all things will be computed relative to that body size.
+   */
+
+  --jp-ui-font-scale-factor: 1.2;
+  --jp-ui-font-size0: 0.83333em;
+  --jp-ui-font-size1: 13px; /* Base font size */
+  --jp-ui-font-size2: 1.2em;
+  --jp-ui-font-size3: 1.44em;
+  --jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
+    helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+    'Segoe UI Symbol';
+
+  /*
+   * Use these font colors against the corresponding main layout colors.
+   * In a light theme, these go from dark to light.
+   */
+
+  /* Defaults use Material Design specification */
+  --jp-ui-font-color0: rgba(0, 0, 0, 1);
+  --jp-ui-font-color1: rgba(0, 0, 0, 0.87);
+  --jp-ui-font-color2: rgba(0, 0, 0, 0.54);
+  --jp-ui-font-color3: rgba(0, 0, 0, 0.38);
+
+  /*
+   * Use these against the brand/accent/warn/error colors.
+   * These will typically go from light to darker, in both a dark and light theme.
+   */
+
+  --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
+  --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
+  --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
+  --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
+
+  /* Content Fonts
+   *
+   * Content font variables are used for typography of user generated content.
+   *
+   * The font sizing here is done assuming that the body font size of --jp-content-font-size1
+   * is applied to a parent element. When children elements, such as headings, are sized
+   * in em all things will be computed relative to that body size.
+   */
+
+  --jp-content-line-height: 1.6;
+  --jp-content-font-scale-factor: 1.2;
+  --jp-content-font-size0: 0.83333em;
+  --jp-content-font-size1: 14px; /* Base font size */
+  --jp-content-font-size2: 1.2em;
+  --jp-content-font-size3: 1.44em;
+  --jp-content-font-size4: 1.728em;
+  --jp-content-font-size5: 2.0736em;
+
+  /* This gives a magnification of about 125% in presentation mode over normal. */
+  --jp-content-presentation-font-size1: 17px;
+  --jp-content-heading-line-height: 1;
+  --jp-content-heading-margin-top: 1.2em;
+  --jp-content-heading-margin-bottom: 0.8em;
+  --jp-content-heading-font-weight: 500;
+
+  /* Defaults use Material Design specification */
+  --jp-content-font-color0: rgba(0, 0, 0, 1);
+  --jp-content-font-color1: rgba(0, 0, 0, 0.87);
+  --jp-content-font-color2: rgba(0, 0, 0, 0.54);
+  --jp-content-font-color3: rgba(0, 0, 0, 0.38);
+  --jp-content-link-color: var(--md-blue-900);
+  --jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
+    'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
+    'Segoe UI Emoji', 'Segoe UI Symbol';
+
+  /*
+   * Code Fonts
+   *
+   * Code font variables are used for typography of code and other monospaces content.
+   */
+
+  --jp-code-font-size: 13px;
+  --jp-code-line-height: 1.3077; /* 17px for 13px base */
+  --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
+  --jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
+  --jp-code-font-family: var(--jp-code-font-family-default);
+
+  /* This gives a magnification of about 125% in presentation mode over normal. */
+  --jp-code-presentation-font-size: 16px;
+
+  /* may need to tweak cursor width if you change font size */
+  --jp-code-cursor-width0: 1.4px;
+  --jp-code-cursor-width1: 2px;
+  --jp-code-cursor-width2: 4px;
+
+  /* Layout
+   *
+   * The following are the main layout colors use in JupyterLab. In a light
+   * theme these would go from light to dark.
+   */
+
+  --jp-layout-color0: white;
+  --jp-layout-color1: white;
+  --jp-layout-color2: var(--md-grey-200);
+  --jp-layout-color3: var(--md-grey-400);
+  --jp-layout-color4: var(--md-grey-600);
+
+  /* Inverse Layout
+   *
+   * The following are the inverse layout colors use in JupyterLab. In a light
+   * theme these would go from dark to light.
+   */
+
+  --jp-inverse-layout-color0: #111;
+  --jp-inverse-layout-color1: var(--md-grey-900);
+  --jp-inverse-layout-color2: var(--md-grey-800);
+  --jp-inverse-layout-color3: var(--md-grey-700);
+  --jp-inverse-layout-color4: var(--md-grey-600);
+
+  /* Brand/accent */
+
+  --jp-brand-color0: var(--md-blue-900);
+  --jp-brand-color1: var(--md-blue-700);
+  --jp-brand-color2: var(--md-blue-300);
+  --jp-brand-color3: var(--md-blue-100);
+  --jp-brand-color4: var(--md-blue-50);
+  --jp-accent-color0: var(--md-green-900);
+  --jp-accent-color1: var(--md-green-700);
+  --jp-accent-color2: var(--md-green-300);
+  --jp-accent-color3: var(--md-green-100);
+
+  /* State colors (warn, error, success, info) */
+
+  --jp-warn-color0: var(--md-orange-900);
+  --jp-warn-color1: var(--md-orange-700);
+  --jp-warn-color2: var(--md-orange-300);
+  --jp-warn-color3: var(--md-orange-100);
+  --jp-error-color0: var(--md-red-900);
+  --jp-error-color1: var(--md-red-700);
+  --jp-error-color2: var(--md-red-300);
+  --jp-error-color3: var(--md-red-100);
+  --jp-success-color0: var(--md-green-900);
+  --jp-success-color1: var(--md-green-700);
+  --jp-success-color2: var(--md-green-300);
+  --jp-success-color3: var(--md-green-100);
+  --jp-info-color0: var(--md-cyan-900);
+  --jp-info-color1: var(--md-cyan-700);
+  --jp-info-color2: var(--md-cyan-300);
+  --jp-info-color3: var(--md-cyan-100);
+
+  /* Cell specific styles */
+
+  --jp-cell-padding: 5px;
+  --jp-cell-collapser-width: 8px;
+  --jp-cell-collapser-min-height: 20px;
+  --jp-cell-collapser-not-active-hover-opacity: 0.6;
+  --jp-cell-editor-background: var(--md-grey-100);
+  --jp-cell-editor-border-color: var(--md-grey-300);
+  --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
+  --jp-cell-editor-active-background: var(--jp-layout-color0);
+  --jp-cell-editor-active-border-color: var(--jp-brand-color1);
+  --jp-cell-prompt-width: 64px;
+  --jp-cell-prompt-font-family: var(--jp-code-font-family-default);
+  --jp-cell-prompt-letter-spacing: 0;
+  --jp-cell-prompt-opacity: 1;
+  --jp-cell-prompt-not-active-opacity: 0.5;
+  --jp-cell-prompt-not-active-font-color: var(--md-grey-700);
+
+  /* A custom blend of MD grey and blue 600
+   * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
+  --jp-cell-inprompt-font-color: #307fc1;
+
+  /* A custom blend of MD grey and orange 600
+   * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
+  --jp-cell-outprompt-font-color: #bf5b3d;
+
+  /* Notebook specific styles */
+
+  --jp-notebook-padding: 10px;
+  --jp-notebook-select-background: var(--jp-layout-color1);
+  --jp-notebook-multiselected-color: var(--md-blue-50);
+
+  /* The scroll padding is calculated to fill enough space at the bottom of the
+  notebook to show one single-line cell (with appropriate padding) at the top
+  when the notebook is scrolled all the way to the bottom. We also subtract one
+  pixel so that no scrollbar appears if we have just one single-line cell in the
+  notebook. This padding is to enable a 'scroll past end' feature in a notebook.
+  */
+  --jp-notebook-scroll-padding: calc(
+    100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
+      var(--jp-code-padding) - var(--jp-cell-padding) - 1px
+  );
+
+  /* Rendermime styles */
+
+  --jp-rendermime-error-background: #fdd;
+  --jp-rendermime-table-row-background: var(--md-grey-100);
+  --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
+
+  /* Dialog specific styles */
+
+  --jp-dialog-background: rgba(0, 0, 0, 0.25);
+
+  /* Console specific styles */
+
+  --jp-console-padding: 10px;
+
+  /* Toolbar specific styles */
+
+  --jp-toolbar-border-color: var(--jp-border-color1);
+  --jp-toolbar-micro-height: 8px;
+  --jp-toolbar-background: var(--jp-layout-color1);
+  --jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
+  --jp-toolbar-header-margin: 4px 4px 0 4px;
+  --jp-toolbar-active-background: var(--md-grey-300);
+
+  /* Statusbar specific styles */
+
+  --jp-statusbar-height: 24px;
+
+  /* Input field styles */
+
+  --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
+  --jp-input-active-background: var(--jp-layout-color1);
+  --jp-input-hover-background: var(--jp-layout-color1);
+  --jp-input-background: var(--md-grey-100);
+  --jp-input-border-color: var(--jp-inverse-border-color);
+  --jp-input-active-border-color: var(--jp-brand-color1);
+  --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
+
+  /* General editor styles */
+
+  --jp-editor-selected-background: #d9d9d9;
+  --jp-editor-selected-focused-background: #d7d4f0;
+  --jp-editor-cursor-color: var(--jp-ui-font-color0);
+
+  /* Code mirror specific styles */
+
+  --jp-mirror-editor-keyword-color: #008000;
+  --jp-mirror-editor-atom-color: #88f;
+  --jp-mirror-editor-number-color: #080;
+  --jp-mirror-editor-def-color: #00f;
+  --jp-mirror-editor-variable-color: var(--md-grey-900);
+  --jp-mirror-editor-variable-2-color: rgb(0, 54, 109);
+  --jp-mirror-editor-variable-3-color: #085;
+  --jp-mirror-editor-punctuation-color: #05a;
+  --jp-mirror-editor-property-color: #05a;
+  --jp-mirror-editor-operator-color: #a2f;
+  --jp-mirror-editor-comment-color: #408080;
+  --jp-mirror-editor-string-color: #ba2121;
+  --jp-mirror-editor-string-2-color: #708;
+  --jp-mirror-editor-meta-color: #a2f;
+  --jp-mirror-editor-qualifier-color: #555;
+  --jp-mirror-editor-builtin-color: #008000;
+  --jp-mirror-editor-bracket-color: #997;
+  --jp-mirror-editor-tag-color: #170;
+  --jp-mirror-editor-attribute-color: #00c;
+  --jp-mirror-editor-header-color: blue;
+  --jp-mirror-editor-quote-color: #090;
+  --jp-mirror-editor-link-color: #00c;
+  --jp-mirror-editor-error-color: #f00;
+  --jp-mirror-editor-hr-color: #999;
+
+  /*
+    RTC user specific colors.
+    These colors are used for the cursor, username in the editor,
+    and the icon of the user.
+  */
+
+  --jp-collaborator-color1: #ffad8e;
+  --jp-collaborator-color2: #dac83d;
+  --jp-collaborator-color3: #72dd76;
+  --jp-collaborator-color4: #00e4d0;
+  --jp-collaborator-color5: #45d4ff;
+  --jp-collaborator-color6: #e2b1ff;
+  --jp-collaborator-color7: #ff9de6;
+
+  /* Vega extension styles */
+
+  --jp-vega-background: white;
+
+  /* Sidebar-related styles */
+
+  --jp-sidebar-min-width: 250px;
+
+  /* Search-related styles */
+
+  --jp-search-toggle-off-opacity: 0.5;
+  --jp-search-toggle-hover-opacity: 0.8;
+  --jp-search-toggle-on-opacity: 1;
+  --jp-search-selected-match-background-color: rgb(245, 200, 0);
+  --jp-search-selected-match-color: black;
+  --jp-search-unselected-match-background-color: var(
+    --jp-inverse-layout-color0
+  );
+  --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
+
+  /* Icon colors that work well with light or dark backgrounds */
+  --jp-icon-contrast-color0: var(--md-purple-600);
+  --jp-icon-contrast-color1: var(--md-green-600);
+  --jp-icon-contrast-color2: var(--md-pink-600);
+  --jp-icon-contrast-color3: var(--md-blue-600);
+
+  /* Button colors */
+  --jp-accept-color-normal: var(--md-blue-700);
+  --jp-accept-color-hover: var(--md-blue-800);
+  --jp-accept-color-active: var(--md-blue-900);
+  --jp-warn-color-normal: var(--md-red-700);
+  --jp-warn-color-hover: var(--md-red-800);
+  --jp-warn-color-active: var(--md-red-900);
+  --jp-reject-color-normal: var(--md-grey-600);
+  --jp-reject-color-hover: var(--md-grey-700);
+  --jp-reject-color-active: var(--md-grey-800);
+
+  /* File or activity icons and switch semantic variables */
+  --jp-jupyter-icon-color: #f37626;
+  --jp-notebook-icon-color: #f37626;
+  --jp-json-icon-color: var(--md-orange-700);
+  --jp-console-icon-background-color: var(--md-blue-700);
+  --jp-console-icon-color: white;
+  --jp-terminal-icon-background-color: var(--md-grey-800);
+  --jp-terminal-icon-color: var(--md-grey-200);
+  --jp-text-editor-icon-color: var(--md-grey-700);
+  --jp-inspector-icon-color: var(--md-grey-700);
+  --jp-switch-color: var(--md-grey-400);
+  --jp-switch-true-position-color: var(--md-orange-900);
+}
+</style>
+<style type="text/css">
+/* Force rendering true colors when outputing to pdf */
+* {
+  -webkit-print-color-adjust: exact;
+}
+
+/* Misc */
+a.anchor-link {
+  display: none;
+}
+
+/* Input area styling */
+.jp-InputArea {
+  overflow: hidden;
+}
+
+.jp-InputArea-editor {
+  overflow: hidden;
+}
+
+.cm-editor.cm-s-jupyter .highlight pre {
+/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
+  padding: var(--jp-code-padding) 4px;
+  margin: 0;
+
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+  color: inherit;
+
+}
+
+.jp-OutputArea-output pre {
+  line-height: inherit;
+  font-family: inherit;
+}
+
+.jp-RenderedText pre {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-code-font-size);
+}
+
+/* Hiding the collapser by default */
+.jp-Collapser {
+  display: none;
+}
+
+@page {
+    margin: 0.5in; /* Margin for each printed piece of paper */
+}
+
+@media print {
+  .jp-Cell-inputWrapper,
+  .jp-Cell-outputWrapper {
+    display: block;
+  }
+}
+</style>
+<!-- Load mathjax -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
+<!-- MathJax configuration -->
+<script type="text/x-mathjax-config">
+    init_mathjax = function() {
+        if (window.MathJax) {
+        // MathJax loaded
+            MathJax.Hub.Config({
+                TeX: {
+                    equationNumbers: {
+                    autoNumber: "AMS",
+                    useLabelIds: true
+                    }
+                },
+                tex2jax: {
+                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+                    processEscapes: true,
+                    processEnvironments: true
+                },
+                displayAlign: 'center',
+                CommonHTML: {
+                    linebreaks: {
+                    automatic: true
+                    }
+                }
+            });
+
+            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
+        }
+    }
+    init_mathjax();
+    </script>
+<!-- End of mathjax configuration --><script type="module">
+  document.addEventListener("DOMContentLoaded", async () => {
+    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
+    // do not load mermaidjs if not needed
+    if (!diagrams.length) {
+      return;
+    }
+    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.6.0/mermaid.esm.min.mjs")).default;
+    const parser = new DOMParser();
+
+    mermaid.initialize({
+      maxTextSize: 100000,
+      startOnLoad: false,
+      fontFamily: window
+        .getComputedStyle(document.body)
+        .getPropertyValue("--jp-ui-font-family"),
+      theme: document.querySelector("body[data-jp-theme-light='true']")
+        ? "default"
+        : "dark",
+    });
+
+    let _nextMermaidId = 0;
+
+    function makeMermaidImage(svg) {
+      const img = document.createElement("img");
+      const doc = parser.parseFromString(svg, "image/svg+xml");
+      const svgEl = doc.querySelector("svg");
+      const { maxWidth } = svgEl?.style || {};
+      const firstTitle = doc.querySelector("title");
+      const firstDesc = doc.querySelector("desc");
+
+      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
+      if (maxWidth) {
+        img.width = parseInt(maxWidth);
+      }
+      if (firstTitle) {
+        img.setAttribute("alt", firstTitle.textContent);
+      }
+      if (firstDesc) {
+        const caption = document.createElement("figcaption");
+        caption.className = "sr-only";
+        caption.textContent = firstDesc.textContent;
+        return [img, caption];
+      }
+      return [img];
+    }
+
+    async function makeMermaidError(text) {
+      let errorMessage = "";
+      try {
+        await mermaid.parse(text);
+      } catch (err) {
+        errorMessage = `${err}`;
+      }
+
+      const result = document.createElement("details");
+      result.className = 'jp-RenderedMermaid-Details';
+      const summary = document.createElement("summary");
+      summary.className = 'jp-RenderedMermaid-Summary';
+      const pre = document.createElement("pre");
+      const code = document.createElement("code");
+      code.innerText = text;
+      pre.appendChild(code);
+      summary.appendChild(pre);
+      result.appendChild(summary);
+
+      const warning = document.createElement("pre");
+      warning.innerText = errorMessage;
+      result.appendChild(warning);
+      return [result];
+    }
+
+    async function renderOneMarmaid(src) {
+      const id = `jp-mermaid-${_nextMermaidId++}`;
+      const parent = src.parentNode;
+      let raw = src.textContent.trim();
+      const el = document.createElement("div");
+      el.style.visibility = "hidden";
+      document.body.appendChild(el);
+      let results = null;
+      let output = null;
+      try {
+        const { svg } = await mermaid.render(id, raw, el);
+        results = makeMermaidImage(svg);
+        output = document.createElement("figure");
+        results.map(output.appendChild, output);
+      } catch (err) {
+        parent.classList.add("jp-mod-warning");
+        results = await makeMermaidError(raw);
+        output = results[0];
+      } finally {
+        el.remove();
+      }
+      parent.classList.add("jp-RenderedMermaid");
+      parent.appendChild(output);
+    }
+
+    void Promise.all([...diagrams].map(renderOneMarmaid));
+  });
+</script>
+<style>
+  .jp-Mermaid:not(.jp-RenderedMermaid) {
+    display: none;
+  }
+
+  .jp-RenderedMermaid {
+    overflow: auto;
+    display: flex;
+  }
+
+  .jp-RenderedMermaid.jp-mod-warning {
+    width: auto;
+    padding: 0.5em;
+    margin-top: 0.5em;
+    border: var(--jp-border-width) solid var(--jp-warn-color2);
+    border-radius: var(--jp-border-radius);
+    color: var(--jp-ui-font-color1);
+    font-size: var(--jp-ui-font-size1);
+    white-space: pre-wrap;
+    word-wrap: break-word;
+  }
+
+  .jp-RenderedMermaid figure {
+    margin: 0;
+    overflow: auto;
+    max-width: 100%;
+  }
+
+  .jp-RenderedMermaid img {
+    max-width: 100%;
+  }
+
+  .jp-RenderedMermaid-Details > pre {
+    margin-top: 1em;
+  }
+
+  .jp-RenderedMermaid-Summary {
+    color: var(--jp-warn-color2);
+  }
+
+  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
+    display: none;
+  }
+
+  .jp-RenderedMermaid-Summary > pre {
+    display: inline-block;
+    white-space: normal;
+  }
+</style>
+<!-- End of mermaid configuration --></head>
+<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
+<main>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=historical-maker">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h1 id="GA-2.2:-M-is-for-Modelling">GA 2.2: M is for Modelling<a class="anchor-link" href="#GA-2.2:-M-is-for-Modelling">¶</a></h1><h1 style="position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0">
+<style>
+        .markdown {width:100%; position: relative}
+        article { position: relative }
+    </style>
+<img alt="No description has been provided for this image" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png" style="width:100px"/>
+<img alt="No description has been provided for this image" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png" style="width:100px"/>
+</h1>
+<h2 style="height: 10px">
+</h2>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2. For: 22 November, 2024</em></p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2ac37a4d-a0cc-4881-87d8-755e9d068adc">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Finite-element-formulation-for-the-diffusion-equation">Finite element formulation for the diffusion equation<a class="anchor-link" href="#Finite-element-formulation-for-the-diffusion-equation">¶</a></h2><p>In this assignment we will model the heat equation in 2D on a geometry that is non-trivial. Let us first recall the diffusion equation with source term:</p>
+$$\frac{\partial u}{\partial t} = \nu \left(\frac{\partial^{2} u}{{\partial x}^{2}} + \frac{\partial^{2} u}{{\partial y}^{2}}\right) + f$$<p>with Dirichlet boundary conditions (prescribed values $\bar{u}$) on part of the boundary ($\Gamma_D$) and Neumann boundary conditions (prescribed flux $h$) on the remainder of the boundary ($\Gamma_N$):</p>
+$$
+u =\bar{u} \quad \text{on} \quad \Gamma_D \\
+\nu \nabla u\cdot \mathbf{n} = h \quad \text{on} \quad \Gamma_N
+$$<p>Here, the diffusion equation is interpreted as the heat equation, meaning that the unknown field $u(x,y,t)$ is the temperature and the source term $f$ is a heat source. This equation can be turned into a discretized form with the standard finite element procedure. Finite elements are only used for the discretization in space, discretization in time will be discussed later.</p>
+$$ \left[\int_{\Omega} \mathbf{N}^T \mathbf{N} \,d \Omega\right] \dot{\mathbf{u}} + \left[\int_{\Omega} \mathbf{B}^T \nu \mathbf{B} \,d \Omega\right] \mathbf{u} = \int_{\Omega} \mathbf{N}^T f \,d \Omega + \int_{\Gamma_N} \mathbf{N}^T h \,d \Gamma$$<p>With respect to the Poisson equation in 1D there are several differences:</p>
+<ul>
+<li>There is a time-dependent term</li>
+<li>Neumann boundary conditions are evaluated in a boundary integral which is now a line integral</li>
+<li>The $\mathbf{B}$-matrix is now truly a matrix (no longer a row vector) defined as $\nabla\mathbf{N}$</li>
+</ul>
+<p>Using the  symbol $\mathbf{M}$ for the matrix associated with $\dot{\mathbf{u}}$, we can write:</p>
+$$ \mathbf{M \dot{u}} + \mathbf{K u} = \mathbf{f}$$<p>where:</p>
+$$ \mathbf{M} = \int_{\Omega} \mathbf{N}^T \mathbf{N} \,d \Omega$$$$ \mathbf{K} = \int_{\Omega} \mathbf{B}^T \nu \mathbf{B} $$$$ \mathbf{f} = \int_{\Omega} \mathbf{N}^T f \,d \Omega + \int_{\Gamma_N} \mathbf{N}^T h \,d \Gamma $$<p>Now we have introduced a spatial discretization of the time-dependent Partial Differential Equation, we still need to find a way to solve it in time. Suppose we know the solution up to time step $n$ (in the beginning of the analysis, that will be the initial conditions). To compute the result at time-step $n+1$ we want to solve the following equation:</p>
+$$ \mathbf{M \dot{u}}_{n+1} + \mathbf{K u}_{n+1} = \mathbf{f}_{n+1}$$<p>The problem is however that there are two unknown vectors in this equation. The nodal temperatures $\mathbf{u}$ at as well as their time derivative. However, these two are not independent. We can express  at time step $n+1$ as a function of the temperature and the rate of change at time step $n$ using backward Euler:</p>
+$$ \mathbf{u}_{n+1} = \mathbf{u}_{n} + \Delta t \space \mathbf{\dot{u}}_{n+1}$$<p>Rearranging this equation gives:</p>
+$$ \mathbf{\dot{u}}_{n+1} = \frac{\mathbf{u}_{n+1} - \mathbf{u}_{n}}{\Delta t}$$<p>This relation is applied on every entry in the $\mathbf{\dot{u}}$ vector to arrive at an equation with only one vector with unknown values:</p>
+$$ \mathbf{M} \frac{\mathbf{u}_{n+1} - \mathbf{u}_{n}}{\Delta t} + \mathbf{K u}_{n+1} = \mathbf{f}_{n+1}$$<p>Rearranging to get all the unknown terms to the left hand side gives:</p>
+$$ \mathbf{M} \frac{\mathbf{u}_{n+1}}{\Delta t} + \mathbf{K u}_{n+1} = \mathbf{M} \frac{\mathbf{u}_{n}}{\Delta t} + \mathbf{f}_{n+1}$$$$ \left(\frac{1}{\Delta t} \mathbf{M}  + \mathbf{K} \right) \mathbf{u}_{n+1} = \frac{1}{\Delta t} \mathbf{M} \mathbf{u}_{n} + \mathbf{f}_{n+1}$$<p>which is a linear system of equations that can be solved for $\mathbf{u}_{n+1}$:</p>
+$$ \mathbf{u}_{n+1} = \left(\frac{1}{\Delta t} \mathbf{M}  + \mathbf{K} \right)^{-1} \left( \frac{1}{\Delta t} \mathbf{M} \mathbf{u}_{n} + \mathbf{f}_{n+1} \right)$$<p><strong>Remark</strong>: although we are working with the finite element method, for the time discretization we have introduced an approximation for the derivative, just as in the finite difference method. It is also possible to discretize in time with shape functions, to arrive at the <em>space-time finite element method</em>, but the option chosen in this notebook is the more common one.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3e594469-9f67-4012-b662-c2dea9a78f66">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<div style="background-color:#AABAB2; color: black; vertical-align: middle; width:95%; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+<b>Todays task</b>
+<p>Below, the code for analysis of a 2D diffusion problem is given. The implementation follows the formulation introduced above. Run the analysis and inspect code and results to answer the questions in  <code>Report.md</code>.</p>
+</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a11ac720-0679-41d8-9dde-eb252f60e1b6">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-1:-Preprocessing">Step 1: Preprocessing<a class="anchor-link" href="#Step-1:-Preprocessing">¶</a></h4><p>A mesh of triangular elements has already been defined. A function is provided below that reads the file <code>bigM.msh</code> and stores the mesh data in two arrays, one with coordinates of the nodes, and one that defines the elements. A function is also provided that visualizes the mesh. Run the code block below to read the mesh file and visualize it.</p>
+<div style="background-color:#FAE99E; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+Note that there is a second mesh file in this folder, <code>bigM_fine.msh</code> which you can use later to perform an analysis on the same geometry with a finer mesh. To do so, change the line where the <code>readGmsh</code> function is called.
+</p>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=homeless-remove">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="k">def</span> <span class="nf">readGmsh</span> <span class="p">(</span><span class="n">fname</span><span class="p">):</span>
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">fname</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.msh'</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">'Unexpected mesh file extension'</span><span class="p">)</span>
+    <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">elems</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">False</span>
+    <span class="n">parse_elems</span> <span class="o">=</span> <span class="kc">False</span>
+    <span class="n">rank</span> <span class="o">=</span> <span class="mi">2</span>
+    <span class="n">nnodes</span> <span class="o">=</span> <span class="mi">3</span>
+    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fname</span><span class="p">)</span> <span class="k">as</span> <span class="n">msh</span><span class="p">:</span>
+        <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">msh</span><span class="p">:</span>
+            <span class="n">sp</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
+            <span class="k">if</span> <span class="s1">'$Nodes'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
+                <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">elif</span> <span class="s1">'$Elements'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
+                <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">False</span>
+                <span class="n">parse_elems</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">elif</span> <span class="n">parse_nodes</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">:</span>
+                    <span class="k">raise</span> <span class="ne">SyntaxError</span><span class="p">(</span><span class="s1">'readGmsh: Three coordinates per node are expected'</span><span class="p">)</span>
+                <span class="n">coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span>
+                <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">coords</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">parse_elems</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="n">eltype</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+                <span class="n">inodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">3</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">2</span><span class="p">]):],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">int32</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
+                <span class="n">elems</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inodes</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">elems</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">plotMesh</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">()</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">triplot</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">],</span> <span class="n">connectivity</span><span class="p">,</span> <span class="s1">'k-'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'equal'</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span>
+
+<span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span> <span class="o">=</span> <span class="n">readGmsh</span><span class="p">(</span><span class="s1">'bigM.msh'</span><span class="p">)</span>
+<span class="n">plotMesh</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=imposed-preparation">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-2:-Finite-element-implementation">Step 2: Finite element implementation<a class="anchor-link" href="#Step-2:-Finite-element-implementation">¶</a></h4>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f9b1e627-e9cc-40ee-9386-477a87d9dcf7">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">sparse</span>
+<span class="kn">from</span> <span class="nn">scipy.sparse</span> <span class="kn">import</span> <span class="n">linalg</span>
+
+<span class="c1"># Function makes the coefficients of shape functions for a 3-node triangle</span>
+<span class="c1"># the shape function for node i is defined as N_i = a_i + b_i*x + c_i*y</span>
+<span class="c1"># this function returns the coefficients as coeff[i] = [a_i, b_i, c_i]</span>
+<span class="k">def</span> <span class="nf">get_shape_functions_T3</span><span class="p">(</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span> <span class="p">):</span>
+    <span class="n">coordinate_Matrix</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="c1"># Work out constants C1, C1 and C3 for the shape function relative to each node</span>
+    <span class="n">c_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">inv</span><span class="p">(</span><span class="n">coordinate_Matrix</span><span class="p">)</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
+    
+    <span class="k">return</span> <span class="n">coeffs</span>
+
+<span class="c1"># Function creates the derivative shape function vector (B) of the given 3-node triangle</span>
+<span class="k">def</span> <span class="nf">get_B_matrix</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">get_shape_functions_T3</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="n">B_matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]],</span> <span class="p">[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]]]</span>
+    
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">B_matrix</span><span class="p">)</span>
+
+<span class="c1"># Function returns the area of the triangle with given nodes n1, n2, n3</span>
+<span class="k">def</span> <span class="nf">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="c1"># Defining two vectors spanning the total area</span>
+    <span class="n">u</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
+  
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span>
+
+<span class="c1"># Function returns the local K-matrix of an element with given node n1, n2, n3</span>
+<span class="k">def</span> <span class="nf">get_element_K</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">,</span> <span class="n">nu</span><span class="p">):</span>
+    <span class="n">B</span> <span class="o">=</span> <span class="n">get_B_matrix</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="n">element_area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">element_area</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">B</span><span class="p">),</span> <span class="n">B</span><span class="p">)</span><span class="o">*</span><span class="n">nu</span>
+
+<span class="c1"># Assembly function for the K matrix</span>
+<span class="k">def</span> <span class="nf">get_global_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">n_elem</span><span class="p">,</span> <span class="n">nu</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">K</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">n_DOF</span><span class="p">,</span> <span class="n">n_DOF</span><span class="p">))</span>
+    
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_elem</span><span class="p">):</span>
+        <span class="n">elnodes</span> <span class="o">=</span> <span class="n">connectivity</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
+        <span class="n">K_el</span> <span class="o">=</span> <span class="n">get_element_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span> <span class="n">nu</span><span class="p">)</span>
+        <span class="n">K</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ix_</span><span class="p">(</span><span class="n">elnodes</span><span class="p">,</span><span class="n">elnodes</span><span class="p">)]</span> <span class="o">+=</span> <span class="n">K_el</span>
+                
+    <span class="k">return</span> <span class="n">K</span>
+
+<span class="c1"># Assembly function for the f vector</span>
+<span class="k">def</span> <span class="nf">get_global_f</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">q</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_DOF</span><span class="p">)</span>
+    
+    <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">connectivity</span><span class="p">:</span>
+        <span class="n">area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
+        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
+            <span class="n">f</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">+=</span> <span class="n">q</span><span class="o">*</span><span class="n">area</span><span class="o">/</span><span class="mi">3</span>
+            
+    <span class="k">return</span> <span class="n">f</span>
+
+<span class="c1"># Extra functions to obtain the M-matrix</span>
+<span class="k">def</span> <span class="nf">evaluate_N_matrix</span><span class="p">(</span><span class="n">ipcoords</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>    
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">get_shape_functions_T3</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    
+    <span class="n">x</span> <span class="o">=</span> <span class="n">ipcoords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">ipcoords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="n">N_matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">,</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">,</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">]]</span>
+    
+    <span class="k">return</span> <span class="n">N_matrix</span>
+
+<span class="c1"># Function takes the 3 coordinates of a triangular element and returns it's corresponding M-matrix</span>
+<span class="k">def</span> <span class="nf">get_element_M</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="n">M_el</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    <span class="n">element_area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>    
+    
+    <span class="c1"># Define 3-point integration scheme</span>
+    <span class="n">integration_locations</span> <span class="o">=</span> <span class="p">[(</span><span class="n">n1</span><span class="o">+</span><span class="n">n2</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>  <span class="p">(</span><span class="n">n2</span><span class="o">+</span><span class="n">n3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>  <span class="p">(</span><span class="n">n3</span><span class="o">+</span><span class="n">n1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">]</span>
+    <span class="n">integration_weights</span> <span class="o">=</span> <span class="p">[</span><span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">]</span>
+    
+    <span class="c1"># Loop over integration points and add contribution to local M matrix</span>
+    <span class="k">for</span> <span class="n">x_ip</span><span class="p">,</span> <span class="n">w_ip</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">integration_locations</span><span class="p">,</span> <span class="n">integration_weights</span><span class="p">):</span>
+        <span class="n">N_local</span> <span class="o">=</span> <span class="n">evaluate_N_matrix</span><span class="p">(</span><span class="n">x_ip</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+        <span class="n">M_el</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">N_local</span><span class="p">),</span> <span class="n">N_local</span><span class="p">)</span><span class="o">*</span><span class="n">w_ip</span>
+    <span class="k">return</span> <span class="n">M_el</span>
+    
+<span class="c1"># Assembly function for the M matrix</span>
+<span class="k">def</span> <span class="nf">get_global_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">n_elem</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">n_DOF</span><span class="p">,</span> <span class="n">n_DOF</span><span class="p">))</span>
+    
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_elem</span><span class="p">):</span>
+        <span class="n">elnodes</span> <span class="o">=</span> <span class="n">connectivity</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
+        <span class="n">M_el</span> <span class="o">=</span> <span class="n">get_element_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
+        <span class="n">M</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ix_</span><span class="p">(</span><span class="n">elnodes</span><span class="p">,</span><span class="n">elnodes</span><span class="p">)]</span> <span class="o">+=</span> <span class="n">M_el</span>
+
+    <span class="k">return</span> <span class="n">M</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=cc76912d-6a45-4329-b90c-1a22aef63f38">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-3:-Problem-definition-and-analysis">Step 3: Problem definition and analysis<a class="anchor-link" href="#Step-3:-Problem-definition-and-analysis">¶</a></h4>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=bb2b843c-5679-478f-8891-a73826414710">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># Set problem parameters</span>
+<span class="n">dt</span> <span class="o">=</span> <span class="mf">0.005</span>
+<span class="n">nt</span> <span class="o">=</span> <span class="mi">500</span>
+<span class="n">nu</span> <span class="o">=</span> <span class="mi">1</span>
+<span class="n">q</span> <span class="o">=</span> <span class="mi">15</span>
+<span class="n">T_initial</span> <span class="o">=</span> <span class="mi">30</span>
+<span class="n">T_edge</span> <span class="o">=</span> <span class="mi">10</span>
+
+<span class="c1"># Find the constrained nodes</span>
+<span class="n">constrained_nodes</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">free_nodes</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">n_free</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="n">min_y</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">])</span>
+<span class="n">min_x</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span>
+<span class="n">max_x</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span>
+<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)):</span>
+    <span class="k">if</span> <span class="n">nodes</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">min_y</span> <span class="ow">and</span> <span class="n">nodes</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">max_x</span><span class="p">:</span>
+            <span class="n">constrained_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">n_free</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="n">free_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> 
+
+<span class="c1"># Set number of increments "nt" and initialize empty solution array "us"</span>
+<span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+<span class="n">us</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">n_DOF</span><span class="p">))</span>
+
+<span class="c1"># Set initial conditions</span>
+<span class="n">us</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">T_initial</span>
+
+<span class="c1"># Assemble FE matrices</span>
+<span class="n">f</span> <span class="o">=</span> <span class="n">get_global_f</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
+<span class="n">Kdense</span> <span class="o">=</span> <span class="n">get_global_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span> <span class="n">nu</span><span class="p">)</span>
+<span class="n">Mdense</span> <span class="o">=</span> <span class="n">get_global_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">connectivity</span><span class="p">))</span>
+
+<span class="n">K</span> <span class="o">=</span> <span class="n">sparse</span><span class="o">.</span><span class="n">csc_matrix</span><span class="p">(</span><span class="n">Kdense</span><span class="p">)</span>
+<span class="n">M</span> <span class="o">=</span> <span class="n">sparse</span><span class="o">.</span><span class="n">csc_matrix</span><span class="p">(</span><span class="n">Mdense</span><span class="p">)</span>
+
+<span class="n">Kmod</span> <span class="o">=</span> <span class="n">K</span> <span class="o">+</span> <span class="n">M</span><span class="o">/</span><span class="n">dt</span>
+<span class="n">Kmodff</span> <span class="o">=</span> <span class="n">Kmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">,:][:,</span><span class="n">free_nodes</span><span class="p">]</span>
+<span class="n">Kmodfp</span> <span class="o">=</span> <span class="n">Kmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">,:][:,</span><span class="n">constrained_nodes</span><span class="p">]</span>
+
+<span class="c1"># Pre-factorize the sparse matrix to save computational costs</span>
+<span class="n">solver</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">factorized</span><span class="p">(</span><span class="n">Kmodff</span><span class="p">)</span>
+
+<span class="c1"># Solve system of equations for subsequent time steps</span>
+<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nt</span><span class="p">):</span>
+    <span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">constrained_nodes</span><span class="p">]</span> <span class="o">=</span> <span class="n">T_edge</span>
+    <span class="n">fmod</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">/</span> <span class="n">dt</span> <span class="o">+</span> <span class="n">f</span>
+    <span class="n">ff</span> <span class="o">=</span> <span class="n">fmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">]</span> <span class="o">-</span> <span class="n">Kmodfp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">constrained_nodes</span><span class="p">])</span>
+    <span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">free_nodes</span><span class="p">]</span> <span class="o">=</span> <span class="n">solver</span><span class="p">(</span><span class="n">ff</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=confused-enemy">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-4:-Post-processing">Step 4: Post-processing<a class="anchor-link" href="#Step-4:-Post-processing">¶</a></h4><p>After the simulation has been performed, we can inspect the results. Three different post-processing functions are provided below that visualize the results in different ways.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dd65c597-e9ac-4d67-8326-18a24e859f18">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<div style="background-color:#FAE99E; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+For the sliders in the second and third visualization to work, it is recommended to <b>execute the code cell by cell</b> instead of with a "Run all Cells".
+</p>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=a9fb125f-5929-40a1-96c7-9d74ad63502d">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># first option: plot a single time step in a plot that can be rotated manually</span>
+
+<span class="c1"># %matplotlib widget</span>
+<span class="kn">from</span> <span class="nn">ipywidgets</span> <span class="kn">import</span> <span class="n">interact</span><span class="p">,</span> <span class="n">fixed</span><span class="p">,</span> <span class="n">widgets</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">colors</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">cm</span>
+
+<span class="k">def</span> <span class="nf">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">x_lim</span><span class="p">,</span> <span class="n">y_lim</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="s1">'3d'</span><span class="p">)</span>
+    
+    <span class="c1"># Set the color limits to get the right scale of our color-plot</span>
+    <span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="n">vmin</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">52</span><span class="p">)</span>
+    
+    <span class="c1"># For each element draw a triangular surface</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">plot_trisurf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">triangles</span><span class="o">=</span><span class="n">connectivity</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="n">norm</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    
+    <span class="c1"># Set the axis limits</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">y_lim</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">x_lim</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_zlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">55</span><span class="p">))</span>
+    
+    <span class="c1"># Set the data of the colorbar indicating the different temperatures</span>
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">),</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+
+<span class="c1"># Select time step for plotting</span>
+<span class="n">time_step</span> <span class="o">=</span> <span class="mi">5</span>
+
+<span class="c1"># Plot the results for selected time step </span>
+<span class="n">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">us</span><span class="p">[</span><span class="n">time_step</span><span class="p">],</span> <span class="p">(</span><span class="n">min_x</span><span class="p">,</span> <span class="n">max_x</span><span class="p">),</span> <span class="p">(</span><span class="n">min_x</span><span class="p">,</span><span class="n">max_x</span><span class="p">))</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2e132608-a2ef-444b-a3fa-dce8a9460a65">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># second option: make an animation to see the evolution</span>
+
+<span class="c1"># %matplotlib inline</span>
+
+<span class="kn">from</span> <span class="nn">ipywidgets</span> <span class="kn">import</span> <span class="n">interact</span><span class="p">,</span> <span class="n">fixed</span><span class="p">,</span> <span class="n">widgets</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">colors</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">cm</span>
+
+<span class="k">def</span> <span class="nf">plot_result3d</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="s1">'3d'</span><span class="p">)</span>
+    
+    <span class="c1"># Set the color limits to get the right scale of our color-plot</span>
+    <span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="n">vmin</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">52</span><span class="p">)</span>
+    
+    <span class="c1"># For each element draw a triangular surface</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="n">ax</span><span class="o">.</span><span class="n">plot_trisurf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">],</span> <span class="n">triangles</span><span class="o">=</span><span class="n">conn</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="n">norm</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    
+    <span class="c1"># Set the axis limits</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_zlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">55</span><span class="p">))</span>
+    
+    <span class="c1"># Set the data of the colorbar indicating the different temperatures</span>
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">),</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">])</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+    
+<span class="n">play</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Play</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">slider</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="n">widgets</span><span class="o">.</span><span class="n">jslink</span><span class="p">((</span><span class="n">play</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">),</span> <span class="p">(</span><span class="n">slider</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">))</span>
+<span class="n">interact</span><span class="p">(</span><span class="n">plot_result3d</span><span class="p">,</span>
+         <span class="n">nodes</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span>
+         <span class="n">conn</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span>
+         <span class="n">results</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">us</span><span class="p">),</span>
+         <span class="n">step</span> <span class="o">=</span> <span class="n">play</span><span class="p">)</span>
+         
+<span class="n">widgets</span><span class="o">.</span><span class="n">HBox</span><span class="p">([</span><span class="n">play</span><span class="p">,</span> <span class="n">slider</span><span class="p">])</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2d2c0447-8fca-44df-8ba2-be5b51b7e70e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># third option: 2-dimensional representation</span>
+
+<span class="c1"># %matplotlib inline</span>
+
+<span class="k">def</span> <span class="nf">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">()</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">cscale</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_aspect</span><span class="p">(</span><span class="s1">'equal'</span><span class="p">)</span>
+    <span class="n">tcf</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">tricontourf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">],</span> <span class="n">norm</span><span class="o">=</span><span class="n">cscale</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">,</span> <span class="n">levels</span><span class="o">=</span><span class="mi">12</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">triplot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">conn</span><span class="p">,</span> <span class="s1">'k-'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
+    
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">cscale</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">])</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span>
+
+
+<span class="n">play</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Play</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">slider</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="n">widgets</span><span class="o">.</span><span class="n">jslink</span><span class="p">((</span><span class="n">play</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">),</span> <span class="p">(</span><span class="n">slider</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">))</span>
+<span class="n">interact</span><span class="p">(</span><span class="n">plot_result</span><span class="p">,</span>
+         <span class="n">nodes</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span>
+         <span class="n">conn</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span>
+         <span class="n">results</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">us</span><span class="p">),</span>
+         <span class="n">step</span> <span class="o">=</span> <span class="n">play</span><span class="p">)</span>
+         
+<span class="n">widgets</span><span class="o">.</span><span class="n">HBox</span><span class="p">([</span><span class="n">play</span><span class="p">,</span> <span class="n">slider</span><span class="p">])</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=118b68b0">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p><strong>End of notebook.</strong></p>
+<h2 style="height: 60px">
+</h2>
+<h3 style="position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0">
+<style>
+        .markdown {width:100%; position: relative}
+        article { position: relative }
+    </style>
+<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">
+<img alt="Creative Commons License" src="https://i.creativecommons.org/l/by/4.0/88x31.png" style="border-width:; width:88px; height:auto; padding-top:10px"/>
+</a>
+<a href="https://www.tudelft.nl/en/ceg" rel="TU Delft">
+<img alt="TU Delft" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png" style="border-width:0; width:100px; height:auto; padding-bottom:0px"/>
+</a>
+<a href="http://mude.citg.tudelft.nl/" rel="MUDE">
+<img alt="MUDE" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png" style="border-width:0; width:100px; height:auto; padding-bottom:0px"/>
+</a>
+</h3>
+<span style="font-size: 75%">
+© Copyright 2024 <a href="http://mude.citg.tudelft.nl/" rel="MUDE">MUDE</a> TU Delft. This work is licensed under a <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CC BY 4.0 License</a>.
+
+</span></div>
+</div>
+</div>
+</div>
+</main>
+</body>
+</html>
diff --git a/src/teachers/GA_2_2/GA_2_2_all_files.zip b/src/teachers/GA_2_2/GA_2_2_all_files.zip
new file mode 100644
index 0000000000000000000000000000000000000000..bc6b28a0501bcd00be295373bdc5bc6f8796716f
GIT binary patch
literal 189728
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

literal 0
HcmV?d00001

diff --git a/src/teachers/GA_2_2/README.html b/src/teachers/GA_2_2/README.html
new file mode 100644
index 00000000..c2f4a514
--- /dev/null
+++ b/src/teachers/GA_2_2/README.html
@@ -0,0 +1,396 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>README.md</title>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+<style>
+/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+body {
+	font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
+	font-size: var(--vscode-markdown-font-size, 14px);
+	padding: 0 26px;
+	line-height: var(--vscode-markdown-line-height, 22px);
+	word-wrap: break-word;
+}
+
+#code-csp-warning {
+	position: fixed;
+	top: 0;
+	right: 0;
+	color: white;
+	margin: 16px;
+	text-align: center;
+	font-size: 12px;
+	font-family: sans-serif;
+	background-color:#444444;
+	cursor: pointer;
+	padding: 6px;
+	box-shadow: 1px 1px 1px rgba(0,0,0,.25);
+}
+
+#code-csp-warning:hover {
+	text-decoration: none;
+	background-color:#007acc;
+	box-shadow: 2px 2px 2px rgba(0,0,0,.25);
+}
+
+body.scrollBeyondLastLine {
+	margin-bottom: calc(100vh - 22px);
+}
+
+body.showEditorSelection .code-line {
+	position: relative;
+}
+
+body.showEditorSelection .code-active-line:before,
+body.showEditorSelection .code-line:hover:before {
+	content: "";
+	display: block;
+	position: absolute;
+	top: 0;
+	left: -12px;
+	height: 100%;
+}
+
+body.showEditorSelection li.code-active-line:before,
+body.showEditorSelection li.code-line:hover:before {
+	left: -30px;
+}
+
+.vscode-light.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.15);
+}
+
+.vscode-light.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.40);
+}
+
+.vscode-light.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-dark.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.4);
+}
+
+.vscode-dark.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.60);
+}
+
+.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-high-contrast.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 160, 0, 0.7);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 160, 0, 1);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+a {
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a:focus,
+input:focus,
+select:focus,
+textarea:focus {
+	outline: 1px solid -webkit-focus-ring-color;
+	outline-offset: -1px;
+}
+
+hr {
+	border: 0;
+	height: 2px;
+	border-bottom: 2px solid;
+}
+
+h1 {
+	padding-bottom: 0.3em;
+	line-height: 1.2;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+h1, h2, h3 {
+	font-weight: normal;
+}
+
+table {
+	border-collapse: collapse;
+}
+
+table > thead > tr > th {
+	text-align: left;
+	border-bottom: 1px solid;
+}
+
+table > thead > tr > th,
+table > thead > tr > td,
+table > tbody > tr > th,
+table > tbody > tr > td {
+	padding: 5px 10px;
+}
+
+table > tbody > tr + tr > td {
+	border-top: 1px solid;
+}
+
+blockquote {
+	margin: 0 7px 0 5px;
+	padding: 0 16px 0 10px;
+	border-left-width: 5px;
+	border-left-style: solid;
+}
+
+code {
+	font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
+	font-size: 1em;
+	line-height: 1.357em;
+}
+
+body.wordWrap pre {
+	white-space: pre-wrap;
+}
+
+pre:not(.hljs),
+pre.hljs code > div {
+	padding: 16px;
+	border-radius: 3px;
+	overflow: auto;
+}
+
+pre code {
+	color: var(--vscode-editor-foreground);
+	tab-size: 4;
+}
+
+/** Theming */
+
+.vscode-light pre {
+	background-color: rgba(220, 220, 220, 0.4);
+}
+
+.vscode-dark pre {
+	background-color: rgba(10, 10, 10, 0.4);
+}
+
+.vscode-high-contrast pre {
+	background-color: rgb(0, 0, 0);
+}
+
+.vscode-high-contrast h1 {
+	border-color: rgb(0, 0, 0);
+}
+
+.vscode-light table > thead > tr > th {
+	border-color: rgba(0, 0, 0, 0.69);
+}
+
+.vscode-dark table > thead > tr > th {
+	border-color: rgba(255, 255, 255, 0.69);
+}
+
+.vscode-light h1,
+.vscode-light hr,
+.vscode-light table > tbody > tr + tr > td {
+	border-color: rgba(0, 0, 0, 0.18);
+}
+
+.vscode-dark h1,
+.vscode-dark hr,
+.vscode-dark table > tbody > tr + tr > td {
+	border-color: rgba(255, 255, 255, 0.18);
+}
+
+</style>
+
+<style>
+/* Tomorrow Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #8e908c;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #f5871f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #718c00;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #4271ae;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #8959a8;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	color: #4d4d4c;
+	padding: 0.5em;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}
+</style>
+
+<style>
+/*
+ * Markdown PDF CSS
+ */
+
+ body {
+	font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
+	padding: 0 12px;
+}
+
+pre {
+	background-color: #f8f8f8;
+	border: 1px solid #cccccc;
+	border-radius: 3px;
+	overflow-x: auto;
+	white-space: pre-wrap;
+	overflow-wrap: break-word;
+}
+
+pre:not(.hljs) {
+	padding: 23px;
+	line-height: 19px;
+}
+
+blockquote {
+	background: rgba(127, 127, 127, 0.1);
+	border-color: rgba(0, 122, 204, 0.5);
+}
+
+.emoji {
+	height: 1.4em;
+}
+
+code {
+	font-size: 14px;
+	line-height: 19px;
+}
+
+/* for inline code */
+:not(pre):not(.hljs) > code {
+	color: #C9AE75; /* Change the old color so it seems less like an error */
+	font-size: inherit;
+}
+
+/* Page Break : use <div class="page"/> to insert page break
+-------------------------------------------------------- */
+.page {
+	page-break-after: always;
+}
+
+</style>
+
+<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</head>
+<body>
+  <script>
+    mermaid.initialize({
+      startOnLoad: true,
+      theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
+          ? 'dark'
+          : 'default'
+    });
+  </script>
+<h1 id="readme-for-group-assignment-22">README for Group Assignment 2.2</h1>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2, Friday, Nov 22, 2024.</em></p>
+<p><em>You can access this assignment with the following link: <a href="https://classroom.github.com/a/6gksW4N3">classroom.github.com/a/6gksW4N3</a>.</em></p>
+<p>GA 2.2 applies the finite element method (FEM) to a 2D problem with a fun geometry.</p>
+<p>There are several files to be aware of:</p>
+<ol>
+<li><code>README.md</code></li>
+<li>A notebook <code>the_big_M.ipynb</code> (equivalent to the previous <code>Analysis.ipynb</code> files)</li>
+<li>A <code>Report.md</code> file for answering questions</li>
+<li>File <code>big_M.msh</code> and <code>big_M_fine.msh</code>: two FEM meshes to use in the analysis. Only the first one is needed, but the second one can be tried as well by modifying a single line in the notebook.</li>
+</ol>
+<h2 id="primary-task">Primary Task</h2>
+<p>Run the analysis in <code>the_big_M.ipynb</code>, inspect the code (really <strong>really</strong> read it!) and results, then answer the questions in <code>Report.md</code>.</p>
+<p>Note that unlike other GA's, besides reading and understanding the contents, you don't have to do anything with the code in the notebook before reading the Report questions. The questions mostly focus on what is happening in the analysis. The provided finite element code is complete, but you will need to look at the details of the implementation to answer the questions. For the final question you will have to perform some additional operations in the notebook.</p>
+<h2 id="python-environment">Python environment</h2>
+<p>To run the code for this assignment <strong>add a new Python package</strong> to your <code>mude-base</code> environment:</p>
+<pre class="hljs"><code><div>conda activate mude-base
+conda install ipympl
+</div></code></pre>
+<p>Remember to install <em>before</em> running your notebook. If you did not do this, you may have to restart the kernel in your notebook.</p>
+<p>There are occasionally issues with the visualizations in VS Code. If you cannot see the animations, try uncommenting the cell magic lines (those beggining with <code>%matplotlib ...</code>). You can start a text search by using <code>CTRL+F</code>.</p>
+<h2 id="task-overview">Task Overview</h2>
+<p>You may be able to divide work on the last two questions once the derivation and determination of boundary conditions is complete. Note that the first question in particular is essential exam practice and every group member should be able to complete it individually.</p>
+<p><strong>End of file.</strong></p>
+<span style="font-size: 75%">
+&copy; Copyright 2024 <a rel="MUDE" href="http://mude.citg.tudelft.nl/">MUDE</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0 License</a>.
+
+</body>
+</html>
diff --git a/src/teachers/GA_2_2/Report.html b/src/teachers/GA_2_2/Report.html
new file mode 100644
index 00000000..be9b7e23
--- /dev/null
+++ b/src/teachers/GA_2_2/Report.html
@@ -0,0 +1,432 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Report.md</title>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+<style>
+/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+body {
+	font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
+	font-size: var(--vscode-markdown-font-size, 14px);
+	padding: 0 26px;
+	line-height: var(--vscode-markdown-line-height, 22px);
+	word-wrap: break-word;
+}
+
+#code-csp-warning {
+	position: fixed;
+	top: 0;
+	right: 0;
+	color: white;
+	margin: 16px;
+	text-align: center;
+	font-size: 12px;
+	font-family: sans-serif;
+	background-color:#444444;
+	cursor: pointer;
+	padding: 6px;
+	box-shadow: 1px 1px 1px rgba(0,0,0,.25);
+}
+
+#code-csp-warning:hover {
+	text-decoration: none;
+	background-color:#007acc;
+	box-shadow: 2px 2px 2px rgba(0,0,0,.25);
+}
+
+body.scrollBeyondLastLine {
+	margin-bottom: calc(100vh - 22px);
+}
+
+body.showEditorSelection .code-line {
+	position: relative;
+}
+
+body.showEditorSelection .code-active-line:before,
+body.showEditorSelection .code-line:hover:before {
+	content: "";
+	display: block;
+	position: absolute;
+	top: 0;
+	left: -12px;
+	height: 100%;
+}
+
+body.showEditorSelection li.code-active-line:before,
+body.showEditorSelection li.code-line:hover:before {
+	left: -30px;
+}
+
+.vscode-light.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.15);
+}
+
+.vscode-light.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.40);
+}
+
+.vscode-light.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-dark.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.4);
+}
+
+.vscode-dark.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.60);
+}
+
+.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-high-contrast.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 160, 0, 0.7);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 160, 0, 1);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+a {
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a:focus,
+input:focus,
+select:focus,
+textarea:focus {
+	outline: 1px solid -webkit-focus-ring-color;
+	outline-offset: -1px;
+}
+
+hr {
+	border: 0;
+	height: 2px;
+	border-bottom: 2px solid;
+}
+
+h1 {
+	padding-bottom: 0.3em;
+	line-height: 1.2;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+h1, h2, h3 {
+	font-weight: normal;
+}
+
+table {
+	border-collapse: collapse;
+}
+
+table > thead > tr > th {
+	text-align: left;
+	border-bottom: 1px solid;
+}
+
+table > thead > tr > th,
+table > thead > tr > td,
+table > tbody > tr > th,
+table > tbody > tr > td {
+	padding: 5px 10px;
+}
+
+table > tbody > tr + tr > td {
+	border-top: 1px solid;
+}
+
+blockquote {
+	margin: 0 7px 0 5px;
+	padding: 0 16px 0 10px;
+	border-left-width: 5px;
+	border-left-style: solid;
+}
+
+code {
+	font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
+	font-size: 1em;
+	line-height: 1.357em;
+}
+
+body.wordWrap pre {
+	white-space: pre-wrap;
+}
+
+pre:not(.hljs),
+pre.hljs code > div {
+	padding: 16px;
+	border-radius: 3px;
+	overflow: auto;
+}
+
+pre code {
+	color: var(--vscode-editor-foreground);
+	tab-size: 4;
+}
+
+/** Theming */
+
+.vscode-light pre {
+	background-color: rgba(220, 220, 220, 0.4);
+}
+
+.vscode-dark pre {
+	background-color: rgba(10, 10, 10, 0.4);
+}
+
+.vscode-high-contrast pre {
+	background-color: rgb(0, 0, 0);
+}
+
+.vscode-high-contrast h1 {
+	border-color: rgb(0, 0, 0);
+}
+
+.vscode-light table > thead > tr > th {
+	border-color: rgba(0, 0, 0, 0.69);
+}
+
+.vscode-dark table > thead > tr > th {
+	border-color: rgba(255, 255, 255, 0.69);
+}
+
+.vscode-light h1,
+.vscode-light hr,
+.vscode-light table > tbody > tr + tr > td {
+	border-color: rgba(0, 0, 0, 0.18);
+}
+
+.vscode-dark h1,
+.vscode-dark hr,
+.vscode-dark table > tbody > tr + tr > td {
+	border-color: rgba(255, 255, 255, 0.18);
+}
+
+</style>
+
+<style>
+/* Tomorrow Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #8e908c;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #f5871f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #718c00;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #4271ae;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #8959a8;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	color: #4d4d4c;
+	padding: 0.5em;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}
+</style>
+
+<style>
+/*
+ * Markdown PDF CSS
+ */
+
+ body {
+	font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
+	padding: 0 12px;
+}
+
+pre {
+	background-color: #f8f8f8;
+	border: 1px solid #cccccc;
+	border-radius: 3px;
+	overflow-x: auto;
+	white-space: pre-wrap;
+	overflow-wrap: break-word;
+}
+
+pre:not(.hljs) {
+	padding: 23px;
+	line-height: 19px;
+}
+
+blockquote {
+	background: rgba(127, 127, 127, 0.1);
+	border-color: rgba(0, 122, 204, 0.5);
+}
+
+.emoji {
+	height: 1.4em;
+}
+
+code {
+	font-size: 14px;
+	line-height: 19px;
+}
+
+/* for inline code */
+:not(pre):not(.hljs) > code {
+	color: #C9AE75; /* Change the old color so it seems less like an error */
+	font-size: inherit;
+}
+
+/* Page Break : use <div class="page"/> to insert page break
+-------------------------------------------------------- */
+.page {
+	page-break-after: always;
+}
+
+</style>
+
+<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</head>
+<body>
+  <script>
+    mermaid.initialize({
+      startOnLoad: true,
+      theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
+          ? 'dark'
+          : 'default'
+    });
+  </script>
+<h1 id="ga-22-report-m-is-for-modelling">GA 2.2 Report: M is for Modelling</h1>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2. Due: November 22, 2024.</em></p>
+<h2 id="report-instructions">Report Instructions</h2>
+<p>Use Markdown features to clearly indicate your answers for each question below. For example, headings (<code>##</code> and <code>###</code>), <strong>bold</strong> or <em>italic</em> text, or ordered lists. Show your work using either LaTeX equations, like this:</p>
+<p>$$
+u(x=?) = \dots
+$$</p>
+<p>or by including an image with your (clearly written) handwriting.</p>
+<p><strong>Tip:</strong> <em>most IDE's have live Markdown previewers. In Jupyter Lab, right-click on the Markdown file and select &quot;Show Markdown Preview.&quot; If you are using VS Code, <code>ctrl + shift + v</code> should work (you may need the extension &quot;Markdown All in One&quot;). We are not sure how to do this in Deepnote.</em></p>
+<p>Please keep your solutions as <strong>concise</strong> as possible, and, where possible, answer in <strong>bullet points</strong>!</p>
+<h2 id="questions">Questions</h2>
+<p><strong>Question 1: Derivation</strong></p>
+<p>Follow the steps from strong form to discretized form to derive the expression $\mathbf{M}=\int_\Omega\mathbf{N}^T\mathbf{N},\mathrm{d}\Omega$ in the term $\mathbf{M}\dot{\mathbf{u}}$. You will only be assessed on how you deal with the term that contains the time derivative. The other terms exactly following the recipe outlined for the <a href="https://mude.citg.tudelft.nl/2024/book/fem/poisson2d.html">Poisson equation in 2D</a> in the book.</p>
+<p><strong>Question 2: Problem definition</strong></p>
+<p>Investigate the code and results to find out which problem is being solved.</p>
+<ul>
+<li>
+<p>Give a mathematical description of the problem in terms of governing equation and boundary conditions. Be as specific as possible, indicating the values that are used as input to the calculation.</p>
+</li>
+<li>
+<p>In the final visualization contour lines are visible, connecting points that have the same temperature. As the solution evolves, these contour lines remain approximately perpendicular to the boundary. Which boundary condition does this observation relate to?</p>
+</li>
+</ul>
+<p><strong>Question 3: Integration scheme</strong></p>
+<ul>
+<li>
+<p>In the <code>get_element_M</code> function, how many integration points are used and where in the triangles are they positioned?</p>
+</li>
+<li>
+<p>In the <code>get_element_K</code> a simpler implementation is used. What is the essential difference between $\mathbf{K}_e$ and $\mathbf{M}_e$ that is the reason why this simpler implementation is valid for $\mathbf{K}_e$? (The subscript $_e$ is used to indicate the contribution to the matrix from a single element, or the <em>element matrix</em>).</p>
+</li>
+</ul>
+<p><strong>Question 4: Shape functions</strong></p>
+<p>Investigate the shape functions for the element with index 10 in the mesh. Use the <code>get_shape_functions_T3</code> function defined in the notebook to find expressions for the shape functions in that element and check that they satisfy the shape function properties.</p>
+<ul>
+<li>
+<p>What are the coordinates of the nodes of element 10?</p>
+</li>
+<li>
+<p>What are the shape functions of the element?</p>
+</li>
+<li>
+<p>Assert that the shape functions satisfy the partition of unity property:</p>
+</li>
+</ul>
+<p>$$
+\sum_i N_i(\mathbf{x}) = 1
+$$</p>
+<ul>
+<li>Assert for one of the shape functions that it satisfies the Kronecker delta property</li>
+</ul>
+<p>$$
+N_i(\mathbf{x}_j) = \begin{cases}
+1, &amp; i = j \
+0, &amp; i\neq j
+\end{cases}
+$$</p>
+<p><strong>Last Question: How did things go? (Optional)</strong></p>
+<p><em>Use this space to let us know if you ran into any challenges while working on this GA, and if you have any feedback to report.</em></p>
+<p><strong>End of file.</strong></p>
+<span style="font-size: 75%">
+&copy; Copyright 2024 <a rel="MUDE" href="http://mude.citg.tudelft.nl/">MUDE</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0 License</a>.
+
+</body>
+</html>
diff --git a/src/teachers/GA_2_2/Report_solution.html b/src/teachers/GA_2_2/Report_solution.html
new file mode 100644
index 00000000..adbfa543
--- /dev/null
+++ b/src/teachers/GA_2_2/Report_solution.html
@@ -0,0 +1,682 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Report_solution.md</title>
+<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
+
+<style>
+/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
+/*---------------------------------------------------------------------------------------------
+ *  Copyright (c) Microsoft Corporation. All rights reserved.
+ *  Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+
+body {
+	font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
+	font-size: var(--vscode-markdown-font-size, 14px);
+	padding: 0 26px;
+	line-height: var(--vscode-markdown-line-height, 22px);
+	word-wrap: break-word;
+}
+
+#code-csp-warning {
+	position: fixed;
+	top: 0;
+	right: 0;
+	color: white;
+	margin: 16px;
+	text-align: center;
+	font-size: 12px;
+	font-family: sans-serif;
+	background-color:#444444;
+	cursor: pointer;
+	padding: 6px;
+	box-shadow: 1px 1px 1px rgba(0,0,0,.25);
+}
+
+#code-csp-warning:hover {
+	text-decoration: none;
+	background-color:#007acc;
+	box-shadow: 2px 2px 2px rgba(0,0,0,.25);
+}
+
+body.scrollBeyondLastLine {
+	margin-bottom: calc(100vh - 22px);
+}
+
+body.showEditorSelection .code-line {
+	position: relative;
+}
+
+body.showEditorSelection .code-active-line:before,
+body.showEditorSelection .code-line:hover:before {
+	content: "";
+	display: block;
+	position: absolute;
+	top: 0;
+	left: -12px;
+	height: 100%;
+}
+
+body.showEditorSelection li.code-active-line:before,
+body.showEditorSelection li.code-line:hover:before {
+	left: -30px;
+}
+
+.vscode-light.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.15);
+}
+
+.vscode-light.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(0, 0, 0, 0.40);
+}
+
+.vscode-light.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-dark.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.4);
+}
+
+.vscode-dark.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 255, 255, 0.60);
+}
+
+.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+.vscode-high-contrast.showEditorSelection .code-active-line:before {
+	border-left: 3px solid rgba(255, 160, 0, 0.7);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line:hover:before {
+	border-left: 3px solid rgba(255, 160, 0, 1);
+}
+
+.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
+	border-left: none;
+}
+
+img {
+	max-width: 100%;
+	max-height: 100%;
+}
+
+a {
+	text-decoration: none;
+}
+
+a:hover {
+	text-decoration: underline;
+}
+
+a:focus,
+input:focus,
+select:focus,
+textarea:focus {
+	outline: 1px solid -webkit-focus-ring-color;
+	outline-offset: -1px;
+}
+
+hr {
+	border: 0;
+	height: 2px;
+	border-bottom: 2px solid;
+}
+
+h1 {
+	padding-bottom: 0.3em;
+	line-height: 1.2;
+	border-bottom-width: 1px;
+	border-bottom-style: solid;
+}
+
+h1, h2, h3 {
+	font-weight: normal;
+}
+
+table {
+	border-collapse: collapse;
+}
+
+table > thead > tr > th {
+	text-align: left;
+	border-bottom: 1px solid;
+}
+
+table > thead > tr > th,
+table > thead > tr > td,
+table > tbody > tr > th,
+table > tbody > tr > td {
+	padding: 5px 10px;
+}
+
+table > tbody > tr + tr > td {
+	border-top: 1px solid;
+}
+
+blockquote {
+	margin: 0 7px 0 5px;
+	padding: 0 16px 0 10px;
+	border-left-width: 5px;
+	border-left-style: solid;
+}
+
+code {
+	font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
+	font-size: 1em;
+	line-height: 1.357em;
+}
+
+body.wordWrap pre {
+	white-space: pre-wrap;
+}
+
+pre:not(.hljs),
+pre.hljs code > div {
+	padding: 16px;
+	border-radius: 3px;
+	overflow: auto;
+}
+
+pre code {
+	color: var(--vscode-editor-foreground);
+	tab-size: 4;
+}
+
+/** Theming */
+
+.vscode-light pre {
+	background-color: rgba(220, 220, 220, 0.4);
+}
+
+.vscode-dark pre {
+	background-color: rgba(10, 10, 10, 0.4);
+}
+
+.vscode-high-contrast pre {
+	background-color: rgb(0, 0, 0);
+}
+
+.vscode-high-contrast h1 {
+	border-color: rgb(0, 0, 0);
+}
+
+.vscode-light table > thead > tr > th {
+	border-color: rgba(0, 0, 0, 0.69);
+}
+
+.vscode-dark table > thead > tr > th {
+	border-color: rgba(255, 255, 255, 0.69);
+}
+
+.vscode-light h1,
+.vscode-light hr,
+.vscode-light table > tbody > tr + tr > td {
+	border-color: rgba(0, 0, 0, 0.18);
+}
+
+.vscode-dark h1,
+.vscode-dark hr,
+.vscode-dark table > tbody > tr + tr > td {
+	border-color: rgba(255, 255, 255, 0.18);
+}
+
+</style>
+
+<style>
+/* Tomorrow Theme */
+/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
+/* Original theme - https://github.com/chriskempson/tomorrow-theme */
+
+/* Tomorrow Comment */
+.hljs-comment,
+.hljs-quote {
+	color: #8e908c;
+}
+
+/* Tomorrow Red */
+.hljs-variable,
+.hljs-template-variable,
+.hljs-tag,
+.hljs-name,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-regexp,
+.hljs-deletion {
+	color: #c82829;
+}
+
+/* Tomorrow Orange */
+.hljs-number,
+.hljs-built_in,
+.hljs-builtin-name,
+.hljs-literal,
+.hljs-type,
+.hljs-params,
+.hljs-meta,
+.hljs-link {
+	color: #f5871f;
+}
+
+/* Tomorrow Yellow */
+.hljs-attribute {
+	color: #eab700;
+}
+
+/* Tomorrow Green */
+.hljs-string,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-addition {
+	color: #718c00;
+}
+
+/* Tomorrow Blue */
+.hljs-title,
+.hljs-section {
+	color: #4271ae;
+}
+
+/* Tomorrow Purple */
+.hljs-keyword,
+.hljs-selector-tag {
+	color: #8959a8;
+}
+
+.hljs {
+	display: block;
+	overflow-x: auto;
+	color: #4d4d4c;
+	padding: 0.5em;
+}
+
+.hljs-emphasis {
+	font-style: italic;
+}
+
+.hljs-strong {
+	font-weight: bold;
+}
+</style>
+
+<style>
+/*
+ * Markdown PDF CSS
+ */
+
+ body {
+	font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
+	padding: 0 12px;
+}
+
+pre {
+	background-color: #f8f8f8;
+	border: 1px solid #cccccc;
+	border-radius: 3px;
+	overflow-x: auto;
+	white-space: pre-wrap;
+	overflow-wrap: break-word;
+}
+
+pre:not(.hljs) {
+	padding: 23px;
+	line-height: 19px;
+}
+
+blockquote {
+	background: rgba(127, 127, 127, 0.1);
+	border-color: rgba(0, 122, 204, 0.5);
+}
+
+.emoji {
+	height: 1.4em;
+}
+
+code {
+	font-size: 14px;
+	line-height: 19px;
+}
+
+/* for inline code */
+:not(pre):not(.hljs) > code {
+	color: #C9AE75; /* Change the old color so it seems less like an error */
+	font-size: inherit;
+}
+
+/* Page Break : use <div class="page"/> to insert page break
+-------------------------------------------------------- */
+.page {
+	page-break-after: always;
+}
+
+</style>
+
+<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
+</head>
+<body>
+  <script>
+    mermaid.initialize({
+      startOnLoad: true,
+      theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
+          ? 'dark'
+          : 'default'
+    });
+  </script>
+<h1 id="ga-22-report-m-is-for-modelling">GA 2.2 Report: M is for Modelling</h1>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2. Due: November 22, 2024.</em></p>
+<p><em><strong>Maximum score: 10 points. Every time a (1) is indicated in the solution below this is the start of (a part of) an answer that is worth 1 point</strong></em></p>
+<h2 id="task-1-run-the-analysis-and-inspect-code-and-results-to-answer-the-following-questions">Task 1: Run the analysis and inspect code and results to answer the following questions</h2>
+<p>Show your work using either LaTeX equations, like this:</p>
+<p>$$
+\phi_i^{n+1} = \dots
+$$</p>
+<p>or by including an image with your (clearly written) handwriting.</p>
+<p><strong>Question 1: Derivation</strong></p>
+<p>Follow the steps from strong form to discretized form to derive the expression $\mathbf{M}=\int_\Omega\mathbf{N}^T\mathbf{N},\mathrm{d}\Omega$ in the term $\mathbf{M}\dot{\mathbf{u}}$. You will only be assessed on how you deal with the term that contains the time derivative. The other terms exactly following the recipe outlined for the <a href="https://mude.citg.tudelft.nl/2024/book/fem/poisson2d.html">Poisson equation in 2D</a> in the book.</p>
+<p><strong>solution</strong></p>
+<p>Time dependent 2D Poisson equation:</p>
+<p>$$
+\frac{\partial u}{\partial t} = \nu \left(\frac{\partial^{2} u}{{\partial x}^{2}} + \frac{\partial^{2} u}{{\partial y}^{2}}\right) + q
+$$</p>
+<p>$$
+\frac{\partial u}{\partial t} = \nu \nabla^{2} u   + q
+$$</p>
+<ol>
+<li>Integrate and introduce weight functions</li>
+</ol>
+<p>$$
+\int_{\Omega} w \frac{\partial u}{\partial t} d\Omega = \int_{\Omega} w \nu  \nabla^2 u d\Omega + \int_{\Omega} wq d\Omega
+$$</p>
+<ol start="2">
+<li>Integration by parts: changing the second derivative, changing sign and introducing boundary condition (not necessary for the term with time-derivative)</li>
+</ol>
+<p>$$
+\int_{\Omega} w \frac{\partial u}{\partial t} d\Omega = - \int_{\Omega} \nu \nabla w \cdot \nabla u  d\Omega + \int_{\Gamma}  w \mu \nabla u \cdot \bar{n} d\Gamma + \int_{\Omega} w q d\Omega
+$$</p>
+<ol start="3">
+<li>Substitute boundary condition (w= 0 on $\Gamma_D$ and $\mu \nabla u \cdot \mathbf{n}$ on $\Gamma_N$) (not necessary for the term with time-derivative):</li>
+</ol>
+<p>$$\int_{\Omega} w \frac{\partial u}{\partial t} d\Omega + \int_{\Omega} \nu \nabla w \cdot \nabla u  d\Omega = \int_{\Gamma N}  w h d\Gamma_N + \int_{\Omega} w q d\Omega$$</p>
+<ol start="4">
+<li>Discretization:</li>
+</ol>
+<p>$$
+u^h = \mathbf{N}\mathbf{u}
+$$
+$$w^h = \mathbf{N}\mathbf{w}$$</p>
+<p>$$\nabla u^h  = \mathbf{B}\mathbf{u}$$
+$$\nabla w^h = \mathbf{B}\mathbf{w}$$</p>
+<ol start="5">
+<li>Substitute and take $\mathbf{u,w}$ out of the integral as they don't depend on $x$ and $y$</li>
+</ol>
+<p>$$
+\mathbf{w^T} \int_{\Omega} \mathbf{N}^T \mathbf{N} d\Omega \frac{\partial \mathbf{u}}{\partial t} + \mathbf{w^T} \int_{\Omega} \nu \mathbf{B}^T \mathbf{B} d\Omega \mathbf{u} =  \mathbf{w^T} \int_{\Gamma \mathbf{N}}  \mathbf{N}^T h d\Gamma_\mathbf{N} + \mathbf{w}^T \int_{\Omega} \mathbf{N}^T q d\Omega
+$$</p>
+<ol start="6">
+<li>Eliminate $\mathbf{w}^T$</li>
+</ol>
+<p>$$ \int_{\Omega} \mathbf{N}^T \mathbf{N}  d\Omega  \frac{\partial \mathbf{u}}{\partial t}+  \int_{\Omega} \nu \mathbf{B}^T \mathbf{B} d\Omega \mathbf{u} =   \int_{\Gamma \mathbf{N}}  \mathbf{N}^T h d\Gamma_\mathbf{N} + \int_{\Omega} \mathbf{N}^T q d\Omega
+$$</p>
+<ol start="7">
+<li>write as a system of equations:</li>
+</ol>
+<p>$$
+\mathbf{M} \frac{\partial \mathbf{u}}{\partial t} + \mathbf{K u} = \mathbf{q}$$</p>
+<p>$$ \mathbf{M \dot{u}} + \mathbf{K u} = \mathbf{q}$$</p>
+<p><strong>Question 2: Problem definition</strong></p>
+<p>Investigate the code and results to find out which problem is being solved.</p>
+<ul>
+<li>
+<p>Give a mathematical description of the problem in terms of governing equation and boundary conditions. Be as specific as possible, indicating the values that are used as input to the calculation.</p>
+</li>
+<li>
+<p>In the final visualization contour lines are visible, connecting points that have the same temperature. As the solution evolves, these contour lines remain approximately perpendicular to the boundary. Which boundary condition does this observation relate to?</p>
+</li>
+</ul>
+<p><strong>solution</strong></p>
+<ol>
+<li>Governing equations and boundary conditions:</li>
+</ol>
+<p>The governing equation is:</p>
+<p>$$
+\frac{\partial u}{\partial t} = \nu \Delta u + q,
+$$</p>
+<p>The input values are:</p>
+<ul>
+<li>$\nu = 1$,</li>
+<li>$q = 15$,</li>
+</ul>
+<p>Boundary conditions:</p>
+<p>Dirichlet boundary conditions: $u=10$ on the bottom right edge
+$$
+u(x, y, t) = 10, \quad \text{on } \Gamma_D,
+$$</p>
+<p>Homogeneous Neumann boundary conditions on remainder of the bondary
+$$
+\nabla u \cdot \mathbf{n} = 0, \quad \text{on } \Gamma_N,
+$$</p>
+<p>Initial conditions:
+$$
+u(x, y, 0) = 30, \quad \in \Omega.
+$$</p>
+<ol start="2">
+<li>Which boundary condition does this observation relate to?</li>
+</ol>
+<ul>
+<li>The homogeneous Neumman boundary condition</li>
+</ul>
+<p><strong>Question 3: Integration scheme</strong></p>
+<ul>
+<li>
+<p>In the <code>get_element_M</code> function, how many integration points are used and where in the triangles are they positioned?</p>
+</li>
+<li>
+<p>In the <code>get_element_K</code> a simpler implementation is used. What is the essential difference between $\mathbf{K}_e$ and $\mathbf{M}_e$ that is the reason why this simpler implementation is valid for $\mathbf{K}_e$? (The subscript $_e$ is used to indicate the contribution to the matrix from a single element, or the <em>element matrix</em>).</p>
+</li>
+</ul>
+<p><strong>solution</strong></p>
+<ol>
+<li></li>
+</ol>
+<ul>
+<li>3 integration points</li>
+<li>location at the midpoints of the triangle edges
+in the code:
+integration_locations = [(n1 + n2) / 2, (n2 + n3) / 2, (n3 + n1) / 2]</li>
+</ul>
+<ol start="2">
+<li></li>
+</ol>
+<p>$$ \mathbf{M} = \int_{\Omega} \mathbf{N}^T \mathbf{N} ,d \Omega$$</p>
+<p>$$ \mathbf{K} = \int_{\Omega} \mathbf{B}^T \nu \mathbf{B} ,d \Omega$$</p>
+<p>$$
+N_i = a_i + b_i x + c_i y, \quad i \in [1, 3],
+$$</p>
+<p>where $a_i, b_i, c_i$ are constants determined by the geometry of the triangle. The shape functions $N_i$ vary linearly across the element because they depend on $x$ and $y$.</p>
+<p>Taking the derivative of $N_i$ with respect to $x$ and $y$ gives:</p>
+<p>$$
+\frac{\partial N_i}{\partial x} = b_i, \quad \frac{\partial N_i}{\partial y} = c_i.
+$$</p>
+<p>The derivatives $b_i$ and $c_i$ are constants because $N_i$ is linear, and the derivative removes the dependence on $x$ and $y$.</p>
+<p>The $\mathbf{B}$-matrix is therefore constant within a single element and does not vary with $x$ or $y$. This simplifies the computation of the stiffness matrix $\mathbf{K}$ because $\mathbf{B}^T \nu \mathbf{B}$ remains constant and only needs to be multiplied by the area of the triangle.</p>
+<p><strong>Question 4: Shape functions</strong>
+Investigate the shape functions for the element with index 10 in the mesh. Use the <code>get_shape_functions_T3</code> function defined in the notebook to find expressions for the shape functions in that element and check that they satisfy the shape function properties.</p>
+<ol>
+<li>
+<p>What are the coordinates of the nodes of element 10?</p>
+</li>
+<li>
+<p>What are the shape functions of the element?</p>
+</li>
+<li>
+<p>Assert that the shape functions satisfy the partition of unity property:</p>
+</li>
+</ol>
+<p>$$
+\sum_i N_i(\mathbf{x}) = 1
+$$</p>
+<ol start="4">
+<li>Assert for one of the shape functions that it satisfies the Kronecker delta property</li>
+</ol>
+<p>$$
+N_i(\mathbf{x}_j) = \begin{cases}
+1, &amp; i = j \
+0, &amp; i\neq j
+\end{cases}
+$$</p>
+<p><strong>solution</strong></p>
+<p><em>1. Find coordinates of element 10</em></p>
+<ul>
+<li><code>nodes, connectivity = readGmsh('bigM.msh')</code></li>
+</ul>
+<p><code>nodes</code> is an array of the coordinates of the nodes.</p>
+<p><code>connectivity</code> is an array of the nodes belonging to each element.</p>
+<p>Node indices of element 10: [ 55,  56, 265]</p>
+<p>Coordinates of the nodes of element 10:</p>
+<table>
+<thead>
+<tr>
+<th>$N_i$</th>
+<th>x</th>
+<th>y</th>
+<th>z</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>0.1</td>
+<td>1.0</td>
+<td>0.0</td>
+</tr>
+<tr>
+<td>2</td>
+<td>0.05</td>
+<td>1.0</td>
+<td>0.0</td>
+</tr>
+<tr>
+<td>3</td>
+<td>0.07628505</td>
+<td>0.94825032</td>
+<td>0.0</td>
+</tr>
+</tbody>
+</table>
+<p><em>2. shape functions</em></p>
+<p>The <code>get_shape_functions_T3</code> outputs the coefficients for each shape function in the form:</p>
+<p>$$
+N_i = a_i +b_i x+ c_iy
+$$</p>
+<p>These coeffients are stored in an 3x3 mtrix coeffs
+These coeffients define the shape functions</p>
+<p>For the 3 nodes of element 10 we get the following coeffients:</p>
+<table>
+<thead>
+<tr>
+<th>Node</th>
+<th>$a_i$</th>
+<th>$b_i$</th>
+<th>$c_i$</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>1</td>
+<td>-11.15853885</td>
+<td>20.0</td>
+<td>10.15853885</td>
+</tr>
+<tr>
+<td>2</td>
+<td>-7.16525352</td>
+<td>-20.0</td>
+<td>9.16525352</td>
+</tr>
+<tr>
+<td>3</td>
+<td>19.32379237</td>
+<td>0.0</td>
+<td>-19.32379237</td>
+</tr>
+</tbody>
+</table>
+<p><em>3. Assert that the shape functions satisfy the partition of unity property</em>:</p>
+<p>$$
+\sum_{i=1}^3 N_i(\mathbf{x}) = 1
+$$</p>
+<ul>
+<li>Each shape function is of the form:
+$$
+N_i(x, y) = a_i + b_i x + c_i y, \quad i \in [1, 3],
+$$
+where $a_i, b_i, c_i$ are the coefficients computed using the <code>get_shape_functions_T3</code> function.</li>
+</ul>
+<p>Choose a Point Inside the Element:</p>
+<ul>
+<li>for example centroid $\frac{N_1 +N_2+N_3}{3}$</li>
+</ul>
+<p>Evaluate the Shape Functions at the this Point.</p>
+<ul>
+<li>For each shape function $N_i$, compute its value at the test point</li>
+</ul>
+<p>Compute the Sum of Shape Functions:</p>
+<ul>
+<li>Add the values of all shape functions at the test point:
+$$\text{Sum} = \sum_{i=1}^3 N_i(\mathbf{x}).$$</li>
+</ul>
+<p><code> sum(coeff[0] + coeff[1] * centroid[0] + coeff[2] * centroid[1] for coeff in coeffs)</code></p>
+<p>Assert the Partition of Unity:</p>
+<ul>
+<li>Check if the sum equals $1$:
+$$
+\text{Assert: } \sum_{i=1}^3 N_i(\mathbf{x}) = 1.
+$$</li>
+</ul>
+<pre class="hljs"><code><div><span class="hljs-comment"># Get the coordinates of the nodes for element 10</span>
+element_nodes = nodes[connectivity[<span class="hljs-number">9</span>]]
+
+<span class="hljs-comment"># Compute the shape function coefficients for element 10</span>
+coeffs = get_shape_functions_T3(element_nodes[<span class="hljs-number">0</span>], element_nodes[<span class="hljs-number">1</span>], element_nodes[<span class="hljs-number">2</span>])
+
+<span class="hljs-comment"># Compute the centroid of the element</span>
+centroid = element_nodes.mean(axis=<span class="hljs-number">0</span>)
+
+<span class="hljs-comment"># Evaluate the sum of the shape functions at the centroid</span>
+partition_of_unity = sum(
+    coeff[<span class="hljs-number">0</span>] + coeff[<span class="hljs-number">1</span>] * centroid[<span class="hljs-number">0</span>] + coeff[<span class="hljs-number">2</span>] * centroid[<span class="hljs-number">1</span>] <span class="hljs-keyword">for</span> coeff <span class="hljs-keyword">in</span> coeffs
+)
+
+<span class="hljs-comment"># Print the result</span>
+print(<span class="hljs-string">f"Sum of shape functions at the centroid: <span class="hljs-subst">{partition_of_unity}</span>"</span>)
+<span class="hljs-keyword">assert</span> abs(partition_of_unity<span class="hljs-number">-1</span>)&lt; <span class="hljs-number">1e-5</span>,, <span class="hljs-string">"Partition of unity property not satisfied!"</span>
+</div></code></pre>
+<p><em>4. Assert for one of the shape functions that it satisfies the Kronecker delta property</em></p>
+<p>For each shape function $N_i(x, y,z)$, calculate its value at the coordinates of each node $(x_j, y_j, z_j)$ then check if the shapefuction = 1</p>
+<pre class="hljs"><code><div><span class="hljs-comment"># Extract coordinates of the nodes for element 10</span>
+element_coords = nodes[connectivity[<span class="hljs-number">9</span>]]
+
+<span class="hljs-comment"># Compute shape function coefficients for element 10</span>
+coeffs = get_shape_functions_T3(element_coords[<span class="hljs-number">0</span>], element_coords[<span class="hljs-number">1</span>], element_coords[<span class="hljs-number">2</span>])
+
+<span class="hljs-comment"># Verify Kronecker delta property</span>
+<span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> range(<span class="hljs-number">3</span>):  
+    <span class="hljs-keyword">for</span> j <span class="hljs-keyword">in</span> range(<span class="hljs-number">3</span>):  
+        x, y, z = element_coords[j]  
+        N_i_at_xj = coeffs[i][<span class="hljs-number">0</span>] + coeffs[i][<span class="hljs-number">1</span>] * x + coefffs[i][<span class="hljs-number">2</span>] * y  
+        expected = <span class="hljs-number">1.0</span> <span class="hljs-keyword">if</span> i == j <span class="hljs-keyword">else</span> <span class="hljs-number">0.0</span>  
+        print(<span class="hljs-string">f"N_<span class="hljs-subst">{i+<span class="hljs-number">1</span>}</span>(x_<span class="hljs-subst">{j+<span class="hljs-number">1</span>}</span>) = <span class="hljs-subst">{N_i_at_xj}</span>, Expected = <span class="hljs-subst">{expected}</span>"</span>)
+        <span class="hljs-keyword">assert</span> np.isclose(N_i_at_xj, expected), <span class="hljs-string">f"Kronecker delta property failed for N_<span class="hljs-subst">{i+<span class="hljs-number">1</span>}</span> at node <span class="hljs-subst">{j+<span class="hljs-number">1</span>}</span>"</span>
+        
+</div></code></pre>
+<h2 id="general-comments-on-the-assignment-optional">General Comments on the Assignment [optional]</h2>
+<p><em>Use this space to let us know if you encountered any issues completing this assignment (but please keep it short!). For example, if you encountered an error that could not be fixed in yout Python code, or perhaps there was a problem submitting something via GitLab. You can also let us know if the instructions were unclear. You can delete this section if you don't use it.</em></p>
+<p><strong>End of file.</strong></p>
+<span style="font-size: 75%">
+&copy; Copyright 2024 <a rel="MUDE" href="http://mude.citg.tudelft.nl/">MUDE</a>, TU Delft. This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0 License</a>.
+
+</body>
+</html>
diff --git a/src/teachers/GA_2_2/environment.yml b/src/teachers/GA_2_2/environment.yml
new file mode 100644
index 00000000..765e2f0a
--- /dev/null
+++ b/src/teachers/GA_2_2/environment.yml
@@ -0,0 +1,11 @@
+name: mude-week-2-2
+dependencies:
+  - python=3.12
+  - numpy
+  - scipy
+  - pandas
+  - matplotlib
+  - jupyter
+  - ipykernel
+  - ipympl
+  - pip
\ No newline at end of file
diff --git a/src/teachers/GA_2_2/the_big_M.html b/src/teachers/GA_2_2/the_big_M.html
new file mode 100644
index 00000000..e3e13348
--- /dev/null
+++ b/src/teachers/GA_2_2/the_big_M.html
@@ -0,0 +1,8024 @@
+<!DOCTYPE html>
+
+<html lang="en">
+<head><meta charset="utf-8"/>
+<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
+<title>the_big_M</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
+<style type="text/css">
+    pre { line-height: 125%; }
+td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
+td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
+.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
+.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
+.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
+.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
+.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
+.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
+.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
+.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
+.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
+.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
+.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
+.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
+.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
+.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
+.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
+.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
+.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
+.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
+.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
+.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
+.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
+.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
+.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
+.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
+.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
+.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
+.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
+.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
+.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
+.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
+.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
+.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
+.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
+.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
+.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
+.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
+.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
+  </style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+ * Mozilla scrollbar styling
+ */
+
+/* use standard opaque scrollbars for most nodes */
+[data-jp-theme-scrollbars='true'] {
+  scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
+    var(--jp-scrollbar-background-color);
+}
+
+/* for code nodes, use a transparent style of scrollbar. These selectors
+ * will match lower in the tree, and so will override the above */
+[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
+[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
+  scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny {
+  scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
+  scrollbar-width: thin;
+}
+
+/* tiny scrollbar */
+
+.jp-scrollbar-tiny::-webkit-scrollbar,
+.jp-scrollbar-tiny::-webkit-scrollbar-corner {
+  background-color: transparent;
+  height: 4px;
+  width: 4px;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
+  background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
+  border-left: 0 solid transparent;
+  border-right: 0 solid transparent;
+}
+
+.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
+  border-top: 0 solid transparent;
+  border-bottom: 0 solid transparent;
+}
+
+/*
+ * Lumino
+ */
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+  min-height: 16px;
+  max-height: 16px;
+  min-width: 45px;
+  border-top: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+  min-width: 16px;
+  max-width: 16px;
+  min-height: 45px;
+  border-left: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar-button {
+  background-color: #f0f0f0;
+  background-position: center center;
+  min-height: 15px;
+  max-height: 15px;
+  min-width: 15px;
+  max-width: 15px;
+}
+
+.lm-ScrollBar-button:hover {
+  background-color: #dadada;
+}
+
+.lm-ScrollBar-button.lm-mod-active {
+  background-color: #cdcdcd;
+}
+
+.lm-ScrollBar-track {
+  background: #f0f0f0;
+}
+
+.lm-ScrollBar-thumb {
+  background: #cdcdcd;
+}
+
+.lm-ScrollBar-thumb:hover {
+  background: #bababa;
+}
+
+.lm-ScrollBar-thumb.lm-mod-active {
+  background: #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
+  height: 100%;
+  min-width: 15px;
+  border-left: 1px solid #a0a0a0;
+  border-right: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
+  width: 100%;
+  min-height: 15px;
+  border-top: 1px solid #a0a0a0;
+  border-bottom: 1px solid #a0a0a0;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+  .lm-ScrollBar-button[data-action='decrement'] {
+  background-image: var(--jp-icon-caret-left);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='horizontal']
+  .lm-ScrollBar-button[data-action='increment'] {
+  background-image: var(--jp-icon-caret-right);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+  .lm-ScrollBar-button[data-action='decrement'] {
+  background-image: var(--jp-icon-caret-up);
+  background-size: 17px;
+}
+
+.lm-ScrollBar[data-orientation='vertical']
+  .lm-ScrollBar-button[data-action='increment'] {
+  background-image: var(--jp-icon-caret-down);
+  background-size: 17px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Widget {
+  box-sizing: border-box;
+  position: relative;
+  overflow: hidden;
+}
+
+.lm-Widget.lm-mod-hidden {
+  display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
+  /* Title is rotated for horizontal accordion panel using CSS */
+  display: block;
+  transform-origin: top left;
+  transform: rotate(-90deg) translate(-100%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+  display: flex;
+  flex-direction: column;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-CommandPalette-search {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-content {
+  flex: 1 1 auto;
+  margin: 0;
+  padding: 0;
+  min-height: 0;
+  overflow: auto;
+  list-style-type: none;
+}
+
+.lm-CommandPalette-header {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.lm-CommandPalette-item {
+  display: flex;
+  flex-direction: row;
+}
+
+.lm-CommandPalette-itemIcon {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemContent {
+  flex: 1 1 auto;
+  overflow: hidden;
+}
+
+.lm-CommandPalette-itemShortcut {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemLabel {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.lm-close-icon {
+  border: 1px solid transparent;
+  background-color: transparent;
+  position: absolute;
+  z-index: 1;
+  right: 3%;
+  top: 0;
+  bottom: 0;
+  margin: auto;
+  padding: 7px 0;
+  display: none;
+  vertical-align: middle;
+  outline: 0;
+  cursor: pointer;
+}
+.lm-close-icon:after {
+  content: 'X';
+  display: block;
+  width: 15px;
+  height: 15px;
+  text-align: center;
+  color: #000;
+  font-weight: normal;
+  font-size: 12px;
+  cursor: pointer;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-DockPanel {
+  z-index: 0;
+}
+
+.lm-DockPanel-widget {
+  z-index: 0;
+}
+
+.lm-DockPanel-tabBar {
+  z-index: 1;
+}
+
+.lm-DockPanel-handle {
+  z-index: 2;
+}
+
+.lm-DockPanel-handle.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-DockPanel-handle:after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  content: '';
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal'] {
+  cursor: ew-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='vertical'] {
+  cursor: ns-resize;
+}
+
+.lm-DockPanel-handle[data-orientation='horizontal']:after {
+  left: 50%;
+  min-width: 8px;
+  transform: translateX(-50%);
+}
+
+.lm-DockPanel-handle[data-orientation='vertical']:after {
+  top: 50%;
+  min-height: 8px;
+  transform: translateY(-50%);
+}
+
+.lm-DockPanel-overlay {
+  z-index: 3;
+  box-sizing: border-box;
+  pointer-events: none;
+}
+
+.lm-DockPanel-overlay.lm-mod-hidden {
+  display: none !important;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-Menu {
+  z-index: 10000;
+  position: absolute;
+  white-space: nowrap;
+  overflow-x: hidden;
+  overflow-y: auto;
+  outline: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-Menu-content {
+  margin: 0;
+  padding: 0;
+  display: table;
+  list-style-type: none;
+}
+
+.lm-Menu-item {
+  display: table-row;
+}
+
+.lm-Menu-item.lm-mod-hidden,
+.lm-Menu-item.lm-mod-collapsed {
+  display: none !important;
+}
+
+.lm-Menu-itemIcon,
+.lm-Menu-itemSubmenuIcon {
+  display: table-cell;
+  text-align: center;
+}
+
+.lm-Menu-itemLabel {
+  display: table-cell;
+  text-align: left;
+}
+
+.lm-Menu-itemShortcut {
+  display: table-cell;
+  text-align: right;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-MenuBar {
+  outline: none;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-MenuBar-content {
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex-direction: row;
+  list-style-type: none;
+}
+
+.lm-MenuBar-item {
+  box-sizing: border-box;
+}
+
+.lm-MenuBar-itemIcon,
+.lm-MenuBar-itemLabel {
+  display: inline-block;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-ScrollBar {
+  display: flex;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-ScrollBar[data-orientation='horizontal'] {
+  flex-direction: row;
+}
+
+.lm-ScrollBar[data-orientation='vertical'] {
+  flex-direction: column;
+}
+
+.lm-ScrollBar-button {
+  box-sizing: border-box;
+  flex: 0 0 auto;
+}
+
+.lm-ScrollBar-track {
+  box-sizing: border-box;
+  position: relative;
+  overflow: hidden;
+  flex: 1 1 auto;
+}
+
+.lm-ScrollBar-thumb {
+  box-sizing: border-box;
+  position: absolute;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-SplitPanel-child {
+  z-index: 0;
+}
+
+.lm-SplitPanel-handle {
+  z-index: 1;
+}
+
+.lm-SplitPanel-handle.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-SplitPanel-handle:after {
+  position: absolute;
+  top: 0;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  content: '';
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
+  cursor: ew-resize;
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
+  cursor: ns-resize;
+}
+
+.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
+  left: 50%;
+  min-width: 8px;
+  transform: translateX(-50%);
+}
+
+.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
+  top: 50%;
+  min-height: 8px;
+  transform: translateY(-50%);
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar {
+  display: flex;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] {
+  flex-direction: row;
+  align-items: flex-end;
+}
+
+.lm-TabBar[data-orientation='vertical'] {
+  flex-direction: column;
+  align-items: flex-end;
+}
+
+.lm-TabBar-content {
+  margin: 0;
+  padding: 0;
+  display: flex;
+  flex: 1 1 auto;
+  list-style-type: none;
+}
+
+.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
+  flex-direction: row;
+}
+
+.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
+  flex-direction: column;
+}
+
+.lm-TabBar-tab {
+  display: flex;
+  flex-direction: row;
+  box-sizing: border-box;
+  overflow: hidden;
+  touch-action: none; /* Disable native Drag/Drop */
+}
+
+.lm-TabBar-tabIcon,
+.lm-TabBar-tabCloseIcon {
+  flex: 0 0 auto;
+}
+
+.lm-TabBar-tabLabel {
+  flex: 1 1 auto;
+  overflow: hidden;
+  white-space: nowrap;
+}
+
+.lm-TabBar-tabInput {
+  user-select: all;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.lm-TabBar-tab.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-TabBar-addButton.lm-mod-hidden {
+  display: none !important;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
+  position: relative;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
+  left: 0;
+  transition: left 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
+  top: 0;
+  transition: top 150ms ease;
+}
+
+.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
+  transition: none;
+}
+
+.lm-TabBar-tabLabel .lm-TabBar-tabInput {
+  user-select: all;
+  width: 100%;
+  box-sizing: border-box;
+  background: inherit;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-TabPanel-tabBar {
+  z-index: 1;
+}
+
+.lm-TabPanel-stackedPanel {
+  z-index: 0;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapse {
+  display: flex;
+  flex-direction: column;
+  align-items: stretch;
+}
+
+.jp-Collapse-header {
+  padding: 1px 12px;
+  background-color: var(--jp-layout-color1);
+  border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+  color: var(--jp-ui-font-color1);
+  cursor: pointer;
+  display: flex;
+  align-items: center;
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  text-transform: uppercase;
+  user-select: none;
+}
+
+.jp-Collapser-icon {
+  height: 16px;
+}
+
+.jp-Collapse-header-collapsed .jp-Collapser-icon {
+  transform: rotate(-90deg);
+  margin: auto 0;
+}
+
+.jp-Collapser-title {
+  line-height: 25px;
+}
+
+.jp-Collapse-contents {
+  padding: 0 12px;
+  background-color: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  overflow: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+/* Icons urls */
+
+:root {
+  --jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
+  --jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
+  --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
+  --jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
+  --jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
+  --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
+  --jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
+  --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
+  --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
+  --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
+  --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
+  --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
+  --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
+  --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
+  --jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
+  --jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
+  --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
+  --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
+  --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
+  --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
+  --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
+  --jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
+  --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
+  --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
+  --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
+  --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
+  --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
+  --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
+  --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
+}
+
+/* Icon CSS class declarations */
+
+.jp-AddAboveIcon {
+  background-image: var(--jp-icon-add-above);
+}
+
+.jp-AddBelowIcon {
+  background-image: var(--jp-icon-add-below);
+}
+
+.jp-AddIcon {
+  background-image: var(--jp-icon-add);
+}
+
+.jp-BellIcon {
+  background-image: var(--jp-icon-bell);
+}
+
+.jp-BugDotIcon {
+  background-image: var(--jp-icon-bug-dot);
+}
+
+.jp-BugIcon {
+  background-image: var(--jp-icon-bug);
+}
+
+.jp-BuildIcon {
+  background-image: var(--jp-icon-build);
+}
+
+.jp-CaretDownEmptyIcon {
+  background-image: var(--jp-icon-caret-down-empty);
+}
+
+.jp-CaretDownEmptyThinIcon {
+  background-image: var(--jp-icon-caret-down-empty-thin);
+}
+
+.jp-CaretDownIcon {
+  background-image: var(--jp-icon-caret-down);
+}
+
+.jp-CaretLeftIcon {
+  background-image: var(--jp-icon-caret-left);
+}
+
+.jp-CaretRightIcon {
+  background-image: var(--jp-icon-caret-right);
+}
+
+.jp-CaretUpEmptyThinIcon {
+  background-image: var(--jp-icon-caret-up-empty-thin);
+}
+
+.jp-CaretUpIcon {
+  background-image: var(--jp-icon-caret-up);
+}
+
+.jp-CaseSensitiveIcon {
+  background-image: var(--jp-icon-case-sensitive);
+}
+
+.jp-CheckIcon {
+  background-image: var(--jp-icon-check);
+}
+
+.jp-CircleEmptyIcon {
+  background-image: var(--jp-icon-circle-empty);
+}
+
+.jp-CircleIcon {
+  background-image: var(--jp-icon-circle);
+}
+
+.jp-ClearIcon {
+  background-image: var(--jp-icon-clear);
+}
+
+.jp-CloseIcon {
+  background-image: var(--jp-icon-close);
+}
+
+.jp-CodeCheckIcon {
+  background-image: var(--jp-icon-code-check);
+}
+
+.jp-CodeIcon {
+  background-image: var(--jp-icon-code);
+}
+
+.jp-CollapseAllIcon {
+  background-image: var(--jp-icon-collapse-all);
+}
+
+.jp-ConsoleIcon {
+  background-image: var(--jp-icon-console);
+}
+
+.jp-CopyIcon {
+  background-image: var(--jp-icon-copy);
+}
+
+.jp-CopyrightIcon {
+  background-image: var(--jp-icon-copyright);
+}
+
+.jp-CutIcon {
+  background-image: var(--jp-icon-cut);
+}
+
+.jp-DeleteIcon {
+  background-image: var(--jp-icon-delete);
+}
+
+.jp-DownloadIcon {
+  background-image: var(--jp-icon-download);
+}
+
+.jp-DuplicateIcon {
+  background-image: var(--jp-icon-duplicate);
+}
+
+.jp-EditIcon {
+  background-image: var(--jp-icon-edit);
+}
+
+.jp-EllipsesIcon {
+  background-image: var(--jp-icon-ellipses);
+}
+
+.jp-ErrorIcon {
+  background-image: var(--jp-icon-error);
+}
+
+.jp-ExpandAllIcon {
+  background-image: var(--jp-icon-expand-all);
+}
+
+.jp-ExtensionIcon {
+  background-image: var(--jp-icon-extension);
+}
+
+.jp-FastForwardIcon {
+  background-image: var(--jp-icon-fast-forward);
+}
+
+.jp-FileIcon {
+  background-image: var(--jp-icon-file);
+}
+
+.jp-FileUploadIcon {
+  background-image: var(--jp-icon-file-upload);
+}
+
+.jp-FilterDotIcon {
+  background-image: var(--jp-icon-filter-dot);
+}
+
+.jp-FilterIcon {
+  background-image: var(--jp-icon-filter);
+}
+
+.jp-FilterListIcon {
+  background-image: var(--jp-icon-filter-list);
+}
+
+.jp-FolderFavoriteIcon {
+  background-image: var(--jp-icon-folder-favorite);
+}
+
+.jp-FolderIcon {
+  background-image: var(--jp-icon-folder);
+}
+
+.jp-HomeIcon {
+  background-image: var(--jp-icon-home);
+}
+
+.jp-Html5Icon {
+  background-image: var(--jp-icon-html5);
+}
+
+.jp-ImageIcon {
+  background-image: var(--jp-icon-image);
+}
+
+.jp-InfoIcon {
+  background-image: var(--jp-icon-info);
+}
+
+.jp-InspectorIcon {
+  background-image: var(--jp-icon-inspector);
+}
+
+.jp-JsonIcon {
+  background-image: var(--jp-icon-json);
+}
+
+.jp-JuliaIcon {
+  background-image: var(--jp-icon-julia);
+}
+
+.jp-JupyterFaviconIcon {
+  background-image: var(--jp-icon-jupyter-favicon);
+}
+
+.jp-JupyterIcon {
+  background-image: var(--jp-icon-jupyter);
+}
+
+.jp-JupyterlabWordmarkIcon {
+  background-image: var(--jp-icon-jupyterlab-wordmark);
+}
+
+.jp-KernelIcon {
+  background-image: var(--jp-icon-kernel);
+}
+
+.jp-KeyboardIcon {
+  background-image: var(--jp-icon-keyboard);
+}
+
+.jp-LaunchIcon {
+  background-image: var(--jp-icon-launch);
+}
+
+.jp-LauncherIcon {
+  background-image: var(--jp-icon-launcher);
+}
+
+.jp-LineFormIcon {
+  background-image: var(--jp-icon-line-form);
+}
+
+.jp-LinkIcon {
+  background-image: var(--jp-icon-link);
+}
+
+.jp-ListIcon {
+  background-image: var(--jp-icon-list);
+}
+
+.jp-MarkdownIcon {
+  background-image: var(--jp-icon-markdown);
+}
+
+.jp-MoveDownIcon {
+  background-image: var(--jp-icon-move-down);
+}
+
+.jp-MoveUpIcon {
+  background-image: var(--jp-icon-move-up);
+}
+
+.jp-NewFolderIcon {
+  background-image: var(--jp-icon-new-folder);
+}
+
+.jp-NotTrustedIcon {
+  background-image: var(--jp-icon-not-trusted);
+}
+
+.jp-NotebookIcon {
+  background-image: var(--jp-icon-notebook);
+}
+
+.jp-NumberingIcon {
+  background-image: var(--jp-icon-numbering);
+}
+
+.jp-OfflineBoltIcon {
+  background-image: var(--jp-icon-offline-bolt);
+}
+
+.jp-PaletteIcon {
+  background-image: var(--jp-icon-palette);
+}
+
+.jp-PasteIcon {
+  background-image: var(--jp-icon-paste);
+}
+
+.jp-PdfIcon {
+  background-image: var(--jp-icon-pdf);
+}
+
+.jp-PythonIcon {
+  background-image: var(--jp-icon-python);
+}
+
+.jp-RKernelIcon {
+  background-image: var(--jp-icon-r-kernel);
+}
+
+.jp-ReactIcon {
+  background-image: var(--jp-icon-react);
+}
+
+.jp-RedoIcon {
+  background-image: var(--jp-icon-redo);
+}
+
+.jp-RefreshIcon {
+  background-image: var(--jp-icon-refresh);
+}
+
+.jp-RegexIcon {
+  background-image: var(--jp-icon-regex);
+}
+
+.jp-RunIcon {
+  background-image: var(--jp-icon-run);
+}
+
+.jp-RunningIcon {
+  background-image: var(--jp-icon-running);
+}
+
+.jp-SaveIcon {
+  background-image: var(--jp-icon-save);
+}
+
+.jp-SearchIcon {
+  background-image: var(--jp-icon-search);
+}
+
+.jp-SettingsIcon {
+  background-image: var(--jp-icon-settings);
+}
+
+.jp-ShareIcon {
+  background-image: var(--jp-icon-share);
+}
+
+.jp-SpreadsheetIcon {
+  background-image: var(--jp-icon-spreadsheet);
+}
+
+.jp-StopIcon {
+  background-image: var(--jp-icon-stop);
+}
+
+.jp-TabIcon {
+  background-image: var(--jp-icon-tab);
+}
+
+.jp-TableRowsIcon {
+  background-image: var(--jp-icon-table-rows);
+}
+
+.jp-TagIcon {
+  background-image: var(--jp-icon-tag);
+}
+
+.jp-TerminalIcon {
+  background-image: var(--jp-icon-terminal);
+}
+
+.jp-TextEditorIcon {
+  background-image: var(--jp-icon-text-editor);
+}
+
+.jp-TocIcon {
+  background-image: var(--jp-icon-toc);
+}
+
+.jp-TreeViewIcon {
+  background-image: var(--jp-icon-tree-view);
+}
+
+.jp-TrustedIcon {
+  background-image: var(--jp-icon-trusted);
+}
+
+.jp-UndoIcon {
+  background-image: var(--jp-icon-undo);
+}
+
+.jp-UserIcon {
+  background-image: var(--jp-icon-user);
+}
+
+.jp-UsersIcon {
+  background-image: var(--jp-icon-users);
+}
+
+.jp-VegaIcon {
+  background-image: var(--jp-icon-vega);
+}
+
+.jp-WordIcon {
+  background-image: var(--jp-icon-word);
+}
+
+.jp-YamlIcon {
+  background-image: var(--jp-icon-yaml);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * (DEPRECATED) Support for consuming icons as CSS background images
+ */
+
+.jp-Icon,
+.jp-MaterialIcon {
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: 16px;
+  min-width: 16px;
+  min-height: 16px;
+}
+
+.jp-Icon-cover {
+  background-position: center;
+  background-repeat: no-repeat;
+  background-size: cover;
+}
+
+/**
+ * (DEPRECATED) Support for specific CSS icon sizes
+ */
+
+.jp-Icon-16 {
+  background-size: 16px;
+  min-width: 16px;
+  min-height: 16px;
+}
+
+.jp-Icon-18 {
+  background-size: 18px;
+  min-width: 18px;
+  min-height: 18px;
+}
+
+.jp-Icon-20 {
+  background-size: 20px;
+  min-width: 20px;
+  min-height: 20px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.lm-TabBar .lm-TabBar-addButton {
+  align-items: center;
+  display: flex;
+  padding: 4px;
+  padding-bottom: 5px;
+  margin-right: 1px;
+  background-color: var(--jp-layout-color2);
+}
+
+.lm-TabBar .lm-TabBar-addButton:hover {
+  background-color: var(--jp-layout-color1);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-tab {
+  width: var(--jp-private-horizontal-tab-width);
+}
+
+.lm-DockPanel-tabBar .lm-TabBar-content {
+  flex: unset;
+}
+
+.lm-DockPanel-tabBar[data-orientation='horizontal'] {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for icons as inline SVG HTMLElements
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon0[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon0[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon1[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon2[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon3[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon4[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-accent0[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-accent0[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-accent1[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-accent2[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-accent3[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-accent4[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-none[fill] {
+  fill: none;
+}
+
+.jp-icon-none[stroke] {
+  stroke: none;
+}
+
+/* brand icon colors. Same for light and dark */
+.jp-icon-brand0[fill] {
+  fill: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[fill] {
+  fill: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[fill] {
+  fill: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[fill] {
+  fill: var(--jp-brand-color4);
+}
+
+.jp-icon-brand0[stroke] {
+  stroke: var(--jp-brand-color0);
+}
+
+.jp-icon-brand1[stroke] {
+  stroke: var(--jp-brand-color1);
+}
+
+.jp-icon-brand2[stroke] {
+  stroke: var(--jp-brand-color2);
+}
+
+.jp-icon-brand3[stroke] {
+  stroke: var(--jp-brand-color3);
+}
+
+.jp-icon-brand4[stroke] {
+  stroke: var(--jp-brand-color4);
+}
+
+/* warn icon colors. Same for light and dark */
+.jp-icon-warn0[fill] {
+  fill: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[fill] {
+  fill: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[fill] {
+  fill: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[fill] {
+  fill: var(--jp-warn-color3);
+}
+
+.jp-icon-warn0[stroke] {
+  stroke: var(--jp-warn-color0);
+}
+
+.jp-icon-warn1[stroke] {
+  stroke: var(--jp-warn-color1);
+}
+
+.jp-icon-warn2[stroke] {
+  stroke: var(--jp-warn-color2);
+}
+
+.jp-icon-warn3[stroke] {
+  stroke: var(--jp-warn-color3);
+}
+
+/* icon colors that contrast well with each other and most backgrounds */
+.jp-icon-contrast0[fill] {
+  fill: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[fill] {
+  fill: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[fill] {
+  fill: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[fill] {
+  fill: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-contrast0[stroke] {
+  stroke: var(--jp-icon-contrast-color0);
+}
+
+.jp-icon-contrast1[stroke] {
+  stroke: var(--jp-icon-contrast-color1);
+}
+
+.jp-icon-contrast2[stroke] {
+  stroke: var(--jp-icon-contrast-color2);
+}
+
+.jp-icon-contrast3[stroke] {
+  stroke: var(--jp-icon-contrast-color3);
+}
+
+.jp-icon-dot[fill] {
+  fill: var(--jp-warn-color0);
+}
+
+.jp-jupyter-icon-color[fill] {
+  fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
+}
+
+.jp-notebook-icon-color[fill] {
+  fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
+}
+
+.jp-json-icon-color[fill] {
+  fill: var(--jp-json-icon-color, var(--jp-warn-color1));
+}
+
+.jp-console-icon-color[fill] {
+  fill: var(--jp-console-icon-color, white);
+}
+
+.jp-console-icon-background-color[fill] {
+  fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
+}
+
+.jp-terminal-icon-color[fill] {
+  fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
+}
+
+.jp-terminal-icon-background-color[fill] {
+  fill: var(
+    --jp-terminal-icon-background-color,
+    var(--jp-inverse-layout-color2)
+  );
+}
+
+.jp-text-editor-icon-color[fill] {
+  fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
+}
+
+.jp-inspector-icon-color[fill] {
+  fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
+}
+
+/* CSS for icons in selected filebrowser listing items */
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
+  fill: #fff;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+/* stylelint-disable selector-max-class, selector-max-compound-selectors */
+
+/**
+* TODO: come up with non css-hack solution for showing the busy icon on top
+*  of the close icon
+* CSS for complex behavior of close icon of tabs in the main area tabbar
+*/
+.lm-DockPanel-tabBar
+  .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+  > .lm-TabBar-tabCloseIcon
+  > :not(:hover)
+  > .jp-icon3[fill] {
+  fill: none;
+}
+
+.lm-DockPanel-tabBar
+  .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
+  > .lm-TabBar-tabCloseIcon
+  > :not(:hover)
+  > .jp-icon-busy[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+/* stylelint-enable selector-max-class, selector-max-compound-selectors */
+
+/* CSS for icons in status bar */
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
+  fill: #fff;
+}
+
+#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
+  fill: var(--jp-brand-color1);
+}
+
+/* special handling for splash icon CSS. While the theme CSS reloads during
+   splash, the splash icon can loose theming. To prevent that, we set a
+   default for its color variable */
+:root {
+  --jp-warn-color0: var(--md-orange-700);
+}
+
+/* not sure what to do with this one, used in filebrowser listing */
+.jp-DragIcon {
+  margin-right: 4px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/**
+ * Support for alt colors for icons as inline SVG HTMLElements
+ */
+
+/* alt recolor the primary elements of an icon */
+.jp-icon-alt .jp-icon0[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-alt .jp-icon0[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-alt .jp-icon1[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-alt .jp-icon2[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-alt .jp-icon3[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-alt .jp-icon4[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* alt recolor the accent elements of an icon */
+.jp-icon-alt .jp-icon-accent0[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-alt .jp-icon-accent0[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-alt .jp-icon-accent1[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-alt .jp-icon-accent2[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-alt .jp-icon-accent3[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-alt .jp-icon-accent4[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
+  display: none !important;
+}
+
+/**
+ * Support for hover colors for icons as inline SVG HTMLElements
+ */
+
+/**
+ * regular colors
+ */
+
+/* recolor the primary elements of an icon */
+.jp-icon-hover :hover .jp-icon0-hover[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon0-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon1-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon2-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon3-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon4-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/* recolor the accent elements of an icon */
+.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* set the color of an icon to transparent */
+.jp-icon-hover :hover .jp-icon-none-hover[fill] {
+  fill: none;
+}
+
+.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
+  stroke: none;
+}
+
+/**
+ * inverse colors
+ */
+
+/* inverse recolor the primary elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
+  fill: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
+  fill: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
+  fill: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
+  fill: var(--jp-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
+  stroke: var(--jp-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
+  stroke: var(--jp-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
+  stroke: var(--jp-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
+  stroke: var(--jp-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
+  stroke: var(--jp-layout-color4);
+}
+
+/* inverse recolor the accent elements of an icon */
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
+  fill: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
+  fill: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
+  fill: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
+  fill: var(--jp-inverse-layout-color4);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color0);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color1);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color2);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color3);
+}
+
+.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
+  stroke: var(--jp-inverse-layout-color4);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-IFrame {
+  width: 100%;
+  height: 100%;
+}
+
+.jp-IFrame > iframe {
+  border: none;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-IFrame {
+  position: relative;
+}
+
+body.lm-mod-override-cursor .jp-IFrame::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-HoverBox {
+  position: fixed;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FormGroup-content fieldset {
+  border: none;
+  padding: 0;
+  min-width: 0;
+  width: 100%;
+}
+
+/* stylelint-disable selector-max-type */
+
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
+.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
+  font-size: var(--jp-content-font-size2);
+  border-color: var(--jp-input-border-color);
+  border-style: solid;
+  border-radius: var(--jp-border-radius);
+  border-width: 1px;
+  padding: 6px 8px;
+  background: none;
+  color: var(--jp-ui-font-color0);
+  height: inherit;
+}
+
+.jp-FormGroup-content fieldset input[type='checkbox'] {
+  position: relative;
+  top: 2px;
+  margin-left: 0;
+}
+
+.jp-FormGroup-content button.jp-mod-styled {
+  cursor: pointer;
+}
+
+.jp-FormGroup-content .checkbox label {
+  cursor: pointer;
+  font-size: var(--jp-content-font-size1);
+}
+
+.jp-FormGroup-content .jp-root > fieldset > legend {
+  display: none;
+}
+
+.jp-FormGroup-content .jp-root > fieldset > p {
+  display: none;
+}
+
+/** copy of `input.jp-mod-styled:focus` style */
+.jp-FormGroup-content fieldset input:focus,
+.jp-FormGroup-content fieldset select:focus {
+  -moz-outline-radius: unset;
+  outline: var(--jp-border-width) solid var(--md-blue-500);
+  outline-offset: -1px;
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-FormGroup-content fieldset input:hover:not(:focus),
+.jp-FormGroup-content fieldset select:hover:not(:focus) {
+  background-color: var(--jp-border-color2);
+}
+
+/* stylelint-enable selector-max-type */
+
+.jp-FormGroup-content .checkbox .field-description {
+  /* Disable default description field for checkbox:
+   because other widgets do not have description fields,
+   we add descriptions to each widget on the field level.
+  */
+  display: none;
+}
+
+.jp-FormGroup-content #root__description {
+  display: none;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator {
+  width: 5px;
+  background-color: var(--jp-brand-color2);
+  margin-top: 0;
+  margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
+  flex-shrink: 0;
+}
+
+.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
+  background-color: var(--jp-error-color0);
+  margin-right: 0.5em;
+}
+
+/* RJSF ARRAY style */
+
+.jp-arrayFieldWrapper legend {
+  font-size: var(--jp-content-font-size2);
+  color: var(--jp-ui-font-color0);
+  flex-basis: 100%;
+  padding: 4px 0;
+  font-weight: var(--jp-content-heading-font-weight);
+  border-bottom: 1px solid var(--jp-border-color2);
+}
+
+.jp-arrayFieldWrapper .field-description {
+  padding: 4px 0;
+  white-space: pre-wrap;
+}
+
+.jp-arrayFieldWrapper .array-item {
+  width: 100%;
+  border: 1px solid var(--jp-border-color2);
+  border-radius: 4px;
+  margin: 4px;
+}
+
+.jp-ArrayOperations {
+  display: flex;
+  margin-left: 8px;
+}
+
+.jp-ArrayOperationsButton {
+  margin: 2px;
+}
+
+.jp-ArrayOperationsButton .jp-icon3[fill] {
+  fill: var(--jp-ui-font-color0);
+}
+
+button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
+  cursor: not-allowed;
+  opacity: 0.5;
+}
+
+/* RJSF form validation error */
+
+.jp-FormGroup-content .validationErrors {
+  color: var(--jp-error-color0);
+}
+
+/* Hide panel level error as duplicated the field level error */
+.jp-FormGroup-content .panel.errors {
+  display: none;
+}
+
+/* RJSF normal content (settings-editor) */
+
+.jp-FormGroup-contentNormal {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
+  margin-left: 7px;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-description {
+  flex-basis: 100%;
+  padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-default {
+  flex-basis: 100%;
+  padding: 4px 7px;
+}
+
+.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
+  font-size: var(--jp-content-font-size1);
+  font-weight: normal;
+  min-width: 120px;
+}
+
+.jp-FormGroup-contentNormal fieldset:not(:first-child) {
+  margin-left: 7px;
+}
+
+.jp-FormGroup-contentNormal .field-array-of-string .array-item {
+  /* Display `jp-ArrayOperations` buttons side-by-side with content except
+    for small screens where flex-wrap will place them one below the other.
+  */
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+}
+
+.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
+  padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+  margin-top: 2px;
+}
+
+/* RJSF compact content (metadata-form) */
+
+.jp-FormGroup-content.jp-FormGroup-contentCompact {
+  width: 100%;
+}
+
+.jp-FormGroup-contentCompact .form-group {
+  display: flex;
+  padding: 0.5em 0.2em 0.5em 0;
+}
+
+.jp-FormGroup-contentCompact
+  .jp-FormGroup-compactTitle
+  .jp-FormGroup-description {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
+  padding-bottom: 0.3em;
+}
+
+.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
+  padding-bottom: 7px;
+}
+
+.jp-FormGroup-contentCompact
+  .jp-objectFieldWrapper
+  .jp-objectFieldWrapper
+  .form-group {
+  padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
+  margin-top: 2px;
+}
+
+.jp-FormGroup-contentCompact ul.error-detail {
+  margin-block-start: 0.5em;
+  margin-block-end: 0.5em;
+  padding-inline-start: 1em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-SidePanel {
+  display: flex;
+  flex-direction: column;
+  min-width: var(--jp-sidebar-min-width);
+  overflow-y: auto;
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+  font-size: var(--jp-ui-font-size1);
+}
+
+.jp-SidePanel-header {
+  flex: 0 0 auto;
+  display: flex;
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  letter-spacing: 1px;
+  margin: 0;
+  padding: 2px;
+  text-transform: uppercase;
+}
+
+.jp-SidePanel-toolbar {
+  flex: 0 0 auto;
+}
+
+.jp-SidePanel-content {
+  flex: 1 1 auto;
+}
+
+.jp-SidePanel-toolbar,
+.jp-AccordionPanel-toolbar {
+  height: var(--jp-private-toolbar-height);
+}
+
+.jp-SidePanel-toolbar.jp-Toolbar-micro {
+  display: none;
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-title {
+  box-sizing: border-box;
+  line-height: 25px;
+  margin: 0;
+  display: flex;
+  align-items: center;
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  font-size: var(--jp-ui-font-size0);
+}
+
+.jp-AccordionPanel-title {
+  cursor: pointer;
+  user-select: none;
+  -moz-user-select: none;
+  -webkit-user-select: none;
+  text-transform: uppercase;
+}
+
+.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
+  /* Title is rotated for horizontal accordion panel using CSS */
+  display: block;
+  transform-origin: top left;
+  transform: rotate(-90deg) translate(-100%);
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
+  user-select: none;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+  overflow: hidden;
+}
+
+.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
+  transform: rotate(-90deg);
+  margin: auto 0;
+  height: 16px;
+}
+
+.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
+  transform: rotate(0deg);
+}
+
+.lm-AccordionPanel .jp-AccordionPanel-toolbar {
+  background: none;
+  box-shadow: none;
+  border: none;
+  margin-left: auto;
+}
+
+.lm-AccordionPanel .lm-SplitPanel-handle:hover {
+  background: var(--jp-layout-color3);
+}
+
+.jp-text-truncated {
+  overflow: hidden;
+  text-overflow: ellipsis;
+  white-space: nowrap;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Spinner {
+  position: absolute;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  z-index: 10;
+  left: 0;
+  top: 0;
+  width: 100%;
+  height: 100%;
+  background: var(--jp-layout-color0);
+  outline: none;
+}
+
+.jp-SpinnerContent {
+  font-size: 10px;
+  margin: 50px auto;
+  text-indent: -9999em;
+  width: 3em;
+  height: 3em;
+  border-radius: 50%;
+  background: var(--jp-brand-color3);
+  background: linear-gradient(
+    to right,
+    #f37626 10%,
+    rgba(255, 255, 255, 0) 42%
+  );
+  position: relative;
+  animation: load3 1s infinite linear, fadeIn 1s;
+}
+
+.jp-SpinnerContent::before {
+  width: 50%;
+  height: 50%;
+  background: #f37626;
+  border-radius: 100% 0 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+  content: '';
+}
+
+.jp-SpinnerContent::after {
+  background: var(--jp-layout-color0);
+  width: 75%;
+  height: 75%;
+  border-radius: 50%;
+  content: '';
+  margin: auto;
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+}
+
+@keyframes fadeIn {
+  0% {
+    opacity: 0;
+  }
+
+  100% {
+    opacity: 1;
+  }
+}
+
+@keyframes load3 {
+  0% {
+    transform: rotate(0deg);
+  }
+
+  100% {
+    transform: rotate(360deg);
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+button.jp-mod-styled {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  border: none;
+  box-sizing: border-box;
+  text-align: center;
+  line-height: 32px;
+  height: 32px;
+  padding: 0 12px;
+  letter-spacing: 0.8px;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+input.jp-mod-styled {
+  background: var(--jp-input-background);
+  height: 28px;
+  box-sizing: border-box;
+  border: var(--jp-border-width) solid var(--jp-border-color1);
+  padding-left: 7px;
+  padding-right: 7px;
+  font-size: var(--jp-ui-font-size2);
+  color: var(--jp-ui-font-color0);
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+input[type='checkbox'].jp-mod-styled {
+  appearance: checkbox;
+  -webkit-appearance: checkbox;
+  -moz-appearance: checkbox;
+  height: auto;
+}
+
+input.jp-mod-styled:focus {
+  border: var(--jp-border-width) solid var(--md-blue-500);
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-select-wrapper {
+  display: flex;
+  position: relative;
+  flex-direction: column;
+  padding: 1px;
+  background-color: var(--jp-layout-color1);
+  box-sizing: border-box;
+  margin-bottom: 12px;
+}
+
+.jp-select-wrapper:not(.multiple) {
+  height: 28px;
+}
+
+.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
+  border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+  background-color: var(--jp-input-active-background);
+}
+
+select.jp-mod-styled:hover {
+  cursor: pointer;
+  color: var(--jp-ui-font-color0);
+  background-color: var(--jp-input-hover-background);
+  box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
+}
+
+select.jp-mod-styled {
+  flex: 1 1 auto;
+  width: 100%;
+  font-size: var(--jp-ui-font-size2);
+  background: var(--jp-input-background);
+  color: var(--jp-ui-font-color0);
+  padding: 0 25px 0 8px;
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  border-radius: 0;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+}
+
+select.jp-mod-styled:not([multiple]) {
+  height: 32px;
+}
+
+select.jp-mod-styled[multiple] {
+  max-height: 200px;
+  overflow-y: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-switch {
+  display: flex;
+  align-items: center;
+  padding-left: 4px;
+  padding-right: 4px;
+  font-size: var(--jp-ui-font-size1);
+  background-color: transparent;
+  color: var(--jp-ui-font-color1);
+  border: none;
+  height: 20px;
+}
+
+.jp-switch:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-switch-label {
+  margin-right: 5px;
+  font-family: var(--jp-ui-font-family);
+}
+
+.jp-switch-track {
+  cursor: pointer;
+  background-color: var(--jp-switch-color, var(--jp-border-color1));
+  -webkit-transition: 0.4s;
+  transition: 0.4s;
+  border-radius: 34px;
+  height: 16px;
+  width: 35px;
+  position: relative;
+}
+
+.jp-switch-track::before {
+  content: '';
+  position: absolute;
+  height: 10px;
+  width: 10px;
+  margin: 3px;
+  left: 0;
+  background-color: var(--jp-ui-inverse-font-color1);
+  -webkit-transition: 0.4s;
+  transition: 0.4s;
+  border-radius: 50%;
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track {
+  background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
+}
+
+.jp-switch[aria-checked='true'] .jp-switch-track::before {
+  /* track width (35) - margins (3 + 3) - thumb width (10) */
+  left: 19px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-toolbar-height: calc(
+    28px + var(--jp-border-width)
+  ); /* leave 28px for content */
+}
+
+.jp-Toolbar {
+  color: var(--jp-ui-font-color1);
+  flex: 0 0 auto;
+  display: flex;
+  flex-direction: row;
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  background: var(--jp-toolbar-background);
+  min-height: var(--jp-toolbar-micro-height);
+  padding: 2px;
+  z-index: 8;
+  overflow-x: hidden;
+}
+
+/* Toolbar items */
+
+.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
+  flex-grow: 1;
+  flex-shrink: 1;
+}
+
+.jp-Toolbar-item.jp-Toolbar-kernelStatus {
+  display: inline-block;
+  width: 32px;
+  background-repeat: no-repeat;
+  background-position: center;
+  background-size: 16px;
+}
+
+.jp-Toolbar > .jp-Toolbar-item {
+  flex: 0 0 auto;
+  display: flex;
+  padding-left: 1px;
+  padding-right: 1px;
+  font-size: var(--jp-ui-font-size1);
+  line-height: var(--jp-private-toolbar-height);
+  height: 100%;
+}
+
+/* Toolbar buttons */
+
+/* This is the div we use to wrap the react component into a Widget */
+div.jp-ToolbarButton {
+  color: transparent;
+  border: none;
+  box-sizing: border-box;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  padding: 0;
+  margin: 0;
+}
+
+button.jp-ToolbarButtonComponent {
+  background: var(--jp-layout-color1);
+  border: none;
+  box-sizing: border-box;
+  outline: none;
+  appearance: none;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  padding: 0 6px;
+  margin: 0;
+  height: 24px;
+  border-radius: var(--jp-border-radius);
+  display: flex;
+  align-items: center;
+  text-align: center;
+  font-size: 14px;
+  min-width: unset;
+  min-height: unset;
+}
+
+button.jp-ToolbarButtonComponent:disabled {
+  opacity: 0.4;
+}
+
+button.jp-ToolbarButtonComponent > span {
+  padding: 0;
+  flex: 0 0 auto;
+}
+
+button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
+  font-size: var(--jp-ui-font-size1);
+  line-height: 100%;
+  padding-left: 2px;
+  color: var(--jp-ui-font-color1);
+  font-family: var(--jp-ui-font-family);
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+  .jp-MainAreaWidget
+  > .jp-Toolbar.jp-Toolbar-micro {
+  padding: 0;
+  min-height: 0;
+}
+
+#jp-main-dock-panel[data-mode='single-document']
+  .jp-MainAreaWidget
+  > .jp-Toolbar {
+  border: none;
+  box-shadow: none;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-WindowedPanel-outer {
+  position: relative;
+  overflow-y: auto;
+}
+
+.jp-WindowedPanel-inner {
+  position: relative;
+}
+
+.jp-WindowedPanel-window {
+  position: absolute;
+  left: 0;
+  right: 0;
+  overflow: visible;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/* Sibling imports */
+
+body {
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+}
+
+/* Disable native link decoration styles everywhere outside of dialog boxes */
+a {
+  text-decoration: unset;
+  color: unset;
+}
+
+a:hover {
+  text-decoration: unset;
+  color: unset;
+}
+
+/* Accessibility for links inside dialog box text */
+.jp-Dialog-content a {
+  text-decoration: revert;
+  color: var(--jp-content-link-color);
+}
+
+.jp-Dialog-content a:hover {
+  text-decoration: revert;
+}
+
+/* Styles for ui-components */
+.jp-Button {
+  color: var(--jp-ui-font-color2);
+  border-radius: var(--jp-border-radius);
+  padding: 0 12px;
+  font-size: var(--jp-ui-font-size1);
+
+  /* Copy from blueprint 3 */
+  display: inline-flex;
+  flex-direction: row;
+  border: none;
+  cursor: pointer;
+  align-items: center;
+  justify-content: center;
+  text-align: left;
+  vertical-align: middle;
+  min-height: 30px;
+  min-width: 30px;
+}
+
+.jp-Button:disabled {
+  cursor: not-allowed;
+}
+
+.jp-Button:empty {
+  padding: 0 !important;
+}
+
+.jp-Button.jp-mod-small {
+  min-height: 24px;
+  min-width: 24px;
+  font-size: 12px;
+  padding: 0 7px;
+}
+
+/* Use our own theme for hover styles */
+.jp-Button.jp-mod-minimal:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-Button.jp-mod-minimal {
+  background: none;
+}
+
+.jp-InputGroup {
+  display: block;
+  position: relative;
+}
+
+.jp-InputGroup input {
+  box-sizing: border-box;
+  border: none;
+  border-radius: 0;
+  background-color: transparent;
+  color: var(--jp-ui-font-color0);
+  box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+  padding-bottom: 0;
+  padding-top: 0;
+  padding-left: 10px;
+  padding-right: 28px;
+  position: relative;
+  width: 100%;
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  appearance: none;
+  font-size: 14px;
+  font-weight: 400;
+  height: 30px;
+  line-height: 30px;
+  outline: none;
+  vertical-align: middle;
+}
+
+.jp-InputGroup input:focus {
+  box-shadow: inset 0 0 0 var(--jp-border-width)
+      var(--jp-input-active-box-shadow-color),
+    inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-InputGroup input:disabled {
+  cursor: not-allowed;
+  resize: block;
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input:disabled ~ span {
+  cursor: not-allowed;
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroup input::placeholder,
+input::placeholder {
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-InputGroupAction {
+  position: absolute;
+  bottom: 1px;
+  right: 0;
+  padding: 6px;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select {
+  background-color: initial;
+  border: none;
+  border-radius: 0;
+  box-shadow: none;
+  color: var(--jp-ui-font-color0);
+  display: block;
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  height: 24px;
+  line-height: 14px;
+  padding: 0 25px 0 10px;
+  text-align: left;
+  -moz-appearance: none;
+  -webkit-appearance: none;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled {
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color2);
+  cursor: not-allowed;
+  resize: block;
+}
+
+.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
+  cursor: not-allowed;
+}
+
+/* Use our own theme for hover and option styles */
+/* stylelint-disable-next-line selector-max-type */
+.jp-HTMLSelect.jp-DefaultStyle select:hover,
+.jp-HTMLSelect.jp-DefaultStyle select > option {
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color0);
+}
+
+select {
+  box-sizing: border-box;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-StatusBar-Widget {
+  display: flex;
+  align-items: center;
+  background: var(--jp-layout-color2);
+  min-height: var(--jp-statusbar-height);
+  justify-content: space-between;
+  padding: 0 10px;
+}
+
+.jp-StatusBar-Left {
+  display: flex;
+  align-items: center;
+  flex-direction: row;
+}
+
+.jp-StatusBar-Middle {
+  display: flex;
+  align-items: center;
+}
+
+.jp-StatusBar-Right {
+  display: flex;
+  align-items: center;
+  flex-direction: row-reverse;
+}
+
+.jp-StatusBar-Item {
+  max-height: var(--jp-statusbar-height);
+  margin: 0 2px;
+  height: var(--jp-statusbar-height);
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  color: var(--jp-ui-font-color1);
+  padding: 0 6px;
+}
+
+.jp-mod-highlighted:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-mod-clicked {
+  background-color: var(--jp-brand-color1);
+}
+
+.jp-mod-clicked:hover {
+  background-color: var(--jp-brand-color0);
+}
+
+.jp-mod-clicked .jp-StatusBar-TextItem {
+  color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-StatusBar-HoverItem {
+  box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
+}
+
+.jp-StatusBar-TextItem {
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  line-height: 24px;
+  color: var(--jp-ui-font-color1);
+}
+
+.jp-StatusBar-GroupItem {
+  display: flex;
+  align-items: center;
+  flex-direction: row;
+}
+
+.jp-Statusbar-ProgressCircle svg {
+  display: block;
+  margin: 0 auto;
+  width: 16px;
+  height: 24px;
+  align-self: normal;
+}
+
+.jp-Statusbar-ProgressCircle path {
+  fill: var(--jp-inverse-layout-color3);
+}
+
+.jp-Statusbar-ProgressBar-progress-bar {
+  height: 10px;
+  width: 100px;
+  border: solid 0.25px var(--jp-brand-color2);
+  border-radius: 3px;
+  overflow: hidden;
+  align-self: center;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar > div {
+  background-color: var(--jp-brand-color2);
+  background-image: linear-gradient(
+    -45deg,
+    rgba(255, 255, 255, 0.2) 25%,
+    transparent 25%,
+    transparent 50%,
+    rgba(255, 255, 255, 0.2) 50%,
+    rgba(255, 255, 255, 0.2) 75%,
+    transparent 75%,
+    transparent
+  );
+  background-size: 40px 40px;
+  float: left;
+  width: 0%;
+  height: 100%;
+  font-size: 12px;
+  line-height: 14px;
+  color: #fff;
+  text-align: center;
+  animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
+}
+
+.jp-Statusbar-ProgressBar-progress-bar p {
+  color: var(--jp-ui-font-color1);
+  font-family: var(--jp-ui-font-family);
+  font-size: var(--jp-ui-font-size1);
+  line-height: 10px;
+  width: 100px;
+}
+
+@keyframes jp-Statusbar-ExecutionTime-progress-bar {
+  0% {
+    background-position: 0 0;
+  }
+
+  100% {
+    background-position: 40px 40px;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-commandpalette-search-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Overall styles
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette {
+  padding-bottom: 0;
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+
+  /* This is needed so that all font sizing of children done in ems is
+   * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Modal variant
+|----------------------------------------------------------------------------*/
+
+.jp-ModalCommandPalette {
+  position: absolute;
+  z-index: 10000;
+  top: 38px;
+  left: 30%;
+  margin: 0;
+  padding: 4px;
+  width: 40%;
+  box-shadow: var(--jp-elevation-z4);
+  border-radius: 4px;
+  background: var(--jp-layout-color0);
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette {
+  max-height: 40vh;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
+  display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
+  display: none;
+}
+
+.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
+  margin-left: 4px;
+  margin-right: 4px;
+}
+
+.jp-ModalCommandPalette
+  .lm-CommandPalette
+  .lm-CommandPalette-item.lm-mod-disabled {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Search
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-search {
+  padding: 4px;
+  background-color: var(--jp-layout-color1);
+  z-index: 2;
+}
+
+.lm-CommandPalette-wrapper {
+  overflow: overlay;
+  padding: 0 9px;
+  background-color: var(--jp-input-active-background);
+  height: 30px;
+  box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
+}
+
+.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
+  box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
+    inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
+}
+
+.jp-SearchIconGroup {
+  color: white;
+  background-color: var(--jp-brand-color1);
+  position: absolute;
+  top: 4px;
+  right: 4px;
+  padding: 5px 5px 1px;
+}
+
+.jp-SearchIconGroup svg {
+  height: 20px;
+  width: 20px;
+}
+
+.jp-SearchIconGroup .jp-icon3[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-input {
+  background: transparent;
+  width: calc(100% - 18px);
+  float: left;
+  border: none;
+  outline: none;
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  line-height: var(--jp-private-commandpalette-search-height);
+}
+
+.lm-CommandPalette-input::-webkit-input-placeholder,
+.lm-CommandPalette-input::-moz-placeholder,
+.lm-CommandPalette-input:-ms-input-placeholder {
+  color: var(--jp-ui-font-color2);
+  font-size: var(--jp-ui-font-size1);
+}
+
+/*-----------------------------------------------------------------------------
+| Results
+|----------------------------------------------------------------------------*/
+
+.lm-CommandPalette-header:first-child {
+  margin-top: 0;
+}
+
+.lm-CommandPalette-header {
+  border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
+  color: var(--jp-ui-font-color1);
+  cursor: pointer;
+  display: flex;
+  font-size: var(--jp-ui-font-size0);
+  font-weight: 600;
+  letter-spacing: 1px;
+  margin-top: 8px;
+  padding: 8px 0 8px 12px;
+  text-transform: uppercase;
+}
+
+.lm-CommandPalette-header.lm-mod-active {
+  background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-header > mark {
+  background-color: transparent;
+  font-weight: bold;
+  color: var(--jp-ui-font-color1);
+}
+
+.lm-CommandPalette-item {
+  padding: 4px 12px 4px 4px;
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  font-weight: 400;
+  display: flex;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled {
+  color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item.lm-mod-active {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
+  fill: var(--jp-layout-color0);
+}
+
+.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
+  background: var(--jp-layout-color2);
+}
+
+.lm-CommandPalette-itemContent {
+  overflow: hidden;
+}
+
+.lm-CommandPalette-itemLabel > mark {
+  color: var(--jp-ui-font-color0);
+  background-color: transparent;
+  font-weight: bold;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled mark {
+  color: var(--jp-ui-font-color2);
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
+  margin: 0 4px 0 0;
+  position: relative;
+  width: 16px;
+  top: 2px;
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
+  opacity: 0.6;
+}
+
+.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
+  flex: 0 0 auto;
+}
+
+.lm-CommandPalette-itemCaption {
+  display: none;
+}
+
+.lm-CommandPalette-content {
+  background-color: var(--jp-layout-color1);
+}
+
+.lm-CommandPalette-content:empty::after {
+  content: 'No results';
+  margin: auto;
+  margin-top: 20px;
+  width: 100px;
+  display: block;
+  font-size: var(--jp-ui-font-size2);
+  font-family: var(--jp-ui-font-family);
+  font-weight: lighter;
+}
+
+.lm-CommandPalette-emptyMessage {
+  text-align: center;
+  margin-top: 24px;
+  line-height: 1.32;
+  padding: 0 8px;
+  color: var(--jp-content-font-color3);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Dialog {
+  position: absolute;
+  z-index: 10000;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: center;
+  top: 0;
+  left: 0;
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  height: 100%;
+  background: var(--jp-dialog-background);
+}
+
+.jp-Dialog-content {
+  display: flex;
+  flex-direction: column;
+  margin-left: auto;
+  margin-right: auto;
+  background: var(--jp-layout-color1);
+  padding: 24px 24px 12px;
+  min-width: 300px;
+  min-height: 150px;
+  max-width: 1000px;
+  max-height: 500px;
+  box-sizing: border-box;
+  box-shadow: var(--jp-elevation-z20);
+  word-wrap: break-word;
+  border-radius: var(--jp-border-radius);
+
+  /* This is needed so that all font sizing of children done in ems is
+   * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color1);
+  resize: both;
+}
+
+.jp-Dialog-content.jp-Dialog-content-small {
+  max-width: 500px;
+}
+
+.jp-Dialog-button {
+  overflow: visible;
+}
+
+button.jp-Dialog-button:focus {
+  outline: 1px solid var(--jp-brand-color1);
+  outline-offset: 4px;
+  -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button:focus::-moz-focus-inner {
+  border: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+  outline-offset: 4px;
+  -moz-outline-radius: 0;
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
+  outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
+  outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
+}
+
+button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
+  outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
+}
+
+button.jp-Dialog-close-button {
+  padding: 0;
+  height: 100%;
+  min-width: unset;
+  min-height: unset;
+}
+
+.jp-Dialog-header {
+  display: flex;
+  justify-content: space-between;
+  flex: 0 0 auto;
+  padding-bottom: 12px;
+  font-size: var(--jp-ui-font-size3);
+  font-weight: 400;
+  color: var(--jp-ui-font-color1);
+}
+
+.jp-Dialog-body {
+  display: flex;
+  flex-direction: column;
+  flex: 1 1 auto;
+  font-size: var(--jp-ui-font-size1);
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  overflow: auto;
+}
+
+.jp-Dialog-footer {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-end;
+  align-items: center;
+  flex: 0 0 auto;
+  margin-left: -12px;
+  margin-right: -12px;
+  padding: 12px;
+}
+
+.jp-Dialog-checkbox {
+  padding-right: 5px;
+}
+
+.jp-Dialog-checkbox > input:focus-visible {
+  outline: 1px solid var(--jp-input-active-border-color);
+  outline-offset: 1px;
+}
+
+.jp-Dialog-spacer {
+  flex: 1 1 auto;
+}
+
+.jp-Dialog-title {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+.jp-Dialog-body > .jp-select-wrapper {
+  width: 100%;
+}
+
+.jp-Dialog-body > button {
+  padding: 0 16px;
+}
+
+.jp-Dialog-body > label {
+  line-height: 1.4;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-Dialog-button.jp-mod-styled:not(:last-child) {
+  margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Input-Boolean-Dialog {
+  flex-direction: row-reverse;
+  align-items: end;
+  width: 100%;
+}
+
+.jp-Input-Boolean-Dialog > label {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MainAreaWidget > :focus {
+  outline: none;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error {
+  padding: 6px;
+}
+
+.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
+  width: auto;
+  padding: 10px;
+  background: var(--jp-error-color3);
+  border: var(--jp-border-width) solid var(--jp-error-color1);
+  border-radius: var(--jp-border-radius);
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  white-space: pre-wrap;
+  word-wrap: break-word;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/**
+ * google-material-color v1.2.6
+ * https://github.com/danlevan/google-material-color
+ */
+:root {
+  --md-red-50: #ffebee;
+  --md-red-100: #ffcdd2;
+  --md-red-200: #ef9a9a;
+  --md-red-300: #e57373;
+  --md-red-400: #ef5350;
+  --md-red-500: #f44336;
+  --md-red-600: #e53935;
+  --md-red-700: #d32f2f;
+  --md-red-800: #c62828;
+  --md-red-900: #b71c1c;
+  --md-red-A100: #ff8a80;
+  --md-red-A200: #ff5252;
+  --md-red-A400: #ff1744;
+  --md-red-A700: #d50000;
+  --md-pink-50: #fce4ec;
+  --md-pink-100: #f8bbd0;
+  --md-pink-200: #f48fb1;
+  --md-pink-300: #f06292;
+  --md-pink-400: #ec407a;
+  --md-pink-500: #e91e63;
+  --md-pink-600: #d81b60;
+  --md-pink-700: #c2185b;
+  --md-pink-800: #ad1457;
+  --md-pink-900: #880e4f;
+  --md-pink-A100: #ff80ab;
+  --md-pink-A200: #ff4081;
+  --md-pink-A400: #f50057;
+  --md-pink-A700: #c51162;
+  --md-purple-50: #f3e5f5;
+  --md-purple-100: #e1bee7;
+  --md-purple-200: #ce93d8;
+  --md-purple-300: #ba68c8;
+  --md-purple-400: #ab47bc;
+  --md-purple-500: #9c27b0;
+  --md-purple-600: #8e24aa;
+  --md-purple-700: #7b1fa2;
+  --md-purple-800: #6a1b9a;
+  --md-purple-900: #4a148c;
+  --md-purple-A100: #ea80fc;
+  --md-purple-A200: #e040fb;
+  --md-purple-A400: #d500f9;
+  --md-purple-A700: #a0f;
+  --md-deep-purple-50: #ede7f6;
+  --md-deep-purple-100: #d1c4e9;
+  --md-deep-purple-200: #b39ddb;
+  --md-deep-purple-300: #9575cd;
+  --md-deep-purple-400: #7e57c2;
+  --md-deep-purple-500: #673ab7;
+  --md-deep-purple-600: #5e35b1;
+  --md-deep-purple-700: #512da8;
+  --md-deep-purple-800: #4527a0;
+  --md-deep-purple-900: #311b92;
+  --md-deep-purple-A100: #b388ff;
+  --md-deep-purple-A200: #7c4dff;
+  --md-deep-purple-A400: #651fff;
+  --md-deep-purple-A700: #6200ea;
+  --md-indigo-50: #e8eaf6;
+  --md-indigo-100: #c5cae9;
+  --md-indigo-200: #9fa8da;
+  --md-indigo-300: #7986cb;
+  --md-indigo-400: #5c6bc0;
+  --md-indigo-500: #3f51b5;
+  --md-indigo-600: #3949ab;
+  --md-indigo-700: #303f9f;
+  --md-indigo-800: #283593;
+  --md-indigo-900: #1a237e;
+  --md-indigo-A100: #8c9eff;
+  --md-indigo-A200: #536dfe;
+  --md-indigo-A400: #3d5afe;
+  --md-indigo-A700: #304ffe;
+  --md-blue-50: #e3f2fd;
+  --md-blue-100: #bbdefb;
+  --md-blue-200: #90caf9;
+  --md-blue-300: #64b5f6;
+  --md-blue-400: #42a5f5;
+  --md-blue-500: #2196f3;
+  --md-blue-600: #1e88e5;
+  --md-blue-700: #1976d2;
+  --md-blue-800: #1565c0;
+  --md-blue-900: #0d47a1;
+  --md-blue-A100: #82b1ff;
+  --md-blue-A200: #448aff;
+  --md-blue-A400: #2979ff;
+  --md-blue-A700: #2962ff;
+  --md-light-blue-50: #e1f5fe;
+  --md-light-blue-100: #b3e5fc;
+  --md-light-blue-200: #81d4fa;
+  --md-light-blue-300: #4fc3f7;
+  --md-light-blue-400: #29b6f6;
+  --md-light-blue-500: #03a9f4;
+  --md-light-blue-600: #039be5;
+  --md-light-blue-700: #0288d1;
+  --md-light-blue-800: #0277bd;
+  --md-light-blue-900: #01579b;
+  --md-light-blue-A100: #80d8ff;
+  --md-light-blue-A200: #40c4ff;
+  --md-light-blue-A400: #00b0ff;
+  --md-light-blue-A700: #0091ea;
+  --md-cyan-50: #e0f7fa;
+  --md-cyan-100: #b2ebf2;
+  --md-cyan-200: #80deea;
+  --md-cyan-300: #4dd0e1;
+  --md-cyan-400: #26c6da;
+  --md-cyan-500: #00bcd4;
+  --md-cyan-600: #00acc1;
+  --md-cyan-700: #0097a7;
+  --md-cyan-800: #00838f;
+  --md-cyan-900: #006064;
+  --md-cyan-A100: #84ffff;
+  --md-cyan-A200: #18ffff;
+  --md-cyan-A400: #00e5ff;
+  --md-cyan-A700: #00b8d4;
+  --md-teal-50: #e0f2f1;
+  --md-teal-100: #b2dfdb;
+  --md-teal-200: #80cbc4;
+  --md-teal-300: #4db6ac;
+  --md-teal-400: #26a69a;
+  --md-teal-500: #009688;
+  --md-teal-600: #00897b;
+  --md-teal-700: #00796b;
+  --md-teal-800: #00695c;
+  --md-teal-900: #004d40;
+  --md-teal-A100: #a7ffeb;
+  --md-teal-A200: #64ffda;
+  --md-teal-A400: #1de9b6;
+  --md-teal-A700: #00bfa5;
+  --md-green-50: #e8f5e9;
+  --md-green-100: #c8e6c9;
+  --md-green-200: #a5d6a7;
+  --md-green-300: #81c784;
+  --md-green-400: #66bb6a;
+  --md-green-500: #4caf50;
+  --md-green-600: #43a047;
+  --md-green-700: #388e3c;
+  --md-green-800: #2e7d32;
+  --md-green-900: #1b5e20;
+  --md-green-A100: #b9f6ca;
+  --md-green-A200: #69f0ae;
+  --md-green-A400: #00e676;
+  --md-green-A700: #00c853;
+  --md-light-green-50: #f1f8e9;
+  --md-light-green-100: #dcedc8;
+  --md-light-green-200: #c5e1a5;
+  --md-light-green-300: #aed581;
+  --md-light-green-400: #9ccc65;
+  --md-light-green-500: #8bc34a;
+  --md-light-green-600: #7cb342;
+  --md-light-green-700: #689f38;
+  --md-light-green-800: #558b2f;
+  --md-light-green-900: #33691e;
+  --md-light-green-A100: #ccff90;
+  --md-light-green-A200: #b2ff59;
+  --md-light-green-A400: #76ff03;
+  --md-light-green-A700: #64dd17;
+  --md-lime-50: #f9fbe7;
+  --md-lime-100: #f0f4c3;
+  --md-lime-200: #e6ee9c;
+  --md-lime-300: #dce775;
+  --md-lime-400: #d4e157;
+  --md-lime-500: #cddc39;
+  --md-lime-600: #c0ca33;
+  --md-lime-700: #afb42b;
+  --md-lime-800: #9e9d24;
+  --md-lime-900: #827717;
+  --md-lime-A100: #f4ff81;
+  --md-lime-A200: #eeff41;
+  --md-lime-A400: #c6ff00;
+  --md-lime-A700: #aeea00;
+  --md-yellow-50: #fffde7;
+  --md-yellow-100: #fff9c4;
+  --md-yellow-200: #fff59d;
+  --md-yellow-300: #fff176;
+  --md-yellow-400: #ffee58;
+  --md-yellow-500: #ffeb3b;
+  --md-yellow-600: #fdd835;
+  --md-yellow-700: #fbc02d;
+  --md-yellow-800: #f9a825;
+  --md-yellow-900: #f57f17;
+  --md-yellow-A100: #ffff8d;
+  --md-yellow-A200: #ff0;
+  --md-yellow-A400: #ffea00;
+  --md-yellow-A700: #ffd600;
+  --md-amber-50: #fff8e1;
+  --md-amber-100: #ffecb3;
+  --md-amber-200: #ffe082;
+  --md-amber-300: #ffd54f;
+  --md-amber-400: #ffca28;
+  --md-amber-500: #ffc107;
+  --md-amber-600: #ffb300;
+  --md-amber-700: #ffa000;
+  --md-amber-800: #ff8f00;
+  --md-amber-900: #ff6f00;
+  --md-amber-A100: #ffe57f;
+  --md-amber-A200: #ffd740;
+  --md-amber-A400: #ffc400;
+  --md-amber-A700: #ffab00;
+  --md-orange-50: #fff3e0;
+  --md-orange-100: #ffe0b2;
+  --md-orange-200: #ffcc80;
+  --md-orange-300: #ffb74d;
+  --md-orange-400: #ffa726;
+  --md-orange-500: #ff9800;
+  --md-orange-600: #fb8c00;
+  --md-orange-700: #f57c00;
+  --md-orange-800: #ef6c00;
+  --md-orange-900: #e65100;
+  --md-orange-A100: #ffd180;
+  --md-orange-A200: #ffab40;
+  --md-orange-A400: #ff9100;
+  --md-orange-A700: #ff6d00;
+  --md-deep-orange-50: #fbe9e7;
+  --md-deep-orange-100: #ffccbc;
+  --md-deep-orange-200: #ffab91;
+  --md-deep-orange-300: #ff8a65;
+  --md-deep-orange-400: #ff7043;
+  --md-deep-orange-500: #ff5722;
+  --md-deep-orange-600: #f4511e;
+  --md-deep-orange-700: #e64a19;
+  --md-deep-orange-800: #d84315;
+  --md-deep-orange-900: #bf360c;
+  --md-deep-orange-A100: #ff9e80;
+  --md-deep-orange-A200: #ff6e40;
+  --md-deep-orange-A400: #ff3d00;
+  --md-deep-orange-A700: #dd2c00;
+  --md-brown-50: #efebe9;
+  --md-brown-100: #d7ccc8;
+  --md-brown-200: #bcaaa4;
+  --md-brown-300: #a1887f;
+  --md-brown-400: #8d6e63;
+  --md-brown-500: #795548;
+  --md-brown-600: #6d4c41;
+  --md-brown-700: #5d4037;
+  --md-brown-800: #4e342e;
+  --md-brown-900: #3e2723;
+  --md-grey-50: #fafafa;
+  --md-grey-100: #f5f5f5;
+  --md-grey-200: #eee;
+  --md-grey-300: #e0e0e0;
+  --md-grey-400: #bdbdbd;
+  --md-grey-500: #9e9e9e;
+  --md-grey-600: #757575;
+  --md-grey-700: #616161;
+  --md-grey-800: #424242;
+  --md-grey-900: #212121;
+  --md-blue-grey-50: #eceff1;
+  --md-blue-grey-100: #cfd8dc;
+  --md-blue-grey-200: #b0bec5;
+  --md-blue-grey-300: #90a4ae;
+  --md-blue-grey-400: #78909c;
+  --md-blue-grey-500: #607d8b;
+  --md-blue-grey-600: #546e7a;
+  --md-blue-grey-700: #455a64;
+  --md-blue-grey-800: #37474f;
+  --md-blue-grey-900: #263238;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2017, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| RenderedText
+|----------------------------------------------------------------------------*/
+
+:root {
+  /* This is the padding value to fill the gaps between lines containing spans with background color. */
+  --jp-private-code-span-padding: calc(
+    (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
+  );
+}
+
+.jp-RenderedText {
+  text-align: left;
+  padding-left: var(--jp-code-padding);
+  line-height: var(--jp-code-line-height);
+  font-family: var(--jp-code-font-family);
+}
+
+.jp-RenderedText pre,
+.jp-RenderedJavaScript pre,
+.jp-RenderedHTMLCommon pre {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-code-font-size);
+  border: none;
+  margin: 0;
+  padding: 0;
+}
+
+.jp-RenderedText pre a:link {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:hover {
+  text-decoration: underline;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedText pre a:visited {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+/* console foregrounds and backgrounds */
+.jp-RenderedText pre .ansi-black-fg {
+  color: #3e424d;
+}
+
+.jp-RenderedText pre .ansi-red-fg {
+  color: #e75c58;
+}
+
+.jp-RenderedText pre .ansi-green-fg {
+  color: #00a250;
+}
+
+.jp-RenderedText pre .ansi-yellow-fg {
+  color: #ddb62b;
+}
+
+.jp-RenderedText pre .ansi-blue-fg {
+  color: #208ffb;
+}
+
+.jp-RenderedText pre .ansi-magenta-fg {
+  color: #d160c4;
+}
+
+.jp-RenderedText pre .ansi-cyan-fg {
+  color: #60c6c8;
+}
+
+.jp-RenderedText pre .ansi-white-fg {
+  color: #c5c1b4;
+}
+
+.jp-RenderedText pre .ansi-black-bg {
+  background-color: #3e424d;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-bg {
+  background-color: #e75c58;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-bg {
+  background-color: #00a250;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-bg {
+  background-color: #ddb62b;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-bg {
+  background-color: #208ffb;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-bg {
+  background-color: #d160c4;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-bg {
+  background-color: #60c6c8;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-bg {
+  background-color: #c5c1b4;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-black-intense-fg {
+  color: #282c36;
+}
+
+.jp-RenderedText pre .ansi-red-intense-fg {
+  color: #b22b31;
+}
+
+.jp-RenderedText pre .ansi-green-intense-fg {
+  color: #007427;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-fg {
+  color: #b27d12;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-fg {
+  color: #0065ca;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-fg {
+  color: #a03196;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-fg {
+  color: #258f8f;
+}
+
+.jp-RenderedText pre .ansi-white-intense-fg {
+  color: #a1a6b2;
+}
+
+.jp-RenderedText pre .ansi-black-intense-bg {
+  background-color: #282c36;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-red-intense-bg {
+  background-color: #b22b31;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-green-intense-bg {
+  background-color: #007427;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-yellow-intense-bg {
+  background-color: #b27d12;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-blue-intense-bg {
+  background-color: #0065ca;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-magenta-intense-bg {
+  background-color: #a03196;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-cyan-intense-bg {
+  background-color: #258f8f;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-white-intense-bg {
+  background-color: #a1a6b2;
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-default-inverse-fg {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+.jp-RenderedText pre .ansi-default-inverse-bg {
+  background-color: var(--jp-inverse-layout-color0);
+  padding: var(--jp-private-code-span-padding) 0;
+}
+
+.jp-RenderedText pre .ansi-bold {
+  font-weight: bold;
+}
+
+.jp-RenderedText pre .ansi-underline {
+  text-decoration: underline;
+}
+
+.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
+  background: var(--jp-rendermime-error-background);
+  padding-top: var(--jp-code-padding);
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedLatex
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedLatex {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-content-font-size1);
+  line-height: var(--jp-content-line-height);
+}
+
+/* Left-justify outputs.*/
+.jp-OutputArea-output.jp-RenderedLatex {
+  padding: var(--jp-code-padding);
+  text-align: left;
+}
+
+/*-----------------------------------------------------------------------------
+| RenderedHTML
+|----------------------------------------------------------------------------*/
+
+.jp-RenderedHTMLCommon {
+  color: var(--jp-content-font-color1);
+  font-family: var(--jp-content-font-family);
+  font-size: var(--jp-content-font-size1);
+  line-height: var(--jp-content-line-height);
+
+  /* Give a bit more R padding on Markdown text to keep line lengths reasonable */
+  padding-right: 20px;
+}
+
+.jp-RenderedHTMLCommon em {
+  font-style: italic;
+}
+
+.jp-RenderedHTMLCommon strong {
+  font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon u {
+  text-decoration: underline;
+}
+
+.jp-RenderedHTMLCommon a:link {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:hover {
+  text-decoration: underline;
+  color: var(--jp-content-link-color);
+}
+
+.jp-RenderedHTMLCommon a:visited {
+  text-decoration: none;
+  color: var(--jp-content-link-color);
+}
+
+/* Headings */
+
+.jp-RenderedHTMLCommon h1,
+.jp-RenderedHTMLCommon h2,
+.jp-RenderedHTMLCommon h3,
+.jp-RenderedHTMLCommon h4,
+.jp-RenderedHTMLCommon h5,
+.jp-RenderedHTMLCommon h6 {
+  line-height: var(--jp-content-heading-line-height);
+  font-weight: var(--jp-content-heading-font-weight);
+  font-style: normal;
+  margin: var(--jp-content-heading-margin-top) 0
+    var(--jp-content-heading-margin-bottom) 0;
+}
+
+.jp-RenderedHTMLCommon h1:first-child,
+.jp-RenderedHTMLCommon h2:first-child,
+.jp-RenderedHTMLCommon h3:first-child,
+.jp-RenderedHTMLCommon h4:first-child,
+.jp-RenderedHTMLCommon h5:first-child,
+.jp-RenderedHTMLCommon h6:first-child {
+  margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
+}
+
+.jp-RenderedHTMLCommon h1:last-child,
+.jp-RenderedHTMLCommon h2:last-child,
+.jp-RenderedHTMLCommon h3:last-child,
+.jp-RenderedHTMLCommon h4:last-child,
+.jp-RenderedHTMLCommon h5:last-child,
+.jp-RenderedHTMLCommon h6:last-child {
+  margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
+}
+
+.jp-RenderedHTMLCommon h1 {
+  font-size: var(--jp-content-font-size5);
+}
+
+.jp-RenderedHTMLCommon h2 {
+  font-size: var(--jp-content-font-size4);
+}
+
+.jp-RenderedHTMLCommon h3 {
+  font-size: var(--jp-content-font-size3);
+}
+
+.jp-RenderedHTMLCommon h4 {
+  font-size: var(--jp-content-font-size2);
+}
+
+.jp-RenderedHTMLCommon h5 {
+  font-size: var(--jp-content-font-size1);
+}
+
+.jp-RenderedHTMLCommon h6 {
+  font-size: var(--jp-content-font-size0);
+}
+
+/* Lists */
+
+/* stylelint-disable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon ul:not(.list-inline),
+.jp-RenderedHTMLCommon ol:not(.list-inline) {
+  padding-left: 2em;
+}
+
+.jp-RenderedHTMLCommon ul {
+  list-style: disc;
+}
+
+.jp-RenderedHTMLCommon ul ul {
+  list-style: square;
+}
+
+.jp-RenderedHTMLCommon ul ul ul {
+  list-style: circle;
+}
+
+.jp-RenderedHTMLCommon ol {
+  list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol ol {
+  list-style: upper-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol {
+  list-style: lower-alpha;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol {
+  list-style: lower-roman;
+}
+
+.jp-RenderedHTMLCommon ol ol ol ol ol {
+  list-style: decimal;
+}
+
+.jp-RenderedHTMLCommon ol,
+.jp-RenderedHTMLCommon ul {
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon ul ul,
+.jp-RenderedHTMLCommon ul ol,
+.jp-RenderedHTMLCommon ol ul,
+.jp-RenderedHTMLCommon ol ol {
+  margin-bottom: 0;
+}
+
+/* stylelint-enable selector-max-type, selector-max-compound-selectors */
+
+.jp-RenderedHTMLCommon hr {
+  color: var(--jp-border-color2);
+  background-color: var(--jp-border-color1);
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon > pre {
+  margin: 1.5em 2em;
+}
+
+.jp-RenderedHTMLCommon pre,
+.jp-RenderedHTMLCommon code {
+  border: 0;
+  background-color: var(--jp-layout-color0);
+  color: var(--jp-content-font-color1);
+  font-family: var(--jp-code-font-family);
+  font-size: inherit;
+  line-height: var(--jp-code-line-height);
+  padding: 0;
+  white-space: pre-wrap;
+}
+
+.jp-RenderedHTMLCommon :not(pre) > code {
+  background-color: var(--jp-layout-color2);
+  padding: 1px 5px;
+}
+
+/* Tables */
+
+.jp-RenderedHTMLCommon table {
+  border-collapse: collapse;
+  border-spacing: 0;
+  border: none;
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  table-layout: fixed;
+  margin-left: auto;
+  margin-bottom: 1em;
+  margin-right: auto;
+}
+
+.jp-RenderedHTMLCommon thead {
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+  vertical-align: bottom;
+}
+
+.jp-RenderedHTMLCommon td,
+.jp-RenderedHTMLCommon th,
+.jp-RenderedHTMLCommon tr {
+  vertical-align: middle;
+  padding: 0.5em;
+  line-height: normal;
+  white-space: normal;
+  max-width: none;
+  border: none;
+}
+
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
+.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
+  max-width: none;
+}
+
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
+:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
+  text-align: right;
+}
+
+.jp-RenderedHTMLCommon th {
+  font-weight: bold;
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
+  background: var(--jp-layout-color0);
+}
+
+.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
+  background: var(--jp-rendermime-table-row-background);
+}
+
+.jp-RenderedHTMLCommon tbody tr:hover {
+  background: var(--jp-rendermime-table-row-hover-background);
+}
+
+.jp-RenderedHTMLCommon p {
+  text-align: left;
+  margin: 0;
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon img {
+  -moz-force-broken-image-icon: 1;
+}
+
+/* Restrict to direct children as other images could be nested in other content. */
+.jp-RenderedHTMLCommon > img {
+  display: block;
+  margin-left: 0;
+  margin-right: 0;
+  margin-bottom: 1em;
+}
+
+/* Change color behind transparent images if they need it... */
+[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
+  background-color: var(--jp-inverse-layout-color1);
+}
+
+[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
+  background-color: var(--jp-inverse-layout-color1);
+}
+
+.jp-RenderedHTMLCommon img,
+.jp-RenderedImage img,
+.jp-RenderedHTMLCommon svg,
+.jp-RenderedSVG svg {
+  max-width: 100%;
+  height: auto;
+}
+
+.jp-RenderedHTMLCommon img.jp-mod-unconfined,
+.jp-RenderedImage img.jp-mod-unconfined,
+.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
+.jp-RenderedSVG svg.jp-mod-unconfined {
+  max-width: none;
+}
+
+.jp-RenderedHTMLCommon .alert {
+  padding: var(--jp-notebook-padding);
+  border: var(--jp-border-width) solid transparent;
+  border-radius: var(--jp-border-radius);
+  margin-bottom: 1em;
+}
+
+.jp-RenderedHTMLCommon .alert-info {
+  color: var(--jp-info-color0);
+  background-color: var(--jp-info-color3);
+  border-color: var(--jp-info-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-info hr {
+  border-color: var(--jp-info-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-info > p:last-child,
+.jp-RenderedHTMLCommon .alert-info > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-warning {
+  color: var(--jp-warn-color0);
+  background-color: var(--jp-warn-color3);
+  border-color: var(--jp-warn-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-warning hr {
+  border-color: var(--jp-warn-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-warning > p:last-child,
+.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-success {
+  color: var(--jp-success-color0);
+  background-color: var(--jp-success-color3);
+  border-color: var(--jp-success-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-success hr {
+  border-color: var(--jp-success-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-success > p:last-child,
+.jp-RenderedHTMLCommon .alert-success > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon .alert-danger {
+  color: var(--jp-error-color0);
+  background-color: var(--jp-error-color3);
+  border-color: var(--jp-error-color2);
+}
+
+.jp-RenderedHTMLCommon .alert-danger hr {
+  border-color: var(--jp-error-color3);
+}
+
+.jp-RenderedHTMLCommon .alert-danger > p:last-child,
+.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
+  margin-bottom: 0;
+}
+
+.jp-RenderedHTMLCommon blockquote {
+  margin: 1em 2em;
+  padding: 0 1em;
+  border-left: 5px solid var(--jp-border-color2);
+}
+
+a.jp-InternalAnchorLink {
+  visibility: hidden;
+  margin-left: 8px;
+  color: var(--md-blue-800);
+}
+
+h1:hover .jp-InternalAnchorLink,
+h2:hover .jp-InternalAnchorLink,
+h3:hover .jp-InternalAnchorLink,
+h4:hover .jp-InternalAnchorLink,
+h5:hover .jp-InternalAnchorLink,
+h6:hover .jp-InternalAnchorLink {
+  visibility: visible;
+}
+
+.jp-RenderedHTMLCommon kbd {
+  background-color: var(--jp-rendermime-table-row-background);
+  border: 1px solid var(--jp-border-color0);
+  border-bottom-color: var(--jp-border-color2);
+  border-radius: 3px;
+  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
+  display: inline-block;
+  font-size: var(--jp-ui-font-size0);
+  line-height: 1em;
+  padding: 0.2em 0.5em;
+}
+
+/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
+ * At the bottom of cells this is a bit too much as there is also spacing
+ * between cells. Going all the way to 0 gets too tight between markdown and
+ * code cells.
+ */
+.jp-RenderedHTMLCommon > *:last-child {
+  margin-bottom: 0.5em;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Copyright (c) 2014-2017, PhosphorJS Contributors
+|
+| Distributed under the terms of the BSD 3-Clause License.
+|
+| The full license is in the file LICENSE, distributed with this software.
+|----------------------------------------------------------------------------*/
+
+.lm-cursor-backdrop {
+  position: fixed;
+  width: 200px;
+  height: 200px;
+  margin-top: -100px;
+  margin-left: -100px;
+  will-change: transform;
+  z-index: 100;
+}
+
+.lm-mod-drag-image {
+  will-change: transform;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-lineFormSearch {
+  padding: 4px 12px;
+  background-color: var(--jp-layout-color2);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  z-index: 2;
+  font-size: var(--jp-ui-font-size1);
+}
+
+.jp-lineFormCaption {
+  font-size: var(--jp-ui-font-size0);
+  line-height: var(--jp-ui-font-size1);
+  margin-top: 4px;
+  color: var(--jp-ui-font-color0);
+}
+
+.jp-baseLineForm {
+  border: none;
+  border-radius: 0;
+  position: absolute;
+  background-size: 16px;
+  background-repeat: no-repeat;
+  background-position: center;
+  outline: none;
+}
+
+.jp-lineFormButtonContainer {
+  top: 4px;
+  right: 8px;
+  height: 24px;
+  padding: 0 12px;
+  width: 12px;
+}
+
+.jp-lineFormButtonIcon {
+  top: 0;
+  right: 0;
+  background-color: var(--jp-brand-color1);
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+  padding: 4px 6px;
+}
+
+.jp-lineFormButton {
+  top: 0;
+  right: 0;
+  background-color: transparent;
+  height: 100%;
+  width: 100%;
+  box-sizing: border-box;
+}
+
+.jp-lineFormWrapper {
+  overflow: hidden;
+  padding: 0 8px;
+  border: 1px solid var(--jp-border-color0);
+  background-color: var(--jp-input-active-background);
+  height: 22px;
+}
+
+.jp-lineFormWrapperFocusWithin {
+  border: var(--jp-border-width) solid var(--md-blue-500);
+  box-shadow: inset 0 0 4px var(--md-blue-300);
+}
+
+.jp-lineFormInput {
+  background: transparent;
+  width: 200px;
+  height: 100%;
+  border: none;
+  outline: none;
+  color: var(--jp-ui-font-color0);
+  line-height: 28px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) 2014-2016, Jupyter Development Team.
+|
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-JSONEditor {
+  display: flex;
+  flex-direction: column;
+  width: 100%;
+}
+
+.jp-JSONEditor-host {
+  flex: 1 1 auto;
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  border-radius: 0;
+  background: var(--jp-layout-color0);
+  min-height: 50px;
+  padding: 1px;
+}
+
+.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
+  border-color: red;
+  outline-color: red;
+}
+
+.jp-JSONEditor-header {
+  display: flex;
+  flex: 1 0 auto;
+  padding: 0 0 0 12px;
+}
+
+.jp-JSONEditor-header label {
+  flex: 0 0 auto;
+}
+
+.jp-JSONEditor-commitButton {
+  height: 16px;
+  width: 16px;
+  background-size: 18px;
+  background-repeat: no-repeat;
+  background-position: center;
+}
+
+.jp-JSONEditor-host.jp-mod-focused {
+  background-color: var(--jp-input-active-background);
+  border: 1px solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+}
+
+.jp-Editor.jp-mod-dropTarget {
+  border: var(--jp-border-width) solid var(--jp-input-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+.jp-DocumentSearch-input {
+  border: none;
+  outline: none;
+  color: var(--jp-ui-font-color0);
+  font-size: var(--jp-ui-font-size1);
+  background-color: var(--jp-layout-color0);
+  font-family: var(--jp-ui-font-family);
+  padding: 2px 1px;
+  resize: none;
+}
+
+.jp-DocumentSearch-overlay {
+  position: absolute;
+  background-color: var(--jp-toolbar-background);
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  top: 0;
+  right: 0;
+  z-index: 7;
+  min-width: 405px;
+  padding: 2px;
+  font-size: var(--jp-ui-font-size1);
+
+  --jp-private-document-search-button-height: 20px;
+}
+
+.jp-DocumentSearch-overlay button {
+  background-color: var(--jp-toolbar-background);
+  outline: 0;
+}
+
+.jp-DocumentSearch-overlay button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-overlay button:active {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-overlay-row {
+  display: flex;
+  align-items: center;
+  margin-bottom: 2px;
+}
+
+.jp-DocumentSearch-button-content {
+  display: inline-block;
+  cursor: pointer;
+  box-sizing: border-box;
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-button-content svg {
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-input-wrapper {
+  border: var(--jp-border-width) solid var(--jp-border-color0);
+  display: flex;
+  background-color: var(--jp-layout-color0);
+  margin: 2px;
+}
+
+.jp-DocumentSearch-input-wrapper:focus-within {
+  border-color: var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper {
+  all: initial;
+  overflow: hidden;
+  display: inline-block;
+  border: none;
+  box-sizing: border-box;
+}
+
+.jp-DocumentSearch-toggle-wrapper {
+  width: 14px;
+  height: 14px;
+}
+
+.jp-DocumentSearch-button-wrapper {
+  width: var(--jp-private-document-search-button-height);
+  height: var(--jp-private-document-search-button-height);
+}
+
+.jp-DocumentSearch-toggle-wrapper:focus,
+.jp-DocumentSearch-button-wrapper:focus {
+  outline: var(--jp-border-width) solid
+    var(--jp-cell-editor-active-border-color);
+  outline-offset: -1px;
+}
+
+.jp-DocumentSearch-toggle-wrapper,
+.jp-DocumentSearch-button-wrapper,
+.jp-DocumentSearch-button-content:focus {
+  outline: none;
+}
+
+.jp-DocumentSearch-toggle-placeholder {
+  width: 5px;
+}
+
+.jp-DocumentSearch-input-button::before {
+  display: block;
+  padding-top: 100%;
+}
+
+.jp-DocumentSearch-input-button-off {
+  opacity: var(--jp-search-toggle-off-opacity);
+}
+
+.jp-DocumentSearch-input-button-off:hover {
+  opacity: var(--jp-search-toggle-hover-opacity);
+}
+
+.jp-DocumentSearch-input-button-on {
+  opacity: var(--jp-search-toggle-on-opacity);
+}
+
+.jp-DocumentSearch-index-counter {
+  padding-left: 10px;
+  padding-right: 10px;
+  user-select: none;
+  min-width: 35px;
+  display: inline-block;
+}
+
+.jp-DocumentSearch-up-down-wrapper {
+  display: inline-block;
+  padding-right: 2px;
+  margin-left: auto;
+  white-space: nowrap;
+}
+
+.jp-DocumentSearch-spacer {
+  margin-left: auto;
+}
+
+.jp-DocumentSearch-up-down-wrapper button {
+  outline: 0;
+  border: none;
+  width: var(--jp-private-document-search-button-height);
+  height: var(--jp-private-document-search-button-height);
+  vertical-align: middle;
+  margin: 1px 5px 2px;
+}
+
+.jp-DocumentSearch-up-down-button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-up-down-button:active {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-filter-button {
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-filter-button:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-DocumentSearch-filter-button-enabled:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+.jp-DocumentSearch-search-options {
+  padding: 0 8px;
+  margin-left: 3px;
+  width: 100%;
+  display: grid;
+  justify-content: start;
+  grid-template-columns: 1fr 1fr;
+  align-items: center;
+  justify-items: stretch;
+}
+
+.jp-DocumentSearch-search-filter-disabled {
+  color: var(--jp-ui-font-color2);
+}
+
+.jp-DocumentSearch-search-filter {
+  display: flex;
+  align-items: center;
+  user-select: none;
+}
+
+.jp-DocumentSearch-regex-error {
+  color: var(--jp-error-color0);
+}
+
+.jp-DocumentSearch-replace-button-wrapper {
+  overflow: hidden;
+  display: inline-block;
+  box-sizing: border-box;
+  border: var(--jp-border-width) solid var(--jp-border-color0);
+  margin: auto 2px;
+  padding: 1px 4px;
+  height: calc(var(--jp-private-document-search-button-height) + 2px);
+}
+
+.jp-DocumentSearch-replace-button-wrapper:focus {
+  border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+}
+
+.jp-DocumentSearch-replace-button {
+  display: inline-block;
+  text-align: center;
+  cursor: pointer;
+  box-sizing: border-box;
+  color: var(--jp-ui-font-color1);
+
+  /* height - 2 * (padding of wrapper) */
+  line-height: calc(var(--jp-private-document-search-button-height) - 2px);
+  width: 100%;
+  height: 100%;
+}
+
+.jp-DocumentSearch-replace-button:focus {
+  outline: none;
+}
+
+.jp-DocumentSearch-replace-wrapper-class {
+  margin-left: 14px;
+  display: flex;
+}
+
+.jp-DocumentSearch-replace-toggle {
+  border: none;
+  background-color: var(--jp-toolbar-background);
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-DocumentSearch-replace-toggle:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.cm-editor {
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  font-family: var(--jp-code-font-family);
+  border: 0;
+  border-radius: 0;
+  height: auto;
+
+  /* Changed to auto to autogrow */
+}
+
+.cm-editor pre {
+  padding: 0 var(--jp-code-padding);
+}
+
+.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
+  background-color: var(--jp-layout-color0);
+  color: var(--jp-content-font-color1);
+}
+
+.jp-CodeMirrorEditor {
+  cursor: text;
+}
+
+/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
+@media screen and (min-width: 2138px) and (max-width: 4319px) {
+  .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+    border-left: var(--jp-code-cursor-width1) solid
+      var(--jp-editor-cursor-color);
+  }
+}
+
+/* When zoomed out less than 33% */
+@media screen and (min-width: 4320px) {
+  .jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
+    border-left: var(--jp-code-cursor-width2) solid
+      var(--jp-editor-cursor-color);
+  }
+}
+
+.cm-editor.jp-mod-readOnly .cm-cursor {
+  display: none;
+}
+
+.jp-CollaboratorCursor {
+  border-left: 5px solid transparent;
+  border-right: 5px solid transparent;
+  border-top: none;
+  border-bottom: 3px solid;
+  background-clip: content-box;
+  margin-left: -5px;
+  margin-right: -5px;
+}
+
+.cm-searching,
+.cm-searching span {
+  /* `.cm-searching span`: we need to override syntax highlighting */
+  background-color: var(--jp-search-unselected-match-background-color);
+  color: var(--jp-search-unselected-match-color);
+}
+
+.cm-searching::selection,
+.cm-searching span::selection {
+  background-color: var(--jp-search-unselected-match-background-color);
+  color: var(--jp-search-unselected-match-color);
+}
+
+.jp-current-match > .cm-searching,
+.jp-current-match > .cm-searching span,
+.cm-searching > .jp-current-match,
+.cm-searching > .jp-current-match span {
+  background-color: var(--jp-search-selected-match-background-color);
+  color: var(--jp-search-selected-match-color);
+}
+
+.jp-current-match > .cm-searching::selection,
+.cm-searching > .jp-current-match::selection,
+.jp-current-match > .cm-searching span::selection {
+  background-color: var(--jp-search-selected-match-background-color);
+  color: var(--jp-search-selected-match-color);
+}
+
+.cm-trailingspace {
+  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
+  background-position: center left;
+  background-repeat: repeat-x;
+}
+
+.jp-CollaboratorCursor-hover {
+  position: absolute;
+  z-index: 1;
+  transform: translateX(-50%);
+  color: white;
+  border-radius: 3px;
+  padding-left: 4px;
+  padding-right: 4px;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  text-align: center;
+  font-size: var(--jp-ui-font-size1);
+  white-space: nowrap;
+}
+
+.jp-CodeMirror-ruler {
+  border-left: 1px dashed var(--jp-border-color2);
+}
+
+/* Styles for shared cursors (remote cursor locations and selected ranges) */
+.jp-CodeMirrorEditor .cm-ySelectionCaret {
+  position: relative;
+  border-left: 1px solid black;
+  margin-left: -1px;
+  margin-right: -1px;
+  box-sizing: border-box;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
+  white-space: nowrap;
+  position: absolute;
+  top: -1.15em;
+  padding-bottom: 0.05em;
+  left: -1px;
+  font-size: 0.95em;
+  font-family: var(--jp-ui-font-family);
+  font-weight: bold;
+  line-height: normal;
+  user-select: none;
+  color: white;
+  padding-left: 2px;
+  padding-right: 2px;
+  z-index: 101;
+  transition: opacity 0.3s ease-in-out;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionInfo {
+  transition-delay: 0.7s;
+  opacity: 0;
+}
+
+.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
+  opacity: 1;
+  transition-delay: 0s;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-MimeDocument {
+  outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-filebrowser-button-height: 28px;
+  --jp-private-filebrowser-button-width: 48px;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser .jp-SidePanel-content {
+  display: flex;
+  flex-direction: column;
+}
+
+.jp-FileBrowser-toolbar.jp-Toolbar {
+  flex-wrap: wrap;
+  row-gap: 12px;
+  border-bottom: none;
+  height: auto;
+  margin: 8px 12px 0;
+  box-shadow: none;
+  padding: 0;
+  justify-content: flex-start;
+}
+
+.jp-FileBrowser-Panel {
+  flex: 1 1 auto;
+  display: flex;
+  flex-direction: column;
+}
+
+.jp-BreadCrumbs {
+  flex: 0 0 auto;
+  margin: 8px 12px;
+}
+
+.jp-BreadCrumbs-item {
+  margin: 0 2px;
+  padding: 0 2px;
+  border-radius: var(--jp-border-radius);
+  cursor: pointer;
+}
+
+.jp-BreadCrumbs-item:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-BreadCrumbs-item:first-child {
+  margin-left: 0;
+}
+
+.jp-BreadCrumbs-item.jp-mod-dropTarget {
+  background-color: var(--jp-brand-color2);
+  opacity: 0.7;
+}
+
+/*-----------------------------------------------------------------------------
+| Buttons
+|----------------------------------------------------------------------------*/
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item {
+  flex: 0 0 auto;
+  padding-left: 0;
+  padding-right: 2px;
+  align-items: center;
+  height: unset;
+}
+
+.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
+  width: 40px;
+}
+
+/*-----------------------------------------------------------------------------
+| Other styles
+|----------------------------------------------------------------------------*/
+
+.jp-FileDialog.jp-mod-conflict input {
+  color: var(--jp-error-color1);
+}
+
+.jp-FileDialog .jp-new-name-title {
+  margin-top: 12px;
+}
+
+.jp-LastModified-hidden {
+  display: none;
+}
+
+.jp-FileSize-hidden {
+  display: none;
+}
+
+.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| DirListing
+|----------------------------------------------------------------------------*/
+
+.jp-DirListing {
+  flex: 1 1 auto;
+  display: flex;
+  flex-direction: column;
+  outline: 0;
+}
+
+.jp-DirListing-header {
+  flex: 0 0 auto;
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  overflow: hidden;
+  border-top: var(--jp-border-width) solid var(--jp-border-color2);
+  border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  z-index: 2;
+}
+
+.jp-DirListing-headerItem {
+  padding: 4px 12px 2px;
+  font-weight: 500;
+}
+
+.jp-DirListing-headerItem:hover {
+  background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-headerItem.jp-id-name {
+  flex: 1 0 84px;
+}
+
+.jp-DirListing-headerItem.jp-id-modified {
+  flex: 0 0 112px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+}
+
+.jp-DirListing-headerItem.jp-id-filesize {
+  flex: 0 0 75px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+}
+
+.jp-id-narrow {
+  display: none;
+  flex: 0 0 5px;
+  padding: 4px;
+  border-left: var(--jp-border-width) solid var(--jp-border-color2);
+  text-align: right;
+  color: var(--jp-border-color2);
+}
+
+.jp-DirListing-narrow .jp-id-narrow {
+  display: block;
+}
+
+.jp-DirListing-narrow .jp-id-modified,
+.jp-DirListing-narrow .jp-DirListing-itemModified {
+  display: none;
+}
+
+.jp-DirListing-headerItem.jp-mod-selected {
+  font-weight: 600;
+}
+
+/* increase specificity to override bundled default */
+.jp-DirListing-content {
+  flex: 1 1 auto;
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  overflow: auto;
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-content mark {
+  color: var(--jp-ui-font-color0);
+  background-color: transparent;
+  font-weight: bold;
+}
+
+.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
+  color: var(--jp-ui-inverse-font-color0);
+}
+
+/* Style the directory listing content when a user drops a file to upload */
+.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
+  outline: 5px dashed rgba(128, 128, 128, 0.5);
+  outline-offset: -10px;
+  cursor: copy;
+}
+
+.jp-DirListing-item {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  padding: 4px 12px;
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-DirListing-checkboxWrapper {
+  /* Increases hit area of checkbox. */
+  padding: 4px;
+}
+
+.jp-DirListing-header
+  .jp-DirListing-checkboxWrapper
+  + .jp-DirListing-headerItem {
+  padding-left: 4px;
+}
+
+.jp-DirListing-content .jp-DirListing-checkboxWrapper {
+  position: relative;
+  left: -4px;
+  margin: -4px 0 -4px -8px;
+}
+
+.jp-DirListing-checkboxWrapper.jp-mod-visible {
+  visibility: visible;
+}
+
+/* For devices that support hovering, hide checkboxes until hovered, selected...
+*/
+@media (hover: hover) {
+  .jp-DirListing-checkboxWrapper {
+    visibility: hidden;
+  }
+
+  .jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
+  .jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
+    visibility: visible;
+  }
+}
+
+.jp-DirListing-item[data-is-dot] {
+  opacity: 75%;
+}
+
+.jp-DirListing-item.jp-mod-selected {
+  color: var(--jp-ui-inverse-font-color1);
+  background: var(--jp-brand-color1);
+}
+
+.jp-DirListing-item.jp-mod-dropTarget {
+  background: var(--jp-brand-color3);
+}
+
+.jp-DirListing-item:hover:not(.jp-mod-selected) {
+  background: var(--jp-layout-color2);
+}
+
+.jp-DirListing-itemIcon {
+  flex: 0 0 20px;
+  margin-right: 4px;
+}
+
+.jp-DirListing-itemText {
+  flex: 1 0 64px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  user-select: none;
+}
+
+.jp-DirListing-itemText:focus {
+  outline-width: 2px;
+  outline-color: var(--jp-inverse-layout-color1);
+  outline-style: solid;
+  outline-offset: 1px;
+}
+
+.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
+  outline-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-itemModified {
+  flex: 0 0 125px;
+  text-align: right;
+}
+
+.jp-DirListing-itemFileSize {
+  flex: 0 0 90px;
+  text-align: right;
+}
+
+.jp-DirListing-editor {
+  flex: 1 0 64px;
+  outline: none;
+  border: none;
+  color: var(--jp-ui-font-color1);
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
+  color: var(--jp-success-color1);
+  content: '\25CF';
+  font-size: 8px;
+  position: absolute;
+  left: -8px;
+}
+
+.jp-DirListing-item.jp-mod-running.jp-mod-selected
+  .jp-DirListing-itemIcon::before {
+  color: var(--jp-ui-inverse-font-color1);
+}
+
+.jp-DirListing-item.lm-mod-drag-image,
+.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
+  font-size: var(--jp-ui-font-size1);
+  padding-left: 4px;
+  margin-left: 4px;
+  width: 160px;
+  background-color: var(--jp-ui-inverse-font-color2);
+  box-shadow: var(--jp-elevation-z2);
+  border-radius: 0;
+  color: var(--jp-ui-font-color1);
+  transform: translateX(-40%) translateY(-58%);
+}
+
+.jp-Document {
+  min-width: 120px;
+  min-height: 120px;
+  outline: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Main OutputArea
+| OutputArea has a list of Outputs
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea {
+  overflow-y: auto;
+}
+
+.jp-OutputArea-child {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+  overflow: hidden;
+}
+
+.jp-OutputPrompt {
+  width: var(--jp-cell-prompt-width);
+  color: var(--jp-cell-outprompt-font-color);
+  font-family: var(--jp-cell-prompt-font-family);
+  padding: var(--jp-code-padding);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+  opacity: var(--jp-cell-prompt-opacity);
+
+  /* Right align prompt text, don't wrap to handle large prompt numbers */
+  text-align: right;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+
+  /* Disable text selection */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-OutputArea-prompt {
+  display: table-cell;
+  vertical-align: top;
+}
+
+.jp-OutputArea-output {
+  display: table-cell;
+  width: 100%;
+  height: auto;
+  overflow: auto;
+  user-select: text;
+  -moz-user-select: text;
+  -webkit-user-select: text;
+  -ms-user-select: text;
+}
+
+.jp-OutputArea .jp-RenderedText {
+  padding-left: 1ch;
+}
+
+/**
+ * Prompt overlay.
+ */
+
+.jp-OutputArea-promptOverlay {
+  position: absolute;
+  top: 0;
+  width: var(--jp-cell-prompt-width);
+  height: 100%;
+  opacity: 0.5;
+}
+
+.jp-OutputArea-promptOverlay:hover {
+  background: var(--jp-layout-color2);
+  box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
+  cursor: zoom-out;
+}
+
+.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
+  cursor: zoom-in;
+}
+
+/**
+ * Isolated output.
+ */
+.jp-OutputArea-output.jp-mod-isolated {
+  width: 100%;
+  display: block;
+}
+
+/*
+When drag events occur, `lm-mod-override-cursor` is added to the body.
+Because iframes steal all cursor events, the following two rules are necessary
+to suppress pointer events while resize drags are occurring. There may be a
+better solution to this problem.
+*/
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
+  position: relative;
+}
+
+body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
+  content: '';
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: transparent;
+}
+
+/* pre */
+
+.jp-OutputArea-output pre {
+  border: none;
+  margin: 0;
+  padding: 0;
+  overflow-x: auto;
+  overflow-y: auto;
+  word-break: break-all;
+  word-wrap: break-word;
+  white-space: pre-wrap;
+}
+
+/* tables */
+
+.jp-OutputArea-output.jp-RenderedHTMLCommon table {
+  margin-left: 0;
+  margin-right: 0;
+}
+
+/* description lists */
+
+.jp-OutputArea-output dl,
+.jp-OutputArea-output dt,
+.jp-OutputArea-output dd {
+  display: block;
+}
+
+.jp-OutputArea-output dl {
+  width: 100%;
+  overflow: hidden;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-OutputArea-output dt {
+  font-weight: bold;
+  float: left;
+  width: 20%;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-OutputArea-output dd {
+  float: left;
+  width: 80%;
+  padding: 0;
+  margin: 0;
+}
+
+.jp-TrimmedOutputs pre {
+  background: var(--jp-layout-color3);
+  font-size: calc(var(--jp-code-font-size) * 1.4);
+  text-align: center;
+  text-transform: uppercase;
+}
+
+/* Hide the gutter in case of
+ *  - nested output areas (e.g. in the case of output widgets)
+ *  - mirrored output areas
+ */
+.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
+  display: none;
+}
+
+/* Hide empty lines in the output area, for instance due to cleared widgets */
+.jp-OutputArea-prompt:empty {
+  padding: 0;
+  border: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| executeResult is added to any Output-result for the display of the object
+| returned by a cell
+|----------------------------------------------------------------------------*/
+
+.jp-OutputArea-output.jp-OutputArea-executeResult {
+  margin-left: 0;
+  width: 100%;
+}
+
+/* Text output with the Out[] prompt needs a top padding to match the
+ * alignment of the Out[] prompt itself.
+ */
+.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
+  padding-top: var(--jp-code-padding);
+  border-top: var(--jp-border-width) solid transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| The Stdin output
+|----------------------------------------------------------------------------*/
+
+.jp-Stdin-prompt {
+  color: var(--jp-content-font-color0);
+  padding-right: var(--jp-code-padding);
+  vertical-align: baseline;
+  flex: 0 0 auto;
+}
+
+.jp-Stdin-input {
+  font-family: var(--jp-code-font-family);
+  font-size: inherit;
+  color: inherit;
+  background-color: inherit;
+  width: 42%;
+  min-width: 200px;
+
+  /* make sure input baseline aligns with prompt */
+  vertical-align: baseline;
+
+  /* padding + margin = 0.5em between prompt and cursor */
+  padding: 0 0.25em;
+  margin: 0 0.25em;
+  flex: 0 0 70%;
+}
+
+.jp-Stdin-input::placeholder {
+  opacity: 0;
+}
+
+.jp-Stdin-input:focus {
+  box-shadow: none;
+}
+
+.jp-Stdin-input:focus::placeholder {
+  opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Output Area View
+|----------------------------------------------------------------------------*/
+
+.jp-LinkedOutputView .jp-OutputArea {
+  height: 100%;
+  display: block;
+}
+
+.jp-LinkedOutputView .jp-OutputArea-output:only-child {
+  height: 100%;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+@media print {
+  .jp-OutputArea-child {
+    break-inside: avoid-page;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+  .jp-OutputPrompt {
+    display: table-row;
+    text-align: left;
+  }
+
+  .jp-OutputArea-child .jp-OutputArea-output {
+    display: table-row;
+    margin-left: var(--jp-notebook-padding);
+  }
+}
+
+/* Trimmed outputs warning */
+.jp-TrimmedOutputs > a {
+  margin: 10px;
+  text-decoration: none;
+  cursor: pointer;
+}
+
+.jp-TrimmedOutputs > a:hover {
+  text-decoration: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Table of Contents
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-toc-active-width: 4px;
+}
+
+.jp-TableOfContents {
+  display: flex;
+  flex-direction: column;
+  background: var(--jp-layout-color1);
+  color: var(--jp-ui-font-color1);
+  font-size: var(--jp-ui-font-size1);
+  height: 100%;
+}
+
+.jp-TableOfContents-placeholder {
+  text-align: center;
+}
+
+.jp-TableOfContents-placeholderContent {
+  color: var(--jp-content-font-color2);
+  padding: 8px;
+}
+
+.jp-TableOfContents-placeholderContent > h3 {
+  margin-bottom: var(--jp-content-heading-margin-bottom);
+}
+
+.jp-TableOfContents .jp-SidePanel-content {
+  overflow-y: auto;
+}
+
+.jp-TableOfContents-tree {
+  margin: 4px;
+}
+
+.jp-TableOfContents ol {
+  list-style-type: none;
+}
+
+/* stylelint-disable-next-line selector-max-type */
+.jp-TableOfContents li > ol {
+  /* Align left border with triangle icon center */
+  padding-left: 11px;
+}
+
+.jp-TableOfContents-content {
+  /* left margin for the active heading indicator */
+  margin: 0 0 0 var(--jp-private-toc-active-width);
+  padding: 0;
+  background-color: var(--jp-layout-color1);
+}
+
+.jp-tocItem {
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+.jp-tocItem-heading {
+  display: flex;
+  cursor: pointer;
+}
+
+.jp-tocItem-heading:hover {
+  background-color: var(--jp-layout-color2);
+}
+
+.jp-tocItem-content {
+  display: block;
+  padding: 4px 0;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow-x: hidden;
+}
+
+.jp-tocItem-collapser {
+  height: 20px;
+  margin: 2px 2px 0;
+  padding: 0;
+  background: none;
+  border: none;
+  cursor: pointer;
+}
+
+.jp-tocItem-collapser:hover {
+  background-color: var(--jp-layout-color3);
+}
+
+/* Active heading indicator */
+
+.jp-tocItem-heading::before {
+  content: ' ';
+  background: transparent;
+  width: var(--jp-private-toc-active-width);
+  height: 24px;
+  position: absolute;
+  left: 0;
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-tocItem-heading.jp-tocItem-active::before {
+  background-color: var(--jp-brand-color1);
+}
+
+.jp-tocItem-heading:hover.jp-tocItem-active::before {
+  background: var(--jp-brand-color0);
+  opacity: 1;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+.jp-Collapser {
+  flex: 0 0 var(--jp-cell-collapser-width);
+  padding: 0;
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+  border-radius: var(--jp-border-radius);
+  opacity: 1;
+}
+
+.jp-Collapser-child {
+  display: block;
+  width: 100%;
+  box-sizing: border-box;
+
+  /* height: 100% doesn't work because the height of its parent is computed from content */
+  position: absolute;
+  top: 0;
+  bottom: 0;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Hiding collapsers in print mode.
+
+Note: input and output wrappers have "display: block" propery in print mode.
+*/
+
+@media print {
+  .jp-Collapser {
+    display: none;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Header/Footer
+|----------------------------------------------------------------------------*/
+
+/* Hidden by zero height by default */
+.jp-CellHeader,
+.jp-CellFooter {
+  height: 0;
+  width: 100%;
+  padding: 0;
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Input
+|----------------------------------------------------------------------------*/
+
+/* All input areas */
+.jp-InputArea {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+  overflow: hidden;
+}
+
+.jp-InputArea-editor {
+  display: table-cell;
+  overflow: hidden;
+  vertical-align: top;
+
+  /* This is the non-active, default styling */
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  border-radius: 0;
+  background: var(--jp-cell-editor-background);
+}
+
+.jp-InputPrompt {
+  display: table-cell;
+  vertical-align: top;
+  width: var(--jp-cell-prompt-width);
+  color: var(--jp-cell-inprompt-font-color);
+  font-family: var(--jp-cell-prompt-font-family);
+  padding: var(--jp-code-padding);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  opacity: var(--jp-cell-prompt-opacity);
+  line-height: var(--jp-code-line-height);
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+
+  /* Right align prompt text, don't wrap to handle large prompt numbers */
+  text-align: right;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+
+  /* Disable text selection */
+  -webkit-user-select: none;
+  -moz-user-select: none;
+  -ms-user-select: none;
+  user-select: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Mobile
+|----------------------------------------------------------------------------*/
+@media only screen and (max-width: 760px) {
+  .jp-InputArea-editor {
+    display: table-row;
+    margin-left: var(--jp-notebook-padding);
+  }
+
+  .jp-InputPrompt {
+    display: table-row;
+    text-align: left;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Placeholder {
+  display: table;
+  table-layout: fixed;
+  width: 100%;
+}
+
+.jp-Placeholder-prompt {
+  display: table-cell;
+  box-sizing: border-box;
+}
+
+.jp-Placeholder-content {
+  display: table-cell;
+  padding: 4px 6px;
+  border: 1px solid transparent;
+  border-radius: 0;
+  background: none;
+  box-sizing: border-box;
+  cursor: pointer;
+}
+
+.jp-Placeholder-contentContainer {
+  display: flex;
+}
+
+.jp-Placeholder-content:hover,
+.jp-InputPlaceholder > .jp-Placeholder-content:hover {
+  border-color: var(--jp-layout-color3);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon {
+  width: 32px;
+  height: 16px;
+  border: 1px solid transparent;
+  border-radius: var(--jp-border-radius);
+}
+
+.jp-Placeholder-content .jp-MoreHorizIcon:hover {
+  border: 1px solid var(--jp-border-color1);
+  box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
+  background-color: var(--jp-layout-color0);
+}
+
+.jp-PlaceholderText {
+  white-space: nowrap;
+  overflow-x: hidden;
+  color: var(--jp-inverse-layout-color3);
+  font-family: var(--jp-code-font-family);
+}
+
+.jp-InputPlaceholder > .jp-Placeholder-content {
+  border-color: var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Private CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-private-cell-scrolling-output-offset: 5px;
+}
+
+/*-----------------------------------------------------------------------------
+| Cell
+|----------------------------------------------------------------------------*/
+
+.jp-Cell {
+  padding: var(--jp-cell-padding);
+  margin: 0;
+  border: none;
+  outline: none;
+  background: transparent;
+}
+
+/*-----------------------------------------------------------------------------
+| Common input/output
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-inputWrapper,
+.jp-Cell-outputWrapper {
+  display: flex;
+  flex-direction: row;
+  padding: 0;
+  margin: 0;
+
+  /* Added to reveal the box-shadow on the input and output collapsers. */
+  overflow: visible;
+}
+
+/* Only input/output areas inside cells */
+.jp-Cell-inputArea,
+.jp-Cell-outputArea {
+  flex: 1 1 auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Collapser
+|----------------------------------------------------------------------------*/
+
+/* Make the output collapser disappear when there is not output, but do so
+ * in a manner that leaves it in the layout and preserves its width.
+ */
+.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
+  border: none !important;
+  background: transparent !important;
+}
+
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
+  min-height: var(--jp-cell-collapser-min-height);
+}
+
+/*-----------------------------------------------------------------------------
+| Output
+|----------------------------------------------------------------------------*/
+
+/* Put a space between input and output when there IS output */
+.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
+  margin-top: 5px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
+  overflow-y: auto;
+  max-height: 24em;
+  margin-left: var(--jp-private-cell-scrolling-output-offset);
+  resize: vertical;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
+  max-height: unset;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
+  content: ' ';
+  box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
+  width: 100%;
+  height: 100%;
+  position: sticky;
+  bottom: 0;
+  top: 0;
+  margin-top: -50%;
+  float: left;
+  display: block;
+  pointer-events: none;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
+  padding-top: 6px;
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
+  width: calc(
+    var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
+  );
+}
+
+.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
+  left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
+}
+
+/*-----------------------------------------------------------------------------
+| CodeCell
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| MarkdownCell
+|----------------------------------------------------------------------------*/
+
+.jp-MarkdownOutput {
+  display: table-cell;
+  width: 100%;
+  margin-top: 0;
+  margin-bottom: 0;
+  padding-left: var(--jp-code-padding);
+}
+
+.jp-MarkdownOutput.jp-RenderedHTMLCommon {
+  overflow: auto;
+}
+
+/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
+.jp-collapseHeadingButton {
+  display: flex;
+  min-height: var(--jp-cell-collapser-min-height);
+  font-size: var(--jp-code-font-size);
+  position: absolute;
+  background-color: transparent;
+  background-size: 25px;
+  background-repeat: no-repeat;
+  background-position-x: center;
+  background-position-y: top;
+  background-image: var(--jp-icon-caret-down);
+  right: 0;
+  top: 0;
+  bottom: 0;
+}
+
+.jp-collapseHeadingButton.jp-mod-collapsed {
+  background-image: var(--jp-icon-caret-right);
+}
+
+/*
+ set the container font size to match that of content
+ so that the nested collapse buttons have the right size
+*/
+.jp-MarkdownCell .jp-InputPrompt {
+  font-size: var(--jp-content-font-size1);
+}
+
+/*
+  Align collapseHeadingButton with cell top header
+  The font sizes are identical to the ones in packages/rendermime/style/base.css
+*/
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
+  font-size: var(--jp-content-font-size5);
+  background-position-y: calc(0.3 * var(--jp-content-font-size5));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
+  font-size: var(--jp-content-font-size4);
+  background-position-y: calc(0.3 * var(--jp-content-font-size4));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
+  font-size: var(--jp-content-font-size3);
+  background-position-y: calc(0.3 * var(--jp-content-font-size3));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
+  font-size: var(--jp-content-font-size2);
+  background-position-y: calc(0.3 * var(--jp-content-font-size2));
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
+  font-size: var(--jp-content-font-size1);
+  background-position-y: top;
+}
+
+.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
+  font-size: var(--jp-content-font-size0);
+  background-position-y: top;
+}
+
+/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
+  display: none;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton
+  :is(.jp-MarkdownCell:hover, .jp-mod-active)
+  .jp-collapseHeadingButton {
+  display: flex;
+}
+
+/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
+is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
+  margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
+  margin-top: var(--jp-code-padding);
+  border: 1px solid var(--jp-border-color2);
+  background-color: var(--jp-border-color3) !important;
+  color: var(--jp-content-font-color0) !important;
+  display: flex;
+}
+
+.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
+  background-color: var(--jp-border-color2) !important;
+}
+
+.jp-showHiddenCellsButton {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Printing
+|----------------------------------------------------------------------------*/
+
+/*
+Using block instead of flex to allow the use of the break-inside CSS property for
+cell outputs.
+*/
+
+@media print {
+  .jp-Cell-inputWrapper,
+  .jp-Cell-outputWrapper {
+    display: block;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-notebook-toolbar-padding: 2px 5px 2px 2px;
+}
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookPanel-toolbar {
+  padding: var(--jp-notebook-toolbar-padding);
+
+  /* disable paint containment from lumino 2.0 default strict CSS containment */
+  contain: style size !important;
+}
+
+.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
+  border: none;
+  box-shadow: none;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown select {
+  height: 24px;
+  font-size: var(--jp-ui-font-size1);
+  line-height: 14px;
+  border-radius: 0;
+  display: block;
+}
+
+.jp-Notebook-toolbarCellTypeDropdown span {
+  top: 5px !important;
+}
+
+.jp-Toolbar-responsive-popup {
+  position: absolute;
+  height: fit-content;
+  display: flex;
+  flex-direction: row;
+  flex-wrap: wrap;
+  justify-content: flex-end;
+  border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
+  box-shadow: var(--jp-toolbar-box-shadow);
+  background: var(--jp-toolbar-background);
+  min-height: var(--jp-toolbar-micro-height);
+  padding: var(--jp-notebook-toolbar-padding);
+  z-index: 1;
+  right: 0;
+  top: 0;
+}
+
+.jp-Toolbar > .jp-Toolbar-responsive-opener {
+  margin-left: auto;
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Variables
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+
+/*-----------------------------------------------------------------------------
+| Styles
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-ExecutionIndicator {
+  position: relative;
+  display: inline-block;
+  height: 100%;
+  z-index: 9997;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip {
+  visibility: hidden;
+  height: auto;
+  width: max-content;
+  width: -moz-max-content;
+  background-color: var(--jp-layout-color2);
+  color: var(--jp-ui-font-color1);
+  text-align: justify;
+  border-radius: 6px;
+  padding: 0 5px;
+  position: fixed;
+  display: table;
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.up {
+  transform: translateX(-50%) translateY(-100%) translateY(-32px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.down {
+  transform: translateX(calc(-100% + 16px)) translateY(5px);
+}
+
+.jp-Notebook-ExecutionIndicator-tooltip.hidden {
+  display: none;
+}
+
+.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
+  visibility: visible;
+}
+
+.jp-Notebook-ExecutionIndicator span {
+  font-size: var(--jp-ui-font-size1);
+  font-family: var(--jp-ui-font-family);
+  color: var(--jp-ui-font-color1);
+  line-height: 24px;
+  display: block;
+}
+
+.jp-Notebook-ExecutionIndicator-progress-bar {
+  display: flex;
+  justify-content: center;
+  height: 100%;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+/*
+ * Execution indicator
+ */
+.jp-tocItem-content::after {
+  content: '';
+
+  /* Must be identical to form a circle */
+  width: 12px;
+  height: 12px;
+  background: none;
+  border: none;
+  position: absolute;
+  right: 0;
+}
+
+.jp-tocItem-content[data-running='0']::after {
+  border-radius: 50%;
+  border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+  background: none;
+}
+
+.jp-tocItem-content[data-running='1']::after {
+  border-radius: 50%;
+  border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
+  background-color: var(--jp-inverse-layout-color3);
+}
+
+.jp-tocItem-content[data-running='0'],
+.jp-tocItem-content[data-running='1'] {
+  margin-right: 12px;
+}
+
+/*
+ * Copyright (c) Jupyter Development Team.
+ * Distributed under the terms of the Modified BSD License.
+ */
+
+.jp-Notebook-footer {
+  height: 27px;
+  margin-left: calc(
+    var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+      var(--jp-cell-padding)
+  );
+  width: calc(
+    100% -
+      (
+        var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
+          var(--jp-cell-padding) + var(--jp-cell-padding)
+      )
+  );
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  color: var(--jp-ui-font-color3);
+  margin-top: 6px;
+  background: none;
+  cursor: pointer;
+}
+
+.jp-Notebook-footer:focus {
+  border-color: var(--jp-cell-editor-active-border-color);
+}
+
+/* For devices that support hovering, hide footer until hover */
+@media (hover: hover) {
+  .jp-Notebook-footer {
+    opacity: 0;
+  }
+
+  .jp-Notebook-footer:focus,
+  .jp-Notebook-footer:hover {
+    opacity: 1;
+  }
+}
+
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| Imports
+|----------------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------------
+| CSS variables
+|----------------------------------------------------------------------------*/
+
+:root {
+  --jp-side-by-side-output-size: 1fr;
+  --jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
+  --jp-private-notebook-dragImage-width: 304px;
+  --jp-private-notebook-dragImage-height: 36px;
+  --jp-private-notebook-selected-color: var(--md-blue-400);
+  --jp-private-notebook-active-color: var(--md-green-400);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook
+|----------------------------------------------------------------------------*/
+
+/* stylelint-disable selector-max-class */
+
+.jp-NotebookPanel {
+  display: block;
+  height: 100%;
+}
+
+.jp-NotebookPanel.jp-Document {
+  min-width: 240px;
+  min-height: 120px;
+}
+
+.jp-Notebook {
+  padding: var(--jp-notebook-padding);
+  outline: none;
+  overflow: auto;
+  background: var(--jp-layout-color0);
+}
+
+.jp-Notebook.jp-mod-scrollPastEnd::after {
+  display: block;
+  content: '';
+  min-height: var(--jp-notebook-scroll-padding);
+}
+
+.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
+  contain: strict;
+}
+
+.jp-Notebook .jp-Cell {
+  overflow: visible;
+}
+
+.jp-Notebook .jp-Cell .jp-InputPrompt {
+  cursor: move;
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook state related styling
+|
+| The notebook and cells each have states, here are the possibilities:
+|
+| - Notebook
+|   - Command
+|   - Edit
+| - Cell
+|   - None
+|   - Active (only one can be active)
+|   - Selected (the cells actions are applied to)
+|   - Multiselected (when multiple selected, the cursor)
+|   - No outputs
+|----------------------------------------------------------------------------*/
+
+/* Command or edit modes */
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
+  opacity: var(--jp-cell-prompt-not-active-opacity);
+  color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
+  opacity: var(--jp-cell-prompt-not-active-opacity);
+  color: var(--jp-cell-prompt-not-active-font-color);
+}
+
+/* cell is active */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
+  background: var(--jp-brand-color1);
+}
+
+/* cell is dirty */
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
+  color: var(--jp-warn-color1);
+}
+
+.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
+  color: var(--jp-warn-color1);
+  content: '•';
+}
+
+.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
+  background: var(--jp-warn-color1);
+}
+
+/* collapser is hovered */
+.jp-Notebook .jp-Cell .jp-Collapser:hover {
+  box-shadow: var(--jp-elevation-z2);
+  background: var(--jp-brand-color1);
+  opacity: var(--jp-cell-collapser-not-active-hover-opacity);
+}
+
+/* cell is active and collapser is hovered */
+.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
+  background: var(--jp-brand-color0);
+  opacity: 1;
+}
+
+/* Command mode */
+
+.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
+  background: var(--jp-notebook-multiselected-color);
+}
+
+.jp-Notebook.jp-mod-commandMode
+  .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
+  background: transparent;
+}
+
+/* Edit mode */
+
+.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
+  border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
+  box-shadow: var(--jp-input-box-shadow);
+  background-color: var(--jp-cell-editor-active-background);
+}
+
+/*-----------------------------------------------------------------------------
+| Notebook drag and drop
+|----------------------------------------------------------------------------*/
+
+.jp-Notebook-cell.jp-mod-dropSource {
+  opacity: 0.5;
+}
+
+.jp-Notebook-cell.jp-mod-dropTarget,
+.jp-Notebook.jp-mod-commandMode
+  .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
+  border-top-color: var(--jp-private-notebook-selected-color);
+  border-top-style: solid;
+  border-top-width: 2px;
+}
+
+.jp-dragImage {
+  display: block;
+  flex-direction: row;
+  width: var(--jp-private-notebook-dragImage-width);
+  height: var(--jp-private-notebook-dragImage-height);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background);
+  overflow: visible;
+}
+
+.jp-dragImage-singlePrompt {
+  box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+.jp-dragImage .jp-dragImage-content {
+  flex: 1 1 auto;
+  z-index: 2;
+  font-size: var(--jp-code-font-size);
+  font-family: var(--jp-code-font-family);
+  line-height: var(--jp-code-line-height);
+  padding: var(--jp-code-padding);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  background: var(--jp-cell-editor-background-color);
+  color: var(--jp-content-font-color3);
+  text-align: left;
+  margin: 4px 4px 4px 0;
+}
+
+.jp-dragImage .jp-dragImage-prompt {
+  flex: 0 0 auto;
+  min-width: 36px;
+  color: var(--jp-cell-inprompt-font-color);
+  padding: var(--jp-code-padding);
+  padding-left: 12px;
+  font-family: var(--jp-cell-prompt-font-family);
+  letter-spacing: var(--jp-cell-prompt-letter-spacing);
+  line-height: 1.9;
+  font-size: var(--jp-code-font-size);
+  border: var(--jp-border-width) solid transparent;
+}
+
+.jp-dragImage-multipleBack {
+  z-index: -1;
+  position: absolute;
+  height: 32px;
+  width: 300px;
+  top: 8px;
+  left: 8px;
+  background: var(--jp-layout-color2);
+  border: var(--jp-border-width) solid var(--jp-input-border-color);
+  box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
+}
+
+/*-----------------------------------------------------------------------------
+| Cell toolbar
+|----------------------------------------------------------------------------*/
+
+.jp-NotebookTools {
+  display: block;
+  min-width: var(--jp-sidebar-min-width);
+  color: var(--jp-ui-font-color1);
+  background: var(--jp-layout-color1);
+
+  /* This is needed so that all font sizing of children done in ems is
+    * relative to this base size */
+  font-size: var(--jp-ui-font-size1);
+  overflow: auto;
+}
+
+.jp-ActiveCellTool {
+  padding: 12px 0;
+  display: flex;
+}
+
+.jp-ActiveCellTool-Content {
+  flex: 1 1 auto;
+}
+
+.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
+  background: var(--jp-cell-editor-background);
+  border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
+  border-radius: 0;
+  min-height: 29px;
+}
+
+.jp-ActiveCellTool .jp-InputPrompt {
+  min-width: calc(var(--jp-cell-prompt-width) * 0.75);
+}
+
+.jp-ActiveCellTool-CellContent > pre {
+  padding: 5px 4px;
+  margin: 0;
+  white-space: normal;
+}
+
+.jp-MetadataEditorTool {
+  flex-direction: column;
+  padding: 12px 0;
+}
+
+.jp-RankedPanel > :not(:first-child) {
+  margin-top: 12px;
+}
+
+.jp-KeySelector select.jp-mod-styled {
+  font-size: var(--jp-ui-font-size1);
+  color: var(--jp-ui-font-color0);
+  border: var(--jp-border-width) solid var(--jp-border-color1);
+}
+
+.jp-KeySelector label,
+.jp-MetadataEditorTool label,
+.jp-NumberSetter label {
+  line-height: 1.4;
+}
+
+.jp-NotebookTools .jp-select-wrapper {
+  margin-top: 4px;
+  margin-bottom: 0;
+}
+
+.jp-NumberSetter input {
+  width: 100%;
+  margin-top: 4px;
+}
+
+.jp-NotebookTools .jp-Collapse {
+  margin-top: 16px;
+}
+
+/*-----------------------------------------------------------------------------
+| Presentation Mode (.jp-mod-presentationMode)
+|----------------------------------------------------------------------------*/
+
+.jp-mod-presentationMode .jp-Notebook {
+  --jp-content-font-size1: var(--jp-content-presentation-font-size1);
+  --jp-code-font-size: var(--jp-code-presentation-font-size);
+}
+
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
+.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
+  flex: 0 0 110px;
+}
+
+/*-----------------------------------------------------------------------------
+| Side-by-side Mode (.jp-mod-sideBySide)
+|----------------------------------------------------------------------------*/
+.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
+  margin-top: 3em;
+  margin-bottom: 3em;
+  margin-left: 5%;
+  margin-right: 5%;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
+  display: grid;
+  grid-template-columns: minmax(0, 1fr) min-content minmax(
+      0,
+      var(--jp-side-by-side-output-size)
+    );
+  grid-template-rows: auto minmax(0, 1fr) auto;
+  grid-template-areas:
+    'header header header'
+    'input handle output'
+    'footer footer footer';
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
+  grid-template-columns: minmax(0, 1fr) min-content minmax(
+      0,
+      var(--jp-side-by-side-resized-cell)
+    );
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
+  grid-area: header;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
+  grid-area: input;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
+  /* overwrite the default margin (no vertical separation needed in side by side move */
+  margin-top: 0;
+  grid-area: output;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
+  grid-area: footer;
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
+  grid-area: handle;
+  user-select: none;
+  display: block;
+  height: 100%;
+  cursor: ew-resize;
+  padding: 0 var(--jp-cell-padding);
+}
+
+.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
+  content: '';
+  display: block;
+  background: var(--jp-border-color2);
+  height: 100%;
+  width: 5px;
+}
+
+.jp-mod-sideBySide.jp-Notebook
+  .jp-CodeCell.jp-mod-resizedCell
+  .jp-CellResizeHandle::after {
+  background: var(--jp-border-color0);
+}
+
+.jp-CellResizeHandle {
+  display: none;
+}
+
+/*-----------------------------------------------------------------------------
+| Placeholder
+|----------------------------------------------------------------------------*/
+
+.jp-Cell-Placeholder {
+  padding-left: 55px;
+}
+
+.jp-Cell-Placeholder-wrapper {
+  background: #fff;
+  border: 1px solid;
+  border-color: #e5e6e9 #dfe0e4 #d0d1d5;
+  border-radius: 4px;
+  -webkit-border-radius: 4px;
+  margin: 10px 15px;
+}
+
+.jp-Cell-Placeholder-wrapper-inner {
+  padding: 15px;
+  position: relative;
+}
+
+.jp-Cell-Placeholder-wrapper-body {
+  background-repeat: repeat;
+  background-size: 50% auto;
+}
+
+.jp-Cell-Placeholder-wrapper-body div {
+  background: #f6f7f8;
+  background-image: -webkit-linear-gradient(
+    left,
+    #f6f7f8 0%,
+    #edeef1 20%,
+    #f6f7f8 40%,
+    #f6f7f8 100%
+  );
+  background-repeat: no-repeat;
+  background-size: 800px 104px;
+  height: 104px;
+  position: absolute;
+  right: 15px;
+  left: 15px;
+  top: 15px;
+}
+
+div.jp-Cell-Placeholder-h1 {
+  top: 20px;
+  height: 20px;
+  left: 15px;
+  width: 150px;
+}
+
+div.jp-Cell-Placeholder-h2 {
+  left: 15px;
+  top: 50px;
+  height: 10px;
+  width: 100px;
+}
+
+div.jp-Cell-Placeholder-content-1,
+div.jp-Cell-Placeholder-content-2,
+div.jp-Cell-Placeholder-content-3 {
+  left: 15px;
+  right: 15px;
+  height: 10px;
+}
+
+div.jp-Cell-Placeholder-content-1 {
+  top: 100px;
+}
+
+div.jp-Cell-Placeholder-content-2 {
+  top: 120px;
+}
+
+div.jp-Cell-Placeholder-content-3 {
+  top: 140px;
+}
+
+</style>
+<style type="text/css">
+/*-----------------------------------------------------------------------------
+| Copyright (c) Jupyter Development Team.
+| Distributed under the terms of the Modified BSD License.
+|----------------------------------------------------------------------------*/
+
+/*
+The following CSS variables define the main, public API for styling JupyterLab.
+These variables should be used by all plugins wherever possible. In other
+words, plugins should not define custom colors, sizes, etc unless absolutely
+necessary. This enables users to change the visual theme of JupyterLab
+by changing these variables.
+
+Many variables appear in an ordered sequence (0,1,2,3). These sequences
+are designed to work well together, so for example, `--jp-border-color1` should
+be used with `--jp-layout-color1`. The numbers have the following meanings:
+
+* 0: super-primary, reserved for special emphasis
+* 1: primary, most important under normal situations
+* 2: secondary, next most important under normal situations
+* 3: tertiary, next most important under normal situations
+
+Throughout JupyterLab, we are mostly following principles from Google's
+Material Design when selecting colors. We are not, however, following
+all of MD as it is not optimized for dense, information rich UIs.
+*/
+
+:root {
+  /* Elevation
+   *
+   * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
+   *
+   * https://github.com/material-components/material-components-web
+   * https://material-components-web.appspot.com/elevation.html
+   */
+
+  --jp-shadow-base-lightness: 0;
+  --jp-shadow-umbra-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.2
+  );
+  --jp-shadow-penumbra-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.14
+  );
+  --jp-shadow-ambient-color: rgba(
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    var(--jp-shadow-base-lightness),
+    0.12
+  );
+  --jp-elevation-z0: none;
+  --jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
+    0 1px 1px 0 var(--jp-shadow-penumbra-color),
+    0 1px 3px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
+    0 2px 2px 0 var(--jp-shadow-penumbra-color),
+    0 1px 5px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
+    0 4px 5px 0 var(--jp-shadow-penumbra-color),
+    0 1px 10px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
+    0 6px 10px 0 var(--jp-shadow-penumbra-color),
+    0 1px 18px 0 var(--jp-shadow-ambient-color);
+  --jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
+    0 8px 10px 1px var(--jp-shadow-penumbra-color),
+    0 3px 14px 2px var(--jp-shadow-ambient-color);
+  --jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
+    0 12px 17px 2px var(--jp-shadow-penumbra-color),
+    0 5px 22px 4px var(--jp-shadow-ambient-color);
+  --jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
+    0 16px 24px 2px var(--jp-shadow-penumbra-color),
+    0 6px 30px 5px var(--jp-shadow-ambient-color);
+  --jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
+    0 20px 31px 3px var(--jp-shadow-penumbra-color),
+    0 8px 38px 7px var(--jp-shadow-ambient-color);
+  --jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
+    0 24px 38px 3px var(--jp-shadow-penumbra-color),
+    0 9px 46px 8px var(--jp-shadow-ambient-color);
+
+  /* Borders
+   *
+   * The following variables, specify the visual styling of borders in JupyterLab.
+   */
+
+  --jp-border-width: 1px;
+  --jp-border-color0: var(--md-grey-400);
+  --jp-border-color1: var(--md-grey-400);
+  --jp-border-color2: var(--md-grey-300);
+  --jp-border-color3: var(--md-grey-200);
+  --jp-inverse-border-color: var(--md-grey-600);
+  --jp-border-radius: 2px;
+
+  /* UI Fonts
+   *
+   * The UI font CSS variables are used for the typography all of the JupyterLab
+   * user interface elements that are not directly user generated content.
+   *
+   * The font sizing here is done assuming that the body font size of --jp-ui-font-size1
+   * is applied to a parent element. When children elements, such as headings, are sized
+   * in em all things will be computed relative to that body size.
+   */
+
+  --jp-ui-font-scale-factor: 1.2;
+  --jp-ui-font-size0: 0.83333em;
+  --jp-ui-font-size1: 13px; /* Base font size */
+  --jp-ui-font-size2: 1.2em;
+  --jp-ui-font-size3: 1.44em;
+  --jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
+    helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
+    'Segoe UI Symbol';
+
+  /*
+   * Use these font colors against the corresponding main layout colors.
+   * In a light theme, these go from dark to light.
+   */
+
+  /* Defaults use Material Design specification */
+  --jp-ui-font-color0: rgba(0, 0, 0, 1);
+  --jp-ui-font-color1: rgba(0, 0, 0, 0.87);
+  --jp-ui-font-color2: rgba(0, 0, 0, 0.54);
+  --jp-ui-font-color3: rgba(0, 0, 0, 0.38);
+
+  /*
+   * Use these against the brand/accent/warn/error colors.
+   * These will typically go from light to darker, in both a dark and light theme.
+   */
+
+  --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
+  --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
+  --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
+  --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
+
+  /* Content Fonts
+   *
+   * Content font variables are used for typography of user generated content.
+   *
+   * The font sizing here is done assuming that the body font size of --jp-content-font-size1
+   * is applied to a parent element. When children elements, such as headings, are sized
+   * in em all things will be computed relative to that body size.
+   */
+
+  --jp-content-line-height: 1.6;
+  --jp-content-font-scale-factor: 1.2;
+  --jp-content-font-size0: 0.83333em;
+  --jp-content-font-size1: 14px; /* Base font size */
+  --jp-content-font-size2: 1.2em;
+  --jp-content-font-size3: 1.44em;
+  --jp-content-font-size4: 1.728em;
+  --jp-content-font-size5: 2.0736em;
+
+  /* This gives a magnification of about 125% in presentation mode over normal. */
+  --jp-content-presentation-font-size1: 17px;
+  --jp-content-heading-line-height: 1;
+  --jp-content-heading-margin-top: 1.2em;
+  --jp-content-heading-margin-bottom: 0.8em;
+  --jp-content-heading-font-weight: 500;
+
+  /* Defaults use Material Design specification */
+  --jp-content-font-color0: rgba(0, 0, 0, 1);
+  --jp-content-font-color1: rgba(0, 0, 0, 0.87);
+  --jp-content-font-color2: rgba(0, 0, 0, 0.54);
+  --jp-content-font-color3: rgba(0, 0, 0, 0.38);
+  --jp-content-link-color: var(--md-blue-900);
+  --jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
+    'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
+    'Segoe UI Emoji', 'Segoe UI Symbol';
+
+  /*
+   * Code Fonts
+   *
+   * Code font variables are used for typography of code and other monospaces content.
+   */
+
+  --jp-code-font-size: 13px;
+  --jp-code-line-height: 1.3077; /* 17px for 13px base */
+  --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
+  --jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
+  --jp-code-font-family: var(--jp-code-font-family-default);
+
+  /* This gives a magnification of about 125% in presentation mode over normal. */
+  --jp-code-presentation-font-size: 16px;
+
+  /* may need to tweak cursor width if you change font size */
+  --jp-code-cursor-width0: 1.4px;
+  --jp-code-cursor-width1: 2px;
+  --jp-code-cursor-width2: 4px;
+
+  /* Layout
+   *
+   * The following are the main layout colors use in JupyterLab. In a light
+   * theme these would go from light to dark.
+   */
+
+  --jp-layout-color0: white;
+  --jp-layout-color1: white;
+  --jp-layout-color2: var(--md-grey-200);
+  --jp-layout-color3: var(--md-grey-400);
+  --jp-layout-color4: var(--md-grey-600);
+
+  /* Inverse Layout
+   *
+   * The following are the inverse layout colors use in JupyterLab. In a light
+   * theme these would go from dark to light.
+   */
+
+  --jp-inverse-layout-color0: #111;
+  --jp-inverse-layout-color1: var(--md-grey-900);
+  --jp-inverse-layout-color2: var(--md-grey-800);
+  --jp-inverse-layout-color3: var(--md-grey-700);
+  --jp-inverse-layout-color4: var(--md-grey-600);
+
+  /* Brand/accent */
+
+  --jp-brand-color0: var(--md-blue-900);
+  --jp-brand-color1: var(--md-blue-700);
+  --jp-brand-color2: var(--md-blue-300);
+  --jp-brand-color3: var(--md-blue-100);
+  --jp-brand-color4: var(--md-blue-50);
+  --jp-accent-color0: var(--md-green-900);
+  --jp-accent-color1: var(--md-green-700);
+  --jp-accent-color2: var(--md-green-300);
+  --jp-accent-color3: var(--md-green-100);
+
+  /* State colors (warn, error, success, info) */
+
+  --jp-warn-color0: var(--md-orange-900);
+  --jp-warn-color1: var(--md-orange-700);
+  --jp-warn-color2: var(--md-orange-300);
+  --jp-warn-color3: var(--md-orange-100);
+  --jp-error-color0: var(--md-red-900);
+  --jp-error-color1: var(--md-red-700);
+  --jp-error-color2: var(--md-red-300);
+  --jp-error-color3: var(--md-red-100);
+  --jp-success-color0: var(--md-green-900);
+  --jp-success-color1: var(--md-green-700);
+  --jp-success-color2: var(--md-green-300);
+  --jp-success-color3: var(--md-green-100);
+  --jp-info-color0: var(--md-cyan-900);
+  --jp-info-color1: var(--md-cyan-700);
+  --jp-info-color2: var(--md-cyan-300);
+  --jp-info-color3: var(--md-cyan-100);
+
+  /* Cell specific styles */
+
+  --jp-cell-padding: 5px;
+  --jp-cell-collapser-width: 8px;
+  --jp-cell-collapser-min-height: 20px;
+  --jp-cell-collapser-not-active-hover-opacity: 0.6;
+  --jp-cell-editor-background: var(--md-grey-100);
+  --jp-cell-editor-border-color: var(--md-grey-300);
+  --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
+  --jp-cell-editor-active-background: var(--jp-layout-color0);
+  --jp-cell-editor-active-border-color: var(--jp-brand-color1);
+  --jp-cell-prompt-width: 64px;
+  --jp-cell-prompt-font-family: var(--jp-code-font-family-default);
+  --jp-cell-prompt-letter-spacing: 0;
+  --jp-cell-prompt-opacity: 1;
+  --jp-cell-prompt-not-active-opacity: 0.5;
+  --jp-cell-prompt-not-active-font-color: var(--md-grey-700);
+
+  /* A custom blend of MD grey and blue 600
+   * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
+  --jp-cell-inprompt-font-color: #307fc1;
+
+  /* A custom blend of MD grey and orange 600
+   * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
+  --jp-cell-outprompt-font-color: #bf5b3d;
+
+  /* Notebook specific styles */
+
+  --jp-notebook-padding: 10px;
+  --jp-notebook-select-background: var(--jp-layout-color1);
+  --jp-notebook-multiselected-color: var(--md-blue-50);
+
+  /* The scroll padding is calculated to fill enough space at the bottom of the
+  notebook to show one single-line cell (with appropriate padding) at the top
+  when the notebook is scrolled all the way to the bottom. We also subtract one
+  pixel so that no scrollbar appears if we have just one single-line cell in the
+  notebook. This padding is to enable a 'scroll past end' feature in a notebook.
+  */
+  --jp-notebook-scroll-padding: calc(
+    100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
+      var(--jp-code-padding) - var(--jp-cell-padding) - 1px
+  );
+
+  /* Rendermime styles */
+
+  --jp-rendermime-error-background: #fdd;
+  --jp-rendermime-table-row-background: var(--md-grey-100);
+  --jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
+
+  /* Dialog specific styles */
+
+  --jp-dialog-background: rgba(0, 0, 0, 0.25);
+
+  /* Console specific styles */
+
+  --jp-console-padding: 10px;
+
+  /* Toolbar specific styles */
+
+  --jp-toolbar-border-color: var(--jp-border-color1);
+  --jp-toolbar-micro-height: 8px;
+  --jp-toolbar-background: var(--jp-layout-color1);
+  --jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
+  --jp-toolbar-header-margin: 4px 4px 0 4px;
+  --jp-toolbar-active-background: var(--md-grey-300);
+
+  /* Statusbar specific styles */
+
+  --jp-statusbar-height: 24px;
+
+  /* Input field styles */
+
+  --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
+  --jp-input-active-background: var(--jp-layout-color1);
+  --jp-input-hover-background: var(--jp-layout-color1);
+  --jp-input-background: var(--md-grey-100);
+  --jp-input-border-color: var(--jp-inverse-border-color);
+  --jp-input-active-border-color: var(--jp-brand-color1);
+  --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
+
+  /* General editor styles */
+
+  --jp-editor-selected-background: #d9d9d9;
+  --jp-editor-selected-focused-background: #d7d4f0;
+  --jp-editor-cursor-color: var(--jp-ui-font-color0);
+
+  /* Code mirror specific styles */
+
+  --jp-mirror-editor-keyword-color: #008000;
+  --jp-mirror-editor-atom-color: #88f;
+  --jp-mirror-editor-number-color: #080;
+  --jp-mirror-editor-def-color: #00f;
+  --jp-mirror-editor-variable-color: var(--md-grey-900);
+  --jp-mirror-editor-variable-2-color: rgb(0, 54, 109);
+  --jp-mirror-editor-variable-3-color: #085;
+  --jp-mirror-editor-punctuation-color: #05a;
+  --jp-mirror-editor-property-color: #05a;
+  --jp-mirror-editor-operator-color: #a2f;
+  --jp-mirror-editor-comment-color: #408080;
+  --jp-mirror-editor-string-color: #ba2121;
+  --jp-mirror-editor-string-2-color: #708;
+  --jp-mirror-editor-meta-color: #a2f;
+  --jp-mirror-editor-qualifier-color: #555;
+  --jp-mirror-editor-builtin-color: #008000;
+  --jp-mirror-editor-bracket-color: #997;
+  --jp-mirror-editor-tag-color: #170;
+  --jp-mirror-editor-attribute-color: #00c;
+  --jp-mirror-editor-header-color: blue;
+  --jp-mirror-editor-quote-color: #090;
+  --jp-mirror-editor-link-color: #00c;
+  --jp-mirror-editor-error-color: #f00;
+  --jp-mirror-editor-hr-color: #999;
+
+  /*
+    RTC user specific colors.
+    These colors are used for the cursor, username in the editor,
+    and the icon of the user.
+  */
+
+  --jp-collaborator-color1: #ffad8e;
+  --jp-collaborator-color2: #dac83d;
+  --jp-collaborator-color3: #72dd76;
+  --jp-collaborator-color4: #00e4d0;
+  --jp-collaborator-color5: #45d4ff;
+  --jp-collaborator-color6: #e2b1ff;
+  --jp-collaborator-color7: #ff9de6;
+
+  /* Vega extension styles */
+
+  --jp-vega-background: white;
+
+  /* Sidebar-related styles */
+
+  --jp-sidebar-min-width: 250px;
+
+  /* Search-related styles */
+
+  --jp-search-toggle-off-opacity: 0.5;
+  --jp-search-toggle-hover-opacity: 0.8;
+  --jp-search-toggle-on-opacity: 1;
+  --jp-search-selected-match-background-color: rgb(245, 200, 0);
+  --jp-search-selected-match-color: black;
+  --jp-search-unselected-match-background-color: var(
+    --jp-inverse-layout-color0
+  );
+  --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
+
+  /* Icon colors that work well with light or dark backgrounds */
+  --jp-icon-contrast-color0: var(--md-purple-600);
+  --jp-icon-contrast-color1: var(--md-green-600);
+  --jp-icon-contrast-color2: var(--md-pink-600);
+  --jp-icon-contrast-color3: var(--md-blue-600);
+
+  /* Button colors */
+  --jp-accept-color-normal: var(--md-blue-700);
+  --jp-accept-color-hover: var(--md-blue-800);
+  --jp-accept-color-active: var(--md-blue-900);
+  --jp-warn-color-normal: var(--md-red-700);
+  --jp-warn-color-hover: var(--md-red-800);
+  --jp-warn-color-active: var(--md-red-900);
+  --jp-reject-color-normal: var(--md-grey-600);
+  --jp-reject-color-hover: var(--md-grey-700);
+  --jp-reject-color-active: var(--md-grey-800);
+
+  /* File or activity icons and switch semantic variables */
+  --jp-jupyter-icon-color: #f37626;
+  --jp-notebook-icon-color: #f37626;
+  --jp-json-icon-color: var(--md-orange-700);
+  --jp-console-icon-background-color: var(--md-blue-700);
+  --jp-console-icon-color: white;
+  --jp-terminal-icon-background-color: var(--md-grey-800);
+  --jp-terminal-icon-color: var(--md-grey-200);
+  --jp-text-editor-icon-color: var(--md-grey-700);
+  --jp-inspector-icon-color: var(--md-grey-700);
+  --jp-switch-color: var(--md-grey-400);
+  --jp-switch-true-position-color: var(--md-orange-900);
+}
+</style>
+<style type="text/css">
+/* Force rendering true colors when outputing to pdf */
+* {
+  -webkit-print-color-adjust: exact;
+}
+
+/* Misc */
+a.anchor-link {
+  display: none;
+}
+
+/* Input area styling */
+.jp-InputArea {
+  overflow: hidden;
+}
+
+.jp-InputArea-editor {
+  overflow: hidden;
+}
+
+.cm-editor.cm-s-jupyter .highlight pre {
+/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
+  padding: var(--jp-code-padding) 4px;
+  margin: 0;
+
+  font-family: inherit;
+  font-size: inherit;
+  line-height: inherit;
+  color: inherit;
+
+}
+
+.jp-OutputArea-output pre {
+  line-height: inherit;
+  font-family: inherit;
+}
+
+.jp-RenderedText pre {
+  color: var(--jp-content-font-color1);
+  font-size: var(--jp-code-font-size);
+}
+
+/* Hiding the collapser by default */
+.jp-Collapser {
+  display: none;
+}
+
+@page {
+    margin: 0.5in; /* Margin for each printed piece of paper */
+}
+
+@media print {
+  .jp-Cell-inputWrapper,
+  .jp-Cell-outputWrapper {
+    display: block;
+  }
+}
+</style>
+<!-- Load mathjax -->
+<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
+<!-- MathJax configuration -->
+<script type="text/x-mathjax-config">
+    init_mathjax = function() {
+        if (window.MathJax) {
+        // MathJax loaded
+            MathJax.Hub.Config({
+                TeX: {
+                    equationNumbers: {
+                    autoNumber: "AMS",
+                    useLabelIds: true
+                    }
+                },
+                tex2jax: {
+                    inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+                    displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+                    processEscapes: true,
+                    processEnvironments: true
+                },
+                displayAlign: 'center',
+                CommonHTML: {
+                    linebreaks: {
+                    automatic: true
+                    }
+                }
+            });
+
+            MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
+        }
+    }
+    init_mathjax();
+    </script>
+<!-- End of mathjax configuration --><script type="module">
+  document.addEventListener("DOMContentLoaded", async () => {
+    const diagrams = document.querySelectorAll(".jp-Mermaid > pre.mermaid");
+    // do not load mermaidjs if not needed
+    if (!diagrams.length) {
+      return;
+    }
+    const mermaid = (await import("https://cdnjs.cloudflare.com/ajax/libs/mermaid/10.6.0/mermaid.esm.min.mjs")).default;
+    const parser = new DOMParser();
+
+    mermaid.initialize({
+      maxTextSize: 100000,
+      startOnLoad: false,
+      fontFamily: window
+        .getComputedStyle(document.body)
+        .getPropertyValue("--jp-ui-font-family"),
+      theme: document.querySelector("body[data-jp-theme-light='true']")
+        ? "default"
+        : "dark",
+    });
+
+    let _nextMermaidId = 0;
+
+    function makeMermaidImage(svg) {
+      const img = document.createElement("img");
+      const doc = parser.parseFromString(svg, "image/svg+xml");
+      const svgEl = doc.querySelector("svg");
+      const { maxWidth } = svgEl?.style || {};
+      const firstTitle = doc.querySelector("title");
+      const firstDesc = doc.querySelector("desc");
+
+      img.setAttribute("src", `data:image/svg+xml,${encodeURIComponent(svg)}`);
+      if (maxWidth) {
+        img.width = parseInt(maxWidth);
+      }
+      if (firstTitle) {
+        img.setAttribute("alt", firstTitle.textContent);
+      }
+      if (firstDesc) {
+        const caption = document.createElement("figcaption");
+        caption.className = "sr-only";
+        caption.textContent = firstDesc.textContent;
+        return [img, caption];
+      }
+      return [img];
+    }
+
+    async function makeMermaidError(text) {
+      let errorMessage = "";
+      try {
+        await mermaid.parse(text);
+      } catch (err) {
+        errorMessage = `${err}`;
+      }
+
+      const result = document.createElement("details");
+      result.className = 'jp-RenderedMermaid-Details';
+      const summary = document.createElement("summary");
+      summary.className = 'jp-RenderedMermaid-Summary';
+      const pre = document.createElement("pre");
+      const code = document.createElement("code");
+      code.innerText = text;
+      pre.appendChild(code);
+      summary.appendChild(pre);
+      result.appendChild(summary);
+
+      const warning = document.createElement("pre");
+      warning.innerText = errorMessage;
+      result.appendChild(warning);
+      return [result];
+    }
+
+    async function renderOneMarmaid(src) {
+      const id = `jp-mermaid-${_nextMermaidId++}`;
+      const parent = src.parentNode;
+      let raw = src.textContent.trim();
+      const el = document.createElement("div");
+      el.style.visibility = "hidden";
+      document.body.appendChild(el);
+      let results = null;
+      let output = null;
+      try {
+        const { svg } = await mermaid.render(id, raw, el);
+        results = makeMermaidImage(svg);
+        output = document.createElement("figure");
+        results.map(output.appendChild, output);
+      } catch (err) {
+        parent.classList.add("jp-mod-warning");
+        results = await makeMermaidError(raw);
+        output = results[0];
+      } finally {
+        el.remove();
+      }
+      parent.classList.add("jp-RenderedMermaid");
+      parent.appendChild(output);
+    }
+
+    void Promise.all([...diagrams].map(renderOneMarmaid));
+  });
+</script>
+<style>
+  .jp-Mermaid:not(.jp-RenderedMermaid) {
+    display: none;
+  }
+
+  .jp-RenderedMermaid {
+    overflow: auto;
+    display: flex;
+  }
+
+  .jp-RenderedMermaid.jp-mod-warning {
+    width: auto;
+    padding: 0.5em;
+    margin-top: 0.5em;
+    border: var(--jp-border-width) solid var(--jp-warn-color2);
+    border-radius: var(--jp-border-radius);
+    color: var(--jp-ui-font-color1);
+    font-size: var(--jp-ui-font-size1);
+    white-space: pre-wrap;
+    word-wrap: break-word;
+  }
+
+  .jp-RenderedMermaid figure {
+    margin: 0;
+    overflow: auto;
+    max-width: 100%;
+  }
+
+  .jp-RenderedMermaid img {
+    max-width: 100%;
+  }
+
+  .jp-RenderedMermaid-Details > pre {
+    margin-top: 1em;
+  }
+
+  .jp-RenderedMermaid-Summary {
+    color: var(--jp-warn-color2);
+  }
+
+  .jp-RenderedMermaid:not(.jp-mod-warning) pre {
+    display: none;
+  }
+
+  .jp-RenderedMermaid-Summary > pre {
+    display: inline-block;
+    white-space: normal;
+  }
+</style>
+<!-- End of mermaid configuration --></head>
+<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
+<main>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=historical-maker">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h1 id="GA-2.2:-M-is-for-Modelling">GA 2.2: M is for Modelling<a class="anchor-link" href="#GA-2.2:-M-is-for-Modelling">¶</a></h1><h1 style="position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; top: 60px;right: 30px; margin: 0; border: 0">
+<style>
+        .markdown {width:100%; position: relative}
+        article { position: relative }
+    </style>
+<img alt="No description has been provided for this image" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png" style="width:100px"/>
+<img alt="No description has been provided for this image" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png" style="width:100px"/>
+</h1>
+<h2 style="height: 10px">
+</h2>
+<p><em><a href="http://mude.citg.tudelft.nl/">CEGM1000 MUDE</a>: Week 2.2. For: 22 November, 2024</em></p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2ac37a4d-a0cc-4881-87d8-755e9d068adc">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h2 id="Finite-element-formulation-for-the-diffusion-equation">Finite element formulation for the diffusion equation<a class="anchor-link" href="#Finite-element-formulation-for-the-diffusion-equation">¶</a></h2><p>In this assignment we will model the heat equation in 2D on a geometry that is non-trivial. Let us first recall the diffusion equation with source term:</p>
+$$\frac{\partial u}{\partial t} = \nu \left(\frac{\partial^{2} u}{{\partial x}^{2}} + \frac{\partial^{2} u}{{\partial y}^{2}}\right) + f$$<p>with Dirichlet boundary conditions (prescribed values $\bar{u}$) on part of the boundary ($\Gamma_D$) and Neumann boundary conditions (prescribed flux $h$) on the remainder of the boundary ($\Gamma_N$):</p>
+$$
+u =\bar{u} \quad \text{on} \quad \Gamma_D \\
+\nu \nabla u\cdot \mathbf{n} = h \quad \text{on} \quad \Gamma_N
+$$<p>Here, the diffusion equation is interpreted as the heat equation, meaning that the unknown field $u(x,y,t)$ is the temperature and the source term $f$ is a heat source. This equation can be turned into a discretized form with the standard finite element procedure. Finite elements are only used for the discretization in space, discretization in time will be discussed later.</p>
+$$ \left[\int_{\Omega} \mathbf{N}^T \mathbf{N} \,d \Omega\right] \dot{\mathbf{u}} + \left[\int_{\Omega} \mathbf{B}^T \nu \mathbf{B} \,d \Omega\right] \mathbf{u} = \int_{\Omega} \mathbf{N}^T f \,d \Omega + \int_{\Gamma_N} \mathbf{N}^T h \,d \Gamma$$<p>With respect to the Poisson equation in 1D there are several differences:</p>
+<ul>
+<li>There is a time-dependent term</li>
+<li>Neumann boundary conditions are evaluated in a boundary integral which is now a line integral</li>
+<li>The $\mathbf{B}$-matrix is now truly a matrix (no longer a row vector) defined as $\nabla\mathbf{N}$</li>
+</ul>
+<p>Using the  symbol $\mathbf{M}$ for the matrix associated with $\dot{\mathbf{u}}$, we can write:</p>
+$$ \mathbf{M \dot{u}} + \mathbf{K u} = \mathbf{f}$$<p>where:</p>
+$$ \mathbf{M} = \int_{\Omega} \mathbf{N}^T \mathbf{N} \,d \Omega$$$$ \mathbf{K} = \int_{\Omega} \mathbf{B}^T \nu \mathbf{B} $$$$ \mathbf{f} = \int_{\Omega} \mathbf{N}^T f \,d \Omega + \int_{\Gamma_N} \mathbf{N}^T h \,d \Gamma $$<p>Now we have introduced a spatial discretization of the time-dependent Partial Differential Equation, we still need to find a way to solve it in time. Suppose we know the solution up to time step $n$ (in the beginning of the analysis, that will be the initial conditions). To compute the result at time-step $n+1$ we want to solve the following equation:</p>
+$$ \mathbf{M \dot{u}}_{n+1} + \mathbf{K u}_{n+1} = \mathbf{f}_{n+1}$$<p>The problem is however that there are two unknown vectors in this equation. The nodal temperatures $\mathbf{u}$ at as well as their time derivative. However, these two are not independent. We can express  at time step $n+1$ as a function of the temperature and the rate of change at time step $n$ using backward Euler:</p>
+$$ \mathbf{u}_{n+1} = \mathbf{u}_{n} + \Delta t \space \mathbf{\dot{u}}_{n+1}$$<p>Rearranging this equation gives:</p>
+$$ \mathbf{\dot{u}}_{n+1} = \frac{\mathbf{u}_{n+1} - \mathbf{u}_{n}}{\Delta t}$$<p>This relation is applied on every entry in the $\mathbf{\dot{u}}$ vector to arrive at an equation with only one vector with unknown values:</p>
+$$ \mathbf{M} \frac{\mathbf{u}_{n+1} - \mathbf{u}_{n}}{\Delta t} + \mathbf{K u}_{n+1} = \mathbf{f}_{n+1}$$<p>Rearranging to get all the unknown terms to the left hand side gives:</p>
+$$ \mathbf{M} \frac{\mathbf{u}_{n+1}}{\Delta t} + \mathbf{K u}_{n+1} = \mathbf{M} \frac{\mathbf{u}_{n}}{\Delta t} + \mathbf{f}_{n+1}$$$$ \left(\frac{1}{\Delta t} \mathbf{M}  + \mathbf{K} \right) \mathbf{u}_{n+1} = \frac{1}{\Delta t} \mathbf{M} \mathbf{u}_{n} + \mathbf{f}_{n+1}$$<p>which is a linear system of equations that can be solved for $\mathbf{u}_{n+1}$:</p>
+$$ \mathbf{u}_{n+1} = \left(\frac{1}{\Delta t} \mathbf{M}  + \mathbf{K} \right)^{-1} \left( \frac{1}{\Delta t} \mathbf{M} \mathbf{u}_{n} + \mathbf{f}_{n+1} \right)$$<p><strong>Remark</strong>: although we are working with the finite element method, for the time discretization we have introduced an approximation for the derivative, just as in the finite difference method. It is also possible to discretize in time with shape functions, to arrive at the <em>space-time finite element method</em>, but the option chosen in this notebook is the more common one.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=3e594469-9f67-4012-b662-c2dea9a78f66">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<div style="background-color:#AABAB2; color: black; vertical-align: middle; width:95%; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+<b>Todays task</b>
+<p>Below, the code for analysis of a 2D diffusion problem is given. The implementation follows the formulation introduced above. Run the analysis and inspect code and results to answer the questions in  <code>Report.md</code>.</p>
+</p>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a11ac720-0679-41d8-9dde-eb252f60e1b6">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-1:-Preprocessing">Step 1: Preprocessing<a class="anchor-link" href="#Step-1:-Preprocessing">¶</a></h4><p>A mesh of triangular elements has already been defined. A function is provided below that reads the file <code>bigM.msh</code> and stores the mesh data in two arrays, one with coordinates of the nodes, and one that defines the elements. A function is also provided that visualizes the mesh. Run the code block below to read the mesh file and visualize it.</p>
+<div style="background-color:#FAE99E; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+Note that there is a second mesh file in this folder, <code>bigM_fine.msh</code> which you can use later to perform an analysis on the same geometry with a finer mesh. To do so, change the line where the <code>readGmsh</code> function is called.
+</p>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=homeless-remove">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+<span class="k">def</span> <span class="nf">readGmsh</span> <span class="p">(</span><span class="n">fname</span><span class="p">):</span>
+    <span class="k">if</span> <span class="ow">not</span> <span class="n">fname</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'.msh'</span><span class="p">):</span>
+        <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s1">'Unexpected mesh file extension'</span><span class="p">)</span>
+    <span class="n">nodes</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">elems</span> <span class="o">=</span> <span class="p">[]</span>
+    <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">False</span>
+    <span class="n">parse_elems</span> <span class="o">=</span> <span class="kc">False</span>
+    <span class="n">rank</span> <span class="o">=</span> <span class="mi">2</span>
+    <span class="n">nnodes</span> <span class="o">=</span> <span class="mi">3</span>
+    <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">fname</span><span class="p">)</span> <span class="k">as</span> <span class="n">msh</span><span class="p">:</span>
+        <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">msh</span><span class="p">:</span>
+            <span class="n">sp</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
+            <span class="k">if</span> <span class="s1">'$Nodes'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
+                <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">elif</span> <span class="s1">'$Elements'</span> <span class="ow">in</span> <span class="n">line</span><span class="p">:</span>
+                <span class="n">parse_nodes</span> <span class="o">=</span> <span class="kc">False</span>
+                <span class="n">parse_elems</span> <span class="o">=</span> <span class="kc">True</span>
+            <span class="k">elif</span> <span class="n">parse_nodes</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">:])</span> <span class="o">!=</span> <span class="mi">3</span><span class="p">:</span>
+                    <span class="k">raise</span> <span class="ne">SyntaxError</span><span class="p">(</span><span class="s1">'readGmsh: Three coordinates per node are expected'</span><span class="p">)</span>
+                <span class="n">coords</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">:],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">float64</span><span class="p">)</span>
+                <span class="n">nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">coords</span><span class="p">)</span>
+            <span class="k">elif</span> <span class="n">parse_elems</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">sp</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
+                <span class="n">eltype</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
+                <span class="n">inodes</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">3</span> <span class="o">+</span> <span class="nb">int</span><span class="p">(</span><span class="n">sp</span><span class="p">[</span><span class="mi">2</span><span class="p">]):],</span> <span class="n">dtype</span><span class="o">=</span><span class="n">np</span><span class="o">.</span><span class="n">int32</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
+                <span class="n">elems</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">inodes</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">elems</span><span class="p">)</span>
+
+<span class="k">def</span> <span class="nf">plotMesh</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">()</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">triplot</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">],</span> <span class="n">connectivity</span><span class="p">,</span> <span class="s1">'k-'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'equal'</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span>
+
+<span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span> <span class="o">=</span> <span class="n">readGmsh</span><span class="p">(</span><span class="s1">'bigM.msh'</span><span class="p">)</span>
+<span class="n">plotMesh</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=imposed-preparation">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-2:-Finite-element-implementation">Step 2: Finite element implementation<a class="anchor-link" href="#Step-2:-Finite-element-implementation">¶</a></h4>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=f9b1e627-e9cc-40ee-9386-477a87d9dcf7">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">sparse</span>
+<span class="kn">from</span> <span class="nn">scipy.sparse</span> <span class="kn">import</span> <span class="n">linalg</span>
+
+<span class="c1"># Function makes the coefficients of shape functions for a 3-node triangle</span>
+<span class="c1"># the shape function for node i is defined as N_i = a_i + b_i*x + c_i*y</span>
+<span class="c1"># this function returns the coefficients as coeff[i] = [a_i, b_i, c_i]</span>
+<span class="k">def</span> <span class="nf">get_shape_functions_T3</span><span class="p">(</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span> <span class="p">):</span>
+    <span class="n">coordinate_Matrix</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ones</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n1</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">coordinate_Matrix</span><span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="c1"># Work out constants C1, C1 and C3 for the shape function relative to each node</span>
+    <span class="n">c_inv</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linalg</span><span class="o">.</span><span class="n">inv</span><span class="p">(</span><span class="n">coordinate_Matrix</span><span class="p">)</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">))</span>
+    <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">c_inv</span><span class="p">,</span> <span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">))</span>
+    
+    <span class="k">return</span> <span class="n">coeffs</span>
+
+<span class="c1"># Function creates the derivative shape function vector (B) of the given 3-node triangle</span>
+<span class="k">def</span> <span class="nf">get_B_matrix</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">get_shape_functions_T3</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="n">B_matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]],</span> <span class="p">[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">],</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]]]</span>
+    
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">(</span><span class="n">B_matrix</span><span class="p">)</span>
+
+<span class="c1"># Function returns the area of the triangle with given nodes n1, n2, n3</span>
+<span class="k">def</span> <span class="nf">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="c1"># Defining two vectors spanning the total area</span>
+    <span class="n">u</span> <span class="o">=</span> <span class="n">n3</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
+    <span class="n">v</span> <span class="o">=</span> <span class="n">n2</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span><span class="o">-</span><span class="n">n1</span><span class="p">[</span><span class="mi">0</span><span class="p">:</span><span class="mi">2</span><span class="p">]</span>
+  
+    <span class="k">return</span> <span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">cross</span><span class="p">(</span><span class="n">u</span><span class="p">,</span> <span class="n">v</span><span class="p">))</span><span class="o">/</span><span class="mi">2</span>
+
+<span class="c1"># Function returns the local K-matrix of an element with given node n1, n2, n3</span>
+<span class="k">def</span> <span class="nf">get_element_K</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">,</span> <span class="n">nu</span><span class="p">):</span>
+    <span class="n">B</span> <span class="o">=</span> <span class="n">get_B_matrix</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="n">element_area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    <span class="k">return</span> <span class="n">element_area</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">B</span><span class="p">),</span> <span class="n">B</span><span class="p">)</span><span class="o">*</span><span class="n">nu</span>
+
+<span class="c1"># Assembly function for the K matrix</span>
+<span class="k">def</span> <span class="nf">get_global_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">n_elem</span><span class="p">,</span> <span class="n">nu</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">K</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">n_DOF</span><span class="p">,</span> <span class="n">n_DOF</span><span class="p">))</span>
+    
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_elem</span><span class="p">):</span>
+        <span class="n">elnodes</span> <span class="o">=</span> <span class="n">connectivity</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
+        <span class="n">K_el</span> <span class="o">=</span> <span class="n">get_element_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">2</span><span class="p">]],</span> <span class="n">nu</span><span class="p">)</span>
+        <span class="n">K</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ix_</span><span class="p">(</span><span class="n">elnodes</span><span class="p">,</span><span class="n">elnodes</span><span class="p">)]</span> <span class="o">+=</span> <span class="n">K_el</span>
+                
+    <span class="k">return</span> <span class="n">K</span>
+
+<span class="c1"># Assembly function for the f vector</span>
+<span class="k">def</span> <span class="nf">get_global_f</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">q</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">f</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_DOF</span><span class="p">)</span>
+    
+    <span class="k">for</span> <span class="n">elem</span> <span class="ow">in</span> <span class="n">connectivity</span><span class="p">:</span>
+        <span class="n">area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
+        <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">3</span><span class="p">):</span>
+            <span class="n">f</span><span class="p">[</span><span class="n">elem</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">+=</span> <span class="n">q</span><span class="o">*</span><span class="n">area</span><span class="o">/</span><span class="mi">3</span>
+            
+    <span class="k">return</span> <span class="n">f</span>
+
+<span class="c1"># Extra functions to obtain the M-matrix</span>
+<span class="k">def</span> <span class="nf">evaluate_N_matrix</span><span class="p">(</span><span class="n">ipcoords</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>    
+    <span class="n">coeffs</span> <span class="o">=</span> <span class="n">get_shape_functions_T3</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+    
+    <span class="n">x</span> <span class="o">=</span> <span class="n">ipcoords</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">ipcoords</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="n">N_matrix</span> <span class="o">=</span> <span class="p">[[</span><span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">,</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">,</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">x</span> <span class="o">+</span> <span class="n">coeffs</span><span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">2</span><span class="p">]</span><span class="o">*</span><span class="n">y</span><span class="p">]]</span>
+    
+    <span class="k">return</span> <span class="n">N_matrix</span>
+
+<span class="c1"># Function takes the 3 coordinates of a triangular element and returns it's corresponding M-matrix</span>
+<span class="k">def</span> <span class="nf">get_element_M</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">):</span>
+    <span class="n">M_el</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="mi">3</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
+    <span class="n">element_area</span> <span class="o">=</span> <span class="n">get_area</span><span class="p">(</span><span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>    
+    
+    <span class="c1"># Define 3-point integration scheme</span>
+    <span class="n">integration_locations</span> <span class="o">=</span> <span class="p">[(</span><span class="n">n1</span><span class="o">+</span><span class="n">n2</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>  <span class="p">(</span><span class="n">n2</span><span class="o">+</span><span class="n">n3</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span>  <span class="p">(</span><span class="n">n3</span><span class="o">+</span><span class="n">n1</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span><span class="p">]</span>
+    <span class="n">integration_weights</span> <span class="o">=</span> <span class="p">[</span><span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="n">element_area</span><span class="o">/</span><span class="mi">3</span><span class="p">]</span>
+    
+    <span class="c1"># Loop over integration points and add contribution to local M matrix</span>
+    <span class="k">for</span> <span class="n">x_ip</span><span class="p">,</span> <span class="n">w_ip</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">integration_locations</span><span class="p">,</span> <span class="n">integration_weights</span><span class="p">):</span>
+        <span class="n">N_local</span> <span class="o">=</span> <span class="n">evaluate_N_matrix</span><span class="p">(</span><span class="n">x_ip</span><span class="p">,</span> <span class="n">n1</span><span class="p">,</span> <span class="n">n2</span><span class="p">,</span> <span class="n">n3</span><span class="p">)</span>
+        <span class="n">M_el</span> <span class="o">+=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">N_local</span><span class="p">),</span> <span class="n">N_local</span><span class="p">)</span><span class="o">*</span><span class="n">w_ip</span>
+    <span class="k">return</span> <span class="n">M_el</span>
+    
+<span class="c1"># Assembly function for the M matrix</span>
+<span class="k">def</span> <span class="nf">get_global_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">n_elem</span><span class="p">):</span>
+    <span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+    <span class="n">M</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">n_DOF</span><span class="p">,</span> <span class="n">n_DOF</span><span class="p">))</span>
+    
+    <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_elem</span><span class="p">):</span>
+        <span class="n">elnodes</span> <span class="o">=</span> <span class="n">connectivity</span><span class="p">[</span><span class="n">i</span><span class="p">,:]</span>
+        <span class="n">M_el</span> <span class="o">=</span> <span class="n">get_element_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">0</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">1</span><span class="p">]],</span> <span class="n">nodes</span><span class="p">[</span><span class="n">elnodes</span><span class="p">[</span><span class="mi">2</span><span class="p">]])</span>
+        <span class="n">M</span><span class="p">[</span><span class="n">np</span><span class="o">.</span><span class="n">ix_</span><span class="p">(</span><span class="n">elnodes</span><span class="p">,</span><span class="n">elnodes</span><span class="p">)]</span> <span class="o">+=</span> <span class="n">M_el</span>
+
+    <span class="k">return</span> <span class="n">M</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=cc76912d-6a45-4329-b90c-1a22aef63f38">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-3:-Problem-definition-and-analysis">Step 3: Problem definition and analysis<a class="anchor-link" href="#Step-3:-Problem-definition-and-analysis">¶</a></h4>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=bb2b843c-5679-478f-8891-a73826414710">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># Set problem parameters</span>
+<span class="n">dt</span> <span class="o">=</span> <span class="mf">0.005</span>
+<span class="n">nt</span> <span class="o">=</span> <span class="mi">500</span>
+<span class="n">nu</span> <span class="o">=</span> <span class="mi">1</span>
+<span class="n">q</span> <span class="o">=</span> <span class="mi">15</span>
+<span class="n">T_initial</span> <span class="o">=</span> <span class="mi">30</span>
+<span class="n">T_edge</span> <span class="o">=</span> <span class="mi">10</span>
+
+<span class="c1"># Find the constrained nodes</span>
+<span class="n">constrained_nodes</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">free_nodes</span> <span class="o">=</span> <span class="p">[]</span>
+<span class="n">n_free</span> <span class="o">=</span> <span class="mi">0</span>
+<span class="n">min_y</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">])</span>
+<span class="n">min_x</span> <span class="o">=</span> <span class="nb">min</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span>
+<span class="n">max_x</span> <span class="o">=</span> <span class="nb">max</span><span class="p">(</span><span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">])</span>
+<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)):</span>
+    <span class="k">if</span> <span class="n">nodes</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="n">min_y</span> <span class="ow">and</span> <span class="n">nodes</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">max_x</span><span class="p">:</span>
+            <span class="n">constrained_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
+    <span class="k">else</span><span class="p">:</span>
+        <span class="n">n_free</span> <span class="o">+=</span> <span class="mi">1</span>
+        <span class="n">free_nodes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> 
+
+<span class="c1"># Set number of increments "nt" and initialize empty solution array "us"</span>
+<span class="n">n_DOF</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
+<span class="n">us</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">zeros</span><span class="p">((</span><span class="n">nt</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span><span class="n">n_DOF</span><span class="p">))</span>
+
+<span class="c1"># Set initial conditions</span>
+<span class="n">us</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">T_initial</span>
+
+<span class="c1"># Assemble FE matrices</span>
+<span class="n">f</span> <span class="o">=</span> <span class="n">get_global_f</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="n">q</span><span class="p">)</span>
+<span class="n">Kdense</span> <span class="o">=</span> <span class="n">get_global_K</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span> <span class="n">nu</span><span class="p">)</span>
+<span class="n">Mdense</span> <span class="o">=</span> <span class="n">get_global_M</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">connectivity</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">connectivity</span><span class="p">))</span>
+
+<span class="n">K</span> <span class="o">=</span> <span class="n">sparse</span><span class="o">.</span><span class="n">csc_matrix</span><span class="p">(</span><span class="n">Kdense</span><span class="p">)</span>
+<span class="n">M</span> <span class="o">=</span> <span class="n">sparse</span><span class="o">.</span><span class="n">csc_matrix</span><span class="p">(</span><span class="n">Mdense</span><span class="p">)</span>
+
+<span class="n">Kmod</span> <span class="o">=</span> <span class="n">K</span> <span class="o">+</span> <span class="n">M</span><span class="o">/</span><span class="n">dt</span>
+<span class="n">Kmodff</span> <span class="o">=</span> <span class="n">Kmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">,:][:,</span><span class="n">free_nodes</span><span class="p">]</span>
+<span class="n">Kmodfp</span> <span class="o">=</span> <span class="n">Kmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">,:][:,</span><span class="n">constrained_nodes</span><span class="p">]</span>
+
+<span class="c1"># Pre-factorize the sparse matrix to save computational costs</span>
+<span class="n">solver</span> <span class="o">=</span> <span class="n">linalg</span><span class="o">.</span><span class="n">factorized</span><span class="p">(</span><span class="n">Kmodff</span><span class="p">)</span>
+
+<span class="c1"># Solve system of equations for subsequent time steps</span>
+<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">nt</span><span class="p">):</span>
+    <span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">constrained_nodes</span><span class="p">]</span> <span class="o">=</span> <span class="n">T_edge</span>
+    <span class="n">fmod</span> <span class="o">=</span> <span class="n">M</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">/</span> <span class="n">dt</span> <span class="o">+</span> <span class="n">f</span>
+    <span class="n">ff</span> <span class="o">=</span> <span class="n">fmod</span><span class="p">[</span><span class="n">free_nodes</span><span class="p">]</span> <span class="o">-</span> <span class="n">Kmodfp</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">constrained_nodes</span><span class="p">])</span>
+    <span class="n">us</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">free_nodes</span><span class="p">]</span> <span class="o">=</span> <span class="n">solver</span><span class="p">(</span><span class="n">ff</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=confused-enemy">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<h4 id="Step-4:-Post-processing">Step 4: Post-processing<a class="anchor-link" href="#Step-4:-Post-processing">¶</a></h4><p>After the simulation has been performed, we can inspect the results. Three different post-processing functions are provided below that visualize the results in different ways.</p>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dd65c597-e9ac-4d67-8326-18a24e859f18">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<div style="background-color:#FAE99E; color: black; vertical-align: middle; padding:15px; margin: 10px; border-radius: 10px; width: 95%">
+<p>
+For the sliders in the second and third visualization to work, it is recommended to <b>execute the code cell by cell</b> instead of with a "Run all Cells".
+</p>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=a9fb125f-5929-40a1-96c7-9d74ad63502d">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># first option: plot a single time step in a plot that can be rotated manually</span>
+
+<span class="c1"># %matplotlib widget</span>
+<span class="kn">from</span> <span class="nn">ipywidgets</span> <span class="kn">import</span> <span class="n">interact</span><span class="p">,</span> <span class="n">fixed</span><span class="p">,</span> <span class="n">widgets</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">colors</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">cm</span>
+
+<span class="k">def</span> <span class="nf">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">x_lim</span><span class="p">,</span> <span class="n">y_lim</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="s1">'3d'</span><span class="p">)</span>
+    
+    <span class="c1"># Set the color limits to get the right scale of our color-plot</span>
+    <span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="n">vmin</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">52</span><span class="p">)</span>
+    
+    <span class="c1"># For each element draw a triangular surface</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">plot_trisurf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">triangles</span><span class="o">=</span><span class="n">connectivity</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="n">norm</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    
+    <span class="c1"># Set the axis limits</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="n">y_lim</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">(</span><span class="n">x_lim</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_zlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">55</span><span class="p">))</span>
+    
+    <span class="c1"># Set the data of the colorbar indicating the different temperatures</span>
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">),</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+
+<span class="c1"># Select time step for plotting</span>
+<span class="n">time_step</span> <span class="o">=</span> <span class="mi">5</span>
+
+<span class="c1"># Plot the results for selected time step </span>
+<span class="n">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">us</span><span class="p">[</span><span class="n">time_step</span><span class="p">],</span> <span class="p">(</span><span class="n">min_x</span><span class="p">,</span> <span class="n">max_x</span><span class="p">),</span> <span class="p">(</span><span class="n">min_x</span><span class="p">,</span><span class="n">max_x</span><span class="p">))</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2e132608-a2ef-444b-a3fa-dce8a9460a65">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># second option: make an animation to see the evolution</span>
+
+<span class="c1"># %matplotlib inline</span>
+
+<span class="kn">from</span> <span class="nn">ipywidgets</span> <span class="kn">import</span> <span class="n">interact</span><span class="p">,</span> <span class="n">fixed</span><span class="p">,</span> <span class="n">widgets</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">colors</span>
+<span class="kn">from</span> <span class="nn">matplotlib</span> <span class="kn">import</span> <span class="n">cm</span>
+
+<span class="k">def</span> <span class="nf">plot_result3d</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">(</span><span class="n">projection</span><span class="o">=</span><span class="s1">'3d'</span><span class="p">)</span>
+    
+    <span class="c1"># Set the color limits to get the right scale of our color-plot</span>
+    <span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="n">vmin</span><span class="o">=</span><span class="mi">8</span><span class="p">,</span> <span class="n">vmax</span><span class="o">=</span><span class="mi">52</span><span class="p">)</span>
+    
+    <span class="c1"># For each element draw a triangular surface</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">]</span>
+    
+    <span class="n">ax</span><span class="o">.</span><span class="n">plot_trisurf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">],</span> <span class="n">triangles</span><span class="o">=</span><span class="n">conn</span><span class="p">,</span> <span class="n">norm</span><span class="o">=</span><span class="n">norm</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    
+    <span class="c1"># Set the axis limits</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_xlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_zlim</span><span class="p">((</span><span class="mi">0</span><span class="p">,</span> <span class="mi">55</span><span class="p">))</span>
+    
+    <span class="c1"># Set the data of the colorbar indicating the different temperatures</span>
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">),</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">])</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+    
+<span class="n">play</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Play</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">slider</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="n">widgets</span><span class="o">.</span><span class="n">jslink</span><span class="p">((</span><span class="n">play</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">),</span> <span class="p">(</span><span class="n">slider</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">))</span>
+<span class="n">interact</span><span class="p">(</span><span class="n">plot_result3d</span><span class="p">,</span>
+         <span class="n">nodes</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span>
+         <span class="n">conn</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span>
+         <span class="n">results</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">us</span><span class="p">),</span>
+         <span class="n">step</span> <span class="o">=</span> <span class="n">play</span><span class="p">)</span>
+         
+<span class="n">widgets</span><span class="o">.</span><span class="n">HBox</span><span class="p">([</span><span class="n">play</span><span class="p">,</span> <span class="n">slider</span><span class="p">])</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=2d2c0447-8fca-44df-8ba2-be5b51b7e70e">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea">
+<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div>
+<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
+<div class="cm-editor cm-s-jupyter">
+<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># third option: 2-dimensional representation</span>
+
+<span class="c1"># %matplotlib inline</span>
+
+<span class="k">def</span> <span class="nf">plot_result</span><span class="p">(</span><span class="n">nodes</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">,</span> <span class="n">step</span><span class="p">):</span>
+    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
+    <span class="n">ax</span> <span class="o">=</span> <span class="n">fig</span><span class="o">.</span><span class="n">add_subplot</span><span class="p">()</span>
+    <span class="n">x</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">0</span><span class="p">]</span>
+    <span class="n">y</span> <span class="o">=</span> <span class="n">nodes</span><span class="p">[:,</span><span class="mi">1</span><span class="p">];</span>
+    <span class="n">cscale</span> <span class="o">=</span> <span class="n">colors</span><span class="o">.</span><span class="n">Normalize</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">52</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">set_aspect</span><span class="p">(</span><span class="s1">'equal'</span><span class="p">)</span>
+    <span class="n">tcf</span> <span class="o">=</span> <span class="n">ax</span><span class="o">.</span><span class="n">tricontourf</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">conn</span><span class="p">,</span> <span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">],</span> <span class="n">norm</span><span class="o">=</span><span class="n">cscale</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">,</span> <span class="n">levels</span><span class="o">=</span><span class="mi">12</span><span class="p">)</span>
+    <span class="n">ax</span><span class="o">.</span><span class="n">triplot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span><span class="n">y</span><span class="p">,</span><span class="n">conn</span><span class="p">,</span> <span class="s1">'k-'</span><span class="p">,</span> <span class="n">lw</span><span class="o">=</span><span class="mf">0.2</span><span class="p">)</span>
+    
+    <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">ScalarMappable</span><span class="p">(</span><span class="n">norm</span> <span class="o">=</span> <span class="n">cscale</span><span class="p">,</span> <span class="n">cmap</span> <span class="o">=</span> <span class="n">cm</span><span class="o">.</span><span class="n">coolwarm</span><span class="p">)</span>
+    <span class="n">cmap</span><span class="o">.</span><span class="n">set_array</span><span class="p">(</span><span class="n">results</span><span class="p">[</span><span class="n">step</span><span class="p">])</span>
+    <span class="n">fig</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(</span><span class="n">cmap</span><span class="p">,</span> <span class="n">ax</span><span class="o">=</span><span class="n">ax</span><span class="p">)</span>
+    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span>
+
+
+<span class="n">play</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">Play</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">disabled</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+<span class="n">slider</span> <span class="o">=</span> <span class="n">widgets</span><span class="o">.</span><span class="n">IntSlider</span><span class="p">(</span><span class="nb">min</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="nb">max</span><span class="o">=</span><span class="n">nt</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">step</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
+<span class="n">widgets</span><span class="o">.</span><span class="n">jslink</span><span class="p">((</span><span class="n">play</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">),</span> <span class="p">(</span><span class="n">slider</span><span class="p">,</span> <span class="s1">'value'</span><span class="p">))</span>
+<span class="n">interact</span><span class="p">(</span><span class="n">plot_result</span><span class="p">,</span>
+         <span class="n">nodes</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">nodes</span><span class="p">),</span>
+         <span class="n">conn</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">connectivity</span><span class="p">),</span>
+         <span class="n">results</span> <span class="o">=</span> <span class="n">fixed</span><span class="p">(</span><span class="n">us</span><span class="p">),</span>
+         <span class="n">step</span> <span class="o">=</span> <span class="n">play</span><span class="p">)</span>
+         
+<span class="n">widgets</span><span class="o">.</span><span class="n">HBox</span><span class="p">([</span><span class="n">play</span><span class="p">,</span> <span class="n">slider</span><span class="p">])</span>
+</pre></div>
+</div>
+</div>
+</div>
+</div>
+</div>
+<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=118b68b0">
+<div class="jp-Cell-inputWrapper" tabindex="0">
+<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
+</div>
+<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
+</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
+<p><strong>End of notebook.</strong></p>
+<h2 style="height: 60px">
+</h2>
+<h3 style="position: absolute; display: flex; flex-grow: 0; flex-shrink: 0; flex-direction: row-reverse; bottom: 60px; right: 50px; margin: 0; border: 0">
+<style>
+        .markdown {width:100%; position: relative}
+        article { position: relative }
+    </style>
+<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">
+<img alt="Creative Commons License" src="https://i.creativecommons.org/l/by/4.0/88x31.png" style="border-width:; width:88px; height:auto; padding-top:10px"/>
+</a>
+<a href="https://www.tudelft.nl/en/ceg" rel="TU Delft">
+<img alt="TU Delft" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/tu-logo/TU_P1_full-color.png" style="border-width:0; width:100px; height:auto; padding-bottom:0px"/>
+</a>
+<a href="http://mude.citg.tudelft.nl/" rel="MUDE">
+<img alt="MUDE" src="https://gitlab.tudelft.nl/mude/public/-/raw/main/mude-logo/MUDE_Logo-small.png" style="border-width:0; width:100px; height:auto; padding-bottom:0px"/>
+</a>
+</h3>
+<span style="font-size: 75%">
+© Copyright 2024 <a href="http://mude.citg.tudelft.nl/" rel="MUDE">MUDE</a> TU Delft. This work is licensed under a <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CC BY 4.0 License</a>.
+
+</span></div>
+</div>
+</div>
+</div>
+</main>
+</body>
+</html>
-- 
GitLab