Files
PINA/docs/source/tutorials/tutorial13/tutorial.html
2025-04-17 10:48:31 +02:00

8150 lines
463 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.
<!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:-Multiscale-PDE-learning-with-Fourier-Feature-Network">Tutorial: Multiscale PDE learning with Fourier Feature Network<a class="anchor-link" href="#Tutorial:-Multiscale-PDE-learning-with-Fourier-Feature-Network"></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 presents how to solve with Physics-Informed Neural Networks (PINNs)
a PDE characterized by multiscale behaviour, as
presented 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>First of all, some useful imports.</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"</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 also can be found 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 written 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 impose the solution as $u(x) = \sin(2\pi x) + 0.1 \sin(50\pi x)$ and obtain the force term $f(x) = (2\pi)^2 \sin(2\pi x) + 0.1 (50 \pi)^2 \sin(50\pi x)$.
Though this example is simple and pedagogical, it is worth noting that
the solution exhibits low frequency in the macro-scale and high frequency in the micro-scale, which resembles many
practical scenarios.</p>
<p>In <strong>PINA</strong> this problem is written, as always, as a class <a href="https://mathlab.github.io/PINA/_rst/tutorials/tutorial1/tutorial.html">see here for a tutorial on the Problem class</a>. Below you can find the <code>Poisson</code> problem which is mathmatically described above.</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 [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 be to fit this model using a Feed Forward (fully connected) Neural Network. For a conventional fully-connected neural network is easy to
approximate a function $u$, given sufficient data inside the computational domain. However solving high-frequency or multi-scale problems presents great challenges to PINNs especially when the number of data cannot capture the different scales.</p>
<p>Below we run a simulation using the <code>PINN</code> solver and the self adaptive <code>SAPINN</code> solver, using 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>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="jp-RenderedText jp-OutputArea-output" data-mime-type="application/vnd.jupyter.stderr" tabindex="0">
<pre>Missing logger folder: /home/runner/work/PINA/PINA/tutorials/tutorial13/lightning_logs
</pre>
</div>
</div>
<div class="jp-OutputArea-child">
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
<div class="jupyter-widgets jp-OutputArea-output" id="8da50878-400e-44c2-b449-584b20226c9a" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('8da50878-400e-44c2-b449-584b20226c9a');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "cd71bf53b33244a7bcb4ffd418297e60"}
</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>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="7348d301-a14e-48b1-93c4-9ec281da6330" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('7348d301-a14e-48b1-93c4-9ec281da6330');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "d0fea195f44c44d084eb8eba7ca76d9d"}
</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="o">.</span><span class="n">forward</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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W3bgwAERgOjp6Smmp6frlm/atEkEIH7zzTe6Zb169Sr0Pgv2C0Bcs2aNbllwcLAYFBSkt96JEydEAOLPP/8siqIoarVaMSAgQOzWrZve+8nOzhZr1Kghdu3atbjDpfe6c+bMEZOTk8WEhAQxNDRUbNq0qQhA3Lp1q25dAOK4ceMKbbt48WIxPz9fDAgIEBs3bqyrY9asWSIAMTk5WbfN8OHDRWtra1EURXHt2rUiAPH3338v9jWK8vXXXxfa7+OWLFkiAhDXr1+vW5aXlycGBweLNjY2et8nAOKsWbP0aizqe1Twfh5lbW2t9zNTYM2aNSIAMSYmRhTFhz93L730kt7P1NKlS0UA4k8//aRb1qFDB73vsSiKokqlEt3d3cX+/fsX+56JSootKlTpde3aFWFhYejTpw/OnTuHRYsWoVu3bvD09MQff/yhW+/333+HVqvFwIEDkZKSonu4u7sjICAABw4cKLOa7t69iz179uCNN97QLevfv3+hVol9+/YhLy8PEyZM0GvGL2ros1KphEwm/UprNBrcvXtXd5nhzJkzhdYfNmwYbG1tdV8PGDAA1atXx65du57pPQ0aNAinT5/WtW4AwMaNG6FUKtG3b18AQHh4OK5du4bBgwfj7t27umOclZWFF198EYcOHYJWq33qa82aNQsuLi66lqjo6Gj873//K1GfE0C/VaWko2CGDBnyTK0qBZccd+zYUex727VrF9zd3fV+HszNzTFx4kRkZmbi4MGDJX69slDwczdp0iTdzxQAjB49GnZ2dti5c6fe+jY2Nnp9hhQKBVq2bInr169XWM1UeTGoUJXQokUL/P7777h//z5OnDiBadOmISMjAwMGDMDly5cBANeuXYMoiggICICLi4veIyIiokw73m7cuBFqtRpNmzZFVFQUoqKicO/ePbRq1Urv8k9Bn4+AgAC97V1cXHSXUgpotVp8/fXXCAgIgFKphLOzM1xcXHD+/HmkpaUVquHxfQqCgFq1aj3zXBqvvfYaZDIZNm7cCEDqW7N582b06NEDdnZ2AKRjDADDhw8vdIx//PFHqFSqImt93DvvvIO9e/di//79OH36NJKSkjBlypRS1TtkyBDUqlWrxMGjINyEh4eXaojvoEGD0KZNG7z99ttwc3PD66+/jk2bNumFlhs3biAgIEAvFADSZcWC5ytSwevVqVNHb7lC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3BxyuVy3rG7dukhISEBeXh4UCkW51myKnuU4f/rppxg6dCjefvttAEDDhg2RlZWFd955BzNmzIBMxs/lZaG4c6GdnV25tKYAVbRFRaFQICgoCPv379ct02q12L9/P4KDg4vcJjg4WG99ANi7d2+x65PkWY41ACxatAjz5s3D33//jebNm1dEqSattMc5MDAQFy5cQHh4uO7Rp08fdOrUCeHh4fD29q7I8k3Gs/w8t2nTBlFRUbogCABXr15F9erVGVKK8SzHOTs7u1AYKQiHIu+9W2YMci4st266Ru63334TlUqlGBISIl6+fFl85513RAcHBzEhIUEURVEcOnSo+PHHH+vWP3LkiGhmZiZ+8cUXYkREhDhr1iwOTy6h0h7rzz//XFQoFOKWLVvE+Ph43SMjI8NQb8EklPY4P46jfkqmtMc5Li5OtLW1FcePHy9GRkaKf/31l+jq6ip+9tlnhnoLJqG0x3nWrFmira2t+Ouvv4rXr18X//nnH7FmzZriwIEDDfUWTEJGRoZ49uxZ8ezZsyIA8auvvhLPnj0r3rhxQxRFUfz444/FoUOH6tYvGJ780UcfiREREeKyZcs4PLk8fffdd6KPj4+oUCjEli1biseOHdM916FDB3H48OF662/atEmsXbu2qFAoxPr164s7d+6s4IpNV2mOta+vrwig0GPWrFkVX7iJKe3P9KMYVEqutMf56NGjYqtWrUSlUin6+/uL8+fPF/Pz8yu4atNTmuOsVqvF2bNnizVr1hQtLCxEb29vcezYseL9+/crvnATcuDAgSL/3hYc2+HDh4sdOnQotE2TJk1EhUIh+vv7i2vWrCnXGgVRZJsYERERGacq2UeFiIiITAODChERERktBhUiIiIyWgwqREREZLQYVIiIiMhoMagQERGR0WJQISIiIqPFoEJERERGi0GFiIiIjBaDChERERktBhUiIiIyWv8PTi5Jc+H+uaQAAAAASUVORK5CYII="/>
</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 see that the solution has not been learned by the two different solvers. Indeed the big problem is not in the optimization strategy (i.e. the solver), but in the model used to solve the problem. A simple <code>FeedForward</code> network can hardly handle multiscales if not enough collocation points are used!</p>
<p>We can also compute the $l_2$ relative error for 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 3046.36%
Relative l2 error SAPINN 1797.21%
</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>
</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="Fourier-Feature-Embedding-in-PINA">Fourier Feature Embedding in PINA<a class="anchor-link" href="#Fourier-Feature-Embedding-in-PINA"></a></h2>
</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>Fourier Feature Embedding is a way to transform the input features, to help 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> showing great results for multiscale problems. The basic idea is to map the input $\mathbf{x}$ into an embedding $\tilde{\mathbf{x}}$ where:</p>
<p>$$ \tilde{\mathbf{x}} =\left[\cos\left( \mathbf{B} \mathbf{x} \right), \sin\left( \mathbf{B} \mathbf{x} \right)\right] $$</p>
<p>and $\mathbf{B}_{ij} \sim \mathcal{N}(0, \sigma^2)$. This simple operation allow the network to learn on multiple scales!</p>
<p>In PINA we already have implemented the 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$)
are applied to input coordinates and then passed through the same fully-connected neural network, before the outputs are finally concatenated with a 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> with the <code>PINN</code> solver (and feel free to try also with our PINN variants (<code>SAPINN</code>, <code>GPINN</code>, <code>CompetitivePINN</code>, ...).</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>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="e4b8a7cd-5aef-4892-ad24-0c8506049c29" tabindex="0">
<script type="text/javascript">
var element = document.getElementById('e4b8a7cd-5aef-4892-ad24-0c8506049c29');
</script>
<script type="application/vnd.jupyter.widget-view+json">
{"version_major": 2, "version_minor": 0, "model_id": "250d7d9b8b1c4134881366e1902e78d6"}
</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: 17.34%
</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,iVBORw0KGgoAAAANSUhEUgAAAi8AAAGzCAYAAADnmPfhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACqzElEQVR4nOzdd3gUx/nA8e/eqXeEekENARJFdEwzGGNT3GsS90ZiO8RxHNfEP9fENbbj7sRxwb3g3g22AdOrqAKJItQbqHfd7e+PuTvp0J0KqPN+nkfP7u3O7s2p3Xsz78xouq7rCCGEEEL0E4beroAQQgghRGdI8CKEEEKIfkWCFyGEEEL0KxK8CCGEEKJfkeBFCCGEEP2KBC9CCCGE6FckeBFCCCFEvyLBixBCCCH6FQlehBBCCNGvSPAiRB/xwAMPoGlah8q++eabaJpGZmZm91aqDbNnz2b27Nm99vwDTWd+/p0RGxvLNddc0+X3FaI3SfAiRAdYgwVN01i9enWr87quEx0djaZpnH322V32vI888giff/55l92vL7vmmmts32NN0/Dz8yMlJYWnnnqK+vp6Wznrm3xJSUmra8eMGYOjFU80TWPx4sW2x5mZmbbn+eSTT1qVd/QcfdnatWt54IEHKCsr6+2qCNEjJHgRohM8PDx47733Wh1fuXIlOTk5uLu7d+nzOQterrzySmpra4mJienS5+tt7u7uvP3227z99ts88sgjBAYGcvvtt3P11Vd36PqdO3fy6aefduo5H3roIYcBT3+ydu1aHnzwQYfBy759+3j11Vd7vlJCdCMJXoTohIULF/Lxxx/T1NRkd/y9995jwoQJhIWF9Ug9jEYjHh4e3dLN0JtcXFy44ooruOKKK1i8eDE//fQTEydO5MMPPyQvL6/Naz09PRk2bFingpGxY8eyY8cOPvvss66ofp/k7u6Oq6trb1dDiC4lwYsQnfC73/2OI0eOsGzZMtuxhoYGli5dymWXXdaq/IoVK9A0jRUrVtgdt3ZbvPnmm06fS9M0qqurWbJkia2Lw5q74CjnZfPmzcybN4+goCA8PT2Ji4vjuuuus7un2Wzm2WefZfTo0Xh4eBAcHMz8+fPZvHmzrcwbb7zBnDlzCAkJwd3dneTkZF5++eUOfX/q6+u5//77GTp0KO7u7kRHR3PnnXfadft0hsFgsOXVtJffYzAYuPfeezsVjPz2t7/tdMDTUmVlJbfeeiuxsbG4u7sTEhLCGWecwdatW+3Kffzxx0yYMAFPT0+CgoK44ooryM3NbfPebf2OaJrGAw88AKgurjvuuAOAuLg42++K9fvlKOfl4MGDXHLJJQQGBuLl5cUpp5zCN998Y1fG+rv70Ucf8c9//pOoqCg8PDw4/fTT2b9/f8e/SUJ0A5feroAQ/UlsbCxTp07l/fffZ8GCBQB89913lJeX89vf/pbnnnuuy57r7bff5oYbbmDy5Mn8/ve/ByAhIcFh2aKiIs4880yCg4O5++67CQgIIDMzs1UXyvXXX8+bb77JggULuOGGG2hqauLXX39l/fr1TJw4EYCXX36ZkSNHcu655+Li4sJXX33FzTffjNls5o9//KPT+prNZs4991xWr17N73//e5KSkti5cyfPPPMM6enpx527c+DAAQAGDx7cbtnLLruMhx9+mIceeogLLrig3ZYpo9HIvffey1VXXcVnn33GhRde2Km63XjjjSxdupTFixeTnJzMkSNHWL16NWlpaYwfPx5Qgea1117LpEmTePTRRyksLOTZZ59lzZo1bNu2jYCAgE4957EuvPBC0tPTef/993nmmWcICgoCIDg42GH5wsJCpk2bRk1NDbfccguDBw9myZIlnHvuuSxdupQLLrjArvxjjz2GwWDg9ttvp7y8nCeeeILLL7+cDRs2nFC9hTghuhCiXW+88YYO6Js2bdJfeOEF3dfXV6+pqdF1XdcvueQS/bTTTtN1XddjYmL0s846y3bdL7/8ogP6L7/8Yne/Q4cO6YD+xhtv2I7df//9+rF/kt7e3vrVV1/ttD6HDh3SdV3XP/vsM1v9nPn55591QL/llltanTObzbZ96+tqad68eXp8fLzdsVmzZumzZs2yPX777bd1g8Gg//rrr3blXnnlFR3Q16xZ47Ruuq7rV199te7t7a0XFxfrxcXF+v79+/VHHnlE1zRNHzNmjK2c9ftUXFzc6lpd1/UlS5bogP7pp5/azgP6H//4R9tj6/f/ySef1JuamvTExEQ9JSXF9n1w9ByO+Pv72933WA0NDXpISIg+atQovba21nb866+/1gH9vvvua/W6jq1jy9+Rlq/n/vvvtz1+8skn7X4fWoqJibH7Hbr11lt1wO7nVFlZqcfFxemxsbG6yWTSdb35dzcpKUmvr6+3lX322Wd1QN+5c6fT1y1Ed5NuIyE66dJLL6W2tpavv/6ayspKvv76a4ddRj3J+un966+/prGx0WGZTz75BE3TuP/++1uda9lC4enpadsvLy+npKSEWbNmcfDgQcrLy53W4eOPPyYpKYkRI0ZQUlJi+5ozZw4Av/zyS7uvo7q6muDgYIKDgxk6dCh/+9vfmDp1aqdyUi6//HISExM73BVkbX3Zvn17p1uHAgIC2LBhg9N8nM2bN1NUVMTNN9+Mh4eH7fhZZ53FiBEjWnXV9IRvv/2WyZMnM2PGDNsxHx8ffv/735OZmcmePXvsyl977bW4ubnZHs+cORNQXU9C9BYJXoTopODgYObOnct7773Hp59+islk4uKLL+7VOs2aNYuLLrqIBx98kKCgIM477zzeeOMNu1yTAwcOEBERQWBgYJv3WrNmDXPnzsXb25uAgACCg4P529/+BtBm8JKRkcHu3bttwYf1a9iwYYDq2mqPh4cHy5YtY9myZaxatYrs7GzWrFlDfHx8R74NQHMwkpqa2uFg5PLLL2fo0KGdzn154okn2LVrF9HR0UyePJkHHnjA7k398OHDAAwfPrzVtSNGjLCd70mHDx92WJ+kpCTb+ZaGDBli93jQoEEAlJaWdlMNhWif5LwIcRwuu+wyFi1aREFBAQsWLHCat+As58JkMnVpfTRNY+nSpaxfv56vvvqKH374geuuu46nnnqK9evX4+Pj06H7HDhwgNNPP50RI0bw9NNPEx0djZubG99++y3PPPMMZrPZ6bVms5nRo0fz9NNPOzwfHR3d7vMbjUbmzp3bobq25fLLL7flvpx//vkdet57772Xa665hi+++KLDz3PppZcyc+ZMPvvsM3788UeefPJJHn/8cT799FNbTtTx6qnfnfYYjUaHxzsT5AnR1aTlRYjjcMEFF2AwGFi/fn2bXUbWT6nHzr/R0U/cnR0Kfcopp/DPf/6TzZs38+6777J7924++OADQCX75uXlcfToUafXf/XVV9TX1/Pll1/yhz/8gYULFzJ37ly7riRnEhISOHr0KKeffjpz585t9eXo0353adn60tFg5IorrmDo0KE8+OCDnXpjDg8P5+abb+bzzz/n0KFDDB48mH/+858Atnl49u3b1+q6ffv2tTlPT2d+dzrzexITE+OwPnv37rWrsxB9mQQvQhwHHx8fXn75ZR544AHOOeccp+ViYmIwGo2sWrXK7vhLL73Uoefx9vbu0KyppaWlrd5wx44dC2DrOrrooovQdZ0HH3yw1fXWa62fslveq7y8nDfeeKPdOlx66aXk5uY6nBCttraW6urqdu/RlVoGIx3RMuD58ssv2y1vMpladaOFhIQQERFh+55PnDiRkJAQXnnlFbsuvO+++460tDTOOussp/f38/MjKCioQ7873t7eQOtAx5GFCxeyceNG1q1bZztWXV3Nf//7X2JjY0lOTm73HkL0Nuk2EuI4dWTWV39/fy655BKef/55NE0jISGBr7/+ukP5HwATJkxg+fLlPP3000RERBAXF8eUKVNalVuyZAkvvfQSF1xwAQkJCVRWVvLqq6/i5+fHwoULATjttNO48soree6558jIyGD+/PmYzWZ+/fVXTjvtNBYvXsyZZ56Jm5sb55xzDn/4wx+oqqri1VdfJSQkhPz8/DbreuWVV/LRRx9x44038ssvvzB9+nRMJhN79+7lo48+4ocffrANx+4JRqORv//971x77bUdvsba3ZSamtpu2crKSqKiorj44otJSUnBx8eH5cuXs2nTJp566ikAXF1defzxx7n22muZNWsWv/vd72xDpWNjY/nLX/7S5nPccMMNPPbYY9xwww1MnDiRVatWkZ6e3qrchAkTAPj73//Ob3/7W1xdXTnnnHNsQU1Ld999t22o/y233EJgYCBLlizh0KFDfPLJJxgM8plW9H0SvAjRzZ5//nkaGxt55ZVXcHd359JLL+XJJ59k1KhR7V779NNP8/vf/557772X2tparr76aofBy6xZs9i4cSMffPABhYWF+Pv7M3nyZN59913i4uJs5d544w3GjBnDa6+9xh133IG/vz8TJ05k2rRpgEosXbp0Kffeey+33347YWFh3HTTTQQHB7ea8O5YBoOBzz//nGeeeYa33nqLzz77DC8vL+Lj4/nzn/9sS9ztSVdccQX/+Mc/bHPFtMfFxYV77723QwGPl5cXN998Mz/++COffvopZrOZoUOH8tJLL3HTTTfZyl1zzTV4eXnx2GOPcdddd+Ht7c0FF1zA448/3u4cL/fddx/FxcUsXbqUjz76iAULFvDdd98REhJiV27SpEk8/PDDvPLKK3z//feYzWYOHTrkMHgJDQ1l7dq13HXXXTz//PPU1dUxZswYvvrqqzZbgoTo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hoaKqqqqYW55cPG3n++66y6xatUqUVFRIWpqasS9994rYmJiRHNz8zC3PLj428+K+vp6kZGRIebOnSsWL148PI0NYv72s8FgEDNmzBALFy4U27ZtE/X19WLLli2isrJymFseXPzt548//lhotVrx8ccfi/r6evHNN9+ItLQ0sWLFimFueXDZuHGjeOqpp8TatWsFALFu3Tqv59fV1YmIiAixcuVKUV1dLd544w2hVqvFpk2bAtpOBi8OiouLxfLly23fm81mkZ6eLl5++WW3599xxx3illtucXqspKREPPDAAwFtZ7Dzt58HMplMIioqSnzwwQeBauKIMJR+NplMYtasWeK9994TS5cuZfDiA3/7+a233hI5OTnCaDQOVxNHBH/7efny5eL66693emzlypVi9uzZAW3nSOJL8PLYY4+JiRMnOj125513igULFgSwZUJw2sjKaDRi//79KCsrsz2mUqlQVlaGnTt3ur1m586dTucDwIIFCzyeT0Pr54F6enrQ39+P+Pj4QDUz6A21n5977jkkJyfjvvvuG45mBr2h9PP69etRWlqK5cuXIyUlBZMmTcJLL70Es9k8XM0OOkPp51mzZmH//v22qaW6ujps3LgRCxcuHJY2Xy0u1+fgiNtVeqjOnz8Ps9mMlJQUp8dTUlJQW1vr9hqdTuf2fJ1OF7B2Bruh9PNAjz/+ONLT013+wZDdUPp527ZteP/991FZWTkMLRwZhtLPdXV1+OGHH3D33Xdj48aNOHHiBB5++GH09/ejvLx8OJoddIbSz3fddRfOnz+POXPmQAgBk8mEBx98EL/97W+Ho8lXDU+fg52dnejt7UV4eHhAXpcjLxRUXnnlFaxZswbr1q1DWFjY5W7OiKHX67FkyRK8++67SExMvNzNGdEsFguSk5Pxpz/9CdOnT8edd96Jp556Cm+//fblbtqIsmXLFrz00kt48803ceDAAaxduxYbNmzA888/f7mbRpcAR16sEhMToVar0dra6vR4a2srUlNT3V6Tmprq1/k0tH5WvPbaa3jllVfw/fffY/LkyYFsZtDzt59PnjyJU6dOYdGiRbbHLBYLACAkJARHjx5Fbm5uYBsdhIby+5yWlobQ0FCo1WrbYxMmTIBOp4PRaIRGowlom4PRUPr5d7/7HZYsWYL7778fAFBYWIju7m4sW7YMTz31FFQq/t/9UvD0ORgdHR2wUReAIy82Go0G06dPx+bNm22PWSwWbN68GaWlpW6vKS0tdTofAL777juP59PQ+hkAXn31VTz//PPYtGkTZsyYMRxNDWr+9nNBQQGqqqpQWVlpu91666247rrrUFlZiczMzOFsftAYyu/z7NmzceLECVtwCADHjh1DWloaAxcPhtLPPT09LgGKEjAK7kd8yVy2z8GApgMHmTVr1gitVitWr14tqqurxbJly0RsbKzQ6XRCCCGWLFkinnjiCdv527dvFyEhIeK1114TNTU1ory8nEulfeBvP7/yyitCo9GIzz//XJw5c8Z20+v1l+stBAV/+3kgrjbyjb/93NjYKKKiosQjjzwijh49Kv7+97+L5ORk8cILL1yutxAU/O3n8vJyERUVJT755BNRV1cnvv32W5GbmyvuuOOOy/UWgoJerxcVFRWioqJCABB/+MMfREVFhWhoaBBCCPHEE0+IJUuW2M5Xlko/+uijoqamRqxatYpLpS+HN954Q4wZM0ZoNBpRXFwsdu3aZTs2b948sXTpUqfzP/30U5GXlyc0Go2YOHGi2LBhwzC3ODj5089jx44VAFxu5eXlw9/wIOPv77MjBi++87efd+zYIUpKSoRWqxU5OTnixRdfFCaTaZhbHXz86ef+/n7x+9//XuTm5oqwsDCRmZkpHn74YXHx4sXhb3gQ+fHHH93+vVX6dunSpWLevHku10ydOlVoNBqRk5Mj/vKXvwS8nZIQHD8jIiKi4MGcFyIiIgoqDF6IiIgoqDB4ISIioqDC4IWIiIiCCoMXIiIiCioMXoiIiCioMHghIiKioMLghYiIiIIKgxciIiIKKgxeiIiIKKgweCEiIqKg8v8BaS2x0/ctsswAAAAASUVORK5CYII="/>
</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 pretty clear that the network has learned the correct solution, with also a very low error. Obviously a longer training and a more expressive neural network could 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 multiple directions you can go now:</p>
<ol>
<li><p>Train the network for longer or with different layer sizes and assert the finaly accuracy</p>
</li>
<li><p>Understand the role of <code>sigma</code> in <code>FourierFeatureEmbedding</code> (see original paper for a nice reference)</p>
</li>
<li><p>Code the <em>Spatio-temporal multi-scale Fourier feature architecture</em> for a more complex time dependent PDE (section 3 of the original reference)</p>
</li>
<li><p>Many more...</p>
</li>
</ol>
</div>
</div>
</div>
</div>
</main>
</body>
<script type="application/vnd.jupyter.widget-state+json">
{"state": {"ca374188fddf4808bda627476202ac04": {"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}}, "401943cd28f7490db9e42ed976008472": {"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": ""}}, "021380362170435f831e00f485122617": {"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_ca374188fddf4808bda627476202ac04", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_401943cd28f7490db9e42ed976008472", "tabbable": null, "tooltip": null, "value": 1.0}}, "215c60e610bc4068888a6bd639abc5c1": {"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}}, "b87b53ae50164fff975a84d593e21001": {"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}}, "a762426c475b4d01876c9847ba3ef02d": {"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_215c60e610bc4068888a6bd639abc5c1", "placeholder": "\u200b", "style": "IPY_MODEL_b87b53ae50164fff975a84d593e21001", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "34823468676a46d28cfdae25293e84da": {"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}}, "4eb09e2d325d4293b123d136d9bbc718": {"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}}, "67184115f45a4b7ca68e8385304c4bac": {"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_34823468676a46d28cfdae25293e84da", "placeholder": "\u200b", "style": "IPY_MODEL_4eb09e2d325d4293b123d136d9bbc718", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200767.87it\/s,\u2007v_num=0,\u2007bound_cond0_loss=3.62e+3,\u2007bound_cond1_loss=3.61e+3,\u2007phys_cond_loss=3.1e+4,\u2007train_loss=3.82e+4]"}}, "ed713053cdb2471c9c85a38da54f27a6": {"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%"}}, "cd71bf53b33244a7bcb4ffd418297e60": {"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_a762426c475b4d01876c9847ba3ef02d", "IPY_MODEL_021380362170435f831e00f485122617", "IPY_MODEL_67184115f45a4b7ca68e8385304c4bac"], "layout": "IPY_MODEL_ed713053cdb2471c9c85a38da54f27a6", "tabbable": null, "tooltip": null}}, "9a9a1ced2b0d4c4d8cce8d77945ca8ab": {"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}}, "1ff6231212f9494885805bb25882a1f2": {"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": ""}}, "615e00c393fa4474878ea5823e8b2085": {"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_9a9a1ced2b0d4c4d8cce8d77945ca8ab", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_1ff6231212f9494885805bb25882a1f2", "tabbable": null, "tooltip": null, "value": 1.0}}, "2710444f69354cb1945966f5f25b9f8b": {"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}}, "d623b808288b40a68eb479c32104fb0d": {"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}}, "75b32af1d68549c7b82713295d558f93": {"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_2710444f69354cb1945966f5f25b9f8b", "placeholder": "\u200b", "style": "IPY_MODEL_d623b808288b40a68eb479c32104fb0d", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "a6ef5a40d4e04c0db2cbc2c126852248": {"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}}, "f3e9696277124822bc398d58aa5d8164": {"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}}, "84c36a1773124a6bbb82f6f173cf4e18": {"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_a6ef5a40d4e04c0db2cbc2c126852248", "placeholder": "\u200b", "style": "IPY_MODEL_f3e9696277124822bc398d58aa5d8164", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200745.97it\/s,\u2007v_num=1,\u2007bound_cond0_loss=650.0,\u2007bound_cond1_loss=459.0,\u2007phys_cond_loss=7.39e+5,\u2007train_loss=7.4e+5]"}}, "0b4daf6dcfc74c9b9ae57d1614b14522": {"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%"}}, "d0fea195f44c44d084eb8eba7ca76d9d": {"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_75b32af1d68549c7b82713295d558f93", "IPY_MODEL_615e00c393fa4474878ea5823e8b2085", "IPY_MODEL_84c36a1773124a6bbb82f6f173cf4e18"], "layout": "IPY_MODEL_0b4daf6dcfc74c9b9ae57d1614b14522", "tabbable": null, "tooltip": null}}, "e02b7d3a43e5426a91917a05b049fb08": {"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}}, "2a3261a0a385495d80c4c589030a502a": {"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": ""}}, "6468728b664745c3bb0adc979783c753": {"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_e02b7d3a43e5426a91917a05b049fb08", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_2a3261a0a385495d80c4c589030a502a", "tabbable": null, "tooltip": null, "value": 1.0}}, "a2cca7d95c6f442288f88af69b843050": {"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}}, "0968d1b63ed541579a8ee9aa1ec9b6c1": {"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}}, "50b7d1f604c84276b54af08c072cdacd": {"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_a2cca7d95c6f442288f88af69b843050", "placeholder": "\u200b", "style": "IPY_MODEL_0968d1b63ed541579a8ee9aa1ec9b6c1", "tabbable": null, "tooltip": null, "value": "Epoch\u20071499:\u2007100%"}}, "f6fe70a0726b4af7a7fd6bedad367ee0": {"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}}, "88c26176507947388bca47aa1fe1d58b": {"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}}, "b00c44e4d3f74fcfaa378f217b0d5efb": {"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_f6fe70a0726b4af7a7fd6bedad367ee0", "placeholder": "\u200b", "style": "IPY_MODEL_88c26176507947388bca47aa1fe1d58b", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00&lt;00:00,\u200755.59it\/s,\u2007v_num=2,\u2007bound_cond0_loss=0.118,\u2007bound_cond1_loss=0.118,\u2007phys_cond_loss=0.000234,\u2007train_loss=0.237]"}}, "aa70d60c995f462fa88374fb9b77bc0d": {"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%"}}, "250d7d9b8b1c4134881366e1902e78d6": {"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_50b7d1f604c84276b54af08c072cdacd", "IPY_MODEL_6468728b664745c3bb0adc979783c753", "IPY_MODEL_b00c44e4d3f74fcfaa378f217b0d5efb"], "layout": "IPY_MODEL_aa70d60c995f462fa88374fb9b77bc0d", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0}
</script>
</html>