Files
PINA/docs/source/tutorials/tutorial13/tutorial.html
2025-04-23 18:53:30 +02:00

8151 lines
464 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
<title>tutorial</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script><script>
(function() {
function addWidgetsRenderer() {
var mimeElement = document.querySelector('script[type="application/vnd.jupyter.widget-view+json"]');
var scriptElement = document.createElement('script');
var widgetRendererSrc = 'https://unpkg.com/@jupyter-widgets/html-manager@*/dist/embed-amd.js';
var widgetState;
// Fallback for older version:
try {
widgetState = mimeElement && JSON.parse(mimeElement.innerHTML);
if (widgetState && (widgetState.version_major < 2 || !widgetState.version_major)) {
var widgetRendererSrc = 'https://unpkg.com/@jupyter-js-widgets@*/dist/embed.js';
}
} catch(e) {}
scriptElement.src = widgetRendererSrc;
document.body.appendChild(scriptElement);
}
document.addEventListener('DOMContentLoaded', addWidgetsRenderer);
}());
</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',
messageStyle: 'none',
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.7.0/mermaid.esm.min.mjs")).default;
const parser = new DOMParser();
mermaid.initialize({
maxTextSize: 100000,
maxEdges: 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 {
let { svg } = await mermaid.render(id, raw, el);
svg = cleanMermaidSvg(svg);
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);
}
/**
* Post-process to ensure mermaid diagrams contain only valid SVG and XHTML.
*/
function cleanMermaidSvg(svg) {
return svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
}
/**
* A regular expression for all void elements, which may include attributes and
* a slash.
*
* @see https://developer.mozilla.org/en-US/docs/Glossary/Void_element
*
* Of these, only `<br>` is generated by Mermaid in place of `\n`,
* but _any_ "malformed" tag will break the SVG rendering entirely.
*/
const RE_VOID_ELEMENT =
/<\s*(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\s*([^>]*?)\s*>/gi;
/**
* Ensure a void element is closed with a slash, preserving any attributes.
*/
function replaceVoidElement(match, tag, rest) {
rest = rest.trim();
if (!rest.endsWith('/')) {
rest = `${rest} /`;
}
return `<${tag} ${rest}>`;
}
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">
<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="Tutorial:-Learning-Multiscale-PDEs-Using-Fourier-Feature-Networks">Tutorial: Learning Multiscale PDEs Using Fourier Feature Networks<a class="anchor-link" href="#Tutorial:-Learning-Multiscale-PDEs-Using-Fourier-Feature-Networks"></a></h1><p><a href="https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial13/tutorial.ipynb"><img alt="Open In Colab" src="https://colab.research.google.com/assets/colab-badge.svg"/></a></p>
<p>This tutorial demonstrates how to solve a PDE with multiscale behavior using Physics-Informed Neural Networks (PINNs), as discussed in <a href="https://doi.org/10.1016/j.cma.2021.113938"><em>On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks</em></a>.</p>
<p>Lets begin by importing the necessary libraries.</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<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 [1]:</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">## routine needed to run the notebook on Google Colab</span>
<span class="k">try</span><span class="p">:</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">google.colab</span>
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">True</span>
<span class="k">except</span><span class="p">:</span>
<span class="n">IN_COLAB</span> <span class="o">=</span> <span class="kc">False</span>
<span class="k">if</span> <span class="n">IN_COLAB</span><span class="p">:</span>
<span class="o">!</span>pip<span class="w"> </span>install<span class="w"> </span><span class="s2">"pina-mathlab[tutorial]"</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">torch</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">matplotlib.pyplot</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">plt</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">warnings</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina</span><span class="w"> </span><span class="kn">import</span> <span class="n">Condition</span><span class="p">,</span> <span class="n">Trainer</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.problem</span><span class="w"> </span><span class="kn">import</span> <span class="n">SpatialProblem</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.operator</span><span class="w"> </span><span class="kn">import</span> <span class="n">laplacian</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.solver</span><span class="w"> </span><span class="kn">import</span> <span class="n">PINN</span><span class="p">,</span> <span class="n">SelfAdaptivePINN</span> <span class="k">as</span> <span class="n">SAPINN</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.loss</span><span class="w"> </span><span class="kn">import</span> <span class="n">LpLoss</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.domain</span><span class="w"> </span><span class="kn">import</span> <span class="n">CartesianDomain</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.equation</span><span class="w"> </span><span class="kn">import</span> <span class="n">Equation</span><span class="p">,</span> <span class="n">FixedValue</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.model</span><span class="w"> </span><span class="kn">import</span> <span class="n">FeedForward</span>
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.model.block</span><span class="w"> </span><span class="kn">import</span> <span class="n">FourierFeatureEmbedding</span>
<span class="n">warnings</span><span class="o">.</span><span class="n">filterwarnings</span><span class="p">(</span><span class="s2">"ignore"</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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="Multiscale-Problem">Multiscale Problem<a class="anchor-link" href="#Multiscale-Problem"></a></h2><p>We begin by presenting the problem, which is also discussed in Section 2 of <a href="https://doi.org/10.1016/j.cma.2021.113938"><em>On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks</em></a>. The one-dimensional Poisson problem we aim to solve is mathematically defined as:</p>
<p>\begin{equation}
\begin{cases}
\Delta u(x) + f(x) = 0 \quad x \in [0,1], \\
u(x) = 0 \quad x \in \partial[0,1],
\end{cases}
\end{equation}</p>
<p>We define the solution as:</p>
<p>$$
u(x) = \sin(2\pi x) + 0.1 \sin(50\pi x),
$$</p>
<p>which leads to the corresponding force term:</p>
<p>$$
f(x) = (2\pi)^2 \sin(2\pi x) + 0.1 (50 \pi)^2 \sin(50\pi x).
$$</p>
<p>While this example is simple and pedagogical, it's important to note that the solution exhibits low-frequency behavior in the macro-scale and high-frequency behavior in the micro-scale. This characteristic is common in many practical scenarios.</p>
<p>Below is the implementation of the <code>Poisson</code> problem as described mathematically above.</p>
<blockquote>
<p><strong>👉 We have a dedicated <a href="https://mathlab.github.io/PINA/tutorial16/tutorial.html">tutorial</a> to teach how to build a Problem from scratch — have a look if you're interested!</strong></p>
</blockquote>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<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 [2]:</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="k">class</span><span class="w"> </span><span class="nc">Poisson</span><span class="p">(</span><span class="n">SpatialProblem</span><span class="p">):</span>
<span class="n">output_variables</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"u"</span><span class="p">]</span>
<span class="n">spatial_domain</span> <span class="o">=</span> <span class="n">CartesianDomain</span><span class="p">({</span><span class="s2">"x"</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="k">def</span><span class="w"> </span><span class="nf">poisson_equation</span><span class="p">(</span><span class="n">input_</span><span class="p">,</span> <span class="n">output_</span><span class="p">):</span>
<span class="n">x</span> <span class="o">=</span> <span class="n">input_</span><span class="o">.</span><span class="n">extract</span><span class="p">(</span><span class="s2">"x"</span><span class="p">)</span>
<span class="n">u_xx</span> <span class="o">=</span> <span class="n">laplacian</span><span class="p">(</span><span class="n">output_</span><span class="p">,</span> <span class="n">input_</span><span class="p">,</span> <span class="n">components</span><span class="o">=</span><span class="p">[</span><span class="s2">"u"</span><span class="p">],</span> <span class="n">d</span><span class="o">=</span><span class="p">[</span><span class="s2">"x"</span><span class="p">])</span>
<span class="n">f</span> <span class="o">=</span> <span class="p">((</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.1</span> <span class="o">*</span> <span class="p">(</span>
<span class="p">(</span><span class="mi">50</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="o">**</span> <span class="mi">2</span>
<span class="p">)</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">50</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span>
<span class="k">return</span> <span class="n">u_xx</span> <span class="o">+</span> <span class="n">f</span>
<span class="n">domains</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">"bound_cond0"</span><span class="p">:</span> <span class="n">CartesianDomain</span><span class="p">({</span><span class="s2">"x"</span><span class="p">:</span> <span class="mf">0.0</span><span class="p">}),</span>
<span class="s2">"bound_cond1"</span><span class="p">:</span> <span class="n">CartesianDomain</span><span class="p">({</span><span class="s2">"x"</span><span class="p">:</span> <span class="mf">1.0</span><span class="p">}),</span>
<span class="s2">"phys_cond"</span><span class="p">:</span> <span class="n">spatial_domain</span><span class="p">,</span>
<span class="p">}</span>
<span class="c1"># here we write the problem conditions</span>
<span class="n">conditions</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">"bound_cond0"</span><span class="p">:</span> <span class="n">Condition</span><span class="p">(</span>
<span class="n">domain</span><span class="o">=</span><span class="s2">"bound_cond0"</span><span class="p">,</span> <span class="n">equation</span><span class="o">=</span><span class="n">FixedValue</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
<span class="p">),</span>
<span class="s2">"bound_cond1"</span><span class="p">:</span> <span class="n">Condition</span><span class="p">(</span>
<span class="n">domain</span><span class="o">=</span><span class="s2">"bound_cond1"</span><span class="p">,</span> <span class="n">equation</span><span class="o">=</span><span class="n">FixedValue</span><span class="p">(</span><span class="mf">0.0</span><span class="p">)</span>
<span class="p">),</span>
<span class="s2">"phys_cond"</span><span class="p">:</span> <span class="n">Condition</span><span class="p">(</span>
<span class="n">domain</span><span class="o">=</span><span class="s2">"phys_cond"</span><span class="p">,</span> <span class="n">equation</span><span class="o">=</span><span class="n">Equation</span><span class="p">(</span><span class="n">poisson_equation</span><span class="p">)</span>
<span class="p">),</span>
<span class="p">}</span>
<span class="k">def</span><span class="w"> </span><span class="nf">solution</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
<span class="k">return</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="mf">0.1</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="mi">50</span> <span class="o">*</span> <span class="n">torch</span><span class="o">.</span><span class="n">pi</span> <span class="o">*</span> <span class="n">x</span><span class="p">)</span>
<span class="n">problem</span> <span class="o">=</span> <span class="n">Poisson</span><span class="p">()</span>
<span class="c1"># let's discretise the domain</span>
<span class="n">problem</span><span class="o">.</span><span class="n">discretise_domain</span><span class="p">(</span><span class="mi">128</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">,</span> <span class="n">domains</span><span class="o">=</span><span class="p">[</span><span class="s2">"phys_cond"</span><span class="p">])</span>
<span class="n">problem</span><span class="o">.</span><span class="n">discretise_domain</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">,</span> <span class="n">domains</span><span class="o">=</span><span class="p">[</span><span class="s2">"bound_cond0"</span><span class="p">,</span> <span class="s2">"bound_cond1"</span><span class="p">])</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>A standard PINN approach would involve fitting the model using a Feed Forward (fully connected) Neural Network. For a conventional fully-connected neural network, it is relatively easy to approximate a function $u$, given sufficient data inside the computational domain.</p>
<p>However, solving high-frequency or multi-scale problems presents significant challenges to PINNs, especially when the number of data points is insufficient to capture the different scales effectively.</p>
<p>Below, we run a simulation using both the <code>PINN</code> solver and the self-adaptive <code>SAPINN</code> solver, employing a <a href="https://mathlab.github.io/PINA/_modules/pina/model/feed_forward.html#FeedForward"><code>FeedForward</code></a> model.</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<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 [3]:</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"># training with PINN and visualize results</span>
<span class="n">pinn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
<span class="n">problem</span><span class="o">=</span><span class="n">problem</span><span class="p">,</span>
<span class="n">model</span><span class="o">=</span><span class="n">FeedForward</span><span class="p">(</span>
<span class="n">input_dimensions</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">output_dimensions</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span>
<span class="p">),</span>
<span class="p">)</span>
<span class="n">trainer</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
<span class="n">pinn</span><span class="p">,</span>
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1500</span><span class="p">,</span>
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span>
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="n">train_size</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">trainer</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
<span class="c1"># training with PINN and visualize results</span>
<span class="n">sapinn</span> <span class="o">=</span> <span class="n">SAPINN</span><span class="p">(</span>
<span class="n">problem</span><span class="o">=</span><span class="n">problem</span><span class="p">,</span>
<span class="n">model</span><span class="o">=</span><span class="n">FeedForward</span><span class="p">(</span>
<span class="n">input_dimensions</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">output_dimensions</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">100</span><span class="p">]</span>
<span class="p">),</span>
<span class="p">)</span>
<span class="n">trainer_sapinn</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
<span class="n">sapinn</span><span class="p">,</span>
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1500</span><span class="p">,</span>
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span>
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="n">train_size</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">trainer_sapinn</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
</div>
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>GPU available: False, used: False
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>TPU available: False, using: 0 TPU cores
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>HPU available: False, using: 0 HPUs
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jupyter-widgets jp-OutputArea-output" id="b95de2b6-ebea-47d3-a8b6-77597a301292" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('b95de2b6-ebea-47d3-a8b6-77597a301292');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "0cfe7ce565ff4f458ed9776de85d4ff1"}
</script>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>`Trainer.fit` stopped: `max_epochs=1500` reached.
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>GPU available: False, used: False
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>TPU available: False, using: 0 TPU cores
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>HPU available: False, using: 0 HPUs
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jupyter-widgets jp-OutputArea-output" id="355566da-db87-48e1-bedc-03eb6d9039f1" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('355566da-db87-48e1-bedc-03eb6d9039f1');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "0a2c54ca5d434af6834f4a7ca89c1ef4"}
</script>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>`Trainer.fit` stopped: `max_epochs=1500` reached.
</pre>
</div>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<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 [4]:</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"># define the function to plot the solution obtained using matplotlib</span>
<span class="k">def</span><span class="w"> </span><span class="nf">plot_solution</span><span class="p">(</span><span class="n">pinn_to_use</span><span class="p">,</span> <span class="n">title</span><span class="p">):</span>
<span class="n">pts</span> <span class="o">=</span> <span class="n">pinn_to_use</span><span class="o">.</span><span class="n">problem</span><span class="o">.</span><span class="n">spatial_domain</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">,</span> <span class="n">variables</span><span class="o">=</span><span class="s2">"x"</span><span class="p">)</span>
<span class="n">predicted_output</span> <span class="o">=</span> <span class="n">pinn_to_use</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span><span class="o">.</span><span class="n">extract</span><span class="p">(</span><span class="s2">"u"</span><span class="p">)</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span>
<span class="n">true_output</span> <span class="o">=</span> <span class="n">pinn_to_use</span><span class="o">.</span><span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">pts</span><span class="p">)</span><span class="o">.</span><span class="n">detach</span><span class="p">()</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span>
<span class="n">pts</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"x"</span><span class="p">]),</span> <span class="n">predicted_output</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"Neural Network solution"</span>
<span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">pts</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"x"</span><span class="p">]),</span> <span class="n">true_output</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s2">"True solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="n">title</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
<span class="c1"># plot the solution of the two PINNs</span>
<span class="n">plot_solution</span><span class="p">(</span><span class="n">pinn</span><span class="p">,</span> <span class="s2">"PINN solution"</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">()</span>
<span class="n">plot_solution</span><span class="p">(</span><span class="n">sapinn</span><span class="p">,</span> <span class="s2">"Self Adaptive PINN solution"</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
</div>
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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"/>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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"/>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>We can clearly observe that neither of the two solvers has successfully learned the solution.<br/>
The issue is not with the optimization strategy (i.e., the solver), but rather with the model used to solve the problem.<br/>
A simple <code>FeedForward</code> network struggles to handle multiscale problems, especially when there are not enough collocation points to capture the different scales effectively.</p>
<p>Next, let's compute the $l_2$ relative error for both the <code>PINN</code> and <code>SAPINN</code> solutions:</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<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 [5]:</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"># l2 loss from PINA losses</span>
<span class="n">l2_loss</span> <span class="o">=</span> <span class="n">LpLoss</span><span class="p">(</span><span class="n">p</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">relative</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
<span class="c1"># sample new test points</span>
<span class="n">pts</span> <span class="o">=</span> <span class="n">pts</span> <span class="o">=</span> <span class="n">problem</span><span class="o">.</span><span class="n">spatial_domain</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">"Relative l2 error PINN </span><span class="si">{</span><span class="n">l2_loss</span><span class="p">(</span><span class="n">pinn</span><span class="p">(</span><span class="n">pts</span><span class="p">),</span><span class="w"> </span><span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">pts</span><span class="p">))</span><span class="o">.</span><span class="n">item</span><span class="p">()</span><span class="si">:</span><span class="s2">.2%</span><span class="si">}</span><span class="s2">"</span>
<span class="p">)</span>
<span class="nb">print</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">"Relative l2 error SAPINN </span><span class="si">{</span><span class="n">l2_loss</span><span class="p">(</span><span class="n">sapinn</span><span class="p">(</span><span class="n">pts</span><span class="p">),</span><span class="w"> </span><span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">pts</span><span class="p">))</span><span class="o">.</span><span class="n">item</span><span class="p">()</span><span class="si">:</span><span class="s2">.2%</span><span class="si">}</span><span class="s2">"</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
</div>
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
<pre>Relative l2 error PINN 2912.82%
Relative l2 error SAPINN 2788.09%
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>Which is indeed very high!</p>
<h2 id="Fourier-Feature-Embedding-in-PINA">Fourier Feature Embedding in PINA<a class="anchor-link" href="#Fourier-Feature-Embedding-in-PINA"></a></h2><p>Fourier Feature Embedding is a technique used to transform the input features, aiding the network in learning multiscale variations in the output. It was first introduced in <a href="https://doi.org/10.1016/j.cma.2021.113938"><em>On the Eigenvector Bias of Fourier Feature Networks: From Regression to Solving Multi-Scale PDEs with Physics-Informed Neural Networks</em></a>, where it demonstrated excellent results for multiscale problems.</p>
<p>The core idea behind Fourier Feature Embedding is to map the input $\mathbf{x}$ into an embedding $\tilde{\mathbf{x}}$, defined as:</p>
<p>$$
\tilde{\mathbf{x}} = \left[\cos\left( \mathbf{B} \mathbf{x} \right), \sin\left( \mathbf{B} \mathbf{x} \right)\right],
$$</p>
<p>where $\mathbf{B}_{ij} \sim \mathcal{N}(0, \sigma^2)$. This simple operation allows the network to learn across multiple scales!</p>
<p>In <strong>PINA</strong>, we have already implemented this feature as a <code>layer</code> called <a href="https://mathlab.github.io/PINA/_rst/layers/fourier_embedding.html"><code>FourierFeatureEmbedding</code></a>. Below, we will build the <em>Multi-scale Fourier Feature Architecture</em>. In this architecture, multiple Fourier feature embeddings (initialized with different $\sigma$ values) are applied to the input coordinates. These embeddings are then passed through the same fully-connected neural network, and the outputs are concatenated with a final linear layer.</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
<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 [6]:</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="k">class</span><span class="w"> </span><span class="nc">MultiscaleFourierNet</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="fm">__init__</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">embedding1</span> <span class="o">=</span> <span class="n">FourierFeatureEmbedding</span><span class="p">(</span>
<span class="n">input_dimension</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">output_dimension</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="mi">1</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">embedding2</span> <span class="o">=</span> <span class="n">FourierFeatureEmbedding</span><span class="p">(</span>
<span class="n">input_dimension</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">output_dimension</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">sigma</span><span class="o">=</span><span class="mi">10</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">layers</span> <span class="o">=</span> <span class="n">FeedForward</span><span class="p">(</span>
<span class="n">input_dimensions</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">output_dimensions</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">100</span><span class="p">]</span>
<span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">final_layer</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">2</span> <span class="o">*</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">forward</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
<span class="n">e1</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">embedding1</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="n">e2</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">layers</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">embedding2</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">final_layer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">([</span><span class="n">e1</span><span class="p">,</span> <span class="n">e2</span><span class="p">],</span> <span class="n">dim</span><span class="o">=-</span><span class="mi">1</span><span class="p">))</span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>We will train the <code>MultiscaleFourierNet</code> using the <code>PINN</code> solver.<br/>
Feel free to experiment with other PINN variants as well, such as <code>SAPINN</code>, <code>GPINN</code>, <code>CompetitivePINN</code>, and others, to see how they perform on this multiscale problem.</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<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 [7]:</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="n">multiscale_pinn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span><span class="n">problem</span><span class="o">=</span><span class="n">problem</span><span class="p">,</span> <span class="n">model</span><span class="o">=</span><span class="n">MultiscaleFourierNet</span><span class="p">())</span>
<span class="n">trainer</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
<span class="n">multiscale_pinn</span><span class="p">,</span>
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1500</span><span class="p">,</span>
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span>
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="n">train_size</span><span class="o">=</span><span class="mf">1.0</span><span class="p">,</span>
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span>
<span class="p">)</span>
<span class="n">trainer</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
</div>
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>You are using the plain ModelCheckpoint callback. Consider using LitModelCheckpoint which with seamless uploading to Model registry.
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>GPU available: False, used: False
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>TPU available: False, using: 0 TPU cores
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>HPU available: False, using: 0 HPUs
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jupyter-widgets jp-OutputArea-output" id="1e12c126-5c03-4f0a-a374-fc3feca09ea7" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('1e12c126-5c03-4f0a-a374-fc3feca09ea7');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "615323d5389d455ab1dea0218466053f"}
</script>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>`Trainer.fit` stopped: `max_epochs=1500` reached.
</pre>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>Let us now plot the solution and compute the relative $l_2$ again!</p>
</div>
</div>
</div>
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
<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 [8]:</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"># plot solution obtained</span>
<span class="n">plot_solution</span><span class="p">(</span><span class="n">multiscale_pinn</span><span class="p">,</span> <span class="s2">"Multiscale PINN solution"</span><span class="p">)</span>
<span class="c1"># sample new test points</span>
<span class="n">pts</span> <span class="o">=</span> <span class="n">pts</span> <span class="o">=</span> <span class="n">problem</span><span class="o">.</span><span class="n">spatial_domain</span><span class="o">.</span><span class="n">sample</span><span class="p">(</span><span class="mi">100</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span>
<span class="sa">f</span><span class="s2">"Relative l2 error PINN with MultiscaleFourierNet: </span><span class="si">{</span><span class="n">l2_loss</span><span class="p">(</span><span class="n">multiscale_pinn</span><span class="p">(</span><span class="n">pts</span><span class="p">),</span><span class="w"> </span><span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">pts</span><span class="p">))</span><span class="o">.</span><span class="n">item</span><span class="p">()</span><span class="si">:</span><span class="s2">.2%</span><span class="si">}</span><span class="s2">"</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="jp-Cell-outputWrapper">
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
</div>
<div class="jp-OutputArea jp-Cell-outputArea">
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
<pre>Relative l2 error PINN with MultiscaleFourierNet: 14.61%
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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j3Leeee1Wi46OhqDwcBvv/1md/yVV17p0Ot4eHh0aNbU48ePt/jAHTNmDICt6+jiiy9G0zQee+yxFtdbr7V+y256r9LSUt56661263DZZZeRnZ3tcEK06upqKisr271Hd2oajHRE04Dnm2++abe8yWRq0Y0WHBxMeHi47Wc+YcIEgoODee211+y68L7//ntSU1M555xzWr2/t7c3gYGBHfrd8fDwAFoGOo6cffbZbNy4kXXr1tmOVVZW8p///IeYmBiGDx/e7j2E6GvSbSTECerIrK8+Pj5ceuml/Pvf/0an0xEfH8+SJUs6lP8BMH78eJYvX85zzz1HeHg4sbGxTJ48uUW5t99+m1deeYULL7yQ+Ph4ysvLeeONN/D29ubss88G4PTTT+faa6/lX//6F+np6cydOxez2cyqVas4/fTTWbBgAWeddRYuLi6cd9553HbbbVRUVPDGG28QHBxMbm5um3W99tpr+eSTT7j99tv59ddfmTZtGiaTiX379vHJJ5/w448/2oZj9waDwcBf/vIXbrjhhg5fY+1u2r59e7tly8vLGTJkCJdccgmjR4/G09OT5cuXs2nTJhYtWgSAs7Mz//jHP7jhhhuYMWMGV155pW2odExMDH/4wx/afI2bb76Zp59+mptvvpkJEybw22+/sX///hblxo8fD8Bf/vIXrrjiCpydnTnvvPNsQU1TDzzwgG2o/8KFC/H39+ftt9/m0KFDfP755+j18p1W9H8SvAjRw/79739TX1/Pa6+9htFo5LLLLuPZZ59l5MiR7V773HPPceutt/LQQw9RXV3N9ddf7zB4mTFjBhs3buSjjz4iPz8fHx8fJk2axPvvv09sbKyt3FtvvUVKSgr/+9//+NOf/oSPjw8TJkxg6tSpgEos/eyzz3jooYe49957CQ0N5Y477iAoKKjFhHfN6fV6vvrqK55//nneeecdvvzyS9zd3YmLi+Ouu+6yJe72pmuuuYa//e1vtrli2uPk5MRDDz3UoYDH3d2dO++8k59++okvvvgCs9lMQkICr7zyCnfccYet3Pz583F3d+fpp5/m/vvvx8PDgwsvvJB//OMf7c7x8vDDD1NYWMhnn33GJ598wrx58/j+++8JDg62Kzdx4kSeeOIJXnvtNX744QfMZjOHDh1yGLyEhISwdu1a7r//fv79739TU1NDSkoK3377bZst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+PDh7dbdzc2NJUuW4Orqypw5cygvL2+3/Hnnnce//vUvVqxYwbp169i1axfJyck0NDSwYcMGW9ljx46RlpbWaj2a/xsCbN++3e55az+fppKTk+3eP6h/56FDh3ZpXaLuIMGL6LesLSZzLa0sYT5uTIpR/ckbDhZ36B7L9qp7jI30JdjbFQB3FydGhKtvQVsOd35YqaZp7DpaSllNz32TEaIrRo0axdVXX82//vUvu+P3338/a9euZcGCBWzfvp309HS+/vpruxE4s2bN4qWXXmLbtm1s3ryZ22+/vUNJoYmJiSxbtoy1a9eSmprKbbfdRn5+fpfeh6urK4899liL93H11VcTGBjI+eefz6pVqzh06BArVqxg4cKFHD16FFCjYHbu3ElaWhpFRUW2lgdr3suePXs49dRTbcfef/99JkyYYGtF8fDw4I477uBPf/oTP/zwA3v37uWWW26hqqqKm266qUP19/Dw4LvvvsPJyYl58+ZRUeH4S9fixYv53//+x+7duzl48CDvvfcebm5uREdHk5iYyPnnn88tt9zC6tWr2bFjB9dccw0REREtunSsZs2axebNm3nnnXdIT0/nkUceYffu3XZlYmJi2LBhA5mZmRQVFTlsKfnjH//Izz//zBNPPMH+/ft5++23eemll06odaq7SfAi+qWCshq2ZpUAcFaTLqKJsSp42ZzZseBl/SFVblZSsN3x8dHW+3QueMktreaGxZs476XV3PjWphMeui1ET3v88cdbfCClpKSwcuVK9u/fz/Tp0xk7diwPP/ww4eHhtjKLFi0iMjKS6dOnc9VVV3Hvvfd2KG/loYceYty4ccyZM4eZM2cSGhraLZPEXX/99cTFxdkdc3d357fffiMqKoqLLrqI5ORkbrrpJmpqamzdM7fccgvDhg1jwoQJBAUF2VoQRo0aha+vL2PGjMHT0xNQwYvJZLLlu1g9/fTTXHzxxVx77bWMGzeOjIwMfvzxR/z8/Dpcf09PT77//ns0TeOcc86xG5Zu5evryxtvvMG0adNISUlh+fLlfPvttwQEBADw1ltvMX78eM4991ymTJmCpmksXbq01aByzpw5/PWvf+W+++5j4sSJlJeXc91119mVuffeezEYDAwfPpygoCCysrJa3GfcuHF88sknfPTRR4wcOZKHH36Yxx9/vEV3ZF/QaYPsr29ZWRk+Pj6U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Z6OiokINDgHgxIkTSExMZODixWDmuaOjwy1AUQJGwfOIL5sr9j3o13LgALN+/XphMBjEunXrxLFjx8TSpUuF0WgUDQ0NQgghFi9eLJ599ln1/h9//FEEBQWJ1157TZSVlYmioiJule6Hgc7z6tWrhV6vFx9//LE4e/as+mMyma7UrxAQBjrPrrjbqH8GOs81NTUiPDxc/PKXvxTl5eXi888/F3FxceKll166Ur9CQBjoPBcVFYnw8HDx4YcfisrKSvH111+LzMxMcd99912pXyEgmEwmUVxcLIqLiwUA8frrr4vi4mJx+vRpIYQQzz77rFi8eLF6v7JV+te//rUoKysTa9eu5VbpK+HNN98UaWlpQq/Xi1mzZondu3erz82dO1csWbLE6f6PPvpIZGdnC71eL3Jzc8UXX3wxxCMOTAOZ59GjRwsAbj9FRUVDP/AAM9C/z70xeOm/gc7zzp07RX5+vjAYDCIjI0O8/PLLwmKxDPGoA89A5rmnp0f8/ve/F5mZmSIkJESkpqaKJ598UjQ1NQ39wAPItm3bPP73VpnbJUuWiLlz57q9ZurUqUKv14uMjAzxj3/8w+/j1AjB/BkREREFDta8EBERUUBh8EJEREQBhcELERERBRQGL0RERBRQGLwQERFRQGHwQkRERAGFwQsREREFFAYvREREFFAYvBAREVFAYfBCREREAYXBCxEREQWU/w9cHpw64j1wIQAAAABJRU5ErkJggg=="/>
</div>
</div>
</div>
</div>
</div>
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
<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>It is clear that the network has learned the correct solution, with a very low error. Of course, longer training and a more expressive neural network could further improve the results!</p>
<h2 id="What's-Next?">What's Next?<a class="anchor-link" href="#What's-Next?"></a></h2><p>Congratulations on completing the one-dimensional Poisson tutorial of <strong>PINA</strong> using <code>FourierFeatureEmbedding</code>! There are many potential next steps you can explore:</p>
<ol>
<li><p><strong>Train the network longer or with different layer sizes</strong>: Experiment with different configurations to improve accuracy.</p>
</li>
<li><p><strong>Understand the role of <code>sigma</code> in <code>FourierFeatureEmbedding</code></strong>: The original paper provides insightful details on the impact of <code>sigma</code>. It's a good next step to dive deeper into its effect.</p>
</li>
<li><p>**Implement the *Spatio-temporal Multi-scale Fourier Feature Architecture***: Code this architecture for a more complex, time-dependent PDE (refer to Section 3 of the original paper).</p>
</li>
<li><p><strong>...and many more!</strong>: There are countless directions to further explore, from testing on different problems to refining the model architecture.</p>
</li>
</ol>
<p>For more resources and tutorials, check out the <a href="https://mathlab.github.io/PINA/">PINA Documentation</a>.</p>
</div>
</div>
</div>
</div>
</main>
</body>
<script type="application/vnd.jupyter.widget-state+json">
{"state": {"ba60189e215c40b8849ff24c2fb2f009": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "93eca015a08b40ff99cf24b2597748ab": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "aac27aaa46c044d082e648ac3acdd6c7": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ba60189e215c40b8849ff24c2fb2f009", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_93eca015a08b40ff99cf24b2597748ab", "tabbable": null, "tooltip": null, "value": 1.0}}, "45c3ed245455445e8ec30e0ad7bf3172": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "99d448f0dbb24d409f96ec6560edb2fa": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "fe9a881c16154c228a378c5f10da2ab4": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_45c3ed245455445e8ec30e0ad7bf3172", "placeholder": "\u200b", "style": "IPY_MODEL_99d448f0dbb24d409f96ec6560edb2fa", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "e7b5efc37be948db9e1c160964dea3d3": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "c55c2bf9ce074e2aac6eaea433cd7fbf": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "2dd4e9c0ebc14325a767f972a5a2668e": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_e7b5efc37be948db9e1c160964dea3d3", "placeholder": "\u200b", "style": "IPY_MODEL_c55c2bf9ce074e2aac6eaea433cd7fbf", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200758.50it\/s,\u2007v_num=0,\u2007bound_cond0_loss=3.3e+3,\u2007bound_cond1_loss=3.31e+3,\u2007phys_cond_loss=2.25e+4,\u2007train_loss=2.92e+4]"}}, "aec104e232f5417fa18a3b2a8ecb43c9": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "0cfe7ce565ff4f458ed9776de85d4ff1": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_fe9a881c16154c228a378c5f10da2ab4", "IPY_MODEL_aac27aaa46c044d082e648ac3acdd6c7", "IPY_MODEL_2dd4e9c0ebc14325a767f972a5a2668e"], "layout": "IPY_MODEL_aec104e232f5417fa18a3b2a8ecb43c9", "tabbable": null, "tooltip": null}}, "cd79d72d4c8145c69cbe697457040413": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "ff78edf3796443adbc10dc27a943020d": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "28e06ec0566c4336a78e95d7e4bfeeeb": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_cd79d72d4c8145c69cbe697457040413", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_ff78edf3796443adbc10dc27a943020d", "tabbable": null, "tooltip": null, "value": 1.0}}, "db32641190ba45cfab8516a8925e06f9": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "df5d267f5a4544848526d58bfba69223": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "1119f969e0d8413091ab4b95be8d2176": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_db32641190ba45cfab8516a8925e06f9", "placeholder": "\u200b", "style": "IPY_MODEL_df5d267f5a4544848526d58bfba69223", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "ac85210a131a45d596c526957898f638": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "db54e35afe774891ae7fb5b428a29dd9": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "5d6d3ed67357449fbcd9b4e309a645c5": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_ac85210a131a45d596c526957898f638", "placeholder": "\u200b", "style": "IPY_MODEL_db54e35afe774891ae7fb5b428a29dd9", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200740.96it\/s,\u2007v_num=1,\u2007bound_cond0_loss=2.72e+3,\u2007bound_cond1_loss=2.79e+3,\u2007phys_cond_loss=1.02e+3,\u2007train_loss=6.53e+3]"}}, "dd6430ef71c6439ebee7a807aac65f31": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "0a2c54ca5d434af6834f4a7ca89c1ef4": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_1119f969e0d8413091ab4b95be8d2176", "IPY_MODEL_28e06ec0566c4336a78e95d7e4bfeeeb", "IPY_MODEL_5d6d3ed67357449fbcd9b4e309a645c5"], "layout": "IPY_MODEL_dd6430ef71c6439ebee7a807aac65f31", "tabbable": null, "tooltip": null}}, "56b25638dd1445ef86d85ea415d618c9": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": "2", "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "5856987c931d42baa155769e127fe140": {"model_name": "ProgressStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": ""}}, "802afb264e0847949cd188f4bff65dab": {"model_name": "FloatProgressModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_56b25638dd1445ef86d85ea415d618c9", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_5856987c931d42baa155769e127fe140", "tabbable": null, "tooltip": null, "value": 1.0}}, "fb8df6c59be943c6b431849386439754": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "fbb6044e353d40b5b656229412de793a": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "b0a4bf50b7524f359c91d1dec2be39bd": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_fb8df6c59be943c6b431849386439754", "placeholder": "\u200b", "style": "IPY_MODEL_fbb6044e353d40b5b656229412de793a", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "26aa636eeb4249199ab780a886776472": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null}}, "95eeba918ff14e5897e66fe0b3d10c6e": {"model_name": "HTMLStyleModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null}}, "a78ac385f4b3486c9fb4004d6b23f14e": {"model_name": "HTMLModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_26aa636eeb4249199ab780a886776472", "placeholder": "\u200b", "style": "IPY_MODEL_95eeba918ff14e5897e66fe0b3d10c6e", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200746.45it\/s,\u2007v_num=2,\u2007bound_cond0_loss=0.0848,\u2007bound_cond1_loss=0.0848,\u2007phys_cond_loss=0.000395,\u2007train_loss=0.170]"}}, "51282a33f29e4c6fa2ef0642f0aef9c2": {"model_name": "LayoutModel", "model_module": "@jupyter-widgets\/base", "model_module_version": "2.0.0", "state": {"_model_module": "@jupyter-widgets\/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets\/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": "inline-flex", "flex": null, "flex_flow": "row wrap", "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "100%"}}, "615323d5389d455ab1dea0218466053f": {"model_name": "HBoxModel", "model_module": "@jupyter-widgets\/controls", "model_module_version": "2.0.0", "state": {"_dom_classes": [], "_model_module": "@jupyter-widgets\/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets\/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": ["IPY_MODEL_b0a4bf50b7524f359c91d1dec2be39bd", "IPY_MODEL_802afb264e0847949cd188f4bff65dab", "IPY_MODEL_a78ac385f4b3486c9fb4004d6b23f14e"], "layout": "IPY_MODEL_51282a33f29e4c6fa2ef0642f0aef9c2", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0}
</script>
</html>