8430 lines
506 KiB
HTML
8430 lines
506 KiB
HTML
<!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" id="cell-id=de19422d">
|
||
<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:-Two-dimensional-Poisson-problem-using-Extra-Features-Learning">Tutorial: Two dimensional Poisson problem using Extra Features Learning<a class="anchor-link" href="#Tutorial:-Two-dimensional-Poisson-problem-using-Extra-Features-Learning">¶</a></h1><p><a href="https://colab.research.google.com/github/mathLab/PINA/blob/master/tutorials/tutorial2/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 2D Poisson problem with Dirichlet boundary conditions. We will train with standard PINN's training, and with extrafeatures. For more insights on extrafeature learning please read <a href="https://www.sciencedirect.com/science/article/abs/pii/S0898122123002018"><em>An extended physics informed neural network for preliminary analysis of parametric optimal control problems</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" id="cell-id=ad0b8dd7">
|
||
<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">LabelTensor</span><span class="p">,</span> <span class="n">Trainer</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.solver</span><span class="w"> </span><span class="kn">import</span> <span class="n">PINN</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">torch.nn</span><span class="w"> </span><span class="kn">import</span> <span class="n">Softplus</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" id="cell-id=492a37b4">
|
||
<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="The-problem-definition">The problem definition<a class="anchor-link" href="#The-problem-definition">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=2c0b1777">
|
||
<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>The two-dimensional Poisson problem is mathematically written as:
|
||
\begin{equation}
|
||
\begin{cases}
|
||
\Delta u = 2\pi^2\sin{(\pi x)} \sin{(\pi y)} \text{ in } D, \\
|
||
u = 0 \text{ on } \Gamma_1 \cup \Gamma_2 \cup \Gamma_3 \cup \Gamma_4,
|
||
\end{cases}
|
||
\end{equation}
|
||
where $D$ is a square domain $[0,1]^2$, and $\Gamma_i$, with $i=1,...,4$, are the boundaries of the square.</p>
|
||
<p>The Poisson problem is written in <strong>PINA</strong> code as a class. The equations are written as <em>conditions</em> that should be satisfied in the corresponding domains. The <em>solution</em>
|
||
is the exact solution which will be compared with the predicted one. If interested in how to write problems see <a href="https://mathlab.github.io/PINA/_rst/tutorials/tutorial1/tutorial.html">this tutorial</a>.</p>
|
||
<p>We will directly import the problem from <code>pina.problem.zoo</code>, which contains a vast list of PINN problems and more.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=82c24040">
|
||
<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="kn">from</span><span class="w"> </span><span class="nn">pina.problem.zoo</span><span class="w"> </span><span class="kn">import</span> <span class="n">Poisson2DSquareProblem</span> <span class="k">as</span> <span class="n">Poisson</span>
|
||
|
||
<span class="c1"># initialize the problem</span>
|
||
<span class="n">problem</span> <span class="o">=</span> <span class="n">Poisson</span><span class="p">()</span>
|
||
|
||
<span class="c1"># print the conditions</span>
|
||
<span class="nb">print</span><span class="p">(</span>
|
||
<span class="sa">f</span><span class="s2">"The problem is made of </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2"> conditions: </span><span class="se">\n</span><span class="s2">"</span>
|
||
<span class="sa">f</span><span class="s2">"They are: </span><span class="si">{</span><span class="nb">list</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">conditions</span><span class="o">.</span><span class="n">keys</span><span class="p">())</span><span class="si">}</span><span class="s2">"</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">30</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">"D"</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">100</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">"g1"</span><span class="p">,</span> <span class="s2">"g2"</span><span class="p">,</span> <span class="s2">"g3"</span><span class="p">,</span> <span class="s2">"g4"</span><span class="p">],</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>The problem is made of 5 conditions:
|
||
They are: ['g1', 'g2', 'g3', 'g4', 'D']
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=7086c64d">
|
||
<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="Solving-the-problem-with-standard-PINNs">Solving the problem with standard PINNs<a class="anchor-link" href="#Solving-the-problem-with-standard-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=72ba4501">
|
||
<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>After the problem, the feed-forward neural network is defined, through the class <code>FeedForward</code>. This neural network takes as input the coordinates (in this case $x$ and $y$) and provides the unkwown field of the Poisson problem. The residual of the equations are evaluated at several sampling points and the loss minimized by the neural network is the sum of the residuals.</p>
|
||
<p>In this tutorial, the neural network is composed by two hidden layers of 10 neurons each, and it is trained for 1000 epochs with a learning rate of 0.006 and $l_2$ weight regularization set to $10^{-8}$. These parameters can be modified as desired. We set the <code>train_size</code> to 0.8 and <code>test_size</code> to 0.2, this mean that the discretised points will be divided in a 80%-20% fashion, where 80% will be used for training and the remaining 20% for testing.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=e7d20d6d">
|
||
<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"># make model + solver + trainer</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pina.optim</span><span class="w"> </span><span class="kn">import</span> <span class="n">TorchOptimizer</span>
|
||
|
||
<span class="n">model</span> <span class="o">=</span> <span class="n">FeedForward</span><span class="p">(</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">),</span>
|
||
<span class="p">)</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="p">,</span>
|
||
<span class="n">model</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_base</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_base</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/tutorial2/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="dc9b3605-7526-495d-a5b3-855279d99c03" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('dc9b3605-7526-495d-a5b3-855279d99c03');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "188c7ae4493946a9a42dc5250ed484b7"}
|
||
</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=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=eb83cc7a">
|
||
<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>Now we plot the results using <code>matplotlib</code>.
|
||
The solution predicted by the neural network is plotted on the left, the exact one is represented at the center and on the right the error between the exact and the predicted solutions is showed.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs" id="cell-id=1ab83c03">
|
||
<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="nd">@torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">()</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="p">):</span>
|
||
<span class="c1"># get the problem</span>
|
||
<span class="n">problem</span> <span class="o">=</span> <span class="n">solver</span><span class="o">.</span><span class="n">problem</span>
|
||
<span class="c1"># get spatial points</span>
|
||
<span class="n">spatial_samples</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">30</span><span class="p">,</span> <span class="s2">"grid"</span><span class="p">)</span>
|
||
<span class="c1"># compute pinn solution, true solution and absolute difference</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="s2">"PINN solution"</span><span class="p">:</span> <span class="n">solver</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">),</span>
|
||
<span class="s2">"True solution"</span><span class="p">:</span> <span class="n">problem</span><span class="o">.</span><span class="n">solution</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">),</span>
|
||
<span class="s2">"Absolute Difference"</span><span class="p">:</span> <span class="n">torch</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="p">(</span><span class="n">spatial_samples</span><span class="p">)</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">spatial_samples</span><span class="p">)</span>
|
||
<span class="p">),</span>
|
||
<span class="p">}</span>
|
||
<span class="c1"># plot the solution</span>
|
||
<span class="k">for</span> <span class="n">idx</span><span class="p">,</span> <span class="p">(</span><span class="n">title</span><span class="p">,</span> <span class="n">field</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">items</span><span class="p">()):</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="n">idx</span> <span class="o">+</span> <span class="mi">1</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">tricontourf</span><span class="p">(</span> <span class="c1"># convert to torch tensor + flatten</span>
|
||
<span class="n">spatial_samples</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="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="n">spatial_samples</span><span class="o">.</span><span class="n">extract</span><span class="p">(</span><span class="s2">"y"</span><span class="p">)</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="n">field</span><span class="o">.</span><span class="n">tensor</span><span class="o">.</span><span class="n">flatten</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">colorbar</span><span class="p">(),</span> <span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=dfec566d">
|
||
<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>Here the solution:</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=7db10610">
|
||
<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="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
<span class="n">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="n">pinn</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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BsOmqVOnRlQ9ddddd+n555+PqXpqwYIFuummm3TZZZfp5ptv1sGDB/Wvf/1LK1as0I9+9CNJ0meffaZzzz1X6enpuuOOO3TcccfpV7/6lc4//3z97W9/a/ZY+j59+ui+++7T9OnTde211+rcc8+VJJ1zzjlhlw8EAvre976nd999VxMmTNCAAQO0dOlS3X777dq6dat+8YtfhCz//vvv649//KOuv/56paWl6fHHH9ell16qsrKyiL4TADDF119/rQsvvFBXXHGFfvzjHyszMzOq5x84cEBDhw7V1q1bdd1116l79+768MMPNW3aNH311VeNThK7fft2jRgxQhkZGZo6daratWun0tJS/fGPfwwuE+3+ORZz587VjTfeqDZt2uiuu+6SpEY/h+eee07jx4/XmWeeqVmzZqmiokK//OUv9cEHH+iTTz4JuZpeU1OjgoIC5eXlac6cOXr77bf16KOPKicnR5MmTWp22wH4w+LFi/WDH/xAycnJGjNmjJ5++mn94x//CF6MPdrzzz+vffv26YYbbtDBgwf1y1/+Ut/+9rf173//O7hvu/TSS/XZZ5/pxhtvVHZ2trZv365ly5aprKwsGNDMnDlT9957r/Lz8zVp0iStX78++LoffPBBs0ciXHfdddq2bVvYIed1v6/b3950003atGmTnnzySX3yySfNfv0rr7xSv/71r/XXv/5Vw4cPr/f7Pn366IUXXtDkyZPVtWtX3XrrrZKk008/PTj31PDhwzVu3Ljgc6LtD5999lkdPHhQ1157rVJSUtShQwd99tln+ta3vqUTTjhBU6dOVevWrfX73/9eo0aN0h/+8Ad9//vfD1nHjTfeqPbt22vGjBkqLS3V3LlzVVhYqJdeeim4zHPPPaef/OQnOuWUUzRt2jS1a9dOn3zyiYqKioLnZu+8844uvPBCDRw4UDNmzFBiYqKeffZZffvb39bf//53nXXWWTF/1vCpADzn2WefDUgKvP3224EdO3YENm/eHFiyZEng+OOPD7Rs2TKwZcuWQCAQCLz77rsBSYGXX3653nP/8Y9/BDZu3Bho0aJF4Kabbgr+fujQoYFTTjkl5PV69OgRuOiiiwKBQCAwfvz4QGpqamDbtm0NvkY4l1xySb31HmvUqFGB5OTkwMaNG4OPbdu2LZCWlhY477zzgo/Vvea7774b0sarrrqq3jqHDh0aGDp0aPDf//jHPwKSAs8++2y9Za+66qpAjx49gv9+7bXXApICDzzwQMhyl112WSAhISGwYcOG4GOSAsnJySGP/fOf/wxICjzxxBONvm8AcMoNN9wQOPZQYejQoQFJgfnz59dbXlJgxowZ9R4/dh98//33B1q3bh34z3/+E7Lc1KlTA0lJSYGysrIG2/Tqq68G+6mGRLN/PrZtM2bMqPeeA4Fv+sdNmzYFHzvllFNC+pA6x/ZD1dXVgU6dOgVOPfXUwP/+97/gcm+88UZAUmD69OnBx6666qqApMB9990Xss7TTz89MHDgwAbfMwAc7eOPPw5ICixbtiwQCAQCtbW1ga5duwZuvvnmkOU2bdoUkBRyjhAIBAIrVqwISApMnjw5EAgEAv/9738DkgI///nPG3zN7du3B5KTkwMjRowI1NTUBB9/8sknA5ICCxcuDD527HF1uOP3o9t39LF5uL4pEAgE/v73vwckBRYvXhzyeFFRUdjHj1W3/9+xY0fY39d9Bt///vcbfB+BQOi50dEkBW644YaQxyLtD+s+h/T09MD27dtDlh02bFjgtNNOCxw8eDD4WG1tbeCcc84JnHjiicHH6vqx/Pz8QG1tbfDxyZMnB5KSkgK7d+8OBAKBwO7duwNpaWmBvLy8kD6rbr11/z3xxBMDBQUFIes6cOBAoGfPnoHhw4fXe/9AUxjW52H5+fnKyMhQt27ddMUVV6hNmzZ69dVXdcIJJ0T0/F69egWvEHz11VcRPefuu+/W4cOHIx4OWKddu3basmWL/vGPf4T9fU1Njf76179q1KhR6tWrV/Dxzp0760c/+pHef/997d27N6rXbK633npLSUlJuummm0Iev/XWWxUIBPSXv/wl5PH8/Hzl5OQE/92vXz+lp6friy++iEt7AcAqKSkpGj9+fMzPf/nll3Xuueeqffv22rlzZ/AnPz9fNTU1eu+99xp8bl2F0RtvvKFDhw6FXSba/bPdPv74Y23fvl3XX399yFxUF110kXJzc/Xmm2/We85Pf/rTkH+fe+659BcAIrZ48WJlZmbqggsukHRkCNzo0aO1ZMmSsEOER40aFXKOcNZZZykvL09vvfWWJKlly5ZKTk7W8uXLGxwi9/bbb6u6ulq33HKLEhO/Oc2cOHGi0tPTw+7rrPTyyy+rbdu2Gj58eEjfMnDgQLVp00bvvvtus9bfpk0bSdK+ffusaK6k6PvDSy+9VBkZGcF/79q1S++8844uv/xy7du3L/j8r7/+WgUFBfr888/rDR+/9tprQ4YVnnvuuaqpqdGXX34pSVq2bJn27dunqVOn1ps/se55a9as0eeff64f/ehH+vrrr4OvW1lZqWHDhum9997jRlKIGuGUh82bN0/Lli3Tu+++q//7v//TF198oYKCgqjWEW3YFEugJUl33nmn2rRpo7POOksnnniibrjhhpDxyjt27NCBAwd08skn13tunz59VFtbq82bN0f8elb48ssv1aVLF6WlpdVrT93vj9a9e/d662jfvn2zx8ADQLydcMIJzZqA9fPPP1dRUZEyMjJCfvLz8yUdGbrXkKFDh+rSSy/Vvffeq44dO+qSSy6pd4vvaPfPdqt7vXB9WG5ubr32pKamhpx8SPQXACJXU1OjJUuW6IILLtCmTZu0YcMGbdiwQXl5eaqoqFBxcXG955x44on1HjvppJOC80mlpKRo9uzZ+stf/qLMzEydd955euSRR1ReXh5cvqF9XXJysnr16mX7vvfzzz/Xnj171KlTp3r9y/79+xvtWyKxf/9+SarXtzRHtP1hz549Q/69YcMGBQIB3XPPPfXWUTf5/bHrOPacpH379pIU7GPqpoI59dRTG223JF111VX1XveZZ55RVVWV9uzZE9VnATDnlIedddZZwbv1xapXr1768Y9/rF//+teaOnVqRM+566679MILL2j27NkaNWpURM/p06eP1q9frzfeeENFRUX6wx/+oKeeekrTp0/Xvffe24x3cES4yW2lI513UlJSs9cfiYZeJ9DE5LwAYJqWLVtGtfyxV+lra2s1fPhw3XHHHWGXP+mkkxpcV0JCgl555RV99NFH+vOf/xy8xfejjz6qjz76KHhlO1aN9RfxEq9+CYA3vfPOO/rqq6+0ZMkSLVmypN7vFy9erBEjRkS93ltuuUUXX3yxXnvtNS1dulT33HOPZs2apXfeeUenn356s9psxb63trZWnTp1anDi92ND/2jVTRDfu3fvZq3naNH2h8f2v3XVSbfddluDRQjHtteKc5K61/35z3+uAQMGhF2muf0x/IdwCk26++679dvf/lazZ8+OaPmcnBz9+Mc/1q9+9auoJilv3bq1Ro8erdGjR6u6ulo/+MEP9OCDD2ratGnKyMhQq1attH79+nrPW7dunRITE9WtW7cG192+ffuwdwn58ssvQ4YJNtQxhtOjRw+9/fbb2rdvX8gVlHXr1gV/DwB+Em5fW11dXa+SNicnR/v37w9eGY7F2WefrbPPPlsPPvigXnzxRY0dO1ZLlizRNddc06z9c90V5N27d4dMUh7uin+kfUbd661fvz5459w669evp78AYKnFixerU6dOwbvaHe2Pf/yjXn31Vc2fPz8k6KirhDnaf/7zn3p3qs7JydGtt96qW2+9VZ9//rkGDBigRx99VL/97W9D9nVHH19XV1dr06ZNje7zj973Hi2afW9OTo7efvttfetb34r6Ikok6iZgj3YkSmOa2x/Wfc7HHXdcs/rUY9skHQnjGgri6pZJT0+37HUBhvWhSUeHTUeX7jbm7rvv1qFDh/TII49EtPzXX38d8u/k5GT17dtXgUBAhw4dUlJSkkaMGKE//elPIberraio0IsvvqghQ4YoPT290ffw0Ucfqbq6OvjYG2+8UW8oYOvWrSXV7xjD+c53vqOamho9+eSTIY//4he/UEJCgi688MIm1wEAXpKTk1Nvfoxf//rX9a58X3755SopKdHSpUvrrWP37t06fPhwg6/x3//+t97V3bqrtnVD+5qzf6474D76fVRWVmrRokX1lm3dunVE/cWgQYPUqVMnzZ8/P2T44V/+8hetXbtWF110UZPrAIBI/O9//9Mf//hHffe739Vll11W76ewsFD79u3T66+/HvK81157LWRuopUrV2rFihXB/eWBAwd08ODBkOfk5OQoLS0tuF/Lz89XcnKyHn/88ZD99G9+8xvt2bOn0X1djx49lJSUVK8Peeqpp+ot29Dx+uWXX66amhrdf//99Z5z+PDhiPbXDXnxxRf1zDPPaPDgwRo2bFjM6zlWc/pDSerUqZPOP/98/epXvwo7pcqOHTuibtOIESOUlpamWbNm1fvO677XgQMHKicnR3PmzAkOd2zu6wJUTiEidUP11q9fr1NOOaXJ5esCrXAH8+GMGDFCWVlZ+ta3vqXMzEytXbtWTz75pC666KLgVe8HHnhAy5Yt05AhQ3T99derRYsW+tWvfqWqqqomQ7BrrrlGr7zyikaOHKnLL79cGzdu1G9/+9uQCcrr2t2uXTvNnz9faWlpat26tfLy8uqN75akiy++WBdccIHuuusulZaWqn///vrrX/+qP/3pT7rlllvqrRsAvO6aa67RT3/6U1166aUaPny4/vnPf2rp0qXq2LFjyHK33367Xn/9dX33u9/V1VdfrYEDB6qyslL//ve/9corr6i0tLTec+osWrRITz31lL7//e8rJydH+/bt04IFC5Senq7vfOc7kpq3fx4xYoS6d++uCRMm6Pbbb1dSUpIWLlyojIwMlZWVhSw7cOBAPf3003rggQfUu3dvderUqV5llHTkivbs2bM1fvx4DR06VGPGjFFFRYV++ctfKjs7W5MnT472owaAsF5//XXt27dP3/ve98L+/uyzz1ZGRoYWL16s0aNHBx/v3bu3hgwZokmTJqmqqkpz587V8ccfHxxu9p///EfDhg3T5Zdfrr59+6pFixZ69dVXVVFRoSuuuELSkWFz06ZN07333quRI0fqe9/7ntavX6+nnnpKZ555pn784x832O62bdvqhz/8oZ544gklJCQoJydHb7zxRth5ogYOHChJuummm1RQUKCkpCRdccUVGjp0qK677jrNmjVLa9as0YgRI3Tcccfp888/18svv6xf/vKXuuyyy5r8DF955RW1adNG1dXV2rp1q5YuXaoPPvhA/fv318svv9zk86PRnP6wzrx58zRkyBCddtppmjhxonr16qWKigqVlJRoy5Yt+uc//xlVm9LT0/WLX/xC11xzjc4880z96Ec/Uvv27fXPf/5TBw4c0KJFi5SYmKhnnnlGF154oU455RSNHz9eJ5xwgrZu3ap3331X6enp+vOf/9ycjwZ+5Nh9AmGbutuENnab7UDgm1u2vvzyyxE9t+721qecckrI4w3dLvXzzz8PJCUl1XuNcH71q18FzjvvvMDxxx8fSElJCeTk5ARuv/32wJ49e0KWW716daCgoCDQpk2bQKtWrQIXXHBB4MMPPwz7vo69Fe2jjz4aOOGEEwIpKSmBb33rW4GPP/44MHTo0Hq3Af/Tn/4U6Nu3b6BFixYht64Nd6vYffv2BSZPnhzo0qVL4LjjjguceOKJgZ///Ocht1QNBMLfOjYQqH8LcwAwSbjbdQ8dOrReP1CnpqYmcOeddwY6duwYaNWqVaCgoCCwYcOGsPu6ffv2BaZNmxbo3bt3IDk5OdCxY8fAOeecE5gzZ06gurq6wTatXr06MGbMmED37t0DKSkpgU6dOgW++93vBj7++ON6649k/xyubatWrQrk5eUFkpOTA927dw889thjwf5x06ZNweXKy8sDF110USAtLS0gKdifNNQPvfTSS4HTTz89kJKSEujQoUNg7NixIbduDwSO9DWtW7eu977rbnEOAI25+OKLA6mpqYHKysoGl7n66qsDxx13XGDnzp2BTZs2BSQFfv7znwceffTRQLdu3QIpKSmBc889N/DPf/4z+JydO3cGbrjhhkBubm6gdevWgbZt2wby8vICv//97+ut/8knnwzk5uYGjjvuuEBmZmZg0qRJgf/+978hy4Q7rt6xY0fg0ksvDbRq1SrQvn37wHXXXRf49NNPQ47HA4FA4PDhw4Ebb7wxkJGREUhISKi3b/z1r38dGDhwYKBly5aBtLS0wGmnnRa44447Atu2bWv0s6vbz9b9pKamBrp27Rr47ne/G1i4cGHg4MGD9Z4T7n00dG7U0PlAJP3h0d9TOBs3bgyMGzcukJWVFTjuuOMCJ5xwQuC73/1u4JVXXgku09B5XkN91uuvvx4455xzAi1btgykp6cHzjrrrMDvfve7kGU++eSTwA9+8IPgOVyPHj0Cl19+eaC4uDhsO4HGJAQCzMYMAAAAAAAAZzDnFAAAAAAAABxDOAUAAAAAAADHEE4BAAAAAADAMVGHU++9954uvvhidenSRQkJCXrttdeafM7y5ct1xhlnKCUlRb1799Zzzz0XQ1MBwNvmzZun7OxspaamKi8vTytXrozoeUuWLFFCQoJGjRplbwNjRL8BAPaJpu/47LPPdOmllyo7O1sJCQmaO3duvWVmzpyphISEkJ/c3Fwb30F49B0AYB+rzzsCgYCmT5+uzp07q2XLlsrPz9fnn38eVZuiDqcqKyvVv39/zZs3L6LlN23apIsuukgXXHCB1qxZo1tuuUXXXHONli5dGu1LA4BnvfTSS5oyZYpmzJih1atXq3///iooKAh7C+WjlZaW6rbbbtO5554bp5ZGj34DAOwRbd9x4MAB9erVSw8//LCysrIaXO8pp5yir776Kvjz/vvv2/UWGkTfAQD2sOO845FHHtHjjz+u+fPna8WKFWrdurUKCgp08ODBiNvVrLv1JSQk6NVXX230av2dd96pN998U59++mnwsSuuuEK7d+9WUVFRrC8NAJ6Sl5enM888U08++aQkqba2Vt26ddONN96oqVOnhn1OTU2NzjvvPP3kJz/R3//+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1NRUnXbaaXrrrbdCfh8IBDR9+nR17txZLVu2VH5+vj7//HM734JxyrZ1dLoJcWV6AOH1gMrr788knI99I5q+449//KMGDRqkdu3aqXXr1howYIBeeOGFkGWuvvpqJSQkhPyMHDkyqja5OpyyGgdT8Co3n+T4xUsvvaQpU6ZoxowZWr16tfr376+CggJt37497PLLly/XmDFj9O6776qkpETdunXTiBEjtHXr1ji3HF7n9qDEzfjs0ZRo+44PP/xQY8aM0YQJE/TJJ59o1KhRGjVqlD799NPgMo888ogef/xxzZ8/XytWrFDr1q1VUFCggwcPxutteQKBg7W8+nl69X05gc8yctH2HR06dNBdd92lkpIS/etf/9L48eM1fvx4LV26NGS5kSNH6quvvgr+/O53v4uqXYRTPkBCbA6vfhcEu8332GOPaeLEiRo/frz69u2r+fPnq1WrVlq4cGHY5RcvXqzrr79eAwYMUG5urp555hnV1taquLg4zi1HpNz2d0IwYg43fg9u297dKtq+45e//KVGjhyp22+/XX369NH999+vM844Q08++aSkI1VTc+fO1d13361LLrlE/fr10/PPP69t27bptddei+M7M5tXj+eaw86hfXW8Fj7E4/3E43uJVTQVe/F8H27sc6MVbd9x/vnn6/vf/7769OmjnJwc3XzzzerXr5/ef//9kOVSUlKUlZUV/Gnfvn1U7SKcihOnNnI6T/M49Z34YUfrVtXV1Vq1apXy8/ODjyUmJio/P18lJSURrePAgQM6dOiQOnToYFcz4ROEUmbie8GxYuk7SkpKQpaXpIKCguDymzZtUnl5ecgybdu2VV5eXsT9EWAnrwVUiD+/nx8397wjEAiouLhY69ev13nnnRfyu+XLl6tTp046+eSTNWnSJH399ddRtY1wCoCRvDLv1N69e0N+qqrqX/nZuXOnampqlJmZGfJ4ZmamysvLI3qdO++8U126dKl30gEzuKWKhPDDfG76jtyy3ZvIrr6jvLy80eXr/tuc/gjuZMW8U/GqbvFCQOWF92Aiqz5XN/W1dSLpN6TYzzv27NmjNm3aKDk5WRdddJGeeOIJDR8+PPj7kSNH6vnnn1dxcbFmz56tv/3tb7rwwgtVU1MT8XtoEfGScB2/p8ImSylLVlX3aqeb4Vuv7euv1MBxtr7Gwf2HJP1V3bp1C3l8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YMAAXXjhhbr//vs1b948VVe7d8L85P80/JnAfgSDgL0ee+wxTZw4UePHj1ffvn01f/58tWrVSgsXLgy7/OLFi3X99ddrwIABys3N1TPPPKPa2loVFxeHLJeSkqKsrKzgT/v27aNqF+GUj7g1EAHwjZKSErVr106DBg0KPpafn6/ExEStWLEi4vXs2bNH6enpatGCqQdhPqeCIpMCKtPCQriLFX1HZWWlnn32WfXs2VPdunULrve0005TZmZmcLmCggLt3btXn332mbVvAgDQbNXV1Vq1apXy8/ODjyUmJio/P18lJSURrePAgQM6dOiQOnToEPL48uXL1alTJ5188smaNGmSvv7666jaRjhlEIZhAd6zd+/ekJ+qquadYJaXl6tTp04hj7Vo0UIdOnRQeXl5ROvYuXOn7r///iaHcwAmcDogcvr1TWZixZ9XmNR3PPXUU2rTpo3atGmjv/zlL1q2bJmSk5OD6z06mJIU/HekfRIAoPki7Td27typmpqasPvuSPfbd955p7p06RIScI0cOVLPP/+8iouLNXv2bP3tb3/ThRdeGBwGHgkumQMOabuxSntyUmx9jbQvA9rXI8HW13Cjsm0dldgy1dbXqP3fQUkKXl2uM2PGDM2cObPe8lOnTtXs2bMbXefatWub3a69e/fqoosuUt++fcO2A7Hz0iT/plTpmBIMJa/dzJ384Nu+Y+zYsRo+fLi++uorzZkzR5dffrk++OADpaba+1nA37gLG7zC7r4j2n6juR5++GEtWbJEy5cvD+kHrrjiiuD/n3baaerXr59ycnK0fPlyDRs2LKJ1+zac8tJJRCQY0gcTlW7JUHbXHU43w1abN29Wenp68N8pKeEDyVtvvVVXX311o+vq1auXsrKy6k1WePjwYe3atUtZWVmNPn/fvn0aOXKk0tLS9Oqrr+q4446L7E3AeF6bP8iUUOpoJgRUbb+o0p5e9l7UgBlM6jvatm2rtm3b6sQTT9TZZ5+t9u3b69VXX9WYMWOUlZVV745NFRUVktTkegEA1om03+jYsaOSkpKC++o6FRUVTe6358yZo4cfflhvv/22+vXr1+iyvXr1UseOHbVhwwbCKQD2SClLVlV3905yGm/p6ekhHUVDMjIylJHRdGg+ePBg7d69W6tWrdLAgQMlSe+8845qa2uVl5fX4PP27t2rgoICpaSk6PXX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JkzQ/v37G31OeXm5rrzySmVlZal169Y644wz9Ic//CFOLYZk/aTo8frbJKByFp8/rBJt31FaWqqEhISwPy+//HJwuXC/X7JkSTzekm32dePvDogGQ/vcZ968ecrOzlZqaqry8vK0cuXKBpf97LPPdOmllyo7O1sJCQmaO3dus9cZDuGUhdx0Eu/msMRN+Jxhh7Fjx+qzzz7TsmXL9MYbb+i9997Ttdde2+hzxo0bp/Xr1+v111/Xv//9b/3gBz/Q5Zdfrk8++SROrXYvKjfgFIIpWCnavqNbt2766quvQn7uvfdetWnTRhdeeGHIss8++2zIcqNGjbL53QDAEWlfBixfZ+mWDMvXaZKXXnpJU6ZM0YwZM7R69Wr1799fBQUF2r59e9jlDxw4oF69eunhhx9WVlaWJesMh3DKx9xe0WMyr3y2bgpc/WLt2rUqKirSM888o7y8PA0ZMkRPPPGElixZom3btjX4vA8//FA33nijzjrrLPXq1Ut333232rVrp1WrVsWx9XArQhJvY1/vfbH0HUlJScrKygr5efXVV3X55ZerTZs2Icu2a9cuZLnU1NR4vC0AQAwee+wxTZw4UePHj1ffvn01f/58tWrVSgsXLgy7/Jlnnqmf//znuuKKK5SSEv4mD9GuMxzCKYu58QDPCyGKSfg8cbS9e/eG/FRVNW+yx5KSErVr106DBg0KPpafn6/ExEStWLGiweedc845eumll7Rr1y7V1tZqyZIlOnjwoM4///xmtQfOimefQ0AVX3ze/mZK33G0VatWac2aNZowYUK9391www3q2LGjzjrrLC1cuFCBgPWVDADMZsXQPiZFj12k/UZ1dbVWrVql/Pz84GOJiYnKz89XSUlJTK9t1TpbxPTq8Jx9PRJsKYn0E6+FUm4MWiOVvqlKLVrY+30dPnykQ+jWrVvI4zNmzNDMmTNjXm95ebk6deoU8liLFi3UoUMHlZeXN/i83//+9xo9erSOP/54tWjRQq1atdKrr76q3r17x9wW+M++7ASlldJX2C2ewZQd+3qr51czRXqp//qOo/3mN79Rnz59dM4554Q8ft999+nb3/62WrVqpb/+9a+6/vrrtX//ft10000xtxcAvMLu845o+42dO3eqpqZGmZmZIY9nZmZq3brYprKwap2EUwgioIqd14IpWGfz5s1KT08P/ruhUtipU6dq9uzZja5r7dq1Mbfjnnvu0e7du/X222+rY8eOeu2113T55Zfr73//u0477bSY14voZHfdYfk8BlXdq+N69xkCKntRMQXJnL6jzv/+9z+9+OKLuueee+r97ujHTj/9dFVWVurnP/854RQAxFGk/YbJCKdsEO8TBSvVhSyEVJHxaijl5aqpeEtPTw/pKBpy66236uqrr250mV69eikrK6vexIKHDx/Wrl27GpygcOPGjXryySf16aef6pRTTpEk9e/fX3//+981b948zZ8/P7I3A8BW8Q6m2Neby4S+42ivvPKKDhw4oHHjxjW5bF5enu6//35VVVW58uSojlsu2nKXNJgked0WVed2dboZvhRpv9GxY0clJSWpoqIi5PGKioqI+gM710k4hbDc0iE7xauhlMTJilMyMjKUkdF0Rc3gwYO1e/durVq1SgMHDpQkvfPOO6qtrVVeXl7Y5xw4cEDSkbHfR0tKSlJtbW0zWw4TUD0F+JOdfcfRfvOb3+h73/teRK+1Zs0atW/f3tXBFAB4VXJysgYOHKji4uLgnVVra2tVXFyswsJCR9fJhOg28cIJvlfuOGclPhM4rU+fPho5cqQmTpyolStX6oMPPlBhYaGuuOIKdenSRZK0detW5ebmauXKlZKk3Nxc9e7dW9ddd51WrlypjRs36tFHH9WyZcu43TdixvAza3nl87RyvqnhWbHNfYH6Yuk76mzYsEHvvfeerrnmmnrr/fOf/6xnnnlGn376qTZs2KCnn35aDz30kG688ca4vC+32JNDUAdEiknR7TdlyhQtWLBAixYt0tq1azVp0iRVVlZq/PjxkqRx48Zp2rRpweWrq6u1Zs0arVmzRtXV1dq6davWrFmjDRs2RLzOSFA5hSYx1M/blVJH80Ko6geLFy9WYWGhhg0bpsTERF166aV6/PHHg78/dOiQ1q9fH6yYOu644/TWW29p6tSpuvjii7V//3717t1bixYt0ne+8x2n3oZv2THvlOTMkHIqqKzhRDDF/t5/ou076ixcuFBdu3bViBEj6q3zuOOO07x58zR58mQFAgH17t07eDtxAIiXtC8DEZ+vpZQl+74PHD16tHbs2KHp06ervLxcAwYMUFFRUXBC87KyspARF9u2bdPpp58e/PecOXM0Z84cDR06VMuXL49onZEgnLKRm+eeCsdvIZVfAqk6ft9Ju0mH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"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=49142e7f">
|
||
<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>As you can see the solution is not very accurate, in what follows we will use <strong>Extra Feature</strong> as introduced in <a href="https://www.sciencedirect.com/science/article/abs/pii/S0898122123002018"><em>An extended physics informed neural network for preliminary analysis of parametric optimal control problems</em></a> to boost the training accuracy. Of course, even extra training will benefit, this tutorial is just to show that convergence using Extra Features is usally faster.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=20fdf23e">
|
||
<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="Solving-the-problem-with-extra-features-PINNs">Solving the problem with extra-features PINNs<a class="anchor-link" href="#Solving-the-problem-with-extra-features-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=a1e76351">
|
||
<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>Now, the same problem is solved in a different way.
|
||
A new neural network is now defined, with an additional input variable, named extra-feature, which coincides with the forcing term in the Laplace equation.
|
||
The set of input variables to the neural network is:</p>
|
||
<p>\begin{equation}
|
||
[x, y, k(x, y)], \text{ with } k(x, y)= 2\pi^2\sin{(\pi x)}\sin{(\pi y)},
|
||
\end{equation}</p>
|
||
<p>where $x$ and $y$ are the spatial coordinates and $k(x, y)$ is the added feature which is equal to the forcing term.</p>
|
||
<p>This feature is initialized in the class <code>SinSin</code>, which is a simple <code>torch.nn.Module</code>. After declaring such feature, we can just adjust the <code>FeedForward</code> class by creating a subclass <code>FeedForwardWithExtraFeatures</code> with an adjusted forward method and the additional attribute <code>extra_features</code>.</p>
|
||
<p>Finally, we perform the same training as before: the problem is <code>Poisson</code>, the network is composed by the same number of neurons and optimizer parameters are equal to previous test, the only change is the new extra feature.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ef3ad372">
|
||
<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">SinSin</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="w"> </span><span class="sd">"""Feature: sin(x)*sin(y)"""</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="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">pts</span><span class="p">):</span>
|
||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</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">pts</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"y"</span><span class="p">])</span>
|
||
<span class="n">f</span> <span class="o">=</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="mi">2</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="n">x</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="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">y</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="k">return</span> <span class="n">LabelTensor</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="p">[</span><span class="s2">"feat"</span><span class="p">])</span>
|
||
|
||
|
||
<span class="k">class</span><span class="w"> </span><span class="nc">FeedForwardWithExtraFeatures</span><span class="p">(</span><span class="n">FeedForward</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="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">extra_features</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</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="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">extra_features</span> <span class="o">=</span> <span class="n">extra_features</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">extra_feature</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">extra_features</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="c1"># we append extra features</span>
|
||
<span class="n">x</span> <span class="o">=</span> <span class="n">x</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">extra_feature</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">forward</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
|
||
|
||
<span class="n">model_feat</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</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="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSin</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">pinn_feat</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_feat</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_feat</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_feat</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">trainer_feat</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="80042ea1-66f1-4500-ba19-7665f2a1e29c" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('80042ea1-66f1-4500-ba19-7665f2a1e29c');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "481c8cdecf4b4fa496fda181ba49a9d0"}
|
||
</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=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=9748a13e">
|
||
<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>The predicted and exact solutions and the error between them are represented below.
|
||
We can easily note that now our network, having almost the same condition as before, is able to reach additional order of magnitudes in accuracy.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=2be6b145">
|
||
<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">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
<span class="n">plot_solution</span><span class="p">(</span><span class="n">solver</span><span class="o">=</span><span class="n">pinn_feat</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,iVBORw0KGgoAAAANSUhEUgAABKcAAAJOCAYAAABiG2QNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACncklEQVR4nOzde3wU5d3//3cCJuG0BCQkgmAEUUAQFEoMVbEaCYqH9FZEinK4Eaw1KuAJFAke0RYpIihVi4cWvlC8lVqk0QhyWyWCnPwVC4gKgmAClEIgSALJ/P7gzsqSTbKb3Z3j6/l45KFMZmavnd1cn7k+18xn4gzDMAQAAAAAAABYIN7qBgAAAAAAAMC7SE4BAAAAAADAMiSnAAAAAAAAYBmSUwAAAAAAALAMySkAAAAAAABYhuQUAAAAAAAALENyCgAAAAAAAJYhOQUAAAAAAADLkJwCAAAAAACAZUhOwTVWrFihuLg4rVixIqr7HTFihNLT06O6TwCANdLT0zVixIio7jNW8QcAomH79u2Ki4vTtGnTTH1dt5xDB3sfhw8f1u233660tDTFxcVp7NixkqTi4mLddNNNOv300xUXF6cZM2aY3l7AqUhOucjrr7+uuLg4/09SUpLOPfdc5ebmqri42L9e1Un0W2+9VW3bpKQk7dq1q9q+L7/8cnXr1i1gWXp6uuLi4nT33XdXWz/Ya9jZ7t27NWXKFG3YsMHqpgCAaU6OGbX9kHQ54cUXX9Trr79udTMAIMCLL76ouLg4ZWRkWN2UqFm6dKmmTJkS9f1OmTIlIL41btxY7du313XXXafXXntNZWVlIe3n6aef1uuvv64777xTf/rTn3TbbbdJksaNG6f3339fEydO1J/+9CcNGDAg6u8BcKuGVjcA0ff444/r7LPP1tGjR/XJJ5/opZde0tKlS7Vx40Y1bty41m3Lysr0zDPP6IUXXgj59V555RVNnDhRbdq0ibTpltm9e7cee+wxpaenq2fPngG/e+WVV1RZWWlNwwAghv70pz8F/PvNN99UQUFBteVdunQxs1m29eKLL6pVq1bVrry67LLL9OOPPyohIcGahgHwtHnz5ik9PV2rV6/W119/rXPOOcfqJkVs6dKlmj17dkwSVJL00ksvqWnTpiorK9OuXbv0/vvv67//+781Y8YMLVmyRO3atfOvG2wssHz5cl188cXKy8urtvyGG27Q/fffH5N2A25GcsqFrr76avXu3VuSdPvtt+v000/X9OnT9de//lVDhgypdduePXuGlWw6//zztWXLFj3zzDOaOXNmVNpvN6eddprVTQCAmLj11lsD/v3ZZ5+poKCg2vJTHTlypM7JDi+Jj49XUlKS1c0A4EHbtm3TypUr9fbbb+uOO+7QvHnzqiVMUN1NN92kVq1a+f89efJkzZs3T8OGDdOgQYP02Wef+X8XbCywZ88ede3aNejy5OTkqLXz+PHjqqysZPIDnsBtfR5wxRVXSDoRvOry8MMPq6KiQs8880xI+05PT9ewYcP0yiuvaPfu3fVq3wsvvKDzzz9fjRs3VosWLdS7d2/Nnz8/YJ3169fr6quvls/nU9OmTXXllVcGBI3a2hestsjll1+uyy+/XNKJWxB/9rOfSZJGjhzpv8y36taNYPeZl5aW6r777lO7du2UmJio8847T9OmTZNhGAHrxcXFKTc3V4sXL1a3bt2UmJio888/X/n5+aEdHACwWNVt3WvXrtVll12mxo0b6+GHH5Z0oo8LNqsdrO89cOCAxo4d6+83zznnHD377LMhXZm6Zs0aZWdnq1WrVmrUqJHOPvts/fd//3fAOqH2y6equsXjVFW3u2/fvt3/nr788kv97//+rz9OnBxHgt3+uGjRIvXq1UuNGjVSq1atdOutt1a7dX7EiBFq2rSpdu3apZycHDVt2lQpKSm6//77VVFRUeexAeBt8+bNU4sWLTRw4EDddNNNmjdvXq3r//73v9dZZ52lRo0aqV+/ftq4cWPA74uKijRy5EideeaZSkxM1BlnnKEbbrjB3xdWefHFF3X++ecrMTFRbdq00V133aUDBw7U+to19ZVVNbFOPveePXu2pMDbz6tUVlZqxowZOv/885WUlKTU1FTdcccd+s9//lPr69dl6NChuv3227Vq1SoVFBT4l588Fqh6D9u2bdN7770XMG6Ii4uTYRiaPXt2tTaHEgNPrg02Y8YMdezYUYmJifrXv/4lSdq8ebNuuukmtWzZUklJSerdu7fefffdgPdQ1Y5PP/1U48ePV0pKipo0aaJf/vKX2rt3b7X3/Pe//139+vVTs2bN5PP59LOf/azaOGzVqlUaMGCAmjdvrsaNG6tfv3769NNPIzrWQDBcOeUB33zzjSTp9NNPr3Pds88+259smjBhQkhXTz3yyCN6880363X11CuvvKJ77rlHN910k+69914dPXpU/9//9/9p1apV+tWvfiVJ+vLLL3XppZfK5/PpwQcf1GmnnaY//OEPuvzyy/W///u/Ed9f36VLFz3++OOaPHmyxowZo0svvVSS1Ldv36DrG4ah66+/Xh999JFGjRqlnj176v3339cDDzygXbt26fe//33A+p988onefvtt/eY3v1GzZs00c+ZM3XjjjdqxY0dInwkAWO3f//63rr76at1yyy269dZblZqaGtb2R44cUb9+/bRr1y7dcccdat++vVauXKmJEyfqhx9+qLVg7J49e9S/f3+lpKRowoQJSk5O1vbt2/X222/71wm3X66PGTNm6O6771bTpk31yCOPSFKtx+H111/XyJEj9bOf/UxTp05VcXGxnn/+eX366adav359wMx6RUWFsrOzlZGRoWnTpunDDz/Uc889p44dO+rOO++MuO0A3GvevHn6r//6LyUkJGjIkCF66aWX9Pnnn/snXk/25ptv6tChQ7rrrrt09OhRPf/887riiiv0z3/+09+f3Xjjjfryyy919913Kz09XXv27FFBQYF27NjhT9BMmTJFjz32mLKysnTnnXdqy5Yt/tf99NNPI77r4I477tDu3buD3mZe9fuqPvaee+7Rtm3bNGvWLK1fvz7i17/tttv08ssv64MPPtBVV11V7fddunTRn/70J40bN05nnnmm7rvvPknShRde6K89ddVVV2nYsGH+bcKNga+99pqOHj2qMWPGKDExUS1bttSXX36pn//852rbtq0mTJigJk2a6C9/+YtycnL0P//zP/rlL38ZsI+7775bLVq0UF5enrZv364ZM2YoNzdXCxcu9K/z+uuv67//+791/vnna+LEiUpOTtb69euVn5/vH4ctX75cV199tXr16qW8vDzFx8frtdde0xVXXKF//OMf6tOnT72PNVCNAdd47bXXDEnGhx9+aOzdu9fYuXOnsWDBAuP00083GjVqZHz//feGYRjGRx99ZEgyFi1aVG3bzz//3Pjmm2+Mhg0bGvfcc4//9/369TPOP//8gNc766yzjIEDBxqGYRgjR440kpKSjN27d9f4GsHccMMN1fZ7qpycHCMhIcH45ptv/Mt2795tNGvWzLjsssv8y6pe86OPPgpo4/Dhw6vts1+/fka/fv38//78888NScZrr71Wbd3hw4cbZ511lv/fixcvNiQZTz75ZMB6N910kxEXF2d8/fXX/mWSjISEhIBlX3zxhSHJeOGFF2p93wBgtrvuuss49dSgX79+hiRjzpw51daXZOTl5VVbfmrf+8QTTxhNmjQxvvrqq4D1JkyYYDRo0MDYsWNHjW165513/PGpJuH0y6e2LS8vr9p7Noyf4uK2bdv8y84///yA2FHl1PhTXl5utG7d2ujWrZvx448/+tdbsmSJIcmYPHmyf9nw4cMNScbjjz8esM8LL7zQ6NWrV43vGQDWrFljSDIKCgoMwzCMyspK48wzzzTuvffegPW2bdtmSAoYDxiGYaxatcqQZIwbN84wDMP4z3/+Y0gyfve739X4mnv27DESEhKM/v37GxUVFf7ls2bNMiQZc+fO9S879Rw62Ln6ye07+Tw8WDwyDMP4xz/+YUgy5s2bF7A8Pz8/6PJTVfX5e/fuDfr7qmPwy1/+ssb3YRiB46CTSTLuuuuugGWhxsCq4+Dz+Yw9e/YErHvllVca3bt3N44ePepfVllZafTt29fo1KmTf1lV7MrKyjIqKyv9y8eNG2c0aNDAOHDggGEYhnHgwAGjWbNmRkZGRkCcqtpv1X87depkZGdnB+zryJEjxtlnn21cddVV1d4/EAlu63OhrKwspaSkqF27drrlllvUtGlTvfPOO2rbtm1I23fo0ME/a/DDDz+EtM2kSZN0/PjxkG8HrJKcnKzvv/9en3/+edDfV1RU6IMPPlBOTo46dOjgX37GGWfoV7/6lT755BOVlJSE9ZqRWrp0qRo0aKB77rknYPl9990nwzD097//PWB5VlaWOnbs6P/3BRdcIJ/Pp2+//daU9gJApBITEzVy5Mh6b79o0SJdeumlatGihfbt2+f/ycrKUkVFhT7++OMat626wmjJkiU6duxY0HXC7Zdjbc2aNdqzZ49+85vfBNSiGjhwoDp37qz33nuv2ja//vWvA/596aWXEicA1GrevHlKTU3VL37xC0knboEbPHiwFixYEPS24JycnIDxQJ8+fZSRkaGlS5dKkho1aqSEhAStWLGixlvkPvzwQ5WXl2vs2LGKj/9pKDl69Gj5fL6g/Vs0LVq0SM2bN9dVV10VEE969eqlpk2b6qOPPopo/02bNpUkHTp0KBrNlRR+DLzxxhuVkpLi//f+/fu1fPly3XzzzTp06JB/+3//+9/Kzs7W1q1bq90yPmbMmIDbCi+99FJVVFTou+++kyQVFBTo0KFDmjBhQrWaiVXbbdiwQVu3btWvfvUr/fvf//a/bmlpqa688kp9/PHHPDQKUUVyyoVmz56tgoICffTRR/rXv/6lb7/9VtnZ2WHtI9xkU30SWpL00EMPqWnTpurTp486deqku+66K+Ae5r179+rIkSM677zzqm3bpUsXVVZWaufOnSG/XjR89913atOmjZo1a1atPVW/P1n79u2r7aNFixYR3xcPAGZp27ZtRMVYt27dqvz8fKWkpAT8ZGVlSTpx615N+vXrpxtvvFGPPfaYWrVqpRtuuKHa477D7Zdjrer1gsWuzp07V2tPUlJSwEBEIk4AqF1FRYUWLFigX/ziF9q2bZu+/vprff3118rIyFBxcbGWLVtWbZtOnTpVW3buuef660klJibq2Wef1d///nelpqbqsssu029/+1sVFRX516+pf0tISFCHDh1i3t9u3bpVBw8eVOvWravFlMOHD9caT0Jx+PBhSaoWTyIRbgw8++yzA/799ddfyzAMPfroo9X2UVX8/tR9nDr+aNGihST540pV2Zdu3brV2m5JGj58eLXXffXVV1VWVqaDBw+GdSyA2lBzyoX69Onjf1pffXXo0EG33nqrXn75ZU2YMCGkbR555BH96U9/0rPPPqucnJyQtunSpYu2bNmiJUuWKD8/X//zP/+jF198UZMnT9Zjjz0WwTs4IViRW+lEQG/QoEHE+w9FTa9j1FGkFwDsolGjRmGtf+qMfWVlpa666io9+OCDQdc/99xza9xXXFyc3nrrLX322Wf629/+5n/c93PPPafPPvvMP8tdX7XFCbOYFY8AuMfy5cv1ww8/aMGCBVqwYEG138+bN0/9+/cPe79jx47Vddddp8WLF+v999/Xo48+qqlTp2r58uW68MILI2pzNPrbyspKtW7dusbC76cm+sNVVSD+nHPOiWg/Jws3Bp4ac6uuTrr//vtrvODg1PZGY/xR9bq/+93v1LNnz6DrRBqDgZORnEKNJk2apD//+c969tlnQ1q/Y8eOuvXWW/WHP/whrCLlTZo00eDBgzV48GCVl5frv/7rv/TUU09p4sSJSklJUePGjbVly5Zq223evFnx8fFq165djftu0aJF0CeHfPfddwG3CdYULIM566yz9OGHH+rQoUMBsyqbN2/2/x4AvCBYH1teXl7tCtqOHTvq8OHD/lni+rj44ot18cUX66mnntL8+fM1dOhQLViwQLfffntE/XLVbPKBAwcCipQHm/0PNVZUvd6WLVv8T8ytsmXLFuIEgIjNmzdPrVu39j/V7mRvv/223nnnHc2ZMycg0VF1JczJvvrqq2pPpe7YsaPuu+8+3Xfffdq6dat69uyp5557Tn/+858D+reTz6XLy8u1bdu2Wvv5k/vbk4XT33bs2FEffvihfv7zn4c9cRKKqgLs4d51UptIY2DVcT7ttNMiiqOntkk6kYyrKRFXtY7P54va6wK14bY+1OjkZNPJl/PWZtKkSTp27Jh++9vfhrT+v//974B/JyQkqGvXrjIMQ8eOHVODBg3Uv39//fWvfw14hG1xcbHmz5+vSy65RD6fr9b38Nlnn6m8vNy/bMmSJdVuBWzSpImk6sEymGuuuUYVFRWaNWtWwPLf//73iouL09VXX13nPgDADTp27FitVsbLL79cbRb85ptvVmFhod5///1q+zhw4ICOHz9e42v85z//qTbTWzWDW3VrXyT9ctXJ98nvo7S0VG+88Ua1dZs0aRJSnOjdu7dat26tOXPmBNx++Pe//12bNm3SwIED69wHANTkxx9/1Ntvv61rr71WN910U7Wf3NxcHTp0SO+++27AdosXLw6oTbR69WqtWrXK30ceOXJER48eDdimY8eOatasmb8vy8rKUkJCgmbOnBnQN//xj3/UwYMHa+3fzjrrLDVo0KBa3HjxxRerrVvTufnNN9+siooKPfHEE9W2OX78eEh9dE3mz5+vV199VZmZmbryyivrvZ9TRRIDJal169a6/PLL9Yc//CFo+ZS9e/eG3ab+/furWbNmmjp1arXPvOpz7dWrlzp27Khp06b5b3eM9HWB2nDlFGpVdaveli1bdP7559e5flVCK9hJfTD9+/dXWlqafv7znys1NVWbNm3SrFmzNHDgQP/s95NPPqmCggJdcskl+s1vfqOGDRvqD3/4g8rKyupMgt1+++166623NGDAAN1888365ptv9Oc//zmgQHlVu5OTkzVnzhw1a9ZMTZo0UUZGRrV7viXpuuuu0y9+8Qs98sgj2r59u3r06KEPPvhAf/3rXzV27Nhq+wYAt7r99tv161//WjfeeKOuuuoqffHFF3r//ffVqlWrgPUeeOABvfvuu7r22ms1YsQI9erVS6WlpfrnP/+pt956S9u3b6+2TZU33nhDL774on75y1+qY8eOOnTokF555RX5fD5dc801kiLrl/v376/27dtr1KhReuCBB9SgQQPNnTtXKSkp2rFjR8C6vXr10ksvvaQnn3xS55xzjlq3bl3tyijpxOz2s88+q5EjR6pfv34aMmSIiouL9fzzzys9PV3jxo0L91ADgN+7776rQ4cO6frrrw/6+4svvlgpKSmaN2+eBg8e7F9+zjnn6JJLLtGdd96psrIyzZgxQ6effrr/drOvvvpKV155pW6++WZ17dpVDRs21DvvvKPi4mLdcsstkk7cNjdx4kQ99thjGjBggK6//npt2bJFL774on72s5/p1ltvrbHdzZs316BBg/TCCy8oLi5OHTt21JIlS4LWierVq5ck6Z577lF2drYaNGigW265Rf369dMdd9yhqVOnasOGDerfv79OO+00bd26VYsWLdLzzz+vm266qc5j+NZbb6lp06YqLy/Xrl279P777+vTTz9Vjx49tGjRojq3D0ckMbDK7Nmzdckll6h79+4aPXq0OnTooOLiYhUWFur777/XF198EVabfD6ffv/73+v222/Xz372M/3qV79SixYt9MUXX+jIkSN64403FB8fr1dffVVXX321zj//fI0cOVJt27bVrl279NFHH8nn8+lvf/tbJIcGCGTZcwIRdVWPDq3tcduG8dNjXBctWhTStlWPuT7//PMDltf0CNWtW7caDRo0qPYawfzhD38wLrvsMuP00083EhMTjY4dOxoPPPCAcfDgwYD11q1bZ2RnZxtNmzY1GjdubPziF78wVq5cGfR9nfp42ueee85o27atkZiYaPz85z831qxZY/Tr16/a48D/+te/Gl27djUaNmwY8DjbYI+PPXTokDFu3DijTZs2xmmnnWZ06tTJ+N3vfhfwmFXDCP44WcOo/ihzALCDYI/u7tevX7X+v0pFRYXx0EMPGa1atTIaN25sZGdnG19//XXQPu7QoUPGxIkTjXPOOcdISEgwWrVqZfTt29eYNm2aUV5eXmOb1q1bZwwZMsRo3769kZiYaLRu3dq49tprjTVr1lTbfyj9crC2rV271sjIyDASEhKM9u3bG9OnT/fHxW3btvnXKyoqMgYOHGg0a9bMkOSPIzXFn4ULFxoXXnih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+fr888/Vu3dvSdILL7yga665RtOmTVObNm2qbdOgQQOlpaUFLHvnnXd08803q2nTpgHLk5OTq62L6Eg/c6+2f59idTPCRqwAnIdYAQBwMq6c8iASJebieHtLSUlJwE9ZWVnE+ywsLFRycrJ/sCFJWVlZio+P16pVq0Lax9q1a7VhwwaNGjWq2u/uuusutWrVSn369NHcuXNlGCQluMWIvstMXDXlTdGOF8QKa3ih3pTbUAwdsCeunLKRsvblStxh3n3JcBcGHbXzbS9Tw4axGwAeP35iUNGuXbuA5Xl5eZoyZUpE+y4qKlLr1q0DljVs2FAtW7ZUUVFRSPv44x//qC5duqhv374Byx9//HFdccUVaty4sT744AP95je/0eHDh3XPPfdE1GbEjpmxgiuoYo8koP04NV4QK7zD7HpTFEOHnVBvyr1ITnkUAw5zMOg4wUtXoezcuVM+n8//78TExBrXnTBhgp599tla97dp06aI2/Tjjz9q/vz5evTRR6v97uRlF154oUpLS/W73/2OAQf8iBex4/QYQV3CyIQaL4gVgDNRDB0ID8mpCMSilggz4u5h5qAjFldNMeioH5/PFzDYqM19992nESNG1LpOhw4dlJaWpj179gQsP378uPbv3x9S/Y+33npLR44c0bBhw+pcNyMjQ0888YTKyspqTazBWlxp63xmJ6a4utZ+Qo0XxAoAdkQxdEQbySmPI0EVG06fDYc5UlJSlJJSd4I7MzNTBw4c0Nq1a9WrVy9J0vLly1VZWamMjIw6t//jH/+o66+/PqTX2rBhg1q0aMFgI4qcWhT9ZMQKwDrECgCAF3iygp/dbzFidtPZSEwh2rp06aIBAwZo9OjRWr16tT799FPl5ubqlltu8T99adeuXercubNWr14dsO3XX3+tjz/+WLfffnu1/f7tb3/Tq6++qo0bN+rrr7/WSy+9pKefflp33323Ke8LzkLfFj1cNYVYIFaYj2LozkMxdMC+uHIqQsyI42RWDN4YdHjDvHnzlJubqyuvvFLx8fG68cYbNXPmTP/vjx07pi1btujIkSMB282dO1dnnnmm+vfvX22fp512mmbPnq1x48bJMAydc845mj59ukaPHh3z94PIWXFrH/Eicm5J8kXz1m+7Txo6CbHC/SiG7gxm1pvyEoqhuxvJKUhiwBENbhlwwJ5atmyp+fPn1/j7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ncnMYug8qc/Zbmux0uomxNzgwYM1bdo0TZ48WT179tSGDRuUn5/vL2i+Y8cO/fDDD/71+/btq/nz5+vll19Wjx499NZbb2nx4sXq1q2bf50HH3xQd999t8aMGaOf/exnOnz4sPLz85WUlBTVttMDh8GOJ1x2PDFF9Nj187Xj34LbDR06VF9++aUKCgq0ZMkSffzxxxozZkyN65eWlqp///6Ki4vT8uXL9emnn6q8vFzXXXedKisr671f1M6ufxt27UtQf3ymCIZY4SxmF0On3hTgDbm5ufruu+9UVlamVatWKSMjw/+7FStW6PXXXw9Yf9CgQdqyZYvKysq0ceNGXXPNNQG/j4uL0+OPP66ioiIdPXpUH374oc4999waXz89PV2GYahnz55htZvb+lyA2/zciYEHqmzatEn5+fn6/PPP1bt3b0knnopxzTXXaNq0aWrTpk21bT799FNt375d69ev9z/d44033lCLFi20fPlyZWVl1Wu/cC5ihXvYNT7YNTnrFcQKwF3cXgydelM4FVdOhcmuJ152PVFF/dj587Tr34CbFRYWKjk52T8okKSsrCzFx8dr1apVQbcpKytTXFxcwNM8kpKSFB8fr08++aTe+0Xd7Pw3wm3Czsbnh9oQKwAATkZyykU4aXU+PkPnKykpCfgpKyuLeJ9FRUVq3bp1wLKGDRuqZcuWKioqCrrNxRdfrCZNmuihhx7SkSNHVFpaqvvvv18VFRX++8zrs1+4A/2M89j9M7NzUtauoh0viBWRod4U4G5eqDfldNzW50LcuuFMdh94SM4efCRs2aWG8bErYhlfeaJuRLt27QKW5+XlacqUKUG3mTBhgp599tla97tp06Z6tSclJUWLFi3SnXfeqZkzZyo+Pl5DhgzRRRddpPh4TsBjzW5P7guGWOEMTogNbmO3eEGscCez6025lZnF0AHEFsmpenDKoEPiEeJOweDDPXbu3Omv2yEp4FaJU913330aMWJErfvr0KGD0tLStGfPnoDlx48f1/79+5WWllbjtv3799c333yjffv2qWHDhkpOTlZaWpo6dOggSfXeL9yDWGFvTokNTp64sFKo8YJYgWigGHrkeFIfEFskp1yOmXF7c8rAQ2LwESqfzxcw2KhNSkqKUlLq/vvMzMzUgQMHtHbtWvXq1UuStHz5clVWVgY8faMmrVq18m+zZ88e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6KOP4sEHH0RTUxNSUlL0LN9PMI/LsmXLcPbsWV8AAsCvv/6KpKQkQ4MDCK6f69evDwuIoWAUEe2K1UCoXv+kPeYF80JrzAvmBYU/M2UFwLxgXuiDeRG6a8Btxch3Yx9SXl4uFotFysrKpKWlRQoKCiQ2NlZcLpeIiOTl5UlxcbFvfl1dnURHR8uePXuktbVVHA5HyHzcq9peSktLRVEU+eKLL+Ty5cu+W09Pj1Et+Kjt5Wah9Gkaanu5ePGiTJ06VZ5//nlpa2uTr7/+WhISEuSNN94wqgU/avtxOBwydepU+eyzz6S9vV2+/fZbSU9Pl7Vr1xrVgk9PT484nU5xOp0CQPbu3StOp1MuXLggIiLFxcWSl5fnmz/0Ua8vvfSStLa2yv79+/lRr7cR5gXzQmvMC+YFhT8zZYUI8+KfmBfaYV4wL4wWEptTIiL79u2T1NRUURRFlixZIqdOnfJ9b8WKFZKfn+83//DhwzJ79mxRFEXmzp0rFRUVOlc8OjW9zJw5UwAMuzkcDv0LH4Hax+WfQik8RNT3Ul9fL3a7XSwWi6Slpcmbb74pHo9H56pHp6afgYEB2bZtm6Snp4vVapWUlBTZtGmT/PHHH/oXfpOTJ0+OeA0M1Z+fny8rVqwYdsyCBQtEURRJS0uTgwcP6l43GYd5wbzQGvOCeUHhz0xZIcK8GMK80BbzgnlhpAiRMHvNHRERERERERERmYbh7zlFRERERERERES3L25OERERERERERGRYbg5RUREREREREREhuHmFBERERERERERGYabU0REREREREREZBhuThERERERERERkWG4OUVERERERERERIbh5hQRERERERERERmGm1NERERERERERGQYbk4REREREREREZFhuDlFRERERERERESG4eYUEREREREREREZ5v8AVogQHP6BVp0AAAAASUVORK5CYII="/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=e7bc0577">
|
||
<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="Solving-the-problem-with-learnable-extra-features-PINNs">Solving the problem with learnable extra-features PINNs<a class="anchor-link" href="#Solving-the-problem-with-learnable-extra-features-PINNs">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=86c1d7b0">
|
||
<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 still do better!</p>
|
||
<p>Another way to exploit the extra features is the addition of learnable parameter inside them.
|
||
In this way, the added parameters are learned during the training phase of the neural network. In this case, we use:</p>
|
||
<p>\begin{equation}
|
||
k(x, \mathbf{y}) = \beta \sin{(\alpha x)} \sin{(\alpha y)},
|
||
\end{equation}</p>
|
||
<p>where $\alpha$ and $\beta$ are the abovementioned parameters.
|
||
Their implementation is quite trivial: by using the class <code>torch.nn.Parameter</code> we cam define all the learnable parameters we need, and they are managed by <code>autograd</code> module!</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=ae8716e7">
|
||
<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="k">class</span><span class="w"> </span><span class="nc">SinSinAB</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="w"> </span><span class="sd">""" """</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">alpha</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">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="mf">1.0</span><span class="p">]))</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">beta</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">Parameter</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">tensor</span><span class="p">([</span><span class="mf">1.0</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">t</span> <span class="o">=</span> <span class="p">(</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">beta</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="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">*</span> <span class="n">x</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="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="n">torch</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">alpha</span> <span class="o">*</span> <span class="n">x</span><span class="o">.</span><span class="n">extract</span><span class="p">([</span><span class="s2">"y"</span><span class="p">])</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="p">)</span>
|
||
<span class="k">return</span> <span class="n">LabelTensor</span><span class="p">(</span><span class="n">t</span><span class="p">,</span> <span class="p">[</span><span class="s2">"b*sin(a*x)sin(a*y)"</span><span class="p">])</span>
|
||
|
||
|
||
<span class="c1"># make model + solver + trainer</span>
|
||
<span class="n">model_learn</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</span>
|
||
<span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="c1"># we add one as also we consider the extra feature dimension</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[</span><span class="mi">10</span><span class="p">,</span> <span class="mi">10</span><span class="p">],</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSinAB</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
|
||
<span class="n">pinn_learn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_learn</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_learn</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_learn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_learn</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="ccc2ffd5-1fe6-4c1c-8e95-de8acce1c8df" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('ccc2ffd5-1fe6-4c1c-8e95-de8acce1c8df');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "ba849cdaa05e4e0daa9664c8c971be33"}
|
||
</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=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0319fb3b">
|
||
<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>Umh, the final loss is not appreciabily better than previous model (with static extra features), despite the usage of learnable parameters. This is mainly due to the over-parametrization of the network: there are many parameter to optimize during the training, and the model in unable to understand automatically that only the parameters of the extra feature (and not the weights/bias of the FFN) should be tuned in order to fit our problem. A longer training can be helpful, but in this case the faster way to reach machine precision for solving the Poisson problem is removing all the hidden layers in the <code>FeedForward</code>, keeping only the $\alpha$ and $\beta$ parameters of the extra feature.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=daa9cf17">
|
||
<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 [9]:</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"># make model + solver + trainer</span>
|
||
<span class="n">model_learn</span> <span class="o">=</span> <span class="n">FeedForwardWithExtraFeatures</span><span class="p">(</span>
|
||
<span class="n">layers</span><span class="o">=</span><span class="p">[],</span>
|
||
<span class="n">func</span><span class="o">=</span><span class="n">Softplus</span><span class="p">,</span>
|
||
<span class="n">output_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">output_variables</span><span class="p">),</span>
|
||
<span class="n">input_dimensions</span><span class="o">=</span><span class="nb">len</span><span class="p">(</span><span class="n">problem</span><span class="o">.</span><span class="n">input_variables</span><span class="p">)</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span>
|
||
<span class="n">extra_features</span><span class="o">=</span><span class="n">SinSinAB</span><span class="p">(),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">pinn_learn</span> <span class="o">=</span> <span class="n">PINN</span><span class="p">(</span>
|
||
<span class="n">problem</span><span class="p">,</span>
|
||
<span class="n">model_learn</span><span class="p">,</span>
|
||
<span class="n">optimizer</span><span class="o">=</span><span class="n">TorchOptimizer</span><span class="p">(</span><span class="n">torch</span><span class="o">.</span><span class="n">optim</span><span class="o">.</span><span class="n">Adam</span><span class="p">,</span> <span class="n">lr</span><span class="o">=</span><span class="mf">0.006</span><span class="p">,</span> <span class="n">weight_decay</span><span class="o">=</span><span class="mf">1e-8</span><span class="p">),</span>
|
||
<span class="p">)</span>
|
||
<span class="n">trainer_learn</span> <span class="o">=</span> <span class="n">Trainer</span><span class="p">(</span>
|
||
<span class="n">solver</span><span class="o">=</span><span class="n">pinn_learn</span><span class="p">,</span> <span class="c1"># setting the solver, i.e. PINN</span>
|
||
<span class="n">max_epochs</span><span class="o">=</span><span class="mi">1000</span><span class="p">,</span> <span class="c1"># setting max epochs in training</span>
|
||
<span class="n">accelerator</span><span class="o">=</span><span class="s2">"cpu"</span><span class="p">,</span> <span class="c1"># we train on cpu, also other are available</span>
|
||
<span class="n">enable_model_summary</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="c1"># model summary statistics not printed</span>
|
||
<span class="n">train_size</span><span class="o">=</span><span class="mf">0.8</span><span class="p">,</span> <span class="c1"># set train size</span>
|
||
<span class="n">val_size</span><span class="o">=</span><span class="mf">0.0</span><span class="p">,</span> <span class="c1"># set validation size</span>
|
||
<span class="n">test_size</span><span class="o">=</span><span class="mf">0.2</span><span class="p">,</span> <span class="c1"># set testing size</span>
|
||
<span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># shuffle the data</span>
|
||
<span class="p">)</span>
|
||
<span class="c1"># train</span>
|
||
<span class="n">trainer_learn</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="9c8af542-246b-45c5-9cd9-389d0520040e" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('9c8af542-246b-45c5-9cd9-389d0520040e');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "e4c9e634ac2b4105a7e3e1c7f5b18ae5"}
|
||
</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=1000` reached.
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=150b3e62">
|
||
<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>In such a way, the model is able to reach a very high accuracy!
|
||
Of course, this is a toy problem for understanding the usage of extra features: similar precision could be obtained if the extra features are very similar to the true solution. The analyzed Poisson problem shows a forcing term very close to the solution, resulting in a perfect problem to address with such an approach.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=8c64fcb4">
|
||
<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 conclude here by showing the test error for the analysed methodologies: the standard PINN, PINN with extra features, and PINN with learnable extra features.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell" id="cell-id=a04e8a5d">
|
||
<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 [10]:</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"># test error base pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN"</span><span class="p">)</span>
|
||
<span class="n">trainer_base</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
<span class="c1"># test error extra features pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN with extra features"</span><span class="p">)</span>
|
||
<span class="n">trainer_feat</span><span class="o">.</span><span class="n">test</span><span class="p">()</span>
|
||
<span class="c1"># test error learnable extra features pinn</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="s2">"PINN with learnable extra features"</span><span class="p">)</span>
|
||
<span class="n">_</span> <span class="o">=</span> <span class="n">trainer_learn</span><span class="o">.</span><span class="n">test</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>PINN
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="83bd3484-efd0-415e-bef2-abdff5aa9a64" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('83bd3484-efd0-415e-bef2-abdff5aa9a64');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "6d0a40220ddc4f0490b83f1e212c1c7a"}
|
||
</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="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 0.30236542224884033
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
PINN with extra features
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="d1211dea-768d-46f0-9dec-f04555b7cdcd" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('d1211dea-768d-46f0-9dec-f04555b7cdcd');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "6c96bffcf03c476987085875745aed52"}
|
||
</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="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 0.0028569151181727648
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
PINN with learnable extra features
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jupyter-widgets jp-OutputArea-output" id="4c591175-663b-4a76-8674-c382743e55bd" tabindex="0">
|
||
<script type="text/javascript">
|
||
var element = document.getElementById('4c591175-663b-4a76-8674-c382743e55bd');
|
||
</script>
|
||
<script type="application/vnd.jupyter.widget-view+json">
|
||
{"version_major": 2, "version_minor": 0, "model_id": "fc10c268f86a4a62a0c6491f5cc4edec"}
|
||
</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="text/plain" tabindex="0">
|
||
<pre>────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
Test metric DataLoader 0
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
test_loss 1.570544562456977e-11
|
||
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell" id="cell-id=0a4c8895">
|
||
<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="What's-next?">What's next?<a class="anchor-link" href="#What's-next?">¶</a></h2><p>Congratulations on completing the two dimensional Poisson tutorial of <strong>PINA</strong>! 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>Propose new types of extrafeatures and see how they affect the learning</p>
|
||
</li>
|
||
<li><p>Exploit extrafeature training in more complex problems</p>
|
||
</li>
|
||
<li><p>Many more...</p>
|
||
</li>
|
||
</ol>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
<script type="application/vnd.jupyter.widget-state+json">
|
||
{"state": {"edc10356abda47fca31882393c97fa87": {"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}}, "b77c30e923e54792893a231c8fc59abe": {"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": ""}}, "b1b7f0eb826c4e57bb02b85e0fb3ae52": {"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_edc10356abda47fca31882393c97fa87", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_b77c30e923e54792893a231c8fc59abe", "tabbable": null, "tooltip": null, "value": 1.0}}, "6ec129cad48c4979a085b01581912585": {"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}}, "e1d67b01d7574c01be5f1055740cf6bb": {"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}}, "3e2682220b3d4cba924d753d3aef16a1": {"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_6ec129cad48c4979a085b01581912585", "placeholder": "\u200b", "style": "IPY_MODEL_e1d67b01d7574c01be5f1055740cf6bb", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "5b374c32329b4b909b7c736a5acb6344": {"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}}, "0539c2703e744dd1a5db862649dea850": {"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}}, "8278419d697c49fabfb9f74fe55b347f": {"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_5b374c32329b4b909b7c736a5acb6344", "placeholder": "\u200b", "style": "IPY_MODEL_0539c2703e744dd1a5db862649dea850", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200759.65it\/s,\u2007v_num=0,\u2007g1_loss=0.0439,\u2007g2_loss=0.0231,\u2007g3_loss=0.0456,\u2007g4_loss=0.0289,\u2007D_loss=0.157,\u2007train_loss=0.298]"}}, "b4e6fe0d8a1b483abfe90d69c69f6c0e": {"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%"}}, "188c7ae4493946a9a42dc5250ed484b7": {"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_3e2682220b3d4cba924d753d3aef16a1", "IPY_MODEL_b1b7f0eb826c4e57bb02b85e0fb3ae52", "IPY_MODEL_8278419d697c49fabfb9f74fe55b347f"], "layout": "IPY_MODEL_b4e6fe0d8a1b483abfe90d69c69f6c0e", "tabbable": null, "tooltip": null}}, "c4c63a915bd24112a093871033bf2923": {"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}}, "d3768bacbc40451ca4bdfa0e8b4c0efe": {"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": ""}}, "e691bf12a15d4e47b52ecac31ffed9b9": {"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_c4c63a915bd24112a093871033bf2923", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_d3768bacbc40451ca4bdfa0e8b4c0efe", "tabbable": null, "tooltip": null, "value": 1.0}}, "f3884fa84aaa40dbab51622a7e67c651": {"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}}, "5d558a29c73f476792783799fe1f52de": {"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}}, "255e48875331403cb492090b33ca40d0": {"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_f3884fa84aaa40dbab51622a7e67c651", "placeholder": "\u200b", "style": "IPY_MODEL_5d558a29c73f476792783799fe1f52de", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "1ddd4d6f4eea4ac5b5e329df86557e70": {"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}}, "4940df43728142ce8d2ef80d15e6ad8b": {"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}}, "4048e0ff0ddc48619f660dc99c05ba00": {"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_1ddd4d6f4eea4ac5b5e329df86557e70", "placeholder": "\u200b", "style": "IPY_MODEL_4940df43728142ce8d2ef80d15e6ad8b", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200739.93it\/s,\u2007v_num=1,\u2007g1_loss=0.000178,\u2007g2_loss=0.000195,\u2007g3_loss=0.000353,\u2007g4_loss=0.000365,\u2007D_loss=0.00143,\u2007train_loss=0.00252]"}}, "65d4fd6063dd44ecb2d111c41494d959": {"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%"}}, "481c8cdecf4b4fa496fda181ba49a9d0": {"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_255e48875331403cb492090b33ca40d0", "IPY_MODEL_e691bf12a15d4e47b52ecac31ffed9b9", "IPY_MODEL_4048e0ff0ddc48619f660dc99c05ba00"], "layout": "IPY_MODEL_65d4fd6063dd44ecb2d111c41494d959", "tabbable": null, "tooltip": null}}, "874ce26ac31748ae9dd75d0c81771646": {"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}}, "291be5ffb8b0422da440a6cd299c1842": {"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": ""}}, "6c1f9e1b6fbe4cb6804a2be9a16bd0c4": {"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_874ce26ac31748ae9dd75d0c81771646", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_291be5ffb8b0422da440a6cd299c1842", "tabbable": null, "tooltip": null, "value": 1.0}}, "0649eae995954164b46861f09f8c30ad": {"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}}, "8cd0ba535d8a47f9be1af7fecf4d82fa": {"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}}, "4f5a303ce8a545b7a98991d08fdd0de7": {"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_0649eae995954164b46861f09f8c30ad", "placeholder": "\u200b", "style": "IPY_MODEL_8cd0ba535d8a47f9be1af7fecf4d82fa", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "945c34c7cc5a45489ac699f74f5081bb": {"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}}, "115b231358944b388c5c02e3d7bbf920": {"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}}, "87e84bbc9986446f9809061713f5c4eb": {"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_945c34c7cc5a45489ac699f74f5081bb", "placeholder": "\u200b", "style": "IPY_MODEL_115b231358944b388c5c02e3d7bbf920", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200739.62it\/s,\u2007v_num=2,\u2007g1_loss=5e-6,\u2007g2_loss=8.92e-6,\u2007g3_loss=3.9e-6,\u2007g4_loss=1.27e-5,\u2007D_loss=0.00279,\u2007train_loss=0.00282]"}}, "51cc4250038b41d98c378cf9ec538efe": {"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%"}}, "ba849cdaa05e4e0daa9664c8c971be33": {"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_4f5a303ce8a545b7a98991d08fdd0de7", "IPY_MODEL_6c1f9e1b6fbe4cb6804a2be9a16bd0c4", "IPY_MODEL_87e84bbc9986446f9809061713f5c4eb"], "layout": "IPY_MODEL_51cc4250038b41d98c378cf9ec538efe", "tabbable": null, "tooltip": null}}, "74ead02d858647f888a37f31f551a436": {"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}}, "93c60d5303684650b7fbc36f163a32a4": {"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": ""}}, "93bce25a1a0741f286da65dd271ff394": {"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_74ead02d858647f888a37f31f551a436", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_93c60d5303684650b7fbc36f163a32a4", "tabbable": null, "tooltip": null, "value": 1.0}}, "7c65a30cf4684110a61dff46caab95ca": {"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}}, "0000c3900cfe4bee9e2a42d7a111917b": {"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}}, "818f09897237490d826a89b85388df55": {"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_7c65a30cf4684110a61dff46caab95ca", "placeholder": "\u200b", "style": "IPY_MODEL_0000c3900cfe4bee9e2a42d7a111917b", "tabbable": null, "tooltip": null, "value": "Epoch\u2007999:\u2007100%"}}, "7fe7b1b392964beba656c34793670eda": {"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}}, "cde48d9cd6b1491fb3693affd2dab409": {"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}}, "e41c143b36884f82988714c4be4bdfa8": {"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_7fe7b1b392964beba656c34793670eda", "placeholder": "\u200b", "style": "IPY_MODEL_cde48d9cd6b1491fb3693affd2dab409", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200755.81it\/s,\u2007v_num=3,\u2007g1_loss=7.9e-15,\u2007g2_loss=2.61e-15,\u2007g3_loss=5.68e-15,\u2007g4_loss=1.03e-14,\u2007D_loss=1.57e-11,\u2007train_loss=1.57e-11]"}}, "51da67b08db44bb4a502b831d9498079": {"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%"}}, "e4c9e634ac2b4105a7e3e1c7f5b18ae5": {"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_818f09897237490d826a89b85388df55", "IPY_MODEL_93bce25a1a0741f286da65dd271ff394", "IPY_MODEL_e41c143b36884f82988714c4be4bdfa8"], "layout": "IPY_MODEL_51da67b08db44bb4a502b831d9498079", "tabbable": null, "tooltip": null}}, "5814e0597213427299fb7b79f8aa515d": {"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}}, "283e9b82c006421e94426ffd205681fd": {"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": ""}}, "d9310504e0244ea395c1dbd868721fba": {"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_5814e0597213427299fb7b79f8aa515d", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_283e9b82c006421e94426ffd205681fd", "tabbable": null, "tooltip": null, "value": 1.0}}, "cea8e4641f0c415d9a601fe6e6162908": {"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}}, "d1da8751b4584c63aff0361eb931cbd5": {"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}}, "54f1fd02d821437ead16406b2fe4f7ba": {"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_cea8e4641f0c415d9a601fe6e6162908", "placeholder": "\u200b", "style": "IPY_MODEL_d1da8751b4584c63aff0361eb931cbd5", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "738ae246929445199158c922f7a9f228": {"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}}, "7a64b7ecd038416f85c8557a2e9cf973": {"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}}, "17e352f66eed4d8caaa72386ba60f4e5": {"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_738ae246929445199158c922f7a9f228", "placeholder": "\u200b", "style": "IPY_MODEL_7a64b7ecd038416f85c8557a2e9cf973", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200772.71it\/s]"}}, "50c6e890c5704de0afe17f3dfaec827a": {"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%"}}, "6d0a40220ddc4f0490b83f1e212c1c7a": {"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_54f1fd02d821437ead16406b2fe4f7ba", "IPY_MODEL_d9310504e0244ea395c1dbd868721fba", "IPY_MODEL_17e352f66eed4d8caaa72386ba60f4e5"], "layout": "IPY_MODEL_50c6e890c5704de0afe17f3dfaec827a", "tabbable": null, "tooltip": null}}, "0cee682b3a624f71a468251f1c215ef2": {"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}}, "b7f779c24c504f17bcec4364d09e9e54": {"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": ""}}, "1553ead8b7be4ccbb570006793520b9e": {"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_0cee682b3a624f71a468251f1c215ef2", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_b7f779c24c504f17bcec4364d09e9e54", "tabbable": null, "tooltip": null, "value": 1.0}}, "e53fe3b83f4f4aceaf7ad8f6f7636293": {"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}}, "1fd24ca375c2472486a037cc30366aa1": {"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}}, "80e29d6cc7e94c989d4d85f78f73dfa9": {"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_e53fe3b83f4f4aceaf7ad8f6f7636293", "placeholder": "\u200b", "style": "IPY_MODEL_1fd24ca375c2472486a037cc30366aa1", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "77be0bdfeb654bd4859d4f6a9435e233": {"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}}, "053773bee28243feae1e49e02a01c7c3": {"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}}, "b6efe4aea7914e61a560d675a08b484c": {"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_77be0bdfeb654bd4859d4f6a9435e233", "placeholder": "\u200b", "style": "IPY_MODEL_053773bee28243feae1e49e02a01c7c3", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200788.34it\/s]"}}, "cd62f2eb1edb402986cf81d272f164ef": {"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%"}}, "6c96bffcf03c476987085875745aed52": {"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_80e29d6cc7e94c989d4d85f78f73dfa9", "IPY_MODEL_1553ead8b7be4ccbb570006793520b9e", "IPY_MODEL_b6efe4aea7914e61a560d675a08b484c"], "layout": "IPY_MODEL_cd62f2eb1edb402986cf81d272f164ef", "tabbable": null, "tooltip": null}}, "e5b3f0009dfa4ba3a30c3e56aee93785": {"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}}, "065936cfa6c0425abcebd88c870057c6": {"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": ""}}, "c9f8f6b613c44707bd186827f93aef49": {"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_e5b3f0009dfa4ba3a30c3e56aee93785", "max": 1.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_065936cfa6c0425abcebd88c870057c6", "tabbable": null, "tooltip": null, "value": 1.0}}, "8089698dbe484ef99e357e12981fdfab": {"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}}, "06c92efff7fc48bdb5ef7e78d2e751bc": {"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}}, "81d83324ad3e44b896fae1deca454167": {"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_8089698dbe484ef99e357e12981fdfab", "placeholder": "\u200b", "style": "IPY_MODEL_06c92efff7fc48bdb5ef7e78d2e751bc", "tabbable": null, "tooltip": null, "value": "Testing\u2007DataLoader\u20070:\u2007100%"}}, "250b2fd8f71d49f7bea4988cf85c9734": {"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}}, "fb82e947cff944a192babc37ffcdffa1": {"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}}, "31084e3c41e5470184b5babfd2079ffc": {"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_250b2fd8f71d49f7bea4988cf85c9734", "placeholder": "\u200b", "style": "IPY_MODEL_fb82e947cff944a192babc37ffcdffa1", "tabbable": null, "tooltip": null, "value": "\u20071\/1\u2007[00:00<00:00,\u200781.38it\/s]"}}, "cdc4dd3f84dc4032abc54b893a976cdd": {"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%"}}, "fc10c268f86a4a62a0c6491f5cc4edec": {"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_81d83324ad3e44b896fae1deca454167", "IPY_MODEL_c9f8f6b613c44707bd186827f93aef49", "IPY_MODEL_31084e3c41e5470184b5babfd2079ffc"], "layout": "IPY_MODEL_cdc4dd3f84dc4032abc54b893a976cdd", "tabbable": null, "tooltip": null}}}, "version_major": 2, "version_minor": 0}
|
||
</script>
|
||
</html>
|