mirror of
https://github.com/nprasad2077/MNIST.git
synced 2026-11-04 09:15:29 +00:00
8460 lines
460 KiB
HTML
8460 lines
460 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en">
|
||
<head><meta charset="utf-8"/>
|
||
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
|
||
<title>02_model_training</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
|
||
<style type="text/css">
|
||
pre { line-height: 125%; }
|
||
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
|
||
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
|
||
.highlight .hll { background-color: var(--jp-cell-editor-active-background) }
|
||
.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) }
|
||
.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */
|
||
.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */
|
||
.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */
|
||
.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */
|
||
.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */
|
||
.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */
|
||
.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */
|
||
.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */
|
||
.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */
|
||
.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */
|
||
.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */
|
||
.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */
|
||
.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */
|
||
.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */
|
||
.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */
|
||
.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */
|
||
.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */
|
||
.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */
|
||
.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */
|
||
.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */
|
||
.highlight .pm { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation.Marker */
|
||
.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */
|
||
.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */
|
||
.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */
|
||
.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */
|
||
.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */
|
||
.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */
|
||
.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */
|
||
.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */
|
||
.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */
|
||
.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */
|
||
.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */
|
||
.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */
|
||
.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */
|
||
.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */
|
||
.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */
|
||
.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */
|
||
.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */
|
||
.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */
|
||
.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */
|
||
.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
* Mozilla scrollbar styling
|
||
*/
|
||
|
||
/* use standard opaque scrollbars for most nodes */
|
||
[data-jp-theme-scrollbars='true'] {
|
||
scrollbar-color: rgb(var(--jp-scrollbar-thumb-color))
|
||
var(--jp-scrollbar-background-color);
|
||
}
|
||
|
||
/* for code nodes, use a transparent style of scrollbar. These selectors
|
||
* will match lower in the tree, and so will override the above */
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar,
|
||
[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny {
|
||
scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent;
|
||
scrollbar-width: thin;
|
||
}
|
||
|
||
/* tiny scrollbar */
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar,
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-corner {
|
||
background-color: transparent;
|
||
height: 4px;
|
||
width: 4px;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-thumb {
|
||
background: rgba(var(--jp-scrollbar-thumb-color), 0.5);
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal {
|
||
border-left: 0 solid transparent;
|
||
border-right: 0 solid transparent;
|
||
}
|
||
|
||
.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical {
|
||
border-top: 0 solid transparent;
|
||
border-bottom: 0 solid transparent;
|
||
}
|
||
|
||
/*
|
||
* Lumino
|
||
*/
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
min-height: 16px;
|
||
max-height: 16px;
|
||
min-width: 45px;
|
||
border-top: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
min-width: 16px;
|
||
max-width: 16px;
|
||
min-height: 45px;
|
||
border-left: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
background-color: #f0f0f0;
|
||
background-position: center center;
|
||
min-height: 15px;
|
||
max-height: 15px;
|
||
min-width: 15px;
|
||
max-width: 15px;
|
||
}
|
||
|
||
.lm-ScrollBar-button:hover {
|
||
background-color: #dadada;
|
||
}
|
||
|
||
.lm-ScrollBar-button.lm-mod-active {
|
||
background-color: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
background: #f0f0f0;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
background: #cdcdcd;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb:hover {
|
||
background: #bababa;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb.lm-mod-active {
|
||
background: #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb {
|
||
height: 100%;
|
||
min-width: 15px;
|
||
border-left: 1px solid #a0a0a0;
|
||
border-right: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb {
|
||
width: 100%;
|
||
min-height: 15px;
|
||
border-top: 1px solid #a0a0a0;
|
||
border-bottom: 1px solid #a0a0a0;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-left);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-right);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='decrement'] {
|
||
background-image: var(--jp-icon-caret-up);
|
||
background-size: 17px;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical']
|
||
.lm-ScrollBar-button[data-action='increment'] {
|
||
background-image: var(--jp-icon-caret-down);
|
||
background-size: 17px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Widget {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-Widget.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .lm-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
display: flex;
|
||
flex-direction: column;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-CommandPalette-search {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
min-height: 0;
|
||
overflow: auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-CommandPalette-itemIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.lm-close-icon {
|
||
border: 1px solid transparent;
|
||
background-color: transparent;
|
||
position: absolute;
|
||
z-index: 1;
|
||
right: 3%;
|
||
top: 0;
|
||
bottom: 0;
|
||
margin: auto;
|
||
padding: 7px 0;
|
||
display: none;
|
||
vertical-align: middle;
|
||
outline: 0;
|
||
cursor: pointer;
|
||
}
|
||
.lm-close-icon:after {
|
||
content: 'X';
|
||
display: block;
|
||
width: 15px;
|
||
height: 15px;
|
||
text-align: center;
|
||
color: #000;
|
||
font-weight: normal;
|
||
font-size: 12px;
|
||
cursor: pointer;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-DockPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-widget {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-DockPanel-handle {
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-DockPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-DockPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal'] {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical'] {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='horizontal']:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-handle[data-orientation='vertical']:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
.lm-DockPanel-overlay {
|
||
z-index: 3;
|
||
box-sizing: border-box;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.lm-DockPanel-overlay.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-Menu {
|
||
z-index: 10000;
|
||
position: absolute;
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-Menu-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: table;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-Menu-item {
|
||
display: table-row;
|
||
}
|
||
|
||
.lm-Menu-item.lm-mod-hidden,
|
||
.lm-Menu-item.lm-mod-collapsed {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-Menu-itemIcon,
|
||
.lm-Menu-itemSubmenuIcon {
|
||
display: table-cell;
|
||
text-align: center;
|
||
}
|
||
|
||
.lm-Menu-itemLabel {
|
||
display: table-cell;
|
||
text-align: left;
|
||
}
|
||
|
||
.lm-Menu-itemShortcut {
|
||
display: table-cell;
|
||
text-align: right;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-MenuBar {
|
||
outline: none;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-MenuBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex-direction: row;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-MenuBar-item {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-MenuBar-itemIcon,
|
||
.lm-MenuBar-itemLabel {
|
||
display: inline-block;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-ScrollBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-ScrollBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-ScrollBar-button {
|
||
box-sizing: border-box;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-track {
|
||
box-sizing: border-box;
|
||
position: relative;
|
||
overflow: hidden;
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.lm-ScrollBar-thumb {
|
||
box-sizing: border-box;
|
||
position: absolute;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-SplitPanel-child {
|
||
z-index: 0;
|
||
}
|
||
|
||
.lm-SplitPanel-handle {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-SplitPanel-handle.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-SplitPanel-handle:after {
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
content: '';
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle {
|
||
cursor: ew-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle {
|
||
cursor: ns-resize;
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after {
|
||
left: 50%;
|
||
min-width: 8px;
|
||
transform: translateX(-50%);
|
||
}
|
||
|
||
.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after {
|
||
top: 50%;
|
||
min-height: 8px;
|
||
transform: translateY(-50%);
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar {
|
||
display: flex;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] {
|
||
flex-direction: row;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] {
|
||
flex-direction: column;
|
||
align-items: flex-end;
|
||
}
|
||
|
||
.lm-TabBar-content {
|
||
margin: 0;
|
||
padding: 0;
|
||
display: flex;
|
||
flex: 1 1 auto;
|
||
list-style-type: none;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content {
|
||
flex-direction: row;
|
||
}
|
||
|
||
.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content {
|
||
flex-direction: column;
|
||
}
|
||
|
||
.lm-TabBar-tab {
|
||
display: flex;
|
||
flex-direction: row;
|
||
box-sizing: border-box;
|
||
overflow: hidden;
|
||
touch-action: none; /* Disable native Drag/Drop */
|
||
}
|
||
|
||
.lm-TabBar-tabIcon,
|
||
.lm-TabBar-tabCloseIcon {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel {
|
||
flex: 1 1 auto;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.lm-TabBar-tab.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar-addButton.lm-mod-hidden {
|
||
display: none !important;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab {
|
||
position: relative;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab {
|
||
left: 0;
|
||
transition: left 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab {
|
||
top: 0;
|
||
transition: top 150ms ease;
|
||
}
|
||
|
||
.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging {
|
||
transition: none;
|
||
}
|
||
|
||
.lm-TabBar-tabLabel .lm-TabBar-tabInput {
|
||
user-select: all;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
background: inherit;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabPanel-tabBar {
|
||
z-index: 1;
|
||
}
|
||
|
||
.lm-TabPanel-stackedPanel {
|
||
z-index: 0;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapse {
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
}
|
||
|
||
.jp-Collapse-header {
|
||
padding: 1px 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
align-items: center;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
text-transform: uppercase;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-Collapser-icon {
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-Collapse-header-collapsed .jp-Collapser-icon {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
}
|
||
|
||
.jp-Collapser-title {
|
||
line-height: 25px;
|
||
}
|
||
|
||
.jp-Collapse-contents {
|
||
padding: 0 12px;
|
||
background-color: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
/* Icons urls */
|
||
|
||
:root {
|
||
--jp-icon-add-above: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5MikiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik00Ljc1IDQuOTMwNjZINi42MjVWNi44MDU2NkM2LjYyNSA3LjAxMTkxIDYuNzkzNzUgNy4xODA2NiA3IDcuMTgwNjZDNy4yMDYyNSA3LjE4MDY2IDcuMzc1IDcuMDExOTEgNy4zNzUgNi44MDU2NlY0LjkzMDY2SDkuMjVDOS40NTYyNSA0LjkzMDY2IDkuNjI1IDQuNzYxOTEgOS42MjUgNC41NTU2NkM5LjYyNSA0LjM0OTQxIDkuNDU2MjUgNC4xODA2NiA5LjI1IDQuMTgwNjZINy4zNzVWMi4zMDU2NkM3LjM3NSAyLjA5OTQxIDcuMjA2MjUgMS45MzA2NiA3IDEuOTMwNjZDNi43OTM3NSAxLjkzMDY2IDYuNjI1IDIuMDk5NDEgNi42MjUgMi4zMDU2NlY0LjE4MDY2SDQuNzVDNC41NDM3NSA0LjE4MDY2IDQuMzc1IDQuMzQ5NDEgNC4zNzUgNC41NTU2NkM0LjM3NSA0Ljc2MTkxIDQuNTQzNzUgNC45MzA2NiA0Ljc1IDQuOTMwNjZaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC43Ii8+CjwvZz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTExLjUgOS41VjExLjVMMi41IDExLjVWOS41TDExLjUgOS41Wk0xMiA4QzEyLjU1MjMgOCAxMyA4LjQ0NzcyIDEzIDlWMTJDMTMgMTIuNTUyMyAxMi41NTIzIDEzIDEyIDEzTDIgMTNDMS40NDc3MiAxMyAxIDEyLjU1MjMgMSAxMlY5QzEgOC40NDc3MiAxLjQ0NzcxIDggMiA4TDEyIDhaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5MiI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KC0xIDAgMCAxIDEwIDEuNTU1NjYpIi8+CjwvY2xpcFBhdGg+CjwvZGVmcz4KPC9zdmc+Cg==);
|
||
--jp-icon-add-below: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzEzN18xOTQ5OCkiPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGQ9Ik05LjI1IDEwLjA2OTNMNy4zNzUgMTAuMDY5M0w3LjM3NSA4LjE5NDM0QzcuMzc1IDcuOTg4MDkgNy4yMDYyNSA3LjgxOTM0IDcgNy44MTkzNEM2Ljc5Mzc1IDcuODE5MzQgNi42MjUgNy45ODgwOSA2LjYyNSA4LjE5NDM0TDYuNjI1IDEwLjA2OTNMNC43NSAxMC4wNjkzQzQuNTQzNzUgMTAuMDY5MyA0LjM3NSAxMC4yMzgxIDQuMzc1IDEwLjQ0NDNDNC4zNzUgMTAuNjUwNiA0LjU0Mzc1IDEwLjgxOTMgNC43NSAxMC44MTkzTDYuNjI1IDEwLjgxOTNMNi42MjUgMTIuNjk0M0M2LjYyNSAxMi45MDA2IDYuNzkzNzUgMTMuMDY5MyA3IDEzLjA2OTNDNy4yMDYyNSAxMy4wNjkzIDcuMzc1IDEyLjkwMDYgNy4zNzUgMTIuNjk0M0w3LjM3NSAxMC44MTkzTDkuMjUgMTAuODE5M0M5LjQ1NjI1IDEwLjgxOTMgOS42MjUgMTAuNjUwNiA5LjYyNSAxMC40NDQzQzkuNjI1IDEwLjIzODEgOS40NTYyNSAxMC4wNjkzIDkuMjUgMTAuMDY5M1oiIGZpbGw9IiM2MTYxNjEiIHN0cm9rZT0iIzYxNjE2MSIgc3Ryb2tlLXdpZHRoPSIwLjciLz4KPC9nPgo8cGF0aCBjbGFzcz0ianAtaWNvbjMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMi41IDUuNUwyLjUgMy41TDExLjUgMy41TDExLjUgNS41TDIuNSA1LjVaTTIgN0MxLjQ0NzcyIDcgMSA2LjU1MjI4IDEgNkwxIDNDMSAyLjQ0NzcyIDEuNDQ3NzIgMiAyIDJMMTIgMkMxMi41NTIzIDIgMTMgMi40NDc3MiAxMyAzTDEzIDZDMTMgNi41NTIyOSAxMi41NTIzIDcgMTIgN0wyIDdaIiBmaWxsPSIjNjE2MTYxIi8+CjxkZWZzPgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzEzN18xOTQ5OCI+CjxyZWN0IGNsYXNzPSJqcC1pY29uMyIgd2lkdGg9IjYiIGhlaWdodD0iNiIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0ibWF0cml4KDEgMS43NDg0NmUtMDcgMS43NDg0NmUtMDcgLTEgNCAxMy40NDQzKSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=);
|
||
--jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bell: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiPgogICA8cGF0aCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzMzMzMzIgogICAgICBkPSJtOCAwLjI5Yy0xLjQgMC0yLjcgMC43My0zLjYgMS44LTEuMiAxLjUtMS40IDMuNC0xLjUgNS4yLTAuMTggMi4yLTAuNDQgNC0yLjMgNS4zbDAuMjggMS4zaDVjMC4wMjYgMC42NiAwLjMyIDEuMSAwLjcxIDEuNSAwLjg0IDAuNjEgMiAwLjYxIDIuOCAwIDAuNTItMC40IDAuNi0xIDAuNzEtMS41aDVsMC4yOC0xLjNjLTEuOS0wLjk3LTIuMi0zLjMtMi4zLTUuMy0wLjEzLTEuOC0wLjI2LTMuNy0xLjUtNS4yLTAuODUtMS0yLjItMS44LTMuNi0xLjh6bTAgMS40YzAuODggMCAxLjkgMC41NSAyLjUgMS4zIDAuODggMS4xIDEuMSAyLjcgMS4yIDQuNCAwLjEzIDEuNyAwLjIzIDMuNiAxLjMgNS4yaC0xMGMxLjEtMS42IDEuMi0zLjQgMS4zLTUuMiAwLjEzLTEuNyAwLjMtMy4zIDEuMi00LjQgMC41OS0wLjcyIDEuNi0xLjMgMi41LTEuM3ptLTAuNzQgMTJoMS41Yy0wLjAwMTUgMC4yOCAwLjAxNSAwLjc5LTAuNzQgMC43OS0wLjczIDAuMDAxNi0wLjcyLTAuNTMtMC43NC0wLjc5eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-bug-dot: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiPgogICAgICAgIDxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTcuMTkgOEgyMFYxMEgxNy45MUMxNy45NiAxMC4zMyAxOCAxMC42NiAxOCAxMVYxMkgyMFYxNEgxOC41SDE4VjE0LjAyNzVDMTUuNzUgMTQuMjc2MiAxNCAxNi4xODM3IDE0IDE4LjVDMTQgMTkuMjA4IDE0LjE2MzUgMTkuODc3OSAxNC40NTQ5IDIwLjQ3MzlDMTMuNzA2MyAyMC44MTE3IDEyLjg3NTcgMjEgMTIgMjFDOS43OCAyMSA3Ljg1IDE5Ljc5IDYuODEgMThINFYxNkg2LjA5QzYuMDQgMTUuNjcgNiAxNS4zNCA2IDE1VjE0SDRWMTJINlYxMUM2IDEwLjY2IDYuMDQgMTAuMzMgNi4wOSAxMEg0VjhINi44MUM3LjI2IDcuMjIgNy44OCA2LjU1IDguNjIgNi4wNEw3IDQuNDFMOC40MSAzTDEwLjU5IDUuMTdDMTEuMDQgNS4wNiAxMS41MSA1IDEyIDVDMTIuNDkgNSAxMi45NiA1LjA2IDEzLjQyIDUuMTdMMTUuNTkgM0wxNyA0LjQxTDE1LjM3IDYuMDRDMTYuMTIgNi41NSAxNi43NCA3LjIyIDE3LjE5IDhaTTEwIDE2SDE0VjE0SDEwVjE2Wk0xMCAxMkgxNFYxMEgxMFYxMloiIGZpbGw9IiM2MTYxNjEiLz4KICAgICAgICA8cGF0aCBkPSJNMjIgMTguNUMyMiAyMC40MzMgMjAuNDMzIDIyIDE4LjUgMjJDMTYuNTY3IDIyIDE1IDIwLjQzMyAxNSAxOC41QzE1IDE2LjU2NyAxNi41NjcgMTUgMTguNSAxNUMyMC40MzMgMTUgMjIgMTYuNTY3IDIyIDE4LjVaIiBmaWxsPSIjNjE2MTYxIi8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICA8cGF0aCBkPSJNNi41OSwzLjQxTDIsOEw2LjU5LDEyLjZMOCwxMS4xOEw0LjgyLDhMOCw0LjgyTDYuNTksMy40MU0xMi40MSwzLjQxTDExLDQuODJMMTQuMTgsOEwxMSwxMS4xOEwxMi40MSwxMi42TDE3LDhMMTIuNDEsMy40MU0yMS41OSwxMS41OUwxMy41LDE5LjY4TDkuODMsMTZMOC40MiwxNy40MUwxMy41LDIyLjVMMjMsMTNMMjEuNTksMTEuNTlaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-collapse-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNNiAxM3YyaDh2LTJ6IiAvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1jb25zb2xlLWljb24tYmFja2dyb3VuZC1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtY29uc29sZS1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIj4KICAgIDxwYXRoIGQ9Ik0xMDUgMTI3LjNoNDB2MTIuOGgtNDB6TTUxLjEgNzdMNzQgOTkuOWwtMjMuMyAyMy4zIDEwLjUgMTAuNSAyMy4zLTIzLjNMOTUgOTkuOSA4NC41IDg5LjQgNjEuNiA2Ni41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-delete: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCI+CiAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIiAvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjI2MjYyIiBkPSJNNiAxOWMwIDEuMS45IDIgMiAyaDhjMS4xIDAgMi0uOSAyLTJWN0g2djEyek0xOSA0aC0zLjVsLTEtMWgtNWwtMSAxSDV2MmgxNFY0eiIgLz4KPC9zdmc+Cg==);
|
||
--jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-duplicate: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTIuNzk5OTggMC44NzVIOC44OTU4MkM5LjIwMDYxIDAuODc1IDkuNDQ5OTggMS4xMzkxNCA5LjQ0OTk4IDEuNDYxOThDOS40NDk5OCAxLjc4NDgyIDkuMjAwNjEgMi4wNDg5NiA4Ljg5NTgyIDIuMDQ4OTZIMy4zNTQxNUMzLjA0OTM2IDIuMDQ4OTYgMi43OTk5OCAyLjMxMzEgMi43OTk5OCAyLjYzNTk0VjkuNjc5NjlDMi43OTk5OCAxMC4wMDI1IDIuNTUwNjEgMTAuMjY2NyAyLjI0NTgyIDEwLjI2NjdDMS45NDEwMyAxMC4yNjY3IDEuNjkxNjUgMTAuMDAyNSAxLjY5MTY1IDkuNjc5NjlWMi4wNDg5NkMxLjY5MTY1IDEuNDAzMjggMi4xOTA0IDAuODc1IDIuNzk5OTggMC44NzVaTTUuMzY2NjUgMTEuOVY0LjU1SDExLjA4MzNWMTEuOUg1LjM2NjY1Wk00LjE0MTY1IDQuMTQxNjdDNC4xNDE2NSAzLjY5MDYzIDQuNTA3MjggMy4zMjUgNC45NTgzMiAzLjMyNUgxMS40OTE3QzExLjk0MjcgMy4zMjUgMTIuMzA4MyAzLjY5MDYzIDEyLjMwODMgNC4xNDE2N1YxMi4zMDgzQzEyLjMwODMgMTIuNzU5NCAxMS45NDI3IDEzLjEyNSAxMS40OTE3IDEzLjEyNUg0Ljk1ODMyQzQuNTA3MjggMTMuMTI1IDQuMTQxNjUgMTIuNzU5NCA0LjE0MTY1IDEyLjMwODNWNC4xNDE2N1oiIGZpbGw9IiM2MTYxNjEiLz4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNOS40MzU3NCA4LjI2NTA3SDguMzY0MzFWOS4zMzY1QzguMzY0MzEgOS40NTQzNSA4LjI2Nzg4IDkuNTUwNzggOC4xNTAwMiA5LjU1MDc4QzguMDMyMTcgOS41NTA3OCA3LjkzNTc0IDkuNDU0MzUgNy45MzU3NCA5LjMzNjVWOC4yNjUwN0g2Ljg2NDMxQzYuNzQ2NDUgOC4yNjUwNyA2LjY1MDAyIDguMTY4NjQgNi42NTAwMiA4LjA1MDc4QzYuNjUwMDIgNy45MzI5MiA2Ljc0NjQ1IDcuODM2NSA2Ljg2NDMxIDcuODM2NUg3LjkzNTc0VjYuNzY1MDdDNy45MzU3NCA2LjY0NzIxIDguMDMyMTcgNi41NTA3OCA4LjE1MDAyIDYuNTUwNzhDOC4yNjc4OCA2LjU1MDc4IDguMzY0MzEgNi42NDcyMSA4LjM2NDMxIDYuNzY1MDdWNy44MzY1SDkuNDM1NzRDOS41NTM2IDcuODM2NSA5LjY1MDAyIDcuOTMyOTIgOS42NTAwMiA4LjA1MDc4QzkuNjUwMDIgOC4xNjg2NCA5LjU1MzYgOC4yNjUwNyA5LjQzNTc0IDguMjY1MDdaIiBmaWxsPSIjNjE2MTYxIiBzdHJva2U9IiM2MTYxNjEiIHN0cm9rZS13aWR0aD0iMC41Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-error: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjE5IiByPSIyIi8+PHBhdGggZD0iTTEwIDNoNHYxMmgtNHoiLz48L2c+CjxwYXRoIGZpbGw9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-expand-all: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTggMmMxIDAgMTEgMCAxMiAwczIgMSAyIDJjMCAxIDAgMTEgMCAxMnMwIDItMiAyQzIwIDE0IDIwIDQgMjAgNFMxMCA0IDYgNGMwLTIgMS0yIDItMnoiIC8+CiAgICAgICAgPHBhdGgKICAgICAgICAgICAgZD0iTTE4IDhjMC0xLTEtMi0yLTJTNSA2IDQgNnMtMiAxLTIgMmMwIDEgMCAxMSAwIDEyczEgMiAyIDJjMSAwIDExIDAgMTIgMHMyLTEgMi0yYzAtMSAwLTExIDAtMTJ6bS0yIDB2MTJINFY4eiIgLz4KICAgICAgICA8cGF0aCBkPSJNMTEgMTBIOXYzSDZ2MmgzdjNoMnYtM2gzdi0yaC0zeiIgLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter-dot: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWRvdCIgZmlsbD0iI0ZGRiI+CiAgICA8Y2lyY2xlIGN4PSIxOCIgY3k9IjE3IiByPSIzIj48L2NpcmNsZT4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-filter: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTE0LDEyVjE5Ljg4QzE0LjA0LDIwLjE4IDEzLjk0LDIwLjUgMTMuNzEsMjAuNzFDMTMuMzIsMjEuMSAxMi42OSwyMS4xIDEyLjMsMjAuNzFMMTAuMjksMTguN0MxMC4wNiwxOC40NyA5Ljk2LDE4LjE2IDEwLDE3Ljg3VjEySDkuOTdMNC4yMSw0LjYyQzMuODcsNC4xOSAzLjk1LDMuNTYgNC4zOCwzLjIyQzQuNTcsMy4wOCA0Ljc4LDMgNSwzVjNIMTlWM0MxOS4yMiwzIDE5LjQzLDMuMDggMTkuNjIsMy4yMkMyMC4wNSwzLjU2IDIwLjEzLDQuMTkgMTkuNzksNC42MkwxNC4wMywxMkgxNFoiIC8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-folder-favorite: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggY2xhc3M9ImpwLWljb24zIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxNjE2MSIgZD0iTTIwIDZoLThsLTItMkg0Yy0xLjEgMC0yIC45LTIgMnYxMmMwIDEuMS45IDIgMiAyaDE2YzEuMSAwIDItLjkgMi0yVjhjMC0xLjEtLjktMi0yLTJ6bS0yLjA2IDExTDE1IDE1LjI4IDEyLjA2IDE3bC43OC0zLjMzLTIuNTktMi4yNCAzLjQxLS4yOUwxNSA4bDEuMzQgMy4xNCAzLjQxLjI5LTIuNTkgMi4yNC43OCAzLjMzeiIvPgo8L3N2Zz4K);
|
||
--jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-home: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iIzAwMDAwMCI+CiAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGNsYXNzPSJqcC1pY29uMyBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xMCAyMHYtNmg0djZoNXYtOGgzTDEyIDMgMiAxMmgzdjh6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUwLjk3OCA1MC45NzgiPgoJPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KCQk8cGF0aCBkPSJNNDMuNTIsNy40NThDMzguNzExLDIuNjQ4LDMyLjMwNywwLDI1LjQ4OSwwQzE4LjY3LDAsMTIuMjY2LDIuNjQ4LDcuNDU4LDcuNDU4CgkJCWMtOS45NDMsOS45NDEtOS45NDMsMjYuMTE5LDAsMzYuMDYyYzQuODA5LDQuODA5LDExLjIxMiw3LjQ1NiwxOC4wMzEsNy40NThjMCwwLDAuMDAxLDAsMC4wMDIsMAoJCQljNi44MTYsMCwxMy4yMjEtMi42NDgsMTguMDI5LTcuNDU4YzQuODA5LTQuODA5LDcuNDU3LTExLjIxMiw3LjQ1Ny0xOC4wM0M1MC45NzcsMTguNjcsNDguMzI4LDEyLjI2Niw0My41Miw3LjQ1OHoKCQkJIE00Mi4xMDYsNDIuMTA1Yy00LjQzMiw0LjQzMS0xMC4zMzIsNi44NzItMTYuNjE1LDYuODcyaC0wLjAwMmMtNi4yODUtMC4wMDEtMTIuMTg3LTIuNDQxLTE2LjYxNy02Ljg3MgoJCQljLTkuMTYyLTkuMTYzLTkuMTYyLTI0LjA3MSwwLTMzLjIzM0MxMy4zMDMsNC40NCwxOS4yMDQsMiwyNS40ODksMmM2LjI4NCwwLDEyLjE4NiwyLjQ0LDE2LjYxNyw2Ljg3MgoJCQljNC40MzEsNC40MzEsNi44NzEsMTAuMzMyLDYuODcxLDE2LjYxN0M0OC45NzcsMzEuNzcyLDQ2LjUzNiwzNy42NzUsNDIuMTA2LDQyLjEwNXoiLz4KCQk8cGF0aCBkPSJNMjMuNTc4LDMyLjIxOGMtMC4wMjMtMS43MzQsMC4xNDMtMy4wNTksMC40OTYtMy45NzJjMC4zNTMtMC45MTMsMS4xMS0xLjk5NywyLjI3Mi0zLjI1MwoJCQljMC40NjgtMC41MzYsMC45MjMtMS4wNjIsMS4zNjctMS41NzVjMC42MjYtMC43NTMsMS4xMDQtMS40NzgsMS40MzYtMi4xNzVjMC4zMzEtMC43MDcsMC40OTUtMS41NDEsMC40OTUtMi41CgkJCWMwLTEuMDk2LTAuMjYtMi4wODgtMC43NzktMi45NzljLTAuNTY1LTAuODc5LTEuNTAxLTEuMzM2LTIuODA2LTEuMzY5Yy0xLjgwMiwwLjA1Ny0yLjk4NSwwLjY2Ny0zLjU1LDEuODMyCgkJCWMtMC4zMDEsMC41MzUtMC41MDMsMS4xNDEtMC42MDcsMS44MTRjLTAuMTM5LDAuNzA3LTAuMjA3LDEuNDMyLTAuMjA3LDIuMTc0aC0yLjkzN2MtMC4wOTEtMi4yMDgsMC40MDctNC4xMTQsMS40OTMtNS43MTkKCQkJYzEuMDYyLTEuNjQsMi44NTUtMi40ODEsNS4zNzgtMi41MjdjMi4xNiwwLjAyMywzLjg3NCwwLjYwOCw1LjE0MSwxLjc1OGMxLjI3OCwxLjE2LDEuOTI5LDIuNzY0LDEuOTUsNC44MTEKCQkJYzAsMS4xNDItMC4xMzcsMi4xMTEtMC40MSwyLjkxMWMtMC4zMDksMC44NDUtMC43MzEsMS41OTMtMS4yNjgsMi4yNDNjLTAuNDkyLDAuNjUtMS4wNjgsMS4zMTgtMS43MywyLjAwMgoJCQljLTAuNjUsMC42OTctMS4zMTMsMS40NzktMS45ODcsMi4zNDZjLTAuMjM5LDAuMzc3LTAuNDI5LDAuNzc3LTAuNTY1LDEuMTk5Yy0wLjE2LDAuOTU5LTAuMjE3LDEuOTUxLTAuMTcxLDIuOTc5CgkJCUMyNi41ODksMzIuMjE4LDIzLjU3OCwzMi4yMTgsMjMuNTc4LDMyLjIxOHogTTIzLjU3OCwzOC4yMnYtMy40ODRoMy4wNzZ2My40ODRIMjMuNTc4eiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaW5zcGVjdG9yLWljb24tY29sb3IganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtanNvbi1pY29uLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0Y5QTgyNSI+CiAgICA8cGF0aCBkPSJNMjAuMiAxMS44Yy0xLjYgMC0xLjcuNS0xLjcgMSAwIC40LjEuOS4xIDEuMy4xLjUuMS45LjEgMS4zIDAgMS43LTEuNCAyLjMtMy41IDIuM2gtLjl2LTEuOWguNWMxLjEgMCAxLjQgMCAxLjQtLjggMC0uMyAwLS42LS4xLTEgMC0uNC0uMS0uOC0uMS0xLjIgMC0xLjMgMC0xLjggMS4zLTItMS4zLS4yLTEuMy0uNy0xLjMtMiAwLS40LjEtLjguMS0xLjIuMS0uNC4xLS43LjEtMSAwLS44LS40LS43LTEuNC0uOGgtLjVWNC4xaC45YzIuMiAwIDMuNS43IDMuNSAyLjMgMCAuNC0uMS45LS4xIDEuMy0uMS41LS4xLjktLjEgMS4zIDAgLjUuMiAxIDEuNyAxdjEuOHpNMS44IDEwLjFjMS42IDAgMS43LS41IDEuNy0xIDAtLjQtLjEtLjktLjEtMS4zLS4xLS41LS4xLS45LS4xLTEuMyAwLTEuNiAxLjQtMi4zIDMuNS0yLjNoLjl2MS45aC0uNWMtMSAwLTEuNCAwLTEuNC44IDAgLjMgMCAuNi4xIDEgMCAuMi4xLjYuMSAxIDAgMS4zIDAgMS44LTEuMyAyQzYgMTEuMiA2IDExLjcgNiAxM2MwIC40LS4xLjgtLjEgMS4yLS4xLjMtLjEuNy0uMSAxIDAgLjguMy44IDEuNC44aC41djEuOWgtLjljLTIuMSAwLTMuNS0uNi0zLjUtMi4zIDAtLjQuMS0uOS4xLTEuMy4xLS41LjEtLjkuMS0xLjMgMC0uNS0uMi0xLTEuNy0xdi0xLjl6Ii8+CiAgICA8Y2lyY2xlIGN4PSIxMSIgY3k9IjEzLjgiIHI9IjIuMSIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSI4LjIiIHI9IjIuMSIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgPGcgY2xhc3M9ImpwLWp1cHl0ZXItaWNvbi1jb2xvciIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgIDxnIGNsYXNzPSJqcC1qdXB5dGVyLWljb24tY29sb3IiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=);
|
||
--jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K);
|
||
--jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-launch: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiIHdpZHRoPSIzMiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yNiwyOEg2YTIuMDAyNywyLjAwMjcsMCwwLDEtMi0yVjZBMi4wMDI3LDIuMDAyNywwLDAsMSw2LDRIMTZWNkg2VjI2SDI2VjE2aDJWMjZBMi4wMDI3LDIuMDAyNywwLDAsMSwyNiwyOFoiLz4KICAgIDxwb2x5Z29uIHBvaW50cz0iMjAgMiAyMCA0IDI2LjU4NiA0IDE4IDEyLjU4NiAxOS40MTQgMTQgMjggNS40MTQgMjggMTIgMzAgMTIgMzAgMiAyMCAyIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4K);
|
||
--jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-move-down: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMTIuNDcxIDcuNTI4OTlDMTIuNzYzMiA3LjIzNjg0IDEyLjc2MzIgNi43NjMxNiAxMi40NzEgNi40NzEwMVY2LjQ3MTAxQzEyLjE3OSA2LjE3OTA1IDExLjcwNTcgNi4xNzg4NCAxMS40MTM1IDYuNDcwNTRMNy43NSAxMC4xMjc1VjEuNzVDNy43NSAxLjMzNTc5IDcuNDE0MjEgMSA3IDFWMUM2LjU4NTc5IDEgNi4yNSAxLjMzNTc5IDYuMjUgMS43NVYxMC4xMjc1TDIuNTk3MjYgNi40NjgyMkMyLjMwMzM4IDYuMTczODEgMS44MjY0MSA2LjE3MzU5IDEuNTMyMjYgNi40Njc3NFY2LjQ2Nzc0QzEuMjM4MyA2Ljc2MTcgMS4yMzgzIDcuMjM4MyAxLjUzMjI2IDcuNTMyMjZMNi4yOTI4OSAxMi4yOTI5QzYuNjgzNDIgMTIuNjgzNCA3LjMxNjU4IDEyLjY4MzQgNy43MDcxMSAxMi4yOTI5TDEyLjQ3MSA3LjUyODk5WiIgZmlsbD0iIzYxNjE2MSIvPgo8L3N2Zz4K);
|
||
--jp-icon-move-up: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggY2xhc3M9ImpwLWljb24zIiBkPSJNMS41Mjg5OSA2LjQ3MTAxQzEuMjM2ODQgNi43NjMxNiAxLjIzNjg0IDcuMjM2ODQgMS41Mjg5OSA3LjUyODk5VjcuNTI4OTlDMS44MjA5NSA3LjgyMDk1IDIuMjk0MjYgNy44MjExNiAyLjU4NjQ5IDcuNTI5NDZMNi4yNSAzLjg3MjVWMTIuMjVDNi4yNSAxMi42NjQyIDYuNTg1NzkgMTMgNyAxM1YxM0M3LjQxNDIxIDEzIDcuNzUgMTIuNjY0MiA3Ljc1IDEyLjI1VjMuODcyNUwxMS40MDI3IDcuNTMxNzhDMTEuNjk2NiA3LjgyNjE5IDEyLjE3MzYgNy44MjY0MSAxMi40Njc3IDcuNTMyMjZWNy41MzIyNkMxMi43NjE3IDcuMjM4MyAxMi43NjE3IDYuNzYxNyAxMi40Njc3IDYuNDY3NzRMNy43MDcxMSAxLjcwNzExQzcuMzE2NTggMS4zMTY1OCA2LjY4MzQyIDEuMzE2NTggNi4yOTI4OSAxLjcwNzExTDEuNTI4OTkgNi40NzEwMVoiIGZpbGw9IiM2MTYxNjEiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtbm90ZWJvb2staWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K);
|
||
--jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iLTEwIC0xMCAxMzEuMTYxMzYxNjk0MzM1OTQgMTMyLjM4ODk5OTkzODk2NDg0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMzA2OTk4IiBkPSJNIDU0LjkxODc4NSw5LjE5Mjc0MjFlLTQgQyA1MC4zMzUxMzIsMC4wMjIyMTcyNyA0NS45NTc4NDYsMC40MTMxMzY5NyA0Mi4xMDYyODUsMS4wOTQ2NjkzIDMwLjc2MDA2OSwzLjA5OTE3MzEgMjguNzAwMDM2LDcuMjk0NzcxNCAyOC43MDAwMzUsMTUuMDMyMTY5IHYgMTAuMjE4NzUgaCAyNi44MTI1IHYgMy40MDYyNSBoIC0yNi44MTI1IC0xMC4wNjI1IGMgLTcuNzkyNDU5LDAgLTE0LjYxNTc1ODgsNC42ODM3MTcgLTE2Ljc0OTk5OTgsMTMuNTkzNzUgLTIuNDYxODE5OTgsMTAuMjEyOTY2IC0yLjU3MTAxNTA4LDE2LjU4NjAyMyAwLDI3LjI1IDEuOTA1OTI4Myw3LjkzNzg1MiA2LjQ1NzU0MzIsMTMuNTkzNzQ4IDE0LjI0OTk5OTgsMTMuNTkzNzUgaCA5LjIxODc1IHYgLTEyLjI1IGMgMCwtOC44NDk5MDIgNy42NTcxNDQsLTE2LjY1NjI0OCAxNi43NSwtMTYuNjU2MjUgaCAyNi43ODEyNSBjIDcuNDU0OTUxLDAgMTMuNDA2MjUzLC02LjEzODE2NCAxMy40MDYyNSwtMTMuNjI1IHYgLTI1LjUzMTI1IGMgMCwtNy4yNjYzMzg2IC02LjEyOTk4LC0xMi43MjQ3NzcxIC0xMy40MDYyNSwtMTMuOTM3NDk5NyBDIDY0LjI4MTU0OCwwLjMyNzk0Mzk3IDU5LjUwMjQzOCwtMC4wMjAzNzkwMyA1NC45MTg3ODUsOS4xOTI3NDIxZS00IFogbSAtMTQuNSw4LjIxODc1MDEyNTc5IGMgMi43Njk1NDcsMCA1LjAzMTI1LDIuMjk4NjQ1NiA1LjAzMTI1LDUuMTI0OTk5NiAtMmUtNiwyLjgxNjMzNiAtMi4yNjE3MDMsNS4wOTM3NSAtNS4wMzEyNSw1LjA5Mzc1IC0yLjc3OTQ3NiwtMWUtNiAtNS4wMzEyNSwtMi4yNzc0MTUgLTUuMDMxMjUsLTUuMDkzNzUgLTEwZS03LC0yLjgyNjM1MyAyLjI1MTc3NCwtNS4xMjQ5OTk2IDUuMDMxMjUsLTUuMTI0OTk5NiB6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2ZmZDQzYiIgZD0ibSA4NS42Mzc1MzUsMjguNjU3MTY5IHYgMTEuOTA2MjUgYyAwLDkuMjMwNzU1IC03LjgyNTg5NSwxNi45OTk5OTkgLTE2Ljc1LDE3IGggLTI2Ljc4MTI1IGMgLTcuMzM1ODMzLDAgLTEzLjQwNjI0OSw2LjI3ODQ4MyAtMTMuNDA2MjUsMTMuNjI1IHYgMjUuNTMxMjQ3IGMgMCw3LjI2NjM0NCA2LjMxODU4OCwxMS41NDAzMjQgMTMuNDA2MjUsMTMuNjI1MDA0IDguNDg3MzMxLDIuNDk1NjEgMTYuNjI2MjM3LDIuOTQ2NjMgMjYuNzgxMjUsMCA2Ljc1MDE1NSwtMS45NTQzOSAxMy40MDYyNTMsLTUuODg3NjEgMTMuNDA2MjUsLTEzLjYyNTAwNCBWIDg2LjUwMDkxOSBoIC0yNi43ODEyNSB2IC0zLjQwNjI1IGggMjYuNzgxMjUgMTMuNDA2MjU0IGMgNy43OTI0NjEsMCAxMC42OTYyNTEsLTUuNDM1NDA4IDEzLjQwNjI0MSwtMTMuNTkzNzUgMi43OTkzMywtOC4zOTg4ODYgMi42ODAyMiwtMTYuNDc1Nzc2IDAsLTI3LjI1IC0xLjkyNTc4LC03Ljc1NzQ0MSAtNS42MDM4NywtMTMuNTkzNzUgLTEzLjQwNjI0MSwtMTMuNTkzNzUgeiBtIC0xNS4wNjI1LDY0LjY1NjI1IGMgMi43Nzk0NzgsM2UtNiA1LjAzMTI1LDIuMjc3NDE3IDUuMDMxMjUsNS4wOTM3NDcgLTJlLTYsMi44MjYzNTQgLTIuMjUxNzc1LDUuMTI1MDA0IC01LjAzMTI1LDUuMTI1MDA0IC0yLjc2OTU1LDAgLTUuMDMxMjUsLTIuMjk4NjUgLTUuMDMxMjUsLTUuMTI1MDA0IDJlLTYsLTIuODE2MzMgMi4yNjE2OTcsLTUuMDkzNzQ3IDUuMDMxMjUsLTUuMDkzNzQ3IHoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);
|
||
--jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-share: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTSAxOCAyIEMgMTYuMzU0OTkgMiAxNSAzLjM1NDk5MDQgMTUgNSBDIDE1IDUuMTkwOTUyOSAxNS4wMjE3OTEgNS4zNzcxMjI0IDE1LjA1NjY0MSA1LjU1ODU5MzggTCA3LjkyMTg3NSA5LjcyMDcwMzEgQyA3LjM5ODUzOTkgOS4yNzc4NTM5IDYuNzMyMDc3MSA5IDYgOSBDIDQuMzU0OTkwNCA5IDMgMTAuMzU0OTkgMyAxMiBDIDMgMTMuNjQ1MDEgNC4zNTQ5OTA0IDE1IDYgMTUgQyA2LjczMjA3NzEgMTUgNy4zOTg1Mzk5IDE0LjcyMjE0NiA3LjkyMTg3NSAxNC4yNzkyOTcgTCAxNS4wNTY2NDEgMTguNDM5NDUzIEMgMTUuMDIxNTU1IDE4LjYyMTUxNCAxNSAxOC44MDgzODYgMTUgMTkgQyAxNSAyMC42NDUwMSAxNi4zNTQ5OSAyMiAxOCAyMiBDIDE5LjY0NTAxIDIyIDIxIDIwLjY0NTAxIDIxIDE5IEMgMjEgMTcuMzU0OTkgMTkuNjQ1MDEgMTYgMTggMTYgQyAxNy4yNjc0OCAxNiAxNi42MDE1OTMgMTYuMjc5MzI4IDE2LjA3ODEyNSAxNi43MjI2NTYgTCA4Ljk0MzM1OTQgMTIuNTU4NTk0IEMgOC45NzgyMDk1IDEyLjM3NzEyMiA5IDEyLjE5MDk1MyA5IDEyIEMgOSAxMS44MDkwNDcgOC45NzgyMDk1IDExLjYyMjg3OCA4Ljk0MzM1OTQgMTEuNDQxNDA2IEwgMTYuMDc4MTI1IDcuMjc5Mjk2OSBDIDE2LjYwMTQ2IDcuNzIyMTQ2MSAxNy4yNjc5MjMgOCAxOCA4IEMgMTkuNjQ1MDEgOCAyMSA2LjY0NTAwOTYgMjEgNSBDIDIxIDMuMzU0OTkwNCAxOS42NDUwMSAyIDE4IDIgeiBNIDE4IDQgQyAxOC41NjQxMjkgNCAxOSA0LjQzNTg3MDYgMTkgNSBDIDE5IDUuNTY0MTI5NCAxOC41NjQxMjkgNiAxOCA2IEMgMTcuNDM1ODcxIDYgMTcgNS41NjQxMjk0IDE3IDUgQyAxNyA0LjQzNTg3MDYgMTcuNDM1ODcxIDQgMTggNCB6IE0gNiAxMSBDIDYuNTY0MTI5NCAxMSA3IDExLjQzNTg3MSA3IDEyIEMgNyAxMi41NjQxMjkgNi41NjQxMjk0IDEzIDYgMTMgQyA1LjQzNTg3MDYgMTMgNSAxMi41NjQxMjkgNSAxMiBDIDUgMTEuNDM1ODcxIDUuNDM1ODcwNiAxMSA2IDExIHogTSAxOCAxOCBDIDE4LjU2NDEyOSAxOCAxOSAxOC40MzU4NzEgMTkgMTkgQyAxOSAxOS41NjQxMjkgMTguNTY0MTI5IDIwIDE4IDIwIEMgMTcuNDM1ODcxIDIwIDE3IDE5LjU2NDEyOSAxNyAxOSBDIDE3IDE4LjQzNTg3MSAxNy40MzU4NzEgMTggMTggMTggeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=);
|
||
--jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1iYWNrZ3JvdW5kLWNvbG9yIGpwLWljb24tc2VsZWN0YWJsZSIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyIDIpIiBmaWxsPSIjMzMzMzMzIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtdGVybWluYWwtaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUtaW52ZXJzZSIgZD0iTTUuMDU2NjQgOC43NjE3MkM1LjA1NjY0IDguNTk3NjYgNS4wMzEyNSA4LjQ1MzEyIDQuOTgwNDcgOC4zMjgxMkM0LjkzMzU5IDguMTk5MjIgNC44NTU0NyA4LjA4MjAzIDQuNzQ2MDkgNy45NzY1NkM0LjY0MDYyIDcuODcxMDkgNC41IDcuNzc1MzkgNC4zMjQyMiA3LjY4OTQ1QzQuMTUyMzQgNy41OTk2MSAzLjk0MzM2IDcuNTExNzIgMy42OTcyNyA3LjQyNTc4QzMuMzAyNzMgNy4yODUxNiAyLjk0MzM2IDcuMTM2NzIgMi42MTkxNCA2Ljk4MDQ3QzIuMjk0OTIgNi44MjQyMiAyLjAxNzU4IDYuNjQyNTggMS43ODcxMSA2LjQzNTU1QzEuNTYwNTUgNi4yMjg1MiAxLjM4NDc3IDUuOTg4MjggMS4yNTk3NyA1LjcxNDg0QzEuMTM0NzcgNS40Mzc1IDEuMDcyMjcgNS4xMDkzOCAxLjA3MjI3IDQuNzMwNDdDMS4wNzIyNyA0LjM5ODQ0IDEuMTI4OTEgNC4wOTU3IDEuMjQyMTkgMy44MjIyN0MxLjM1NTQ3IDMuNTQ0OTIgMS41MTU2MiAzLjMwNDY5IDEuNzIyNjYgMy4xMDE1NkMxLjkyOTY5IDIuODk4NDQgMi4xNzk2OSAyLjczNDM3IDIuNDcyNjYgMi42MDkzOEMyLjc2NTYyIDIuNDg0MzggMy4wOTE4IDIuNDA0MyAzLjQ1MTE3IDIuMzY5MTRWMS4xMDkzOEg0LjM4ODY3VjIuMzgwODZDNC43NDAyMyAyLjQyNzczIDUuMDU2NjQgMi41MjM0NCA1LjMzNzg5IDIuNjY3OTdDNS42MTkxNCAyLjgxMjUgNS44NTc0MiAzLjAwMTk1IDYuMDUyNzMgMy4yMzYzM0M2LjI1MTk1IDMuNDY2OCA2LjQwNDMgMy43NDAyMyA2LjUwOTc3IDQuMDU2NjRDNi42MTkxNCA0LjM2OTE0IDYuNjczODMgNC43MjA3IDYuNjczODMgNS4xMTEzM0g1LjA0NDkyQzUuMDQ0OTIgNC42Mzg2NyA0LjkzNzUgNC4yODEyNSA0LjcyMjY2IDQuMDM5MDZDNC41MDc4MSAzLjc5Mjk3IDQuMjE2OCAzLjY2OTkyIDMuODQ5NjEgMy42Njk5MkMzLjY1MDM5IDMuNjY5OTIgMy40NzY1NiAzLjY5NzI3IDMuMzI4MTIgMy43NTE5NUMzLjE4MzU5IDMuODAyNzMgMy4wNjQ0NSAzLjg3Njk1IDIuOTcwNyAzLjk3NDYxQzIuODc2OTUgNC4wNjgzNiAyLjgwNjY0IDQuMTc5NjkgMi43NTk3NyA0LjMwODU5QzIuNzE2OCA0LjQzNzUgMi42OTUzMSA0LjU3ODEyIDIuNjk1MzEgNC43MzA0N0MyLjY5NTMxIDQuODgyODEgMi43MTY4IDUuMDE5NTMgMi43NTk3NyA1LjE0MDYyQzIuODA2NjQgNS4yNTc4MSAyLjg4MjgxIDUuMzY3MTkgMi45ODgyOCA1LjQ2ODc1QzMuMDk3NjYgNS41NzAzMSAzLjI0MDIzIDUuNjY3OTcgMy40MTYwMiA1Ljc2MTcyQzMuNTkxOCA1Ljg1MTU2IDMuODEwNTUgNS45NDMzNiA0LjA3MjI3IDYuMDM3MTFDNC40NjY4IDYuMTg1NTUgNC44MjQyMiA2LjMzOTg0IDUuMTQ0NTMgNi41QzUuNDY0ODQgNi42NTYyNSA1LjczODI4IDYuODM5ODQgNS45NjQ4NCA3LjA1MDc4QzYuMTk1MzEgNy4yNTc4MSA2LjM3MTA5IDcuNSA2LjQ5MjE5IDcuNzc3MzRDNi42MTcxOSA4LjA1MDc4IDYuNjc5NjkgOC4zNzUgNi42Nzk2OSA4Ljc1QzYuNjc5NjkgOS4wOTM3NSA2LjYyMzA1IDkuNDA0MyA2LjUwOTc3IDkuNjgxNjRDNi4zOTY0OCA5Ljk1NTA4IDYuMjM0MzggMTAuMTkxNCA2LjAyMzQ0IDEwLjM5MDZDNS44MTI1IDEwLjU4OTggNS41NTg1OSAxMC43NSA1LjI2MTcyIDEwLjg3MTFDNC45NjQ4NCAxMC45ODgzIDQuNjMyODEgMTEuMDY0NSA0LjI2NTYyIDExLjA5OTZWMTIuMjQ4SDMuMzMzOThWMTEuMDk5NkMzLjAwMTk1IDExLjA2ODQgMi42Nzk2OSAxMC45OTYxIDIuMzY3MTkgMTAuODgyOEMyLjA1NDY5IDEwLjc2NTYgMS43NzczNCAxMC41OTc3IDEuNTM1MTYgMTAuMzc4OUMxLjI5Njg4IDEwLjE2MDIgMS4xMDU0NyA5Ljg4NDc3IDAuOTYwOTM4IDkuNTUyNzNDMC44MTY0MDYgOS4yMTY4IDAuNzQ0MTQxIDguODE0NDUgMC43NDQxNDEgOC4zNDU3SDIuMzc4OTFDMi4zNzg5MSA4LjYyNjk1IDIuNDE5OTIgOC44NjMyOCAyLjUwMTk1IDkuMDU0NjlDMi41ODM5OCA5LjI0MjE5IDIuNjg5NDUgOS4zOTI1OCAyLjgxODM2IDkuNTA1ODZDMi45NTExNyA5LjYxNTIzIDMuMTAxNTYgOS42OTMzNiAzLjI2OTUzIDkuNzQwMjNDMy40Mzc1IDkuNzg3MTEgMy42MDkzOCA5LjgxMDU1IDMuNzg1MTYgOS44MTA1NUM0LjIwMzEyIDkuODEwNTUgNC41MTk1MyA5LjcxMjg5IDQuNzM0MzggOS41MTc1OEM0Ljk0OTIyIDkuMzIyMjcgNS4wNTY2NCA5LjA3MDMxIDUuMDU2NjQgOC43NjE3MlpNMTMuNDE4IDEyLjI3MTVIOC4wNzQyMlYxMUgxMy40MThWMTIuMjcxNVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMuOTUyNjQgNikiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=);
|
||
--jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtdGV4dC1lZGl0b3ItaWNvbi1jb2xvciBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xNSAxNUgzdjJoMTJ2LTJ6bTAtOEgzdjJoMTJWN3pNMyAxM2gxOHYtMkgzdjJ6bTAgOGgxOHYtMkgzdjJ6TTMgM3YyaDE4VjNIM3oiLz4KPC9zdmc+Cg==);
|
||
--jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4K);
|
||
--jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K);
|
||
--jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-user: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE2IDdhNCA0IDAgMTEtOCAwIDQgNCAwIDAxOCAwek0xMiAxNGE3IDcgMCAwMC03IDdoMTRhNyA3IDAgMDAtNy03eiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-users: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDM2IDI0IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogPGcgY2xhc3M9ImpwLWljb24zIiB0cmFuc2Zvcm09Im1hdHJpeCgxLjczMjcgMCAwIDEuNzMyNyAtMy42MjgyIC4wOTk1NzcpIiBmaWxsPSIjNjE2MTYxIj4KICA8cGF0aCB0cmFuc2Zvcm09Im1hdHJpeCgxLjUsMCwwLDEuNSwwLC02KSIgZD0ibTEyLjE4NiA3LjUwOThjLTEuMDUzNSAwLTEuOTc1NyAwLjU2NjUtMi40Nzg1IDEuNDEwMiAwLjc1MDYxIDAuMzEyNzcgMS4zOTc0IDAuODI2NDggMS44NzMgMS40NzI3aDMuNDg2M2MwLTEuNTkyLTEuMjg4OS0yLjg4MjgtMi44ODA5LTIuODgyOHoiLz4KICA8cGF0aCBkPSJtMjAuNDY1IDIuMzg5NWEyLjE4ODUgMi4xODg1IDAgMCAxLTIuMTg4NCAyLjE4ODUgMi4xODg1IDIuMTg4NSAwIDAgMS0yLjE4ODUtMi4xODg1IDIuMTg4NSAyLjE4ODUgMCAwIDEgMi4xODg1LTIuMTg4NSAyLjE4ODUgMi4xODg1IDAgMCAxIDIuMTg4NCAyLjE4ODV6Ii8+CiAgPHBhdGggdHJhbnNmb3JtPSJtYXRyaXgoMS41LDAsMCwxLjUsMCwtNikiIGQ9Im0zLjU4OTggOC40MjE5Yy0xLjExMjYgMC0yLjAxMzcgMC45MDExMS0yLjAxMzcgMi4wMTM3aDIuODE0NWMwLjI2Nzk3LTAuMzczMDkgMC41OTA3LTAuNzA0MzUgMC45NTg5OC0wLjk3ODUyLTAuMzQ0MzMtMC42MTY4OC0xLjAwMzEtMS4wMzUyLTEuNzU5OC0xLjAzNTJ6Ii8+CiAgPHBhdGggZD0ibTYuOTE1NCA0LjYyM2ExLjUyOTQgMS41Mjk0IDAgMCAxLTEuNTI5NCAxLjUyOTQgMS41Mjk0IDEuNTI5NCAwIDAgMS0xLjUyOTQtMS41Mjk0IDEuNTI5NCAxLjUyOTQgMCAwIDEgMS41Mjk0LTEuNTI5NCAxLjUyOTQgMS41Mjk0IDAgMCAxIDEuNTI5NCAxLjUyOTR6Ii8+CiAgPHBhdGggZD0ibTYuMTM1IDEzLjUzNWMwLTMuMjM5MiAyLjYyNTktNS44NjUgNS44NjUtNS44NjUgMy4yMzkyIDAgNS44NjUgMi42MjU5IDUuODY1IDUuODY1eiIvPgogIDxjaXJjbGUgY3g9IjEyIiBjeT0iMy43Njg1IiByPSIyLjk2ODUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-word: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KIDxnIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzQxNDE0MSI+CiAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiA8L2c+CiA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSguNDMgLjA0MDEpIiBmaWxsPSIjZmZmIj4KICA8cGF0aCBkPSJtNC4xNCA4Ljc2cTAuMDY4Mi0xLjg5IDIuNDItMS44OSAxLjE2IDAgMS42OCAwLjQyIDAuNTY3IDAuNDEgMC41NjcgMS4xNnYzLjQ3cTAgMC40NjIgMC41MTQgMC40NjIgMC4xMDMgMCAwLjItMC4wMjMxdjAuNzE0cS0wLjM5OSAwLjEwMy0wLjY1MSAwLjEwMy0wLjQ1MiAwLTAuNjkzLTAuMjItMC4yMzEtMC4yLTAuMjg0LTAuNjYyLTAuOTU2IDAuODcyLTIgMC44NzItMC45MDMgMC0xLjQ3LTAuNDcyLTAuNTI1LTAuNDcyLTAuNTI1LTEuMjYgMC0wLjI2MiAwLjA0NTItMC40NzIgMC4wNTY3LTAuMjIgMC4xMTYtMC4zNzggMC4wNjgyLTAuMTY4IDAuMjMxLTAuMzA0IDAuMTU4LTAuMTQ3IDAuMjYyLTAuMjQyIDAuMTE2LTAuMDkxNCAwLjM2OC0wLjE2OCAwLjI2Mi0wLjA5MTQgMC4zOTktMC4xMjYgMC4xMzYtMC4wNDUyIDAuNDcyLTAuMTAzIDAuMzM2LTAuMDU3OCAwLjUwNC0wLjA3OTggMC4xNTgtMC4wMjMxIDAuNTY3LTAuMDc5OCAwLjU1Ni0wLjA2ODIgMC43NzctMC4yMjEgMC4yMi0wLjE1MiAwLjIyLTAuNDQxdi0wLjI1MnEwLTAuNDMtMC4zNTctMC42NjItMC4zMzYtMC4yMzEtMC45NzYtMC4yMzEtMC42NjIgMC0wLjk5OCAwLjI2Mi0wLjMzNiAwLjI1Mi0wLjM5OSAwLjc5OHptMS44OSAzLjY4cTAuNzg4IDAgMS4yNi0wLjQxIDAuNTA0LTAuNDIgMC41MDQtMC45MDN2LTEuMDVxLTAuMjg0IDAuMTM2LTAuODYxIDAuMjMxLTAuNTY3IDAuMDkxNC0wLjk4NyAwLjE1OC0wLjQyIDAuMDY4Mi0wLjc2NiAwLjMyNi0wLjMzNiAwLjI1Mi0wLjMzNiAwLjcwNHQwLjMwNCAwLjcwNCAwLjg2MSAwLjI1MnoiIHN0cm9rZS13aWR0aD0iMS4wNSIvPgogIDxwYXRoIGQ9Im0xMCA0LjU2aDAuOTQ1djMuMTVxMC42NTEtMC45NzYgMS44OS0wLjk3NiAxLjE2IDAgMS44OSAwLjg0IDAuNjgyIDAuODQgMC42ODIgMi4zMSAwIDEuNDctMC43MDQgMi40Mi0wLjcwNCAwLjg4Mi0xLjg5IDAuODgyLTEuMjYgMC0xLjg5LTEuMDJ2MC43NjZoLTAuODV6bTIuNjIgMy4wNHEtMC43NDYgMC0xLjE2IDAuNjQtMC40NTIgMC42My0wLjQ1MiAxLjY4IDAgMS4wNSAwLjQ1MiAxLjY4dDEuMTYgMC42M3EwLjc3NyAwIDEuMjYtMC42MyAwLjQ5NC0wLjY0IDAuNDk0LTEuNjggMC0xLjA1LTAuNDcyLTEuNjgtMC40NjItMC42NC0xLjI2LTAuNjR6IiBzdHJva2Utd2lkdGg9IjEuMDUiLz4KICA8cGF0aCBkPSJtMi43MyAxNS44IDEzLjYgMC4wMDgxYzAuMDA2OSAwIDAtMi42IDAtMi42IDAtMC4wMDc4LTEuMTUgMC0xLjE1IDAtMC4wMDY5IDAtMC4wMDgzIDEuNS0wLjAwODMgMS41LTJlLTMgLTAuMDAxNC0xMS4zLTAuMDAxNC0xMS4zLTAuMDAxNGwtMC4wMDU5Mi0xLjVjMC0wLjAwNzgtMS4xNyAwLjAwMTMtMS4xNyAwLjAwMTN6IiBzdHJva2Utd2lkdGg9Ii45NzUiLz4KIDwvZz4KPC9zdmc+Cg==);
|
||
--jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K);
|
||
}
|
||
|
||
/* Icon CSS class declarations */
|
||
|
||
.jp-AddAboveIcon {
|
||
background-image: var(--jp-icon-add-above);
|
||
}
|
||
|
||
.jp-AddBelowIcon {
|
||
background-image: var(--jp-icon-add-below);
|
||
}
|
||
|
||
.jp-AddIcon {
|
||
background-image: var(--jp-icon-add);
|
||
}
|
||
|
||
.jp-BellIcon {
|
||
background-image: var(--jp-icon-bell);
|
||
}
|
||
|
||
.jp-BugDotIcon {
|
||
background-image: var(--jp-icon-bug-dot);
|
||
}
|
||
|
||
.jp-BugIcon {
|
||
background-image: var(--jp-icon-bug);
|
||
}
|
||
|
||
.jp-BuildIcon {
|
||
background-image: var(--jp-icon-build);
|
||
}
|
||
|
||
.jp-CaretDownEmptyIcon {
|
||
background-image: var(--jp-icon-caret-down-empty);
|
||
}
|
||
|
||
.jp-CaretDownEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-down-empty-thin);
|
||
}
|
||
|
||
.jp-CaretDownIcon {
|
||
background-image: var(--jp-icon-caret-down);
|
||
}
|
||
|
||
.jp-CaretLeftIcon {
|
||
background-image: var(--jp-icon-caret-left);
|
||
}
|
||
|
||
.jp-CaretRightIcon {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
.jp-CaretUpEmptyThinIcon {
|
||
background-image: var(--jp-icon-caret-up-empty-thin);
|
||
}
|
||
|
||
.jp-CaretUpIcon {
|
||
background-image: var(--jp-icon-caret-up);
|
||
}
|
||
|
||
.jp-CaseSensitiveIcon {
|
||
background-image: var(--jp-icon-case-sensitive);
|
||
}
|
||
|
||
.jp-CheckIcon {
|
||
background-image: var(--jp-icon-check);
|
||
}
|
||
|
||
.jp-CircleEmptyIcon {
|
||
background-image: var(--jp-icon-circle-empty);
|
||
}
|
||
|
||
.jp-CircleIcon {
|
||
background-image: var(--jp-icon-circle);
|
||
}
|
||
|
||
.jp-ClearIcon {
|
||
background-image: var(--jp-icon-clear);
|
||
}
|
||
|
||
.jp-CloseIcon {
|
||
background-image: var(--jp-icon-close);
|
||
}
|
||
|
||
.jp-CodeCheckIcon {
|
||
background-image: var(--jp-icon-code-check);
|
||
}
|
||
|
||
.jp-CodeIcon {
|
||
background-image: var(--jp-icon-code);
|
||
}
|
||
|
||
.jp-CollapseAllIcon {
|
||
background-image: var(--jp-icon-collapse-all);
|
||
}
|
||
|
||
.jp-ConsoleIcon {
|
||
background-image: var(--jp-icon-console);
|
||
}
|
||
|
||
.jp-CopyIcon {
|
||
background-image: var(--jp-icon-copy);
|
||
}
|
||
|
||
.jp-CopyrightIcon {
|
||
background-image: var(--jp-icon-copyright);
|
||
}
|
||
|
||
.jp-CutIcon {
|
||
background-image: var(--jp-icon-cut);
|
||
}
|
||
|
||
.jp-DeleteIcon {
|
||
background-image: var(--jp-icon-delete);
|
||
}
|
||
|
||
.jp-DownloadIcon {
|
||
background-image: var(--jp-icon-download);
|
||
}
|
||
|
||
.jp-DuplicateIcon {
|
||
background-image: var(--jp-icon-duplicate);
|
||
}
|
||
|
||
.jp-EditIcon {
|
||
background-image: var(--jp-icon-edit);
|
||
}
|
||
|
||
.jp-EllipsesIcon {
|
||
background-image: var(--jp-icon-ellipses);
|
||
}
|
||
|
||
.jp-ErrorIcon {
|
||
background-image: var(--jp-icon-error);
|
||
}
|
||
|
||
.jp-ExpandAllIcon {
|
||
background-image: var(--jp-icon-expand-all);
|
||
}
|
||
|
||
.jp-ExtensionIcon {
|
||
background-image: var(--jp-icon-extension);
|
||
}
|
||
|
||
.jp-FastForwardIcon {
|
||
background-image: var(--jp-icon-fast-forward);
|
||
}
|
||
|
||
.jp-FileIcon {
|
||
background-image: var(--jp-icon-file);
|
||
}
|
||
|
||
.jp-FileUploadIcon {
|
||
background-image: var(--jp-icon-file-upload);
|
||
}
|
||
|
||
.jp-FilterDotIcon {
|
||
background-image: var(--jp-icon-filter-dot);
|
||
}
|
||
|
||
.jp-FilterIcon {
|
||
background-image: var(--jp-icon-filter);
|
||
}
|
||
|
||
.jp-FilterListIcon {
|
||
background-image: var(--jp-icon-filter-list);
|
||
}
|
||
|
||
.jp-FolderFavoriteIcon {
|
||
background-image: var(--jp-icon-folder-favorite);
|
||
}
|
||
|
||
.jp-FolderIcon {
|
||
background-image: var(--jp-icon-folder);
|
||
}
|
||
|
||
.jp-HomeIcon {
|
||
background-image: var(--jp-icon-home);
|
||
}
|
||
|
||
.jp-Html5Icon {
|
||
background-image: var(--jp-icon-html5);
|
||
}
|
||
|
||
.jp-ImageIcon {
|
||
background-image: var(--jp-icon-image);
|
||
}
|
||
|
||
.jp-InfoIcon {
|
||
background-image: var(--jp-icon-info);
|
||
}
|
||
|
||
.jp-InspectorIcon {
|
||
background-image: var(--jp-icon-inspector);
|
||
}
|
||
|
||
.jp-JsonIcon {
|
||
background-image: var(--jp-icon-json);
|
||
}
|
||
|
||
.jp-JuliaIcon {
|
||
background-image: var(--jp-icon-julia);
|
||
}
|
||
|
||
.jp-JupyterFaviconIcon {
|
||
background-image: var(--jp-icon-jupyter-favicon);
|
||
}
|
||
|
||
.jp-JupyterIcon {
|
||
background-image: var(--jp-icon-jupyter);
|
||
}
|
||
|
||
.jp-JupyterlabWordmarkIcon {
|
||
background-image: var(--jp-icon-jupyterlab-wordmark);
|
||
}
|
||
|
||
.jp-KernelIcon {
|
||
background-image: var(--jp-icon-kernel);
|
||
}
|
||
|
||
.jp-KeyboardIcon {
|
||
background-image: var(--jp-icon-keyboard);
|
||
}
|
||
|
||
.jp-LaunchIcon {
|
||
background-image: var(--jp-icon-launch);
|
||
}
|
||
|
||
.jp-LauncherIcon {
|
||
background-image: var(--jp-icon-launcher);
|
||
}
|
||
|
||
.jp-LineFormIcon {
|
||
background-image: var(--jp-icon-line-form);
|
||
}
|
||
|
||
.jp-LinkIcon {
|
||
background-image: var(--jp-icon-link);
|
||
}
|
||
|
||
.jp-ListIcon {
|
||
background-image: var(--jp-icon-list);
|
||
}
|
||
|
||
.jp-MarkdownIcon {
|
||
background-image: var(--jp-icon-markdown);
|
||
}
|
||
|
||
.jp-MoveDownIcon {
|
||
background-image: var(--jp-icon-move-down);
|
||
}
|
||
|
||
.jp-MoveUpIcon {
|
||
background-image: var(--jp-icon-move-up);
|
||
}
|
||
|
||
.jp-NewFolderIcon {
|
||
background-image: var(--jp-icon-new-folder);
|
||
}
|
||
|
||
.jp-NotTrustedIcon {
|
||
background-image: var(--jp-icon-not-trusted);
|
||
}
|
||
|
||
.jp-NotebookIcon {
|
||
background-image: var(--jp-icon-notebook);
|
||
}
|
||
|
||
.jp-NumberingIcon {
|
||
background-image: var(--jp-icon-numbering);
|
||
}
|
||
|
||
.jp-OfflineBoltIcon {
|
||
background-image: var(--jp-icon-offline-bolt);
|
||
}
|
||
|
||
.jp-PaletteIcon {
|
||
background-image: var(--jp-icon-palette);
|
||
}
|
||
|
||
.jp-PasteIcon {
|
||
background-image: var(--jp-icon-paste);
|
||
}
|
||
|
||
.jp-PdfIcon {
|
||
background-image: var(--jp-icon-pdf);
|
||
}
|
||
|
||
.jp-PythonIcon {
|
||
background-image: var(--jp-icon-python);
|
||
}
|
||
|
||
.jp-RKernelIcon {
|
||
background-image: var(--jp-icon-r-kernel);
|
||
}
|
||
|
||
.jp-ReactIcon {
|
||
background-image: var(--jp-icon-react);
|
||
}
|
||
|
||
.jp-RedoIcon {
|
||
background-image: var(--jp-icon-redo);
|
||
}
|
||
|
||
.jp-RefreshIcon {
|
||
background-image: var(--jp-icon-refresh);
|
||
}
|
||
|
||
.jp-RegexIcon {
|
||
background-image: var(--jp-icon-regex);
|
||
}
|
||
|
||
.jp-RunIcon {
|
||
background-image: var(--jp-icon-run);
|
||
}
|
||
|
||
.jp-RunningIcon {
|
||
background-image: var(--jp-icon-running);
|
||
}
|
||
|
||
.jp-SaveIcon {
|
||
background-image: var(--jp-icon-save);
|
||
}
|
||
|
||
.jp-SearchIcon {
|
||
background-image: var(--jp-icon-search);
|
||
}
|
||
|
||
.jp-SettingsIcon {
|
||
background-image: var(--jp-icon-settings);
|
||
}
|
||
|
||
.jp-ShareIcon {
|
||
background-image: var(--jp-icon-share);
|
||
}
|
||
|
||
.jp-SpreadsheetIcon {
|
||
background-image: var(--jp-icon-spreadsheet);
|
||
}
|
||
|
||
.jp-StopIcon {
|
||
background-image: var(--jp-icon-stop);
|
||
}
|
||
|
||
.jp-TabIcon {
|
||
background-image: var(--jp-icon-tab);
|
||
}
|
||
|
||
.jp-TableRowsIcon {
|
||
background-image: var(--jp-icon-table-rows);
|
||
}
|
||
|
||
.jp-TagIcon {
|
||
background-image: var(--jp-icon-tag);
|
||
}
|
||
|
||
.jp-TerminalIcon {
|
||
background-image: var(--jp-icon-terminal);
|
||
}
|
||
|
||
.jp-TextEditorIcon {
|
||
background-image: var(--jp-icon-text-editor);
|
||
}
|
||
|
||
.jp-TocIcon {
|
||
background-image: var(--jp-icon-toc);
|
||
}
|
||
|
||
.jp-TreeViewIcon {
|
||
background-image: var(--jp-icon-tree-view);
|
||
}
|
||
|
||
.jp-TrustedIcon {
|
||
background-image: var(--jp-icon-trusted);
|
||
}
|
||
|
||
.jp-UndoIcon {
|
||
background-image: var(--jp-icon-undo);
|
||
}
|
||
|
||
.jp-UserIcon {
|
||
background-image: var(--jp-icon-user);
|
||
}
|
||
|
||
.jp-UsersIcon {
|
||
background-image: var(--jp-icon-users);
|
||
}
|
||
|
||
.jp-VegaIcon {
|
||
background-image: var(--jp-icon-vega);
|
||
}
|
||
|
||
.jp-WordIcon {
|
||
background-image: var(--jp-icon-word);
|
||
}
|
||
|
||
.jp-YamlIcon {
|
||
background-image: var(--jp-icon-yaml);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* (DEPRECATED) Support for consuming icons as CSS background images
|
||
*/
|
||
|
||
.jp-Icon,
|
||
.jp-MaterialIcon {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-cover {
|
||
background-position: center;
|
||
background-repeat: no-repeat;
|
||
background-size: cover;
|
||
}
|
||
|
||
/**
|
||
* (DEPRECATED) Support for specific CSS icon sizes
|
||
*/
|
||
|
||
.jp-Icon-16 {
|
||
background-size: 16px;
|
||
min-width: 16px;
|
||
min-height: 16px;
|
||
}
|
||
|
||
.jp-Icon-18 {
|
||
background-size: 18px;
|
||
min-width: 18px;
|
||
min-height: 18px;
|
||
}
|
||
|
||
.jp-Icon-20 {
|
||
background-size: 20px;
|
||
min-width: 20px;
|
||
min-height: 20px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-TabBar .lm-TabBar-addButton {
|
||
align-items: center;
|
||
display: flex;
|
||
padding: 4px;
|
||
padding-bottom: 5px;
|
||
margin-right: 1px;
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-TabBar .lm-TabBar-addButton:hover {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-tab {
|
||
width: var(--jp-private-horizontal-tab-width);
|
||
}
|
||
|
||
.lm-DockPanel-tabBar .lm-TabBar-content {
|
||
flex: unset;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar[data-orientation='horizontal'] {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-accent0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-none[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-none[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/* brand icon colors. Same for light and dark */
|
||
.jp-icon-brand0[fill] {
|
||
fill: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[fill] {
|
||
fill: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[fill] {
|
||
fill: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[fill] {
|
||
fill: var(--jp-brand-color4);
|
||
}
|
||
|
||
.jp-icon-brand0[stroke] {
|
||
stroke: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-icon-brand1[stroke] {
|
||
stroke: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-icon-brand2[stroke] {
|
||
stroke: var(--jp-brand-color2);
|
||
}
|
||
|
||
.jp-icon-brand3[stroke] {
|
||
stroke: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-icon-brand4[stroke] {
|
||
stroke: var(--jp-brand-color4);
|
||
}
|
||
|
||
/* warn icon colors. Same for light and dark */
|
||
.jp-icon-warn0[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[fill] {
|
||
fill: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[fill] {
|
||
fill: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[fill] {
|
||
fill: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-icon-warn0[stroke] {
|
||
stroke: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-icon-warn1[stroke] {
|
||
stroke: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-icon-warn2[stroke] {
|
||
stroke: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-icon-warn3[stroke] {
|
||
stroke: var(--jp-warn-color3);
|
||
}
|
||
|
||
/* icon colors that contrast well with each other and most backgrounds */
|
||
.jp-icon-contrast0[fill] {
|
||
fill: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[fill] {
|
||
fill: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[fill] {
|
||
fill: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[fill] {
|
||
fill: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-contrast0[stroke] {
|
||
stroke: var(--jp-icon-contrast-color0);
|
||
}
|
||
|
||
.jp-icon-contrast1[stroke] {
|
||
stroke: var(--jp-icon-contrast-color1);
|
||
}
|
||
|
||
.jp-icon-contrast2[stroke] {
|
||
stroke: var(--jp-icon-contrast-color2);
|
||
}
|
||
|
||
.jp-icon-contrast3[stroke] {
|
||
stroke: var(--jp-icon-contrast-color3);
|
||
}
|
||
|
||
.jp-icon-dot[fill] {
|
||
fill: var(--jp-warn-color0);
|
||
}
|
||
|
||
.jp-jupyter-icon-color[fill] {
|
||
fill: var(--jp-jupyter-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-notebook-icon-color[fill] {
|
||
fill: var(--jp-notebook-icon-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-json-icon-color[fill] {
|
||
fill: var(--jp-json-icon-color, var(--jp-warn-color1));
|
||
}
|
||
|
||
.jp-console-icon-color[fill] {
|
||
fill: var(--jp-console-icon-color, white);
|
||
}
|
||
|
||
.jp-console-icon-background-color[fill] {
|
||
fill: var(--jp-console-icon-background-color, var(--jp-brand-color1));
|
||
}
|
||
|
||
.jp-terminal-icon-color[fill] {
|
||
fill: var(--jp-terminal-icon-color, var(--jp-layout-color2));
|
||
}
|
||
|
||
.jp-terminal-icon-background-color[fill] {
|
||
fill: var(
|
||
--jp-terminal-icon-background-color,
|
||
var(--jp-inverse-layout-color2)
|
||
);
|
||
}
|
||
|
||
.jp-text-editor-icon-color[fill] {
|
||
fill: var(--jp-text-editor-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
.jp-inspector-icon-color[fill] {
|
||
fill: var(--jp-inspector-icon-color, var(--jp-inverse-layout-color3));
|
||
}
|
||
|
||
/* CSS for icons in selected filebrowser listing items */
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* stylelint-disable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/**
|
||
* TODO: come up with non css-hack solution for showing the busy icon on top
|
||
* of the close icon
|
||
* CSS for complex behavior of close icon of tabs in the main area tabbar
|
||
*/
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon3[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.lm-DockPanel-tabBar
|
||
.lm-TabBar-tab.lm-mod-closable.jp-mod-dirty
|
||
> .lm-TabBar-tabCloseIcon
|
||
> :not(:hover)
|
||
> .jp-icon-busy[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-class, selector-max-compound-selectors */
|
||
|
||
/* CSS for icons in status bar */
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] {
|
||
fill: #fff;
|
||
}
|
||
|
||
#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] {
|
||
fill: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* special handling for splash icon CSS. While the theme CSS reloads during
|
||
splash, the splash icon can loose theming. To prevent that, we set a
|
||
default for its color variable */
|
||
:root {
|
||
--jp-warn-color0: var(--md-orange-700);
|
||
}
|
||
|
||
/* not sure what to do with this one, used in filebrowser listing */
|
||
.jp-DragIcon {
|
||
margin-right: 4px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/**
|
||
* Support for alt colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/* alt recolor the primary elements of an icon */
|
||
.jp-icon-alt .jp-icon0[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon0[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon1[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon2[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon3[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon4[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* alt recolor the accent elements of an icon */
|
||
.jp-icon-alt .jp-icon-accent0[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent0[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent1[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent2[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent3[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-alt .jp-icon-accent4[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-icon-hoverShow:not(:hover) .jp-icon-hoverShow-content {
|
||
display: none !important;
|
||
}
|
||
|
||
/**
|
||
* Support for hover colors for icons as inline SVG HTMLElements
|
||
*/
|
||
|
||
/**
|
||
* regular colors
|
||
*/
|
||
|
||
/* recolor the primary elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/* recolor the accent elements of an icon */
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* set the color of an icon to transparent */
|
||
.jp-icon-hover :hover .jp-icon-none-hover[fill] {
|
||
fill: none;
|
||
}
|
||
|
||
.jp-icon-hover :hover .jp-icon-none-hover[stroke] {
|
||
stroke: none;
|
||
}
|
||
|
||
/**
|
||
* inverse colors
|
||
*/
|
||
|
||
/* inverse recolor the primary elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] {
|
||
fill: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] {
|
||
fill: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] {
|
||
fill: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] {
|
||
fill: var(--jp-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] {
|
||
stroke: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] {
|
||
stroke: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] {
|
||
stroke: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] {
|
||
stroke: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] {
|
||
stroke: var(--jp-layout-color4);
|
||
}
|
||
|
||
/* inverse recolor the accent elements of an icon */
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] {
|
||
fill: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color0);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color2);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] {
|
||
stroke: var(--jp-inverse-layout-color4);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-IFrame {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-IFrame > iframe {
|
||
border: none;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-IFrame {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-IFrame::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-HoverBox {
|
||
position: fixed;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FormGroup-content fieldset {
|
||
border: none;
|
||
padding: 0;
|
||
min-width: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* stylelint-disable selector-max-type */
|
||
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper input,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper select,
|
||
.jp-FormGroup-content fieldset .jp-inputFieldWrapper textarea {
|
||
font-size: var(--jp-content-font-size2);
|
||
border-color: var(--jp-input-border-color);
|
||
border-style: solid;
|
||
border-radius: var(--jp-border-radius);
|
||
border-width: 1px;
|
||
padding: 6px 8px;
|
||
background: none;
|
||
color: var(--jp-ui-font-color0);
|
||
height: inherit;
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input[type='checkbox'] {
|
||
position: relative;
|
||
top: 2px;
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content button.jp-mod-styled {
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-FormGroup-content .checkbox label {
|
||
cursor: pointer;
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > legend {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-root > fieldset > p {
|
||
display: none;
|
||
}
|
||
|
||
/** copy of `input.jp-mod-styled:focus` style */
|
||
.jp-FormGroup-content fieldset input:focus,
|
||
.jp-FormGroup-content fieldset select:focus {
|
||
-moz-outline-radius: unset;
|
||
outline: var(--jp-border-width) solid var(--md-blue-500);
|
||
outline-offset: -1px;
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-FormGroup-content fieldset input:hover:not(:focus),
|
||
.jp-FormGroup-content fieldset select:hover:not(:focus) {
|
||
background-color: var(--jp-border-color2);
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type */
|
||
|
||
.jp-FormGroup-content .checkbox .field-description {
|
||
/* Disable default description field for checkbox:
|
||
because other widgets do not have description fields,
|
||
we add descriptions to each widget on the field level.
|
||
*/
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content #root__description {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator {
|
||
width: 5px;
|
||
background-color: var(--jp-brand-color2);
|
||
margin-top: 0;
|
||
margin-left: calc(var(--jp-private-settingeditor-modifier-indent) * -1);
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.jp-FormGroup-content .jp-modifiedIndicator.jp-errorIndicator {
|
||
background-color: var(--jp-error-color0);
|
||
margin-right: 0.5em;
|
||
}
|
||
|
||
/* RJSF ARRAY style */
|
||
|
||
.jp-arrayFieldWrapper legend {
|
||
font-size: var(--jp-content-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
flex-basis: 100%;
|
||
padding: 4px 0;
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
border-bottom: 1px solid var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .field-description {
|
||
padding: 4px 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-arrayFieldWrapper .array-item {
|
||
width: 100%;
|
||
border: 1px solid var(--jp-border-color2);
|
||
border-radius: 4px;
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-ArrayOperations {
|
||
display: flex;
|
||
margin-left: 8px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton {
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-ArrayOperationsButton .jp-icon3[fill] {
|
||
fill: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
button.jp-ArrayOperationsButton.jp-mod-styled:disabled {
|
||
cursor: not-allowed;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
/* RJSF form validation error */
|
||
|
||
.jp-FormGroup-content .validationErrors {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
/* Hide panel level error as duplicated the field level error */
|
||
.jp-FormGroup-content .panel.errors {
|
||
display: none;
|
||
}
|
||
|
||
/* RJSF normal content (settings-editor) */
|
||
|
||
.jp-FormGroup-contentNormal {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-contentItem {
|
||
margin-left: 7px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-description {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-default {
|
||
flex-basis: 100%;
|
||
padding: 4px 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-FormGroup-fieldLabel {
|
||
font-size: var(--jp-content-font-size1);
|
||
font-weight: normal;
|
||
min-width: 120px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal fieldset:not(:first-child) {
|
||
margin-left: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .field-array-of-string .array-item {
|
||
/* Display `jp-ArrayOperations` buttons side-by-side with content except
|
||
for small screens where flex-wrap will place them one below the other.
|
||
*/
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
}
|
||
|
||
.jp-FormGroup-contentNormal .jp-objectFieldWrapper .form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
/* RJSF compact content (metadata-form) */
|
||
|
||
.jp-FormGroup-content.jp-FormGroup-contentCompact {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .form-group {
|
||
display: flex;
|
||
padding: 0.5em 0.2em 0.5em 0;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-FormGroup-compactTitle
|
||
.jp-FormGroup-description {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-FormGroup-fieldLabel {
|
||
padding-bottom: 0.3em;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-inputFieldWrapper .form-control {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact .jp-arrayFieldWrapper .jp-FormGroup-compactTitle {
|
||
padding-bottom: 7px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact
|
||
.jp-objectFieldWrapper
|
||
.jp-objectFieldWrapper
|
||
.form-group {
|
||
padding: 2px 8px 2px var(--jp-private-settingeditor-modifier-indent);
|
||
margin-top: 2px;
|
||
}
|
||
|
||
.jp-FormGroup-contentCompact ul.error-detail {
|
||
margin-block-start: 0.5em;
|
||
margin-block-end: 0.5em;
|
||
padding-inline-start: 1em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-SidePanel {
|
||
display: flex;
|
||
flex-direction: column;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
overflow-y: auto;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-SidePanel-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color2);
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin: 0;
|
||
padding: 2px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-SidePanel-content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-SidePanel-toolbar,
|
||
.jp-AccordionPanel-toolbar {
|
||
height: var(--jp-private-toolbar-height);
|
||
}
|
||
|
||
.jp-SidePanel-toolbar.jp-Toolbar-micro {
|
||
display: none;
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-title {
|
||
box-sizing: border-box;
|
||
line-height: 25px;
|
||
margin: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
font-size: var(--jp-ui-font-size0);
|
||
}
|
||
|
||
.jp-AccordionPanel-title {
|
||
cursor: pointer;
|
||
user-select: none;
|
||
-moz-user-select: none;
|
||
-webkit-user-select: none;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-AccordionPanel[data-orientation='horizontal'] > .jp-AccordionPanel-title {
|
||
/* Title is rotated for horizontal accordion panel using CSS */
|
||
display: block;
|
||
transform-origin: top left;
|
||
transform: rotate(-90deg) translate(-100%);
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleLabel {
|
||
user-select: none;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-AccordionPanel-title .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(-90deg);
|
||
margin: auto 0;
|
||
height: 16px;
|
||
}
|
||
|
||
.jp-AccordionPanel-title.lm-mod-expanded .lm-AccordionPanel-titleCollapser {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
.lm-AccordionPanel .jp-AccordionPanel-toolbar {
|
||
background: none;
|
||
box-shadow: none;
|
||
border: none;
|
||
margin-left: auto;
|
||
}
|
||
|
||
.lm-AccordionPanel .lm-SplitPanel-handle:hover {
|
||
background: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-text-truncated {
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Spinner {
|
||
position: absolute;
|
||
display: flex;
|
||
justify-content: center;
|
||
align-items: center;
|
||
z-index: 10;
|
||
left: 0;
|
||
top: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-layout-color0);
|
||
outline: none;
|
||
}
|
||
|
||
.jp-SpinnerContent {
|
||
font-size: 10px;
|
||
margin: 50px auto;
|
||
text-indent: -9999em;
|
||
width: 3em;
|
||
height: 3em;
|
||
border-radius: 50%;
|
||
background: var(--jp-brand-color3);
|
||
background: linear-gradient(
|
||
to right,
|
||
#f37626 10%,
|
||
rgba(255, 255, 255, 0) 42%
|
||
);
|
||
position: relative;
|
||
animation: load3 1s infinite linear, fadeIn 1s;
|
||
}
|
||
|
||
.jp-SpinnerContent::before {
|
||
width: 50%;
|
||
height: 50%;
|
||
background: #f37626;
|
||
border-radius: 100% 0 0;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
content: '';
|
||
}
|
||
|
||
.jp-SpinnerContent::after {
|
||
background: var(--jp-layout-color0);
|
||
width: 75%;
|
||
height: 75%;
|
||
border-radius: 50%;
|
||
content: '';
|
||
margin: auto;
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
bottom: 0;
|
||
right: 0;
|
||
}
|
||
|
||
@keyframes fadeIn {
|
||
0% {
|
||
opacity: 0;
|
||
}
|
||
|
||
100% {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
@keyframes load3 {
|
||
0% {
|
||
transform: rotate(0deg);
|
||
}
|
||
|
||
100% {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
button.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
text-align: center;
|
||
line-height: 32px;
|
||
height: 32px;
|
||
padding: 0 12px;
|
||
letter-spacing: 0.8px;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input.jp-mod-styled {
|
||
background: var(--jp-input-background);
|
||
height: 28px;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
padding-left: 7px;
|
||
padding-right: 7px;
|
||
font-size: var(--jp-ui-font-size2);
|
||
color: var(--jp-ui-font-color0);
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
input[type='checkbox'].jp-mod-styled {
|
||
appearance: checkbox;
|
||
-webkit-appearance: checkbox;
|
||
-moz-appearance: checkbox;
|
||
height: auto;
|
||
}
|
||
|
||
input.jp-mod-styled:focus {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-select-wrapper {
|
||
display: flex;
|
||
position: relative;
|
||
flex-direction: column;
|
||
padding: 1px;
|
||
background-color: var(--jp-layout-color1);
|
||
box-sizing: border-box;
|
||
margin-bottom: 12px;
|
||
}
|
||
|
||
.jp-select-wrapper:not(.multiple) {
|
||
height: 28px;
|
||
}
|
||
|
||
.jp-select-wrapper.jp-mod-focused select.jp-mod-styled {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-input-active-background);
|
||
}
|
||
|
||
select.jp-mod-styled:hover {
|
||
cursor: pointer;
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: var(--jp-input-hover-background);
|
||
box-shadow: inset 0 0 1px rgba(0, 0, 0, 0.5);
|
||
}
|
||
|
||
select.jp-mod-styled {
|
||
flex: 1 1 auto;
|
||
width: 100%;
|
||
font-size: var(--jp-ui-font-size2);
|
||
background: var(--jp-input-background);
|
||
color: var(--jp-ui-font-color0);
|
||
padding: 0 25px 0 8px;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
}
|
||
|
||
select.jp-mod-styled:not([multiple]) {
|
||
height: 32px;
|
||
}
|
||
|
||
select.jp-mod-styled[multiple] {
|
||
max-height: 200px;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-switch {
|
||
display: flex;
|
||
align-items: center;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color1);
|
||
border: none;
|
||
height: 20px;
|
||
}
|
||
|
||
.jp-switch:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-switch-label {
|
||
margin-right: 5px;
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
.jp-switch-track {
|
||
cursor: pointer;
|
||
background-color: var(--jp-switch-color, var(--jp-border-color1));
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 34px;
|
||
height: 16px;
|
||
width: 35px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-switch-track::before {
|
||
content: '';
|
||
position: absolute;
|
||
height: 10px;
|
||
width: 10px;
|
||
margin: 3px;
|
||
left: 0;
|
||
background-color: var(--jp-ui-inverse-font-color1);
|
||
-webkit-transition: 0.4s;
|
||
transition: 0.4s;
|
||
border-radius: 50%;
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track {
|
||
background-color: var(--jp-switch-true-position-color, var(--jp-warn-color0));
|
||
}
|
||
|
||
.jp-switch[aria-checked='true'] .jp-switch-track::before {
|
||
/* track width (35) - margins (3 + 3) - thumb width (10) */
|
||
left: 19px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toolbar-height: calc(
|
||
28px + var(--jp-border-width)
|
||
); /* leave 28px for content */
|
||
}
|
||
|
||
.jp-Toolbar {
|
||
color: var(--jp-ui-font-color1);
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: 2px;
|
||
z-index: 8;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
/* Toolbar items */
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer {
|
||
flex-grow: 1;
|
||
flex-shrink: 1;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Toolbar-kernelStatus {
|
||
display: inline-block;
|
||
width: 32px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
background-size: 16px;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
padding-left: 1px;
|
||
padding-right: 1px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: var(--jp-private-toolbar-height);
|
||
height: 100%;
|
||
}
|
||
|
||
/* Toolbar buttons */
|
||
|
||
/* This is the div we use to wrap the react component into a Widget */
|
||
div.jp-ToolbarButton {
|
||
color: transparent;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent {
|
||
background: var(--jp-layout-color1);
|
||
border: none;
|
||
box-sizing: border-box;
|
||
outline: none;
|
||
appearance: none;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
padding: 0 6px;
|
||
margin: 0;
|
||
height: 24px;
|
||
border-radius: var(--jp-border-radius);
|
||
display: flex;
|
||
align-items: center;
|
||
text-align: center;
|
||
font-size: 14px;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent:disabled {
|
||
opacity: 0.4;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent > span {
|
||
padding: 0;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label {
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 100%;
|
||
padding-left: 2px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar.jp-Toolbar-micro {
|
||
padding: 0;
|
||
min-height: 0;
|
||
}
|
||
|
||
#jp-main-dock-panel[data-mode='single-document']
|
||
.jp-MainAreaWidget
|
||
> .jp-Toolbar {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-WindowedPanel-outer {
|
||
position: relative;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-WindowedPanel-inner {
|
||
position: relative;
|
||
}
|
||
|
||
.jp-WindowedPanel-window {
|
||
position: absolute;
|
||
left: 0;
|
||
right: 0;
|
||
overflow: visible;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Sibling imports */
|
||
|
||
body {
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/* Disable native link decoration styles everywhere outside of dialog boxes */
|
||
a {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
a:hover {
|
||
text-decoration: unset;
|
||
color: unset;
|
||
}
|
||
|
||
/* Accessibility for links inside dialog box text */
|
||
.jp-Dialog-content a {
|
||
text-decoration: revert;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-Dialog-content a:hover {
|
||
text-decoration: revert;
|
||
}
|
||
|
||
/* Styles for ui-components */
|
||
.jp-Button {
|
||
color: var(--jp-ui-font-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
padding: 0 12px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
/* Copy from blueprint 3 */
|
||
display: inline-flex;
|
||
flex-direction: row;
|
||
border: none;
|
||
cursor: pointer;
|
||
align-items: center;
|
||
justify-content: center;
|
||
text-align: left;
|
||
vertical-align: middle;
|
||
min-height: 30px;
|
||
min-width: 30px;
|
||
}
|
||
|
||
.jp-Button:disabled {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.jp-Button:empty {
|
||
padding: 0 !important;
|
||
}
|
||
|
||
.jp-Button.jp-mod-small {
|
||
min-height: 24px;
|
||
min-width: 24px;
|
||
font-size: 12px;
|
||
padding: 0 7px;
|
||
}
|
||
|
||
/* Use our own theme for hover styles */
|
||
.jp-Button.jp-mod-minimal:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-Button.jp-mod-minimal {
|
||
background: none;
|
||
}
|
||
|
||
.jp-InputGroup {
|
||
display: block;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-InputGroup input {
|
||
box-sizing: border-box;
|
||
border: none;
|
||
border-radius: 0;
|
||
background-color: transparent;
|
||
color: var(--jp-ui-font-color0);
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
padding-bottom: 0;
|
||
padding-top: 0;
|
||
padding-left: 10px;
|
||
padding-right: 28px;
|
||
position: relative;
|
||
width: 100%;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
appearance: none;
|
||
font-size: 14px;
|
||
font-weight: 400;
|
||
height: 30px;
|
||
line-height: 30px;
|
||
outline: none;
|
||
vertical-align: middle;
|
||
}
|
||
|
||
.jp-InputGroup input:focus {
|
||
box-shadow: inset 0 0 0 var(--jp-border-width)
|
||
var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled {
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input:disabled ~ span {
|
||
cursor: not-allowed;
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroup input::placeholder,
|
||
input::placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-InputGroupAction {
|
||
position: absolute;
|
||
bottom: 1px;
|
||
right: 0;
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select {
|
||
background-color: initial;
|
||
border: none;
|
||
border-radius: 0;
|
||
box-shadow: none;
|
||
color: var(--jp-ui-font-color0);
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
height: 24px;
|
||
line-height: 14px;
|
||
padding: 0 25px 0 10px;
|
||
text-align: left;
|
||
-moz-appearance: none;
|
||
-webkit-appearance: none;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color2);
|
||
cursor: not-allowed;
|
||
resize: block;
|
||
}
|
||
|
||
.jp-HTMLSelect.jp-DefaultStyle select:disabled ~ span {
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
/* Use our own theme for hover and option styles */
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-HTMLSelect.jp-DefaultStyle select:hover,
|
||
.jp-HTMLSelect.jp-DefaultStyle select > option {
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
select {
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-StatusBar-Widget {
|
||
display: flex;
|
||
align-items: center;
|
||
background: var(--jp-layout-color2);
|
||
min-height: var(--jp-statusbar-height);
|
||
justify-content: space-between;
|
||
padding: 0 10px;
|
||
}
|
||
|
||
.jp-StatusBar-Left {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-StatusBar-Middle {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
.jp-StatusBar-Right {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row-reverse;
|
||
}
|
||
|
||
.jp-StatusBar-Item {
|
||
max-height: var(--jp-statusbar-height);
|
||
margin: 0 2px;
|
||
height: var(--jp-statusbar-height);
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
color: var(--jp-ui-font-color1);
|
||
padding: 0 6px;
|
||
}
|
||
|
||
.jp-mod-highlighted:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-mod-clicked {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-mod-clicked:hover {
|
||
background-color: var(--jp-brand-color0);
|
||
}
|
||
|
||
.jp-mod-clicked .jp-StatusBar-TextItem {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-HoverItem {
|
||
box-shadow: '0px 4px 4px rgba(0, 0, 0, 0.25)';
|
||
}
|
||
|
||
.jp-StatusBar-TextItem {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
line-height: 24px;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-StatusBar-GroupItem {
|
||
display: flex;
|
||
align-items: center;
|
||
flex-direction: row;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle svg {
|
||
display: block;
|
||
margin: 0 auto;
|
||
width: 16px;
|
||
height: 24px;
|
||
align-self: normal;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressCircle path {
|
||
fill: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar {
|
||
height: 10px;
|
||
width: 100px;
|
||
border: solid 0.25px var(--jp-brand-color2);
|
||
border-radius: 3px;
|
||
overflow: hidden;
|
||
align-self: center;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar > div {
|
||
background-color: var(--jp-brand-color2);
|
||
background-image: linear-gradient(
|
||
-45deg,
|
||
rgba(255, 255, 255, 0.2) 25%,
|
||
transparent 25%,
|
||
transparent 50%,
|
||
rgba(255, 255, 255, 0.2) 50%,
|
||
rgba(255, 255, 255, 0.2) 75%,
|
||
transparent 75%,
|
||
transparent
|
||
);
|
||
background-size: 40px 40px;
|
||
float: left;
|
||
width: 0%;
|
||
height: 100%;
|
||
font-size: 12px;
|
||
line-height: 14px;
|
||
color: #fff;
|
||
text-align: center;
|
||
animation: jp-Statusbar-ExecutionTime-progress-bar 2s linear infinite;
|
||
}
|
||
|
||
.jp-Statusbar-ProgressBar-progress-bar p {
|
||
color: var(--jp-ui-font-color1);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
@keyframes jp-Statusbar-ExecutionTime-progress-bar {
|
||
0% {
|
||
background-position: 0 0;
|
||
}
|
||
|
||
100% {
|
||
background-position: 40px 40px;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-commandpalette-search-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Overall styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette {
|
||
padding-bottom: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Modal variant
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-ModalCommandPalette {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
top: 38px;
|
||
left: 30%;
|
||
margin: 0;
|
||
padding: 4px;
|
||
width: 40%;
|
||
box-shadow: var(--jp-elevation-z4);
|
||
border-radius: 4px;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette {
|
||
max-height: 40vh;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header {
|
||
display: none;
|
||
}
|
||
|
||
.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item {
|
||
margin-left: 4px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-ModalCommandPalette
|
||
.lm-CommandPalette
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Search
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-search {
|
||
padding: 4px;
|
||
background-color: var(--jp-layout-color1);
|
||
z-index: 2;
|
||
}
|
||
|
||
.lm-CommandPalette-wrapper {
|
||
overflow: overlay;
|
||
padding: 0 9px;
|
||
background-color: var(--jp-input-active-background);
|
||
height: 30px;
|
||
box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color);
|
||
}
|
||
|
||
.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper {
|
||
box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color),
|
||
inset 0 0 0 3px var(--jp-input-active-box-shadow-color);
|
||
}
|
||
|
||
.jp-SearchIconGroup {
|
||
color: white;
|
||
background-color: var(--jp-brand-color1);
|
||
position: absolute;
|
||
top: 4px;
|
||
right: 4px;
|
||
padding: 5px 5px 1px;
|
||
}
|
||
|
||
.jp-SearchIconGroup svg {
|
||
height: 20px;
|
||
width: 20px;
|
||
}
|
||
|
||
.jp-SearchIconGroup .jp-icon3[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-input {
|
||
background: transparent;
|
||
width: calc(100% - 18px);
|
||
float: left;
|
||
border: none;
|
||
outline: none;
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: var(--jp-private-commandpalette-search-height);
|
||
}
|
||
|
||
.lm-CommandPalette-input::-webkit-input-placeholder,
|
||
.lm-CommandPalette-input::-moz-placeholder,
|
||
.lm-CommandPalette-input:-ms-input-placeholder {
|
||
color: var(--jp-ui-font-color2);
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Results
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-CommandPalette-header:first-child {
|
||
margin-top: 0;
|
||
}
|
||
|
||
.lm-CommandPalette-header {
|
||
border-bottom: solid var(--jp-border-width) var(--jp-border-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
cursor: pointer;
|
||
display: flex;
|
||
font-size: var(--jp-ui-font-size0);
|
||
font-weight: 600;
|
||
letter-spacing: 1px;
|
||
margin-top: 8px;
|
||
padding: 8px 0 8px 12px;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.lm-CommandPalette-header.lm-mod-active {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-header > mark {
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item {
|
||
padding: 4px 12px 4px 4px;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-weight: 400;
|
||
display: flex;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] {
|
||
fill: var(--jp-layout-color0);
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-itemContent {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.lm-CommandPalette-itemLabel > mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled mark {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemIcon {
|
||
margin: 0 4px 0 0;
|
||
position: relative;
|
||
width: 16px;
|
||
top: 2px;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon {
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.lm-CommandPalette-item .lm-CommandPalette-itemShortcut {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.lm-CommandPalette-itemCaption {
|
||
display: none;
|
||
}
|
||
|
||
.lm-CommandPalette-content {
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.lm-CommandPalette-content:empty::after {
|
||
content: 'No results';
|
||
margin: auto;
|
||
margin-top: 20px;
|
||
width: 100px;
|
||
display: block;
|
||
font-size: var(--jp-ui-font-size2);
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: lighter;
|
||
}
|
||
|
||
.lm-CommandPalette-emptyMessage {
|
||
text-align: center;
|
||
margin-top: 24px;
|
||
line-height: 1.32;
|
||
padding: 0 8px;
|
||
color: var(--jp-content-font-color3);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Dialog {
|
||
position: absolute;
|
||
z-index: 10000;
|
||
display: flex;
|
||
flex-direction: column;
|
||
align-items: center;
|
||
justify-content: center;
|
||
top: 0;
|
||
left: 0;
|
||
margin: 0;
|
||
padding: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
background: var(--jp-dialog-background);
|
||
}
|
||
|
||
.jp-Dialog-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
background: var(--jp-layout-color1);
|
||
padding: 24px 24px 12px;
|
||
min-width: 300px;
|
||
min-height: 150px;
|
||
max-width: 1000px;
|
||
max-height: 500px;
|
||
box-sizing: border-box;
|
||
box-shadow: var(--jp-elevation-z20);
|
||
word-wrap: break-word;
|
||
border-radius: var(--jp-border-radius);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color1);
|
||
resize: both;
|
||
}
|
||
|
||
.jp-Dialog-content.jp-Dialog-content-small {
|
||
max-width: 500px;
|
||
}
|
||
|
||
.jp-Dialog-button {
|
||
overflow: visible;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus {
|
||
outline: 1px solid var(--jp-brand-color1);
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button:focus::-moz-focus-inner {
|
||
border: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus,
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline-offset: 4px;
|
||
-moz-outline-radius: 0;
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-accept:focus {
|
||
outline: 1px solid var(--jp-accept-color-normal, var(--jp-brand-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-warn:focus {
|
||
outline: 1px solid var(--jp-warn-color-normal, var(--jp-error-color1));
|
||
}
|
||
|
||
button.jp-Dialog-button.jp-mod-styled.jp-mod-reject:focus {
|
||
outline: 1px solid var(--jp-reject-color-normal, var(--md-grey-600));
|
||
}
|
||
|
||
button.jp-Dialog-close-button {
|
||
padding: 0;
|
||
height: 100%;
|
||
min-width: unset;
|
||
min-height: unset;
|
||
}
|
||
|
||
.jp-Dialog-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
flex: 0 0 auto;
|
||
padding-bottom: 12px;
|
||
font-size: var(--jp-ui-font-size3);
|
||
font-weight: 400;
|
||
color: var(--jp-ui-font-color1);
|
||
}
|
||
|
||
.jp-Dialog-body {
|
||
display: flex;
|
||
flex-direction: column;
|
||
flex: 1 1 auto;
|
||
font-size: var(--jp-ui-font-size1);
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-Dialog-footer {
|
||
display: flex;
|
||
flex-direction: row;
|
||
justify-content: flex-end;
|
||
align-items: center;
|
||
flex: 0 0 auto;
|
||
margin-left: -12px;
|
||
margin-right: -12px;
|
||
padding: 12px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox {
|
||
padding-right: 5px;
|
||
}
|
||
|
||
.jp-Dialog-checkbox > input:focus-visible {
|
||
outline: 1px solid var(--jp-input-active-border-color);
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-Dialog-spacer {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-Dialog-title {
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
.jp-Dialog-body > .jp-select-wrapper {
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Dialog-body > button {
|
||
padding: 0 16px;
|
||
}
|
||
|
||
.jp-Dialog-body > label {
|
||
line-height: 1.4;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-Dialog-button.jp-mod-styled:not(:last-child) {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Input-Boolean-Dialog {
|
||
flex-direction: row-reverse;
|
||
align-items: end;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Input-Boolean-Dialog > label {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MainAreaWidget > :focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error {
|
||
padding: 6px;
|
||
}
|
||
|
||
.jp-MainAreaWidget .jp-MainAreaWidget-error > pre {
|
||
width: auto;
|
||
padding: 10px;
|
||
background: var(--jp-error-color3);
|
||
border: var(--jp-border-width) solid var(--jp-error-color1);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/**
|
||
* google-material-color v1.2.6
|
||
* https://github.com/danlevan/google-material-color
|
||
*/
|
||
:root {
|
||
--md-red-50: #ffebee;
|
||
--md-red-100: #ffcdd2;
|
||
--md-red-200: #ef9a9a;
|
||
--md-red-300: #e57373;
|
||
--md-red-400: #ef5350;
|
||
--md-red-500: #f44336;
|
||
--md-red-600: #e53935;
|
||
--md-red-700: #d32f2f;
|
||
--md-red-800: #c62828;
|
||
--md-red-900: #b71c1c;
|
||
--md-red-A100: #ff8a80;
|
||
--md-red-A200: #ff5252;
|
||
--md-red-A400: #ff1744;
|
||
--md-red-A700: #d50000;
|
||
--md-pink-50: #fce4ec;
|
||
--md-pink-100: #f8bbd0;
|
||
--md-pink-200: #f48fb1;
|
||
--md-pink-300: #f06292;
|
||
--md-pink-400: #ec407a;
|
||
--md-pink-500: #e91e63;
|
||
--md-pink-600: #d81b60;
|
||
--md-pink-700: #c2185b;
|
||
--md-pink-800: #ad1457;
|
||
--md-pink-900: #880e4f;
|
||
--md-pink-A100: #ff80ab;
|
||
--md-pink-A200: #ff4081;
|
||
--md-pink-A400: #f50057;
|
||
--md-pink-A700: #c51162;
|
||
--md-purple-50: #f3e5f5;
|
||
--md-purple-100: #e1bee7;
|
||
--md-purple-200: #ce93d8;
|
||
--md-purple-300: #ba68c8;
|
||
--md-purple-400: #ab47bc;
|
||
--md-purple-500: #9c27b0;
|
||
--md-purple-600: #8e24aa;
|
||
--md-purple-700: #7b1fa2;
|
||
--md-purple-800: #6a1b9a;
|
||
--md-purple-900: #4a148c;
|
||
--md-purple-A100: #ea80fc;
|
||
--md-purple-A200: #e040fb;
|
||
--md-purple-A400: #d500f9;
|
||
--md-purple-A700: #a0f;
|
||
--md-deep-purple-50: #ede7f6;
|
||
--md-deep-purple-100: #d1c4e9;
|
||
--md-deep-purple-200: #b39ddb;
|
||
--md-deep-purple-300: #9575cd;
|
||
--md-deep-purple-400: #7e57c2;
|
||
--md-deep-purple-500: #673ab7;
|
||
--md-deep-purple-600: #5e35b1;
|
||
--md-deep-purple-700: #512da8;
|
||
--md-deep-purple-800: #4527a0;
|
||
--md-deep-purple-900: #311b92;
|
||
--md-deep-purple-A100: #b388ff;
|
||
--md-deep-purple-A200: #7c4dff;
|
||
--md-deep-purple-A400: #651fff;
|
||
--md-deep-purple-A700: #6200ea;
|
||
--md-indigo-50: #e8eaf6;
|
||
--md-indigo-100: #c5cae9;
|
||
--md-indigo-200: #9fa8da;
|
||
--md-indigo-300: #7986cb;
|
||
--md-indigo-400: #5c6bc0;
|
||
--md-indigo-500: #3f51b5;
|
||
--md-indigo-600: #3949ab;
|
||
--md-indigo-700: #303f9f;
|
||
--md-indigo-800: #283593;
|
||
--md-indigo-900: #1a237e;
|
||
--md-indigo-A100: #8c9eff;
|
||
--md-indigo-A200: #536dfe;
|
||
--md-indigo-A400: #3d5afe;
|
||
--md-indigo-A700: #304ffe;
|
||
--md-blue-50: #e3f2fd;
|
||
--md-blue-100: #bbdefb;
|
||
--md-blue-200: #90caf9;
|
||
--md-blue-300: #64b5f6;
|
||
--md-blue-400: #42a5f5;
|
||
--md-blue-500: #2196f3;
|
||
--md-blue-600: #1e88e5;
|
||
--md-blue-700: #1976d2;
|
||
--md-blue-800: #1565c0;
|
||
--md-blue-900: #0d47a1;
|
||
--md-blue-A100: #82b1ff;
|
||
--md-blue-A200: #448aff;
|
||
--md-blue-A400: #2979ff;
|
||
--md-blue-A700: #2962ff;
|
||
--md-light-blue-50: #e1f5fe;
|
||
--md-light-blue-100: #b3e5fc;
|
||
--md-light-blue-200: #81d4fa;
|
||
--md-light-blue-300: #4fc3f7;
|
||
--md-light-blue-400: #29b6f6;
|
||
--md-light-blue-500: #03a9f4;
|
||
--md-light-blue-600: #039be5;
|
||
--md-light-blue-700: #0288d1;
|
||
--md-light-blue-800: #0277bd;
|
||
--md-light-blue-900: #01579b;
|
||
--md-light-blue-A100: #80d8ff;
|
||
--md-light-blue-A200: #40c4ff;
|
||
--md-light-blue-A400: #00b0ff;
|
||
--md-light-blue-A700: #0091ea;
|
||
--md-cyan-50: #e0f7fa;
|
||
--md-cyan-100: #b2ebf2;
|
||
--md-cyan-200: #80deea;
|
||
--md-cyan-300: #4dd0e1;
|
||
--md-cyan-400: #26c6da;
|
||
--md-cyan-500: #00bcd4;
|
||
--md-cyan-600: #00acc1;
|
||
--md-cyan-700: #0097a7;
|
||
--md-cyan-800: #00838f;
|
||
--md-cyan-900: #006064;
|
||
--md-cyan-A100: #84ffff;
|
||
--md-cyan-A200: #18ffff;
|
||
--md-cyan-A400: #00e5ff;
|
||
--md-cyan-A700: #00b8d4;
|
||
--md-teal-50: #e0f2f1;
|
||
--md-teal-100: #b2dfdb;
|
||
--md-teal-200: #80cbc4;
|
||
--md-teal-300: #4db6ac;
|
||
--md-teal-400: #26a69a;
|
||
--md-teal-500: #009688;
|
||
--md-teal-600: #00897b;
|
||
--md-teal-700: #00796b;
|
||
--md-teal-800: #00695c;
|
||
--md-teal-900: #004d40;
|
||
--md-teal-A100: #a7ffeb;
|
||
--md-teal-A200: #64ffda;
|
||
--md-teal-A400: #1de9b6;
|
||
--md-teal-A700: #00bfa5;
|
||
--md-green-50: #e8f5e9;
|
||
--md-green-100: #c8e6c9;
|
||
--md-green-200: #a5d6a7;
|
||
--md-green-300: #81c784;
|
||
--md-green-400: #66bb6a;
|
||
--md-green-500: #4caf50;
|
||
--md-green-600: #43a047;
|
||
--md-green-700: #388e3c;
|
||
--md-green-800: #2e7d32;
|
||
--md-green-900: #1b5e20;
|
||
--md-green-A100: #b9f6ca;
|
||
--md-green-A200: #69f0ae;
|
||
--md-green-A400: #00e676;
|
||
--md-green-A700: #00c853;
|
||
--md-light-green-50: #f1f8e9;
|
||
--md-light-green-100: #dcedc8;
|
||
--md-light-green-200: #c5e1a5;
|
||
--md-light-green-300: #aed581;
|
||
--md-light-green-400: #9ccc65;
|
||
--md-light-green-500: #8bc34a;
|
||
--md-light-green-600: #7cb342;
|
||
--md-light-green-700: #689f38;
|
||
--md-light-green-800: #558b2f;
|
||
--md-light-green-900: #33691e;
|
||
--md-light-green-A100: #ccff90;
|
||
--md-light-green-A200: #b2ff59;
|
||
--md-light-green-A400: #76ff03;
|
||
--md-light-green-A700: #64dd17;
|
||
--md-lime-50: #f9fbe7;
|
||
--md-lime-100: #f0f4c3;
|
||
--md-lime-200: #e6ee9c;
|
||
--md-lime-300: #dce775;
|
||
--md-lime-400: #d4e157;
|
||
--md-lime-500: #cddc39;
|
||
--md-lime-600: #c0ca33;
|
||
--md-lime-700: #afb42b;
|
||
--md-lime-800: #9e9d24;
|
||
--md-lime-900: #827717;
|
||
--md-lime-A100: #f4ff81;
|
||
--md-lime-A200: #eeff41;
|
||
--md-lime-A400: #c6ff00;
|
||
--md-lime-A700: #aeea00;
|
||
--md-yellow-50: #fffde7;
|
||
--md-yellow-100: #fff9c4;
|
||
--md-yellow-200: #fff59d;
|
||
--md-yellow-300: #fff176;
|
||
--md-yellow-400: #ffee58;
|
||
--md-yellow-500: #ffeb3b;
|
||
--md-yellow-600: #fdd835;
|
||
--md-yellow-700: #fbc02d;
|
||
--md-yellow-800: #f9a825;
|
||
--md-yellow-900: #f57f17;
|
||
--md-yellow-A100: #ffff8d;
|
||
--md-yellow-A200: #ff0;
|
||
--md-yellow-A400: #ffea00;
|
||
--md-yellow-A700: #ffd600;
|
||
--md-amber-50: #fff8e1;
|
||
--md-amber-100: #ffecb3;
|
||
--md-amber-200: #ffe082;
|
||
--md-amber-300: #ffd54f;
|
||
--md-amber-400: #ffca28;
|
||
--md-amber-500: #ffc107;
|
||
--md-amber-600: #ffb300;
|
||
--md-amber-700: #ffa000;
|
||
--md-amber-800: #ff8f00;
|
||
--md-amber-900: #ff6f00;
|
||
--md-amber-A100: #ffe57f;
|
||
--md-amber-A200: #ffd740;
|
||
--md-amber-A400: #ffc400;
|
||
--md-amber-A700: #ffab00;
|
||
--md-orange-50: #fff3e0;
|
||
--md-orange-100: #ffe0b2;
|
||
--md-orange-200: #ffcc80;
|
||
--md-orange-300: #ffb74d;
|
||
--md-orange-400: #ffa726;
|
||
--md-orange-500: #ff9800;
|
||
--md-orange-600: #fb8c00;
|
||
--md-orange-700: #f57c00;
|
||
--md-orange-800: #ef6c00;
|
||
--md-orange-900: #e65100;
|
||
--md-orange-A100: #ffd180;
|
||
--md-orange-A200: #ffab40;
|
||
--md-orange-A400: #ff9100;
|
||
--md-orange-A700: #ff6d00;
|
||
--md-deep-orange-50: #fbe9e7;
|
||
--md-deep-orange-100: #ffccbc;
|
||
--md-deep-orange-200: #ffab91;
|
||
--md-deep-orange-300: #ff8a65;
|
||
--md-deep-orange-400: #ff7043;
|
||
--md-deep-orange-500: #ff5722;
|
||
--md-deep-orange-600: #f4511e;
|
||
--md-deep-orange-700: #e64a19;
|
||
--md-deep-orange-800: #d84315;
|
||
--md-deep-orange-900: #bf360c;
|
||
--md-deep-orange-A100: #ff9e80;
|
||
--md-deep-orange-A200: #ff6e40;
|
||
--md-deep-orange-A400: #ff3d00;
|
||
--md-deep-orange-A700: #dd2c00;
|
||
--md-brown-50: #efebe9;
|
||
--md-brown-100: #d7ccc8;
|
||
--md-brown-200: #bcaaa4;
|
||
--md-brown-300: #a1887f;
|
||
--md-brown-400: #8d6e63;
|
||
--md-brown-500: #795548;
|
||
--md-brown-600: #6d4c41;
|
||
--md-brown-700: #5d4037;
|
||
--md-brown-800: #4e342e;
|
||
--md-brown-900: #3e2723;
|
||
--md-grey-50: #fafafa;
|
||
--md-grey-100: #f5f5f5;
|
||
--md-grey-200: #eee;
|
||
--md-grey-300: #e0e0e0;
|
||
--md-grey-400: #bdbdbd;
|
||
--md-grey-500: #9e9e9e;
|
||
--md-grey-600: #757575;
|
||
--md-grey-700: #616161;
|
||
--md-grey-800: #424242;
|
||
--md-grey-900: #212121;
|
||
--md-blue-grey-50: #eceff1;
|
||
--md-blue-grey-100: #cfd8dc;
|
||
--md-blue-grey-200: #b0bec5;
|
||
--md-blue-grey-300: #90a4ae;
|
||
--md-blue-grey-400: #78909c;
|
||
--md-blue-grey-500: #607d8b;
|
||
--md-blue-grey-600: #546e7a;
|
||
--md-blue-grey-700: #455a64;
|
||
--md-blue-grey-800: #37474f;
|
||
--md-blue-grey-900: #263238;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2017, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedText
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
/* This is the padding value to fill the gaps between lines containing spans with background color. */
|
||
--jp-private-code-span-padding: calc(
|
||
(var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2
|
||
);
|
||
}
|
||
|
||
.jp-RenderedText {
|
||
text-align: left;
|
||
padding-left: var(--jp-code-padding);
|
||
line-height: var(--jp-code-line-height);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-RenderedText pre,
|
||
.jp-RenderedJavaScript pre,
|
||
.jp-RenderedHTMLCommon pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
}
|
||
|
||
.jp-RenderedText pre a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedText pre a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* console foregrounds and backgrounds */
|
||
.jp-RenderedText pre .ansi-black-fg {
|
||
color: #3e424d;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-fg {
|
||
color: #e75c58;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-fg {
|
||
color: #00a250;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-fg {
|
||
color: #ddb62b;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-fg {
|
||
color: #208ffb;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-fg {
|
||
color: #d160c4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-fg {
|
||
color: #60c6c8;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-fg {
|
||
color: #c5c1b4;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-bg {
|
||
background-color: #3e424d;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-bg {
|
||
background-color: #e75c58;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-bg {
|
||
background-color: #00a250;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-bg {
|
||
background-color: #ddb62b;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-bg {
|
||
background-color: #208ffb;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-bg {
|
||
background-color: #d160c4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-bg {
|
||
background-color: #60c6c8;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-bg {
|
||
background-color: #c5c1b4;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-fg {
|
||
color: #282c36;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-fg {
|
||
color: #b22b31;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-fg {
|
||
color: #007427;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-fg {
|
||
color: #b27d12;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-fg {
|
||
color: #0065ca;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-fg {
|
||
color: #a03196;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-fg {
|
||
color: #258f8f;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-fg {
|
||
color: #a1a6b2;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-black-intense-bg {
|
||
background-color: #282c36;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-red-intense-bg {
|
||
background-color: #b22b31;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-green-intense-bg {
|
||
background-color: #007427;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-yellow-intense-bg {
|
||
background-color: #b27d12;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-blue-intense-bg {
|
||
background-color: #0065ca;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-magenta-intense-bg {
|
||
background-color: #a03196;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-cyan-intense-bg {
|
||
background-color: #258f8f;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-white-intense-bg {
|
||
background-color: #a1a6b2;
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-fg {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-default-inverse-bg {
|
||
background-color: var(--jp-inverse-layout-color0);
|
||
padding: var(--jp-private-code-span-padding) 0;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-bold {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedText pre .ansi-underline {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] {
|
||
background: var(--jp-rendermime-error-background);
|
||
padding-top: var(--jp-code-padding);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedLatex
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedLatex {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
}
|
||
|
||
/* Left-justify outputs.*/
|
||
.jp-OutputArea-output.jp-RenderedLatex {
|
||
padding: var(--jp-code-padding);
|
||
text-align: left;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| RenderedHTML
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-RenderedHTMLCommon {
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-content-font-family);
|
||
font-size: var(--jp-content-font-size1);
|
||
line-height: var(--jp-content-line-height);
|
||
|
||
/* Give a bit more R padding on Markdown text to keep line lengths reasonable */
|
||
padding-right: 20px;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon em {
|
||
font-style: italic;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon strong {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon u {
|
||
text-decoration: underline;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:link {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:hover {
|
||
text-decoration: underline;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon a:visited {
|
||
text-decoration: none;
|
||
color: var(--jp-content-link-color);
|
||
}
|
||
|
||
/* Headings */
|
||
|
||
.jp-RenderedHTMLCommon h1,
|
||
.jp-RenderedHTMLCommon h2,
|
||
.jp-RenderedHTMLCommon h3,
|
||
.jp-RenderedHTMLCommon h4,
|
||
.jp-RenderedHTMLCommon h5,
|
||
.jp-RenderedHTMLCommon h6 {
|
||
line-height: var(--jp-content-heading-line-height);
|
||
font-weight: var(--jp-content-heading-font-weight);
|
||
font-style: normal;
|
||
margin: var(--jp-content-heading-margin-top) 0
|
||
var(--jp-content-heading-margin-bottom) 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:first-child,
|
||
.jp-RenderedHTMLCommon h2:first-child,
|
||
.jp-RenderedHTMLCommon h3:first-child,
|
||
.jp-RenderedHTMLCommon h4:first-child,
|
||
.jp-RenderedHTMLCommon h5:first-child,
|
||
.jp-RenderedHTMLCommon h6:first-child {
|
||
margin-top: calc(0.5 * var(--jp-content-heading-margin-top));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1:last-child,
|
||
.jp-RenderedHTMLCommon h2:last-child,
|
||
.jp-RenderedHTMLCommon h3:last-child,
|
||
.jp-RenderedHTMLCommon h4:last-child,
|
||
.jp-RenderedHTMLCommon h5:last-child,
|
||
.jp-RenderedHTMLCommon h6:last-child {
|
||
margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom));
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h1 {
|
||
font-size: var(--jp-content-font-size5);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h2 {
|
||
font-size: var(--jp-content-font-size4);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h3 {
|
||
font-size: var(--jp-content-font-size3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h4 {
|
||
font-size: var(--jp-content-font-size2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h5 {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon h6 {
|
||
font-size: var(--jp-content-font-size0);
|
||
}
|
||
|
||
/* Lists */
|
||
|
||
/* stylelint-disable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon ul:not(.list-inline),
|
||
.jp-RenderedHTMLCommon ol:not(.list-inline) {
|
||
padding-left: 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul {
|
||
list-style: disc;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul {
|
||
list-style: square;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul ul {
|
||
list-style: circle;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
list-style: upper-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol {
|
||
list-style: lower-alpha;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol {
|
||
list-style: lower-roman;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol ol ol ol ol {
|
||
list-style: decimal;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ol,
|
||
.jp-RenderedHTMLCommon ul {
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon ul ul,
|
||
.jp-RenderedHTMLCommon ul ol,
|
||
.jp-RenderedHTMLCommon ol ul,
|
||
.jp-RenderedHTMLCommon ol ol {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
/* stylelint-enable selector-max-type, selector-max-compound-selectors */
|
||
|
||
.jp-RenderedHTMLCommon hr {
|
||
color: var(--jp-border-color2);
|
||
background-color: var(--jp-border-color1);
|
||
margin-top: 1em;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon > pre {
|
||
margin: 1.5em 2em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon pre,
|
||
.jp-RenderedHTMLCommon code {
|
||
border: 0;
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
line-height: var(--jp-code-line-height);
|
||
padding: 0;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon :not(pre) > code {
|
||
background-color: var(--jp-layout-color2);
|
||
padding: 1px 5px;
|
||
}
|
||
|
||
/* Tables */
|
||
|
||
.jp-RenderedHTMLCommon table {
|
||
border-collapse: collapse;
|
||
border-spacing: 0;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
table-layout: fixed;
|
||
margin-left: auto;
|
||
margin-bottom: 1em;
|
||
margin-right: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon thead {
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
vertical-align: bottom;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedHTMLCommon th,
|
||
.jp-RenderedHTMLCommon tr {
|
||
vertical-align: middle;
|
||
padding: 0.5em;
|
||
line-height: normal;
|
||
white-space: normal;
|
||
max-width: none;
|
||
border: none;
|
||
}
|
||
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon td,
|
||
.jp-RenderedMarkdown.jp-RenderedHTMLCommon th {
|
||
max-width: none;
|
||
}
|
||
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th,
|
||
:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr {
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon th {
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(odd) {
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:nth-child(even) {
|
||
background: var(--jp-rendermime-table-row-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon tbody tr:hover {
|
||
background: var(--jp-rendermime-table-row-hover-background);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon p {
|
||
text-align: left;
|
||
margin: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img {
|
||
-moz-force-broken-image-icon: 1;
|
||
}
|
||
|
||
/* Restrict to direct children as other images could be nested in other content. */
|
||
.jp-RenderedHTMLCommon > img {
|
||
display: block;
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
/* Change color behind transparent images if they need it... */
|
||
[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background {
|
||
background-color: var(--jp-inverse-layout-color1);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img,
|
||
.jp-RenderedImage img,
|
||
.jp-RenderedHTMLCommon svg,
|
||
.jp-RenderedSVG svg {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon img.jp-mod-unconfined,
|
||
.jp-RenderedImage img.jp-mod-unconfined,
|
||
.jp-RenderedHTMLCommon svg.jp-mod-unconfined,
|
||
.jp-RenderedSVG svg.jp-mod-unconfined {
|
||
max-width: none;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert {
|
||
padding: var(--jp-notebook-padding);
|
||
border: var(--jp-border-width) solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
margin-bottom: 1em;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info {
|
||
color: var(--jp-info-color0);
|
||
background-color: var(--jp-info-color3);
|
||
border-color: var(--jp-info-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info hr {
|
||
border-color: var(--jp-info-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-info > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-info > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning {
|
||
color: var(--jp-warn-color0);
|
||
background-color: var(--jp-warn-color3);
|
||
border-color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning hr {
|
||
border-color: var(--jp-warn-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-warning > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-warning > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success {
|
||
color: var(--jp-success-color0);
|
||
background-color: var(--jp-success-color3);
|
||
border-color: var(--jp-success-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success hr {
|
||
border-color: var(--jp-success-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-success > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-success > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger {
|
||
color: var(--jp-error-color0);
|
||
background-color: var(--jp-error-color3);
|
||
border-color: var(--jp-error-color2);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger hr {
|
||
border-color: var(--jp-error-color3);
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon .alert-danger > p:last-child,
|
||
.jp-RenderedHTMLCommon .alert-danger > ul:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon blockquote {
|
||
margin: 1em 2em;
|
||
padding: 0 1em;
|
||
border-left: 5px solid var(--jp-border-color2);
|
||
}
|
||
|
||
a.jp-InternalAnchorLink {
|
||
visibility: hidden;
|
||
margin-left: 8px;
|
||
color: var(--md-blue-800);
|
||
}
|
||
|
||
h1:hover .jp-InternalAnchorLink,
|
||
h2:hover .jp-InternalAnchorLink,
|
||
h3:hover .jp-InternalAnchorLink,
|
||
h4:hover .jp-InternalAnchorLink,
|
||
h5:hover .jp-InternalAnchorLink,
|
||
h6:hover .jp-InternalAnchorLink {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-RenderedHTMLCommon kbd {
|
||
background-color: var(--jp-rendermime-table-row-background);
|
||
border: 1px solid var(--jp-border-color0);
|
||
border-bottom-color: var(--jp-border-color2);
|
||
border-radius: 3px;
|
||
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||
display: inline-block;
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: 1em;
|
||
padding: 0.2em 0.5em;
|
||
}
|
||
|
||
/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0.
|
||
* At the bottom of cells this is a bit too much as there is also spacing
|
||
* between cells. Going all the way to 0 gets too tight between markdown and
|
||
* code cells.
|
||
*/
|
||
.jp-RenderedHTMLCommon > *:last-child {
|
||
margin-bottom: 0.5em;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Copyright (c) 2014-2017, PhosphorJS Contributors
|
||
|
|
||
| Distributed under the terms of the BSD 3-Clause License.
|
||
|
|
||
| The full license is in the file LICENSE, distributed with this software.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.lm-cursor-backdrop {
|
||
position: fixed;
|
||
width: 200px;
|
||
height: 200px;
|
||
margin-top: -100px;
|
||
margin-left: -100px;
|
||
will-change: transform;
|
||
z-index: 100;
|
||
}
|
||
|
||
.lm-mod-drag-image {
|
||
will-change: transform;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-lineFormSearch {
|
||
padding: 4px 12px;
|
||
background-color: var(--jp-layout-color2);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
font-size: var(--jp-ui-font-size1);
|
||
}
|
||
|
||
.jp-lineFormCaption {
|
||
font-size: var(--jp-ui-font-size0);
|
||
line-height: var(--jp-ui-font-size1);
|
||
margin-top: 4px;
|
||
color: var(--jp-ui-font-color0);
|
||
}
|
||
|
||
.jp-baseLineForm {
|
||
border: none;
|
||
border-radius: 0;
|
||
position: absolute;
|
||
background-size: 16px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
outline: none;
|
||
}
|
||
|
||
.jp-lineFormButtonContainer {
|
||
top: 4px;
|
||
right: 8px;
|
||
height: 24px;
|
||
padding: 0 12px;
|
||
width: 12px;
|
||
}
|
||
|
||
.jp-lineFormButtonIcon {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: var(--jp-brand-color1);
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 4px 6px;
|
||
}
|
||
|
||
.jp-lineFormButton {
|
||
top: 0;
|
||
right: 0;
|
||
background-color: transparent;
|
||
height: 100%;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-lineFormWrapper {
|
||
overflow: hidden;
|
||
padding: 0 8px;
|
||
border: 1px solid var(--jp-border-color0);
|
||
background-color: var(--jp-input-active-background);
|
||
height: 22px;
|
||
}
|
||
|
||
.jp-lineFormWrapperFocusWithin {
|
||
border: var(--jp-border-width) solid var(--md-blue-500);
|
||
box-shadow: inset 0 0 4px var(--md-blue-300);
|
||
}
|
||
|
||
.jp-lineFormInput {
|
||
background: transparent;
|
||
width: 200px;
|
||
height: 100%;
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
line-height: 28px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) 2014-2016, Jupyter Development Team.
|
||
|
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-JSONEditor {
|
||
display: flex;
|
||
flex-direction: column;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-JSONEditor-host {
|
||
flex: 1 1 auto;
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-layout-color0);
|
||
min-height: 50px;
|
||
padding: 1px;
|
||
}
|
||
|
||
.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host {
|
||
border-color: red;
|
||
outline-color: red;
|
||
}
|
||
|
||
.jp-JSONEditor-header {
|
||
display: flex;
|
||
flex: 1 0 auto;
|
||
padding: 0 0 0 12px;
|
||
}
|
||
|
||
.jp-JSONEditor-header label {
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-JSONEditor-commitButton {
|
||
height: 16px;
|
||
width: 16px;
|
||
background-size: 18px;
|
||
background-repeat: no-repeat;
|
||
background-position: center;
|
||
}
|
||
|
||
.jp-JSONEditor-host.jp-mod-focused {
|
||
background-color: var(--jp-input-active-background);
|
||
border: 1px solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
.jp-Editor.jp-mod-dropTarget {
|
||
border: var(--jp-border-width) solid var(--jp-input-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-DocumentSearch-input {
|
||
border: none;
|
||
outline: none;
|
||
color: var(--jp-ui-font-color0);
|
||
font-size: var(--jp-ui-font-size1);
|
||
background-color: var(--jp-layout-color0);
|
||
font-family: var(--jp-ui-font-family);
|
||
padding: 2px 1px;
|
||
resize: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay {
|
||
position: absolute;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
border-left: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
top: 0;
|
||
right: 0;
|
||
z-index: 7;
|
||
min-width: 405px;
|
||
padding: 2px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
|
||
--jp-private-document-search-button-height: 20px;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button {
|
||
background-color: var(--jp-toolbar-background);
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-overlay-row {
|
||
display: flex;
|
||
align-items: center;
|
||
margin-bottom: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content {
|
||
display: inline-block;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-content svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper {
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
display: flex;
|
||
background-color: var(--jp-layout-color0);
|
||
margin: 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-wrapper:focus-within {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper {
|
||
all: initial;
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
border: none;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper {
|
||
width: 14px;
|
||
height: 14px;
|
||
}
|
||
|
||
.jp-DocumentSearch-button-wrapper {
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper:focus,
|
||
.jp-DocumentSearch-button-wrapper:focus {
|
||
outline: var(--jp-border-width) solid
|
||
var(--jp-cell-editor-active-border-color);
|
||
outline-offset: -1px;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-wrapper,
|
||
.jp-DocumentSearch-button-wrapper,
|
||
.jp-DocumentSearch-button-content:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-toggle-placeholder {
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button::before {
|
||
display: block;
|
||
padding-top: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off {
|
||
opacity: var(--jp-search-toggle-off-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-off:hover {
|
||
opacity: var(--jp-search-toggle-hover-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-input-button-on {
|
||
opacity: var(--jp-search-toggle-on-opacity);
|
||
}
|
||
|
||
.jp-DocumentSearch-index-counter {
|
||
padding-left: 10px;
|
||
padding-right: 10px;
|
||
user-select: none;
|
||
min-width: 35px;
|
||
display: inline-block;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper {
|
||
display: inline-block;
|
||
padding-right: 2px;
|
||
margin-left: auto;
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-DocumentSearch-spacer {
|
||
margin-left: auto;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-wrapper button {
|
||
outline: 0;
|
||
border: none;
|
||
width: var(--jp-private-document-search-button-height);
|
||
height: var(--jp-private-document-search-button-height);
|
||
vertical-align: middle;
|
||
margin: 1px 5px 2px;
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-up-down-button:active {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button {
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-filter-button-enabled:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-options {
|
||
padding: 0 8px;
|
||
margin-left: 3px;
|
||
width: 100%;
|
||
display: grid;
|
||
justify-content: start;
|
||
grid-template-columns: 1fr 1fr;
|
||
align-items: center;
|
||
justify-items: stretch;
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter-disabled {
|
||
color: var(--jp-ui-font-color2);
|
||
}
|
||
|
||
.jp-DocumentSearch-search-filter {
|
||
display: flex;
|
||
align-items: center;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-regex-error {
|
||
color: var(--jp-error-color0);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper {
|
||
overflow: hidden;
|
||
display: inline-block;
|
||
box-sizing: border-box;
|
||
border: var(--jp-border-width) solid var(--jp-border-color0);
|
||
margin: auto 2px;
|
||
padding: 1px 4px;
|
||
height: calc(var(--jp-private-document-search-button-height) + 2px);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button-wrapper:focus {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button {
|
||
display: inline-block;
|
||
text-align: center;
|
||
cursor: pointer;
|
||
box-sizing: border-box;
|
||
color: var(--jp-ui-font-color1);
|
||
|
||
/* height - 2 * (padding of wrapper) */
|
||
line-height: calc(var(--jp-private-document-search-button-height) - 2px);
|
||
width: 100%;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-button:focus {
|
||
outline: none;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-wrapper-class {
|
||
margin-left: 14px;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle {
|
||
border: none;
|
||
background-color: var(--jp-toolbar-background);
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-DocumentSearch-replace-toggle:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.cm-editor {
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
border: 0;
|
||
border-radius: 0;
|
||
height: auto;
|
||
|
||
/* Changed to auto to autogrow */
|
||
}
|
||
|
||
.cm-editor pre {
|
||
padding: 0 var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-dialog {
|
||
background-color: var(--jp-layout-color0);
|
||
color: var(--jp-content-font-color1);
|
||
}
|
||
|
||
.jp-CodeMirrorEditor {
|
||
cursor: text;
|
||
}
|
||
|
||
/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */
|
||
@media screen and (min-width: 2138px) and (max-width: 4319px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width1) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
/* When zoomed out less than 33% */
|
||
@media screen and (min-width: 4320px) {
|
||
.jp-CodeMirrorEditor[data-type='inline'] .cm-cursor {
|
||
border-left: var(--jp-code-cursor-width2) solid
|
||
var(--jp-editor-cursor-color);
|
||
}
|
||
}
|
||
|
||
.cm-editor.jp-mod-readOnly .cm-cursor {
|
||
display: none;
|
||
}
|
||
|
||
.jp-CollaboratorCursor {
|
||
border-left: 5px solid transparent;
|
||
border-right: 5px solid transparent;
|
||
border-top: none;
|
||
border-bottom: 3px solid;
|
||
background-clip: content-box;
|
||
margin-left: -5px;
|
||
margin-right: -5px;
|
||
}
|
||
|
||
.cm-searching,
|
||
.cm-searching span {
|
||
/* `.cm-searching span`: we need to override syntax highlighting */
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.cm-searching::selection,
|
||
.cm-searching span::selection {
|
||
background-color: var(--jp-search-unselected-match-background-color);
|
||
color: var(--jp-search-unselected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching,
|
||
.jp-current-match > .cm-searching span,
|
||
.cm-searching > .jp-current-match,
|
||
.cm-searching > .jp-current-match span {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.jp-current-match > .cm-searching::selection,
|
||
.cm-searching > .jp-current-match::selection,
|
||
.jp-current-match > .cm-searching span::selection {
|
||
background-color: var(--jp-search-selected-match-background-color);
|
||
color: var(--jp-search-selected-match-color);
|
||
}
|
||
|
||
.cm-trailingspace {
|
||
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAsElEQVQIHQGlAFr/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7+r3zKmT0/+pk9P/7+r3zAAAAAAAAAAABAAAAAAAAAAA6OPzM+/q9wAAAAAA6OPzMwAAAAAAAAAAAgAAAAAAAAAAGR8NiRQaCgAZIA0AGR8NiQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQyoYJ/SY80UAAAAASUVORK5CYII=);
|
||
background-position: center left;
|
||
background-repeat: repeat-x;
|
||
}
|
||
|
||
.jp-CollaboratorCursor-hover {
|
||
position: absolute;
|
||
z-index: 1;
|
||
transform: translateX(-50%);
|
||
color: white;
|
||
border-radius: 3px;
|
||
padding-left: 4px;
|
||
padding-right: 4px;
|
||
padding-top: 1px;
|
||
padding-bottom: 1px;
|
||
text-align: center;
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: nowrap;
|
||
}
|
||
|
||
.jp-CodeMirror-ruler {
|
||
border-left: 1px dashed var(--jp-border-color2);
|
||
}
|
||
|
||
/* Styles for shared cursors (remote cursor locations and selected ranges) */
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret {
|
||
position: relative;
|
||
border-left: 1px solid black;
|
||
margin-left: -1px;
|
||
margin-right: -1px;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret > .cm-ySelectionInfo {
|
||
white-space: nowrap;
|
||
position: absolute;
|
||
top: -1.15em;
|
||
padding-bottom: 0.05em;
|
||
left: -1px;
|
||
font-size: 0.95em;
|
||
font-family: var(--jp-ui-font-family);
|
||
font-weight: bold;
|
||
line-height: normal;
|
||
user-select: none;
|
||
color: white;
|
||
padding-left: 2px;
|
||
padding-right: 2px;
|
||
z-index: 101;
|
||
transition: opacity 0.3s ease-in-out;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionInfo {
|
||
transition-delay: 0.7s;
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-CodeMirrorEditor .cm-ySelectionCaret:hover > .cm-ySelectionInfo {
|
||
opacity: 1;
|
||
transition-delay: 0s;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MimeDocument {
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-filebrowser-button-height: 28px;
|
||
--jp-private-filebrowser-button-width: 48px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser .jp-SidePanel-content {
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar.jp-Toolbar {
|
||
flex-wrap: wrap;
|
||
row-gap: 12px;
|
||
border-bottom: none;
|
||
height: auto;
|
||
margin: 8px 12px 0;
|
||
box-shadow: none;
|
||
padding: 0;
|
||
justify-content: flex-start;
|
||
}
|
||
|
||
.jp-FileBrowser-Panel {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
}
|
||
|
||
.jp-BreadCrumbs {
|
||
flex: 0 0 auto;
|
||
margin: 8px 12px;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item {
|
||
margin: 0 2px;
|
||
padding: 0 2px;
|
||
border-radius: var(--jp-border-radius);
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-BreadCrumbs-item:first-child {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.jp-BreadCrumbs-item.jp-mod-dropTarget {
|
||
background-color: var(--jp-brand-color2);
|
||
opacity: 0.7;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Buttons
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item {
|
||
flex: 0 0 auto;
|
||
padding-left: 0;
|
||
padding-right: 2px;
|
||
align-items: center;
|
||
height: unset;
|
||
}
|
||
|
||
.jp-FileBrowser-toolbar > .jp-Toolbar-item .jp-ToolbarButtonComponent {
|
||
width: 40px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Other styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-FileDialog.jp-mod-conflict input {
|
||
color: var(--jp-error-color1);
|
||
}
|
||
|
||
.jp-FileDialog .jp-new-name-title {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-LastModified-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileSize-hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-FileBrowser .lm-AccordionPanel > h3:first-child {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| DirListing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-DirListing {
|
||
flex: 1 1 auto;
|
||
display: flex;
|
||
flex-direction: column;
|
||
outline: 0;
|
||
}
|
||
|
||
.jp-DirListing-header {
|
||
flex: 0 0 auto;
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
overflow: hidden;
|
||
border-top: var(--jp-border-width) solid var(--jp-border-color2);
|
||
border-bottom: var(--jp-border-width) solid var(--jp-border-color1);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
z-index: 2;
|
||
}
|
||
|
||
.jp-DirListing-headerItem {
|
||
padding: 4px 12px 2px;
|
||
font-weight: 500;
|
||
}
|
||
|
||
.jp-DirListing-headerItem:hover {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-name {
|
||
flex: 1 0 84px;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-modified {
|
||
flex: 0 0 112px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-id-filesize {
|
||
flex: 0 0 75px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-id-narrow {
|
||
display: none;
|
||
flex: 0 0 5px;
|
||
padding: 4px;
|
||
border-left: var(--jp-border-width) solid var(--jp-border-color2);
|
||
text-align: right;
|
||
color: var(--jp-border-color2);
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-narrow {
|
||
display: block;
|
||
}
|
||
|
||
.jp-DirListing-narrow .jp-id-modified,
|
||
.jp-DirListing-narrow .jp-DirListing-itemModified {
|
||
display: none;
|
||
}
|
||
|
||
.jp-DirListing-headerItem.jp-mod-selected {
|
||
font-weight: 600;
|
||
}
|
||
|
||
/* increase specificity to override bundled default */
|
||
.jp-DirListing-content {
|
||
flex: 1 1 auto;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style-type: none;
|
||
overflow: auto;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-content mark {
|
||
color: var(--jp-ui-font-color0);
|
||
background-color: transparent;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark {
|
||
color: var(--jp-ui-inverse-font-color0);
|
||
}
|
||
|
||
/* Style the directory listing content when a user drops a file to upload */
|
||
.jp-DirListing.jp-mod-native-drop .jp-DirListing-content {
|
||
outline: 5px dashed rgba(128, 128, 128, 0.5);
|
||
outline-offset: -10px;
|
||
cursor: copy;
|
||
}
|
||
|
||
.jp-DirListing-item {
|
||
display: flex;
|
||
flex-direction: row;
|
||
align-items: center;
|
||
padding: 4px 12px;
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper {
|
||
/* Increases hit area of checkbox. */
|
||
padding: 4px;
|
||
}
|
||
|
||
.jp-DirListing-header
|
||
.jp-DirListing-checkboxWrapper
|
||
+ .jp-DirListing-headerItem {
|
||
padding-left: 4px;
|
||
}
|
||
|
||
.jp-DirListing-content .jp-DirListing-checkboxWrapper {
|
||
position: relative;
|
||
left: -4px;
|
||
margin: -4px 0 -4px -8px;
|
||
}
|
||
|
||
.jp-DirListing-checkboxWrapper.jp-mod-visible {
|
||
visibility: visible;
|
||
}
|
||
|
||
/* For devices that support hovering, hide checkboxes until hovered, selected...
|
||
*/
|
||
@media (hover: hover) {
|
||
.jp-DirListing-checkboxWrapper {
|
||
visibility: hidden;
|
||
}
|
||
|
||
.jp-DirListing-item:hover .jp-DirListing-checkboxWrapper,
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-checkboxWrapper {
|
||
visibility: visible;
|
||
}
|
||
}
|
||
|
||
.jp-DirListing-item[data-is-dot] {
|
||
opacity: 75%;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-dropTarget {
|
||
background: var(--jp-brand-color3);
|
||
}
|
||
|
||
.jp-DirListing-item:hover:not(.jp-mod-selected) {
|
||
background: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-DirListing-itemIcon {
|
||
flex: 0 0 20px;
|
||
margin-right: 4px;
|
||
}
|
||
|
||
.jp-DirListing-itemText {
|
||
flex: 1 0 64px;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-DirListing-itemText:focus {
|
||
outline-width: 2px;
|
||
outline-color: var(--jp-inverse-layout-color1);
|
||
outline-style: solid;
|
||
outline-offset: 1px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-selected .jp-DirListing-itemText:focus {
|
||
outline-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-itemModified {
|
||
flex: 0 0 125px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-itemFileSize {
|
||
flex: 0 0 90px;
|
||
text-align: right;
|
||
}
|
||
|
||
.jp-DirListing-editor {
|
||
flex: 1 0 64px;
|
||
outline: none;
|
||
border: none;
|
||
color: var(--jp-ui-font-color1);
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon::before {
|
||
color: var(--jp-success-color1);
|
||
content: '\25CF';
|
||
font-size: 8px;
|
||
position: absolute;
|
||
left: -8px;
|
||
}
|
||
|
||
.jp-DirListing-item.jp-mod-running.jp-mod-selected
|
||
.jp-DirListing-itemIcon::before {
|
||
color: var(--jp-ui-inverse-font-color1);
|
||
}
|
||
|
||
.jp-DirListing-item.lm-mod-drag-image,
|
||
.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image {
|
||
font-size: var(--jp-ui-font-size1);
|
||
padding-left: 4px;
|
||
margin-left: 4px;
|
||
width: 160px;
|
||
background-color: var(--jp-ui-inverse-font-color2);
|
||
box-shadow: var(--jp-elevation-z2);
|
||
border-radius: 0;
|
||
color: var(--jp-ui-font-color1);
|
||
transform: translateX(-40%) translateY(-58%);
|
||
}
|
||
|
||
.jp-Document {
|
||
min-width: 120px;
|
||
min-height: 120px;
|
||
outline: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Main OutputArea
|
||
| OutputArea has a list of Outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-OutputArea-child {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-OutputPrompt {
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-outprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-OutputArea-prompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
}
|
||
|
||
.jp-OutputArea-output {
|
||
display: table-cell;
|
||
width: 100%;
|
||
height: auto;
|
||
overflow: auto;
|
||
user-select: text;
|
||
-moz-user-select: text;
|
||
-webkit-user-select: text;
|
||
-ms-user-select: text;
|
||
}
|
||
|
||
.jp-OutputArea .jp-RenderedText {
|
||
padding-left: 1ch;
|
||
}
|
||
|
||
/**
|
||
* Prompt overlay.
|
||
*/
|
||
|
||
.jp-OutputArea-promptOverlay {
|
||
position: absolute;
|
||
top: 0;
|
||
width: var(--jp-cell-prompt-width);
|
||
height: 100%;
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-OutputArea-promptOverlay:hover {
|
||
background: var(--jp-layout-color2);
|
||
box-shadow: inset 0 0 1px var(--jp-inverse-layout-color0);
|
||
cursor: zoom-out;
|
||
}
|
||
|
||
.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay:hover {
|
||
cursor: zoom-in;
|
||
}
|
||
|
||
/**
|
||
* Isolated output.
|
||
*/
|
||
.jp-OutputArea-output.jp-mod-isolated {
|
||
width: 100%;
|
||
display: block;
|
||
}
|
||
|
||
/*
|
||
When drag events occur, `lm-mod-override-cursor` is added to the body.
|
||
Because iframes steal all cursor events, the following two rules are necessary
|
||
to suppress pointer events while resize drags are occurring. There may be a
|
||
better solution to this problem.
|
||
*/
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated {
|
||
position: relative;
|
||
}
|
||
|
||
body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated::before {
|
||
content: '';
|
||
position: absolute;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
/* pre */
|
||
|
||
.jp-OutputArea-output pre {
|
||
border: none;
|
||
margin: 0;
|
||
padding: 0;
|
||
overflow-x: auto;
|
||
overflow-y: auto;
|
||
word-break: break-all;
|
||
word-wrap: break-word;
|
||
white-space: pre-wrap;
|
||
}
|
||
|
||
/* tables */
|
||
|
||
.jp-OutputArea-output.jp-RenderedHTMLCommon table {
|
||
margin-left: 0;
|
||
margin-right: 0;
|
||
}
|
||
|
||
/* description lists */
|
||
|
||
.jp-OutputArea-output dl,
|
||
.jp-OutputArea-output dt,
|
||
.jp-OutputArea-output dd {
|
||
display: block;
|
||
}
|
||
|
||
.jp-OutputArea-output dl {
|
||
width: 100%;
|
||
overflow: hidden;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dt {
|
||
font-weight: bold;
|
||
float: left;
|
||
width: 20%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-OutputArea-output dd {
|
||
float: left;
|
||
width: 80%;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
.jp-TrimmedOutputs pre {
|
||
background: var(--jp-layout-color3);
|
||
font-size: calc(var(--jp-code-font-size) * 1.4);
|
||
text-align: center;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
/* Hide the gutter in case of
|
||
* - nested output areas (e.g. in the case of output widgets)
|
||
* - mirrored output areas
|
||
*/
|
||
.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt {
|
||
display: none;
|
||
}
|
||
|
||
/* Hide empty lines in the output area, for instance due to cleared widgets */
|
||
.jp-OutputArea-prompt:empty {
|
||
padding: 0;
|
||
border: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| executeResult is added to any Output-result for the display of the object
|
||
| returned by a cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-OutputArea-output.jp-OutputArea-executeResult {
|
||
margin-left: 0;
|
||
width: 100%;
|
||
}
|
||
|
||
/* Text output with the Out[] prompt needs a top padding to match the
|
||
* alignment of the Out[] prompt itself.
|
||
*/
|
||
.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output {
|
||
padding-top: var(--jp-code-padding);
|
||
border-top: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| The Stdin output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Stdin-prompt {
|
||
color: var(--jp-content-font-color0);
|
||
padding-right: var(--jp-code-padding);
|
||
vertical-align: baseline;
|
||
flex: 0 0 auto;
|
||
}
|
||
|
||
.jp-Stdin-input {
|
||
font-family: var(--jp-code-font-family);
|
||
font-size: inherit;
|
||
color: inherit;
|
||
background-color: inherit;
|
||
width: 42%;
|
||
min-width: 200px;
|
||
|
||
/* make sure input baseline aligns with prompt */
|
||
vertical-align: baseline;
|
||
|
||
/* padding + margin = 0.5em between prompt and cursor */
|
||
padding: 0 0.25em;
|
||
margin: 0 0.25em;
|
||
flex: 0 0 70%;
|
||
}
|
||
|
||
.jp-Stdin-input::placeholder {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Stdin-input:focus {
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Stdin-input:focus::placeholder {
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output Area View
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea {
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
.jp-LinkedOutputView .jp-OutputArea-output:only-child {
|
||
height: 100%;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
@media print {
|
||
.jp-OutputArea-child {
|
||
break-inside: avoid-page;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-OutputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
|
||
.jp-OutputArea-child .jp-OutputArea-output {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
}
|
||
|
||
/* Trimmed outputs warning */
|
||
.jp-TrimmedOutputs > a {
|
||
margin: 10px;
|
||
text-decoration: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-TrimmedOutputs > a:hover {
|
||
text-decoration: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Table of Contents
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-toc-active-width: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents {
|
||
display: flex;
|
||
flex-direction: column;
|
||
background: var(--jp-layout-color1);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholder {
|
||
text-align: center;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent {
|
||
color: var(--jp-content-font-color2);
|
||
padding: 8px;
|
||
}
|
||
|
||
.jp-TableOfContents-placeholderContent > h3 {
|
||
margin-bottom: var(--jp-content-heading-margin-bottom);
|
||
}
|
||
|
||
.jp-TableOfContents .jp-SidePanel-content {
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.jp-TableOfContents-tree {
|
||
margin: 4px;
|
||
}
|
||
|
||
.jp-TableOfContents ol {
|
||
list-style-type: none;
|
||
}
|
||
|
||
/* stylelint-disable-next-line selector-max-type */
|
||
.jp-TableOfContents li > ol {
|
||
/* Align left border with triangle icon center */
|
||
padding-left: 11px;
|
||
}
|
||
|
||
.jp-TableOfContents-content {
|
||
/* left margin for the active heading indicator */
|
||
margin: 0 0 0 var(--jp-private-toc-active-width);
|
||
padding: 0;
|
||
background-color: var(--jp-layout-color1);
|
||
}
|
||
|
||
.jp-tocItem {
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
.jp-tocItem-heading {
|
||
display: flex;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-heading:hover {
|
||
background-color: var(--jp-layout-color2);
|
||
}
|
||
|
||
.jp-tocItem-content {
|
||
display: block;
|
||
padding: 4px 0;
|
||
white-space: nowrap;
|
||
text-overflow: ellipsis;
|
||
overflow-x: hidden;
|
||
}
|
||
|
||
.jp-tocItem-collapser {
|
||
height: 20px;
|
||
margin: 2px 2px 0;
|
||
padding: 0;
|
||
background: none;
|
||
border: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-tocItem-collapser:hover {
|
||
background-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
/* Active heading indicator */
|
||
|
||
.jp-tocItem-heading::before {
|
||
content: ' ';
|
||
background: transparent;
|
||
width: var(--jp-private-toc-active-width);
|
||
height: 24px;
|
||
position: absolute;
|
||
left: 0;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-tocItem-heading.jp-tocItem-active::before {
|
||
background-color: var(--jp-brand-color1);
|
||
}
|
||
|
||
.jp-tocItem-heading:hover.jp-tocItem-active::before {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Collapser {
|
||
flex: 0 0 var(--jp-cell-collapser-width);
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
opacity: 1;
|
||
}
|
||
|
||
.jp-Collapser-child {
|
||
display: block;
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
|
||
/* height: 100% doesn't work because the height of its parent is computed from content */
|
||
position: absolute;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Hiding collapsers in print mode.
|
||
|
||
Note: input and output wrappers have "display: block" propery in print mode.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Header/Footer
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Hidden by zero height by default */
|
||
.jp-CellHeader,
|
||
.jp-CellFooter {
|
||
height: 0;
|
||
width: 100%;
|
||
padding: 0;
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Input
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* All input areas */
|
||
.jp-InputArea {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
display: table-cell;
|
||
overflow: hidden;
|
||
vertical-align: top;
|
||
|
||
/* This is the non-active, default styling */
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-cell;
|
||
vertical-align: top;
|
||
width: var(--jp-cell-prompt-width);
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
padding: var(--jp-code-padding);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
opacity: var(--jp-cell-prompt-opacity);
|
||
line-height: var(--jp-code-line-height);
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
|
||
/* Right align prompt text, don't wrap to handle large prompt numbers */
|
||
text-align: right;
|
||
white-space: nowrap;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
|
||
/* Disable text selection */
|
||
-webkit-user-select: none;
|
||
-moz-user-select: none;
|
||
-ms-user-select: none;
|
||
user-select: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Mobile
|
||
|----------------------------------------------------------------------------*/
|
||
@media only screen and (max-width: 760px) {
|
||
.jp-InputArea-editor {
|
||
display: table-row;
|
||
margin-left: var(--jp-notebook-padding);
|
||
}
|
||
|
||
.jp-InputPrompt {
|
||
display: table-row;
|
||
text-align: left;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Placeholder {
|
||
display: table;
|
||
table-layout: fixed;
|
||
width: 100%;
|
||
}
|
||
|
||
.jp-Placeholder-prompt {
|
||
display: table-cell;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
.jp-Placeholder-content {
|
||
display: table-cell;
|
||
padding: 4px 6px;
|
||
border: 1px solid transparent;
|
||
border-radius: 0;
|
||
background: none;
|
||
box-sizing: border-box;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Placeholder-contentContainer {
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Placeholder-content:hover,
|
||
.jp-InputPlaceholder > .jp-Placeholder-content:hover {
|
||
border-color: var(--jp-layout-color3);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon {
|
||
width: 32px;
|
||
height: 16px;
|
||
border: 1px solid transparent;
|
||
border-radius: var(--jp-border-radius);
|
||
}
|
||
|
||
.jp-Placeholder-content .jp-MoreHorizIcon:hover {
|
||
border: 1px solid var(--jp-border-color1);
|
||
box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.25);
|
||
background-color: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-PlaceholderText {
|
||
white-space: nowrap;
|
||
overflow-x: hidden;
|
||
color: var(--jp-inverse-layout-color3);
|
||
font-family: var(--jp-code-font-family);
|
||
}
|
||
|
||
.jp-InputPlaceholder > .jp-Placeholder-content {
|
||
border-color: var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Private CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-private-cell-scrolling-output-offset: 5px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell {
|
||
padding: var(--jp-cell-padding);
|
||
margin: 0;
|
||
border: none;
|
||
outline: none;
|
||
background: transparent;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Common input/output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: flex;
|
||
flex-direction: row;
|
||
padding: 0;
|
||
margin: 0;
|
||
|
||
/* Added to reveal the box-shadow on the input and output collapsers. */
|
||
overflow: visible;
|
||
}
|
||
|
||
/* Only input/output areas inside cells */
|
||
.jp-Cell-inputArea,
|
||
.jp-Cell-outputArea {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Collapser
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Make the output collapser disappear when there is not output, but do so
|
||
* in a manner that leaves it in the layout and preserves its width.
|
||
*/
|
||
.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser {
|
||
border: none !important;
|
||
background: transparent !important;
|
||
}
|
||
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser {
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Output
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Put a space between input and output when there IS output */
|
||
.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper {
|
||
margin-top: 5px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea {
|
||
overflow-y: auto;
|
||
max-height: 24em;
|
||
margin-left: var(--jp-private-cell-scrolling-output-offset);
|
||
resize: vertical;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea[style*='height'] {
|
||
max-height: unset;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea::after {
|
||
content: ' ';
|
||
box-shadow: inset 0 0 6px 2px rgb(0 0 0 / 30%);
|
||
width: 100%;
|
||
height: 100%;
|
||
position: sticky;
|
||
bottom: 0;
|
||
top: 0;
|
||
margin-top: -50%;
|
||
float: left;
|
||
display: block;
|
||
pointer-events: none;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-child {
|
||
padding-top: 6px;
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt {
|
||
width: calc(
|
||
var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset)
|
||
);
|
||
}
|
||
|
||
.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-promptOverlay {
|
||
left: calc(-1 * var(--jp-private-cell-scrolling-output-offset));
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CodeCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| MarkdownCell
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-MarkdownOutput {
|
||
display: table-cell;
|
||
width: 100%;
|
||
margin-top: 0;
|
||
margin-bottom: 0;
|
||
padding-left: var(--jp-code-padding);
|
||
}
|
||
|
||
.jp-MarkdownOutput.jp-RenderedHTMLCommon {
|
||
overflow: auto;
|
||
}
|
||
|
||
/* collapseHeadingButton (show always if hiddenCellsButton is _not_ shown) */
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
min-height: var(--jp-cell-collapser-min-height);
|
||
font-size: var(--jp-code-font-size);
|
||
position: absolute;
|
||
background-color: transparent;
|
||
background-size: 25px;
|
||
background-repeat: no-repeat;
|
||
background-position-x: center;
|
||
background-position-y: top;
|
||
background-image: var(--jp-icon-caret-down);
|
||
right: 0;
|
||
top: 0;
|
||
bottom: 0;
|
||
}
|
||
|
||
.jp-collapseHeadingButton.jp-mod-collapsed {
|
||
background-image: var(--jp-icon-caret-right);
|
||
}
|
||
|
||
/*
|
||
set the container font size to match that of content
|
||
so that the nested collapse buttons have the right size
|
||
*/
|
||
.jp-MarkdownCell .jp-InputPrompt {
|
||
font-size: var(--jp-content-font-size1);
|
||
}
|
||
|
||
/*
|
||
Align collapseHeadingButton with cell top header
|
||
The font sizes are identical to the ones in packages/rendermime/style/base.css
|
||
*/
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='1'] {
|
||
font-size: var(--jp-content-font-size5);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size5));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='2'] {
|
||
font-size: var(--jp-content-font-size4);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size4));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='3'] {
|
||
font-size: var(--jp-content-font-size3);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size3));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='4'] {
|
||
font-size: var(--jp-content-font-size2);
|
||
background-position-y: calc(0.3 * var(--jp-content-font-size2));
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='5'] {
|
||
font-size: var(--jp-content-font-size1);
|
||
background-position-y: top;
|
||
}
|
||
|
||
.jp-mod-rendered .jp-collapseHeadingButton[data-heading-level='6'] {
|
||
font-size: var(--jp-content-font-size0);
|
||
background-position-y: top;
|
||
}
|
||
|
||
/* collapseHeadingButton (show only on (hover,active) if hiddenCellsButton is shown) */
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-collapseHeadingButton {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton
|
||
:is(.jp-MarkdownCell:hover, .jp-mod-active)
|
||
.jp-collapseHeadingButton {
|
||
display: flex;
|
||
}
|
||
|
||
/* showHiddenCellsButton (only show if jp-mod-showHiddenCellsButton is set, which
|
||
is a consequence of the showHiddenCellsButton option in Notebook Settings)*/
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton {
|
||
margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding));
|
||
margin-top: var(--jp-code-padding);
|
||
border: 1px solid var(--jp-border-color2);
|
||
background-color: var(--jp-border-color3) !important;
|
||
color: var(--jp-content-font-color0) !important;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-showHiddenCellsButton .jp-showHiddenCellsButton:hover {
|
||
background-color: var(--jp-border-color2) !important;
|
||
}
|
||
|
||
.jp-showHiddenCellsButton {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Printing
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
Using block instead of flex to allow the use of the break-inside CSS property for
|
||
cell outputs.
|
||
*/
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-notebook-toolbar-padding: 2px 5px 2px 2px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookPanel-toolbar {
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
|
||
/* disable paint containment from lumino 2.0 default strict CSS containment */
|
||
contain: style size !important;
|
||
}
|
||
|
||
.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused {
|
||
border: none;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown select {
|
||
height: 24px;
|
||
font-size: var(--jp-ui-font-size1);
|
||
line-height: 14px;
|
||
border-radius: 0;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-toolbarCellTypeDropdown span {
|
||
top: 5px !important;
|
||
}
|
||
|
||
.jp-Toolbar-responsive-popup {
|
||
position: absolute;
|
||
height: fit-content;
|
||
display: flex;
|
||
flex-direction: row;
|
||
flex-wrap: wrap;
|
||
justify-content: flex-end;
|
||
border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color);
|
||
box-shadow: var(--jp-toolbar-box-shadow);
|
||
background: var(--jp-toolbar-background);
|
||
min-height: var(--jp-toolbar-micro-height);
|
||
padding: var(--jp-notebook-toolbar-padding);
|
||
z-index: 1;
|
||
right: 0;
|
||
top: 0;
|
||
}
|
||
|
||
.jp-Toolbar > .jp-Toolbar-responsive-opener {
|
||
margin-left: auto;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Styles
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-ExecutionIndicator {
|
||
position: relative;
|
||
display: inline-block;
|
||
height: 100%;
|
||
z-index: 9997;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: hidden;
|
||
height: auto;
|
||
width: max-content;
|
||
width: -moz-max-content;
|
||
background-color: var(--jp-layout-color2);
|
||
color: var(--jp-ui-font-color1);
|
||
text-align: justify;
|
||
border-radius: 6px;
|
||
padding: 0 5px;
|
||
position: fixed;
|
||
display: table;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.up {
|
||
transform: translateX(-50%) translateY(-100%) translateY(-32px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.down {
|
||
transform: translateX(calc(-100% + 16px)) translateY(5px);
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-tooltip.hidden {
|
||
display: none;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator:hover .jp-Notebook-ExecutionIndicator-tooltip {
|
||
visibility: visible;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator span {
|
||
font-size: var(--jp-ui-font-size1);
|
||
font-family: var(--jp-ui-font-family);
|
||
color: var(--jp-ui-font-color1);
|
||
line-height: 24px;
|
||
display: block;
|
||
}
|
||
|
||
.jp-Notebook-ExecutionIndicator-progress-bar {
|
||
display: flex;
|
||
justify-content: center;
|
||
height: 100%;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
/*
|
||
* Execution indicator
|
||
*/
|
||
.jp-tocItem-content::after {
|
||
content: '';
|
||
|
||
/* Must be identical to form a circle */
|
||
width: 12px;
|
||
height: 12px;
|
||
background: none;
|
||
border: none;
|
||
position: absolute;
|
||
right: 0;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background: none;
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='1']::after {
|
||
border-radius: 50%;
|
||
border: var(--jp-border-width) solid var(--jp-inverse-layout-color3);
|
||
background-color: var(--jp-inverse-layout-color3);
|
||
}
|
||
|
||
.jp-tocItem-content[data-running='0'],
|
||
.jp-tocItem-content[data-running='1'] {
|
||
margin-right: 12px;
|
||
}
|
||
|
||
/*
|
||
* Copyright (c) Jupyter Development Team.
|
||
* Distributed under the terms of the Modified BSD License.
|
||
*/
|
||
|
||
.jp-Notebook-footer {
|
||
height: 27px;
|
||
margin-left: calc(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding)
|
||
);
|
||
width: calc(
|
||
100% -
|
||
(
|
||
var(--jp-cell-prompt-width) + var(--jp-cell-collapser-width) +
|
||
var(--jp-cell-padding) + var(--jp-cell-padding)
|
||
)
|
||
);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
color: var(--jp-ui-font-color3);
|
||
margin-top: 6px;
|
||
background: none;
|
||
cursor: pointer;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus {
|
||
border-color: var(--jp-cell-editor-active-border-color);
|
||
}
|
||
|
||
/* For devices that support hovering, hide footer until hover */
|
||
@media (hover: hover) {
|
||
.jp-Notebook-footer {
|
||
opacity: 0;
|
||
}
|
||
|
||
.jp-Notebook-footer:focus,
|
||
.jp-Notebook-footer:hover {
|
||
opacity: 1;
|
||
}
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Imports
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| CSS variables
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
:root {
|
||
--jp-side-by-side-output-size: 1fr;
|
||
--jp-side-by-side-resized-cell: var(--jp-side-by-side-output-size);
|
||
--jp-private-notebook-dragImage-width: 304px;
|
||
--jp-private-notebook-dragImage-height: 36px;
|
||
--jp-private-notebook-selected-color: var(--md-blue-400);
|
||
--jp-private-notebook-active-color: var(--md-green-400);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* stylelint-disable selector-max-class */
|
||
|
||
.jp-NotebookPanel {
|
||
display: block;
|
||
height: 100%;
|
||
}
|
||
|
||
.jp-NotebookPanel.jp-Document {
|
||
min-width: 240px;
|
||
min-height: 120px;
|
||
}
|
||
|
||
.jp-Notebook {
|
||
padding: var(--jp-notebook-padding);
|
||
outline: none;
|
||
overflow: auto;
|
||
background: var(--jp-layout-color0);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-scrollPastEnd::after {
|
||
display: block;
|
||
content: '';
|
||
min-height: var(--jp-notebook-scroll-padding);
|
||
}
|
||
|
||
.jp-MainAreaWidget-ContainStrict .jp-Notebook * {
|
||
contain: strict;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell {
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell .jp-InputPrompt {
|
||
cursor: move;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook state related styling
|
||
|
|
||
| The notebook and cells each have states, here are the possibilities:
|
||
|
|
||
| - Notebook
|
||
| - Command
|
||
| - Edit
|
||
| - Cell
|
||
| - None
|
||
| - Active (only one can be active)
|
||
| - Selected (the cells actions are applied to)
|
||
| - Multiselected (when multiple selected, the cursor)
|
||
| - No outputs
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/* Command or edit modes */
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt {
|
||
opacity: var(--jp-cell-prompt-not-active-opacity);
|
||
color: var(--jp-cell-prompt-not-active-font-color);
|
||
}
|
||
|
||
/* cell is active */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser {
|
||
background: var(--jp-brand-color1);
|
||
}
|
||
|
||
/* cell is dirty */
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt {
|
||
color: var(--jp-warn-color1);
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt::before {
|
||
color: var(--jp-warn-color1);
|
||
content: '•';
|
||
}
|
||
|
||
.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser {
|
||
background: var(--jp-warn-color1);
|
||
}
|
||
|
||
/* collapser is hovered */
|
||
.jp-Notebook .jp-Cell .jp-Collapser:hover {
|
||
box-shadow: var(--jp-elevation-z2);
|
||
background: var(--jp-brand-color1);
|
||
opacity: var(--jp-cell-collapser-not-active-hover-opacity);
|
||
}
|
||
|
||
/* cell is active and collapser is hovered */
|
||
.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover {
|
||
background: var(--jp-brand-color0);
|
||
opacity: 1;
|
||
}
|
||
|
||
/* Command mode */
|
||
|
||
.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected {
|
||
background: var(--jp-notebook-multiselected-color);
|
||
}
|
||
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) {
|
||
background: transparent;
|
||
}
|
||
|
||
/* Edit mode */
|
||
|
||
.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor {
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color);
|
||
box-shadow: var(--jp-input-box-shadow);
|
||
background-color: var(--jp-cell-editor-active-background);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Notebook drag and drop
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Notebook-cell.jp-mod-dropSource {
|
||
opacity: 0.5;
|
||
}
|
||
|
||
.jp-Notebook-cell.jp-mod-dropTarget,
|
||
.jp-Notebook.jp-mod-commandMode
|
||
.jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget {
|
||
border-top-color: var(--jp-private-notebook-selected-color);
|
||
border-top-style: solid;
|
||
border-top-width: 2px;
|
||
}
|
||
|
||
.jp-dragImage {
|
||
display: block;
|
||
flex-direction: row;
|
||
width: var(--jp-private-notebook-dragImage-width);
|
||
height: var(--jp-private-notebook-dragImage-height);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background);
|
||
overflow: visible;
|
||
}
|
||
|
||
.jp-dragImage-singlePrompt {
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-content {
|
||
flex: 1 1 auto;
|
||
z-index: 2;
|
||
font-size: var(--jp-code-font-size);
|
||
font-family: var(--jp-code-font-family);
|
||
line-height: var(--jp-code-line-height);
|
||
padding: var(--jp-code-padding);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
background: var(--jp-cell-editor-background-color);
|
||
color: var(--jp-content-font-color3);
|
||
text-align: left;
|
||
margin: 4px 4px 4px 0;
|
||
}
|
||
|
||
.jp-dragImage .jp-dragImage-prompt {
|
||
flex: 0 0 auto;
|
||
min-width: 36px;
|
||
color: var(--jp-cell-inprompt-font-color);
|
||
padding: var(--jp-code-padding);
|
||
padding-left: 12px;
|
||
font-family: var(--jp-cell-prompt-font-family);
|
||
letter-spacing: var(--jp-cell-prompt-letter-spacing);
|
||
line-height: 1.9;
|
||
font-size: var(--jp-code-font-size);
|
||
border: var(--jp-border-width) solid transparent;
|
||
}
|
||
|
||
.jp-dragImage-multipleBack {
|
||
z-index: -1;
|
||
position: absolute;
|
||
height: 32px;
|
||
width: 300px;
|
||
top: 8px;
|
||
left: 8px;
|
||
background: var(--jp-layout-color2);
|
||
border: var(--jp-border-width) solid var(--jp-input-border-color);
|
||
box-shadow: 2px 2px 4px 0 rgba(0, 0, 0, 0.12);
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Cell toolbar
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-NotebookTools {
|
||
display: block;
|
||
min-width: var(--jp-sidebar-min-width);
|
||
color: var(--jp-ui-font-color1);
|
||
background: var(--jp-layout-color1);
|
||
|
||
/* This is needed so that all font sizing of children done in ems is
|
||
* relative to this base size */
|
||
font-size: var(--jp-ui-font-size1);
|
||
overflow: auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool {
|
||
padding: 12px 0;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-ActiveCellTool-Content {
|
||
flex: 1 1 auto;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-ActiveCellTool-CellContent {
|
||
background: var(--jp-cell-editor-background);
|
||
border: var(--jp-border-width) solid var(--jp-cell-editor-border-color);
|
||
border-radius: 0;
|
||
min-height: 29px;
|
||
}
|
||
|
||
.jp-ActiveCellTool .jp-InputPrompt {
|
||
min-width: calc(var(--jp-cell-prompt-width) * 0.75);
|
||
}
|
||
|
||
.jp-ActiveCellTool-CellContent > pre {
|
||
padding: 5px 4px;
|
||
margin: 0;
|
||
white-space: normal;
|
||
}
|
||
|
||
.jp-MetadataEditorTool {
|
||
flex-direction: column;
|
||
padding: 12px 0;
|
||
}
|
||
|
||
.jp-RankedPanel > :not(:first-child) {
|
||
margin-top: 12px;
|
||
}
|
||
|
||
.jp-KeySelector select.jp-mod-styled {
|
||
font-size: var(--jp-ui-font-size1);
|
||
color: var(--jp-ui-font-color0);
|
||
border: var(--jp-border-width) solid var(--jp-border-color1);
|
||
}
|
||
|
||
.jp-KeySelector label,
|
||
.jp-MetadataEditorTool label,
|
||
.jp-NumberSetter label {
|
||
line-height: 1.4;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-select-wrapper {
|
||
margin-top: 4px;
|
||
margin-bottom: 0;
|
||
}
|
||
|
||
.jp-NumberSetter input {
|
||
width: 100%;
|
||
margin-top: 4px;
|
||
}
|
||
|
||
.jp-NotebookTools .jp-Collapse {
|
||
margin-top: 16px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Presentation Mode (.jp-mod-presentationMode)
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-mod-presentationMode .jp-Notebook {
|
||
--jp-content-font-size1: var(--jp-content-presentation-font-size1);
|
||
--jp-code-font-size: var(--jp-code-presentation-font-size);
|
||
}
|
||
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt,
|
||
.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt {
|
||
flex: 0 0 110px;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Side-by-side Mode (.jp-mod-sideBySide)
|
||
|----------------------------------------------------------------------------*/
|
||
.jp-mod-sideBySide.jp-Notebook .jp-Notebook-cell {
|
||
margin-top: 3em;
|
||
margin-bottom: 3em;
|
||
margin-left: 5%;
|
||
margin-right: 5%;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-output-size)
|
||
);
|
||
grid-template-rows: auto minmax(0, 1fr) auto;
|
||
grid-template-areas:
|
||
'header header header'
|
||
'input handle output'
|
||
'footer footer footer';
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell.jp-mod-resizedCell {
|
||
grid-template-columns: minmax(0, 1fr) min-content minmax(
|
||
0,
|
||
var(--jp-side-by-side-resized-cell)
|
||
);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellHeader {
|
||
grid-area: header;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-inputWrapper {
|
||
grid-area: input;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-Cell-outputWrapper {
|
||
/* overwrite the default margin (no vertical separation needed in side by side move */
|
||
margin-top: 0;
|
||
grid-area: output;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellFooter {
|
||
grid-area: footer;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle {
|
||
grid-area: handle;
|
||
user-select: none;
|
||
display: block;
|
||
height: 100%;
|
||
cursor: ew-resize;
|
||
padding: 0 var(--jp-cell-padding);
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook .jp-CodeCell .jp-CellResizeHandle::after {
|
||
content: '';
|
||
display: block;
|
||
background: var(--jp-border-color2);
|
||
height: 100%;
|
||
width: 5px;
|
||
}
|
||
|
||
.jp-mod-sideBySide.jp-Notebook
|
||
.jp-CodeCell.jp-mod-resizedCell
|
||
.jp-CellResizeHandle::after {
|
||
background: var(--jp-border-color0);
|
||
}
|
||
|
||
.jp-CellResizeHandle {
|
||
display: none;
|
||
}
|
||
|
||
/*-----------------------------------------------------------------------------
|
||
| Placeholder
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
.jp-Cell-Placeholder {
|
||
padding-left: 55px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper {
|
||
background: #fff;
|
||
border: 1px solid;
|
||
border-color: #e5e6e9 #dfe0e4 #d0d1d5;
|
||
border-radius: 4px;
|
||
-webkit-border-radius: 4px;
|
||
margin: 10px 15px;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-inner {
|
||
padding: 15px;
|
||
position: relative;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body {
|
||
background-repeat: repeat;
|
||
background-size: 50% auto;
|
||
}
|
||
|
||
.jp-Cell-Placeholder-wrapper-body div {
|
||
background: #f6f7f8;
|
||
background-image: -webkit-linear-gradient(
|
||
left,
|
||
#f6f7f8 0%,
|
||
#edeef1 20%,
|
||
#f6f7f8 40%,
|
||
#f6f7f8 100%
|
||
);
|
||
background-repeat: no-repeat;
|
||
background-size: 800px 104px;
|
||
height: 104px;
|
||
position: absolute;
|
||
right: 15px;
|
||
left: 15px;
|
||
top: 15px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h1 {
|
||
top: 20px;
|
||
height: 20px;
|
||
left: 15px;
|
||
width: 150px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-h2 {
|
||
left: 15px;
|
||
top: 50px;
|
||
height: 10px;
|
||
width: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1,
|
||
div.jp-Cell-Placeholder-content-2,
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
left: 15px;
|
||
right: 15px;
|
||
height: 10px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-1 {
|
||
top: 100px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-2 {
|
||
top: 120px;
|
||
}
|
||
|
||
div.jp-Cell-Placeholder-content-3 {
|
||
top: 140px;
|
||
}
|
||
|
||
</style>
|
||
<style type="text/css">
|
||
/*-----------------------------------------------------------------------------
|
||
| Copyright (c) Jupyter Development Team.
|
||
| Distributed under the terms of the Modified BSD License.
|
||
|----------------------------------------------------------------------------*/
|
||
|
||
/*
|
||
The following CSS variables define the main, public API for styling JupyterLab.
|
||
These variables should be used by all plugins wherever possible. In other
|
||
words, plugins should not define custom colors, sizes, etc unless absolutely
|
||
necessary. This enables users to change the visual theme of JupyterLab
|
||
by changing these variables.
|
||
|
||
Many variables appear in an ordered sequence (0,1,2,3). These sequences
|
||
are designed to work well together, so for example, `--jp-border-color1` should
|
||
be used with `--jp-layout-color1`. The numbers have the following meanings:
|
||
|
||
* 0: super-primary, reserved for special emphasis
|
||
* 1: primary, most important under normal situations
|
||
* 2: secondary, next most important under normal situations
|
||
* 3: tertiary, next most important under normal situations
|
||
|
||
Throughout JupyterLab, we are mostly following principles from Google's
|
||
Material Design when selecting colors. We are not, however, following
|
||
all of MD as it is not optimized for dense, information rich UIs.
|
||
*/
|
||
|
||
:root {
|
||
/* Elevation
|
||
*
|
||
* We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here:
|
||
*
|
||
* https://github.com/material-components/material-components-web
|
||
* https://material-components-web.appspot.com/elevation.html
|
||
*/
|
||
|
||
--jp-shadow-base-lightness: 0;
|
||
--jp-shadow-umbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.2
|
||
);
|
||
--jp-shadow-penumbra-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.14
|
||
);
|
||
--jp-shadow-ambient-color: rgba(
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
var(--jp-shadow-base-lightness),
|
||
0.12
|
||
);
|
||
--jp-elevation-z0: none;
|
||
--jp-elevation-z1: 0 2px 1px -1px var(--jp-shadow-umbra-color),
|
||
0 1px 1px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 3px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z2: 0 3px 1px -2px var(--jp-shadow-umbra-color),
|
||
0 2px 2px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 5px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z4: 0 2px 4px -1px var(--jp-shadow-umbra-color),
|
||
0 4px 5px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 10px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z6: 0 3px 5px -1px var(--jp-shadow-umbra-color),
|
||
0 6px 10px 0 var(--jp-shadow-penumbra-color),
|
||
0 1px 18px 0 var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z8: 0 5px 5px -3px var(--jp-shadow-umbra-color),
|
||
0 8px 10px 1px var(--jp-shadow-penumbra-color),
|
||
0 3px 14px 2px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z12: 0 7px 8px -4px var(--jp-shadow-umbra-color),
|
||
0 12px 17px 2px var(--jp-shadow-penumbra-color),
|
||
0 5px 22px 4px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z16: 0 8px 10px -5px var(--jp-shadow-umbra-color),
|
||
0 16px 24px 2px var(--jp-shadow-penumbra-color),
|
||
0 6px 30px 5px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z20: 0 10px 13px -6px var(--jp-shadow-umbra-color),
|
||
0 20px 31px 3px var(--jp-shadow-penumbra-color),
|
||
0 8px 38px 7px var(--jp-shadow-ambient-color);
|
||
--jp-elevation-z24: 0 11px 15px -7px var(--jp-shadow-umbra-color),
|
||
0 24px 38px 3px var(--jp-shadow-penumbra-color),
|
||
0 9px 46px 8px var(--jp-shadow-ambient-color);
|
||
|
||
/* Borders
|
||
*
|
||
* The following variables, specify the visual styling of borders in JupyterLab.
|
||
*/
|
||
|
||
--jp-border-width: 1px;
|
||
--jp-border-color0: var(--md-grey-400);
|
||
--jp-border-color1: var(--md-grey-400);
|
||
--jp-border-color2: var(--md-grey-300);
|
||
--jp-border-color3: var(--md-grey-200);
|
||
--jp-inverse-border-color: var(--md-grey-600);
|
||
--jp-border-radius: 2px;
|
||
|
||
/* UI Fonts
|
||
*
|
||
* The UI font CSS variables are used for the typography all of the JupyterLab
|
||
* user interface elements that are not directly user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-ui-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-ui-font-scale-factor: 1.2;
|
||
--jp-ui-font-size0: 0.83333em;
|
||
--jp-ui-font-size1: 13px; /* Base font size */
|
||
--jp-ui-font-size2: 1.2em;
|
||
--jp-ui-font-size3: 1.44em;
|
||
--jp-ui-font-family: system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI',
|
||
helvetica, arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
|
||
'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Use these font colors against the corresponding main layout colors.
|
||
* In a light theme, these go from dark to light.
|
||
*/
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-ui-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-ui-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-ui-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-ui-font-color3: rgba(0, 0, 0, 0.38);
|
||
|
||
/*
|
||
* Use these against the brand/accent/warn/error colors.
|
||
* These will typically go from light to darker, in both a dark and light theme.
|
||
*/
|
||
|
||
--jp-ui-inverse-font-color0: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color1: rgba(255, 255, 255, 1);
|
||
--jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7);
|
||
--jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5);
|
||
|
||
/* Content Fonts
|
||
*
|
||
* Content font variables are used for typography of user generated content.
|
||
*
|
||
* The font sizing here is done assuming that the body font size of --jp-content-font-size1
|
||
* is applied to a parent element. When children elements, such as headings, are sized
|
||
* in em all things will be computed relative to that body size.
|
||
*/
|
||
|
||
--jp-content-line-height: 1.6;
|
||
--jp-content-font-scale-factor: 1.2;
|
||
--jp-content-font-size0: 0.83333em;
|
||
--jp-content-font-size1: 14px; /* Base font size */
|
||
--jp-content-font-size2: 1.2em;
|
||
--jp-content-font-size3: 1.44em;
|
||
--jp-content-font-size4: 1.728em;
|
||
--jp-content-font-size5: 2.0736em;
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-content-presentation-font-size1: 17px;
|
||
--jp-content-heading-line-height: 1;
|
||
--jp-content-heading-margin-top: 1.2em;
|
||
--jp-content-heading-margin-bottom: 0.8em;
|
||
--jp-content-heading-font-weight: 500;
|
||
|
||
/* Defaults use Material Design specification */
|
||
--jp-content-font-color0: rgba(0, 0, 0, 1);
|
||
--jp-content-font-color1: rgba(0, 0, 0, 0.87);
|
||
--jp-content-font-color2: rgba(0, 0, 0, 0.54);
|
||
--jp-content-font-color3: rgba(0, 0, 0, 0.38);
|
||
--jp-content-link-color: var(--md-blue-900);
|
||
--jp-content-font-family: system-ui, -apple-system, blinkmacsystemfont,
|
||
'Segoe UI', helvetica, arial, sans-serif, 'Apple Color Emoji',
|
||
'Segoe UI Emoji', 'Segoe UI Symbol';
|
||
|
||
/*
|
||
* Code Fonts
|
||
*
|
||
* Code font variables are used for typography of code and other monospaces content.
|
||
*/
|
||
|
||
--jp-code-font-size: 13px;
|
||
--jp-code-line-height: 1.3077; /* 17px for 13px base */
|
||
--jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */
|
||
--jp-code-font-family-default: menlo, consolas, 'DejaVu Sans Mono', monospace;
|
||
--jp-code-font-family: var(--jp-code-font-family-default);
|
||
|
||
/* This gives a magnification of about 125% in presentation mode over normal. */
|
||
--jp-code-presentation-font-size: 16px;
|
||
|
||
/* may need to tweak cursor width if you change font size */
|
||
--jp-code-cursor-width0: 1.4px;
|
||
--jp-code-cursor-width1: 2px;
|
||
--jp-code-cursor-width2: 4px;
|
||
|
||
/* Layout
|
||
*
|
||
* The following are the main layout colors use in JupyterLab. In a light
|
||
* theme these would go from light to dark.
|
||
*/
|
||
|
||
--jp-layout-color0: white;
|
||
--jp-layout-color1: white;
|
||
--jp-layout-color2: var(--md-grey-200);
|
||
--jp-layout-color3: var(--md-grey-400);
|
||
--jp-layout-color4: var(--md-grey-600);
|
||
|
||
/* Inverse Layout
|
||
*
|
||
* The following are the inverse layout colors use in JupyterLab. In a light
|
||
* theme these would go from dark to light.
|
||
*/
|
||
|
||
--jp-inverse-layout-color0: #111;
|
||
--jp-inverse-layout-color1: var(--md-grey-900);
|
||
--jp-inverse-layout-color2: var(--md-grey-800);
|
||
--jp-inverse-layout-color3: var(--md-grey-700);
|
||
--jp-inverse-layout-color4: var(--md-grey-600);
|
||
|
||
/* Brand/accent */
|
||
|
||
--jp-brand-color0: var(--md-blue-900);
|
||
--jp-brand-color1: var(--md-blue-700);
|
||
--jp-brand-color2: var(--md-blue-300);
|
||
--jp-brand-color3: var(--md-blue-100);
|
||
--jp-brand-color4: var(--md-blue-50);
|
||
--jp-accent-color0: var(--md-green-900);
|
||
--jp-accent-color1: var(--md-green-700);
|
||
--jp-accent-color2: var(--md-green-300);
|
||
--jp-accent-color3: var(--md-green-100);
|
||
|
||
/* State colors (warn, error, success, info) */
|
||
|
||
--jp-warn-color0: var(--md-orange-900);
|
||
--jp-warn-color1: var(--md-orange-700);
|
||
--jp-warn-color2: var(--md-orange-300);
|
||
--jp-warn-color3: var(--md-orange-100);
|
||
--jp-error-color0: var(--md-red-900);
|
||
--jp-error-color1: var(--md-red-700);
|
||
--jp-error-color2: var(--md-red-300);
|
||
--jp-error-color3: var(--md-red-100);
|
||
--jp-success-color0: var(--md-green-900);
|
||
--jp-success-color1: var(--md-green-700);
|
||
--jp-success-color2: var(--md-green-300);
|
||
--jp-success-color3: var(--md-green-100);
|
||
--jp-info-color0: var(--md-cyan-900);
|
||
--jp-info-color1: var(--md-cyan-700);
|
||
--jp-info-color2: var(--md-cyan-300);
|
||
--jp-info-color3: var(--md-cyan-100);
|
||
|
||
/* Cell specific styles */
|
||
|
||
--jp-cell-padding: 5px;
|
||
--jp-cell-collapser-width: 8px;
|
||
--jp-cell-collapser-min-height: 20px;
|
||
--jp-cell-collapser-not-active-hover-opacity: 0.6;
|
||
--jp-cell-editor-background: var(--md-grey-100);
|
||
--jp-cell-editor-border-color: var(--md-grey-300);
|
||
--jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-cell-editor-active-background: var(--jp-layout-color0);
|
||
--jp-cell-editor-active-border-color: var(--jp-brand-color1);
|
||
--jp-cell-prompt-width: 64px;
|
||
--jp-cell-prompt-font-family: var(--jp-code-font-family-default);
|
||
--jp-cell-prompt-letter-spacing: 0;
|
||
--jp-cell-prompt-opacity: 1;
|
||
--jp-cell-prompt-not-active-opacity: 0.5;
|
||
--jp-cell-prompt-not-active-font-color: var(--md-grey-700);
|
||
|
||
/* A custom blend of MD grey and blue 600
|
||
* See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */
|
||
--jp-cell-inprompt-font-color: #307fc1;
|
||
|
||
/* A custom blend of MD grey and orange 600
|
||
* https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */
|
||
--jp-cell-outprompt-font-color: #bf5b3d;
|
||
|
||
/* Notebook specific styles */
|
||
|
||
--jp-notebook-padding: 10px;
|
||
--jp-notebook-select-background: var(--jp-layout-color1);
|
||
--jp-notebook-multiselected-color: var(--md-blue-50);
|
||
|
||
/* The scroll padding is calculated to fill enough space at the bottom of the
|
||
notebook to show one single-line cell (with appropriate padding) at the top
|
||
when the notebook is scrolled all the way to the bottom. We also subtract one
|
||
pixel so that no scrollbar appears if we have just one single-line cell in the
|
||
notebook. This padding is to enable a 'scroll past end' feature in a notebook.
|
||
*/
|
||
--jp-notebook-scroll-padding: calc(
|
||
100% - var(--jp-code-font-size) * var(--jp-code-line-height) -
|
||
var(--jp-code-padding) - var(--jp-cell-padding) - 1px
|
||
);
|
||
|
||
/* Rendermime styles */
|
||
|
||
--jp-rendermime-error-background: #fdd;
|
||
--jp-rendermime-table-row-background: var(--md-grey-100);
|
||
--jp-rendermime-table-row-hover-background: var(--md-light-blue-50);
|
||
|
||
/* Dialog specific styles */
|
||
|
||
--jp-dialog-background: rgba(0, 0, 0, 0.25);
|
||
|
||
/* Console specific styles */
|
||
|
||
--jp-console-padding: 10px;
|
||
|
||
/* Toolbar specific styles */
|
||
|
||
--jp-toolbar-border-color: var(--jp-border-color1);
|
||
--jp-toolbar-micro-height: 8px;
|
||
--jp-toolbar-background: var(--jp-layout-color1);
|
||
--jp-toolbar-box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.24);
|
||
--jp-toolbar-header-margin: 4px 4px 0 4px;
|
||
--jp-toolbar-active-background: var(--md-grey-300);
|
||
|
||
/* Statusbar specific styles */
|
||
|
||
--jp-statusbar-height: 24px;
|
||
|
||
/* Input field styles */
|
||
|
||
--jp-input-box-shadow: inset 0 0 2px var(--md-blue-300);
|
||
--jp-input-active-background: var(--jp-layout-color1);
|
||
--jp-input-hover-background: var(--jp-layout-color1);
|
||
--jp-input-background: var(--md-grey-100);
|
||
--jp-input-border-color: var(--jp-inverse-border-color);
|
||
--jp-input-active-border-color: var(--jp-brand-color1);
|
||
--jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3);
|
||
|
||
/* General editor styles */
|
||
|
||
--jp-editor-selected-background: #d9d9d9;
|
||
--jp-editor-selected-focused-background: #d7d4f0;
|
||
--jp-editor-cursor-color: var(--jp-ui-font-color0);
|
||
|
||
/* Code mirror specific styles */
|
||
|
||
--jp-mirror-editor-keyword-color: #008000;
|
||
--jp-mirror-editor-atom-color: #88f;
|
||
--jp-mirror-editor-number-color: #080;
|
||
--jp-mirror-editor-def-color: #00f;
|
||
--jp-mirror-editor-variable-color: var(--md-grey-900);
|
||
--jp-mirror-editor-variable-2-color: rgb(0, 54, 109);
|
||
--jp-mirror-editor-variable-3-color: #085;
|
||
--jp-mirror-editor-punctuation-color: #05a;
|
||
--jp-mirror-editor-property-color: #05a;
|
||
--jp-mirror-editor-operator-color: #a2f;
|
||
--jp-mirror-editor-comment-color: #408080;
|
||
--jp-mirror-editor-string-color: #ba2121;
|
||
--jp-mirror-editor-string-2-color: #708;
|
||
--jp-mirror-editor-meta-color: #a2f;
|
||
--jp-mirror-editor-qualifier-color: #555;
|
||
--jp-mirror-editor-builtin-color: #008000;
|
||
--jp-mirror-editor-bracket-color: #997;
|
||
--jp-mirror-editor-tag-color: #170;
|
||
--jp-mirror-editor-attribute-color: #00c;
|
||
--jp-mirror-editor-header-color: blue;
|
||
--jp-mirror-editor-quote-color: #090;
|
||
--jp-mirror-editor-link-color: #00c;
|
||
--jp-mirror-editor-error-color: #f00;
|
||
--jp-mirror-editor-hr-color: #999;
|
||
|
||
/*
|
||
RTC user specific colors.
|
||
These colors are used for the cursor, username in the editor,
|
||
and the icon of the user.
|
||
*/
|
||
|
||
--jp-collaborator-color1: #ffad8e;
|
||
--jp-collaborator-color2: #dac83d;
|
||
--jp-collaborator-color3: #72dd76;
|
||
--jp-collaborator-color4: #00e4d0;
|
||
--jp-collaborator-color5: #45d4ff;
|
||
--jp-collaborator-color6: #e2b1ff;
|
||
--jp-collaborator-color7: #ff9de6;
|
||
|
||
/* Vega extension styles */
|
||
|
||
--jp-vega-background: white;
|
||
|
||
/* Sidebar-related styles */
|
||
|
||
--jp-sidebar-min-width: 250px;
|
||
|
||
/* Search-related styles */
|
||
|
||
--jp-search-toggle-off-opacity: 0.5;
|
||
--jp-search-toggle-hover-opacity: 0.8;
|
||
--jp-search-toggle-on-opacity: 1;
|
||
--jp-search-selected-match-background-color: rgb(245, 200, 0);
|
||
--jp-search-selected-match-color: black;
|
||
--jp-search-unselected-match-background-color: var(
|
||
--jp-inverse-layout-color0
|
||
);
|
||
--jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0);
|
||
|
||
/* Icon colors that work well with light or dark backgrounds */
|
||
--jp-icon-contrast-color0: var(--md-purple-600);
|
||
--jp-icon-contrast-color1: var(--md-green-600);
|
||
--jp-icon-contrast-color2: var(--md-pink-600);
|
||
--jp-icon-contrast-color3: var(--md-blue-600);
|
||
|
||
/* Button colors */
|
||
--jp-accept-color-normal: var(--md-blue-700);
|
||
--jp-accept-color-hover: var(--md-blue-800);
|
||
--jp-accept-color-active: var(--md-blue-900);
|
||
--jp-warn-color-normal: var(--md-red-700);
|
||
--jp-warn-color-hover: var(--md-red-800);
|
||
--jp-warn-color-active: var(--md-red-900);
|
||
--jp-reject-color-normal: var(--md-grey-600);
|
||
--jp-reject-color-hover: var(--md-grey-700);
|
||
--jp-reject-color-active: var(--md-grey-800);
|
||
|
||
/* File or activity icons and switch semantic variables */
|
||
--jp-jupyter-icon-color: #f37626;
|
||
--jp-notebook-icon-color: #f37626;
|
||
--jp-json-icon-color: var(--md-orange-700);
|
||
--jp-console-icon-background-color: var(--md-blue-700);
|
||
--jp-console-icon-color: white;
|
||
--jp-terminal-icon-background-color: var(--md-grey-800);
|
||
--jp-terminal-icon-color: var(--md-grey-200);
|
||
--jp-text-editor-icon-color: var(--md-grey-700);
|
||
--jp-inspector-icon-color: var(--md-grey-700);
|
||
--jp-switch-color: var(--md-grey-400);
|
||
--jp-switch-true-position-color: var(--md-orange-900);
|
||
}
|
||
</style>
|
||
<style type="text/css">
|
||
/* Force rendering true colors when outputing to pdf */
|
||
* {
|
||
-webkit-print-color-adjust: exact;
|
||
}
|
||
|
||
/* Misc */
|
||
a.anchor-link {
|
||
display: none;
|
||
}
|
||
|
||
/* Input area styling */
|
||
.jp-InputArea {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.jp-InputArea-editor {
|
||
overflow: hidden;
|
||
}
|
||
|
||
.cm-editor.cm-s-jupyter .highlight pre {
|
||
/* weird, but --jp-code-padding defined to be 5px but 4px horizontal padding is hardcoded for pre.cm-line */
|
||
padding: var(--jp-code-padding) 4px;
|
||
margin: 0;
|
||
|
||
font-family: inherit;
|
||
font-size: inherit;
|
||
line-height: inherit;
|
||
color: inherit;
|
||
|
||
}
|
||
|
||
.jp-OutputArea-output pre {
|
||
line-height: inherit;
|
||
font-family: inherit;
|
||
}
|
||
|
||
.jp-RenderedText pre {
|
||
color: var(--jp-content-font-color1);
|
||
font-size: var(--jp-code-font-size);
|
||
}
|
||
|
||
/* Hiding the collapser by default */
|
||
.jp-Collapser {
|
||
display: none;
|
||
}
|
||
|
||
@page {
|
||
margin: 0.5in; /* Margin for each printed piece of paper */
|
||
}
|
||
|
||
@media print {
|
||
.jp-Cell-inputWrapper,
|
||
.jp-Cell-outputWrapper {
|
||
display: block;
|
||
}
|
||
}
|
||
</style>
|
||
<!-- Load mathjax -->
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script>
|
||
<!-- MathJax configuration -->
|
||
<script type="text/x-mathjax-config">
|
||
init_mathjax = function() {
|
||
if (window.MathJax) {
|
||
// MathJax loaded
|
||
MathJax.Hub.Config({
|
||
TeX: {
|
||
equationNumbers: {
|
||
autoNumber: "AMS",
|
||
useLabelIds: true
|
||
}
|
||
},
|
||
tex2jax: {
|
||
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
|
||
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
|
||
processEscapes: true,
|
||
processEnvironments: true
|
||
},
|
||
displayAlign: 'center',
|
||
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/11.10.0/mermaid.esm.min.mjs")).default;
|
||
const elkUrl = "https://cdnjs.cloudflare.com/ajax/libs/mermaid-layout-elk/0.1.9/mermaid-layout-elk.esm.min.mjs";
|
||
if(elkUrl) {
|
||
const elkLayouts = (await import(elkUrl)).default;
|
||
mermaid.registerLayoutLoaders(elkLayouts);
|
||
}
|
||
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) {
|
||
svg = svg.replace(RE_VOID_ELEMENT, replaceVoidElement);
|
||
return `${SVG_XML_HEADER}${svg}`;
|
||
}
|
||
|
||
|
||
/**
|
||
* 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}>`;
|
||
}
|
||
|
||
|
||
/**
|
||
* Named HTML entities with their decimal equivalent codes.
|
||
*
|
||
* @see https://www.w3.org/TR/WD-html40-970708/sgml/entities.html
|
||
* */
|
||
const HTML_ENTITIES = `<!ENTITY Aacute "Á">
|
||
<!ENTITY aacute "á">
|
||
<!ENTITY Acirc "Â">
|
||
<!ENTITY acirc "â">
|
||
<!ENTITY acute "´">
|
||
<!ENTITY AElig "Æ">
|
||
<!ENTITY aelig "æ">
|
||
<!ENTITY Agrave "À">
|
||
<!ENTITY agrave "à">
|
||
<!ENTITY alefsym "ℵ">
|
||
<!ENTITY Alpha "Α">
|
||
<!ENTITY alpha "α">
|
||
<!ENTITY amp "&">
|
||
<!ENTITY and "⊥">
|
||
<!ENTITY ang "∠">
|
||
<!ENTITY Aring "Å">
|
||
<!ENTITY aring "å">
|
||
<!ENTITY asymp "≈">
|
||
<!ENTITY Atilde "Ã">
|
||
<!ENTITY atilde "ã">
|
||
<!ENTITY Auml "Ä">
|
||
<!ENTITY auml "ä">
|
||
<!ENTITY bdquo "„">
|
||
<!ENTITY Beta "Β">
|
||
<!ENTITY beta "β">
|
||
<!ENTITY brvbar "¦">
|
||
<!ENTITY bull "•">
|
||
<!ENTITY cap "∩">
|
||
<!ENTITY Ccedil "Ç">
|
||
<!ENTITY ccedil "ç">
|
||
<!ENTITY cedil "¸">
|
||
<!ENTITY cent "¢">
|
||
<!ENTITY Chi "Χ">
|
||
<!ENTITY chi "χ">
|
||
<!ENTITY circ "ˆ">
|
||
<!ENTITY clubs "♣">
|
||
<!ENTITY cong "≅">
|
||
<!ENTITY copy "©">
|
||
<!ENTITY crarr "↵">
|
||
<!ENTITY cup "∪">
|
||
<!ENTITY curren "¤">
|
||
<!ENTITY dagger "†">
|
||
<!ENTITY Dagger "‡">
|
||
<!ENTITY darr "↓">
|
||
<!ENTITY dArr "⇓">
|
||
<!ENTITY deg "°">
|
||
<!ENTITY Delta "Δ">
|
||
<!ENTITY delta "δ">
|
||
<!ENTITY diams "♦">
|
||
<!ENTITY divide "÷">
|
||
<!ENTITY Eacute "É">
|
||
<!ENTITY eacute "é">
|
||
<!ENTITY Ecirc "Ê">
|
||
<!ENTITY ecirc "ê">
|
||
<!ENTITY Egrave "È">
|
||
<!ENTITY egrave "è">
|
||
<!ENTITY empty "∅">
|
||
<!ENTITY emsp " ">
|
||
<!ENTITY ensp " ">
|
||
<!ENTITY epsilon "ε">
|
||
<!ENTITY Epsilon "Ε">
|
||
<!ENTITY equiv "≡">
|
||
<!ENTITY Eta "Η">
|
||
<!ENTITY eta "η">
|
||
<!ENTITY ETH "Ð">
|
||
<!ENTITY eth "ð">
|
||
<!ENTITY Euml "Ë">
|
||
<!ENTITY euml "ë">
|
||
<!ENTITY exist "∃">
|
||
<!ENTITY fnof "ƒ">
|
||
<!ENTITY forall "∀">
|
||
<!ENTITY frac12 "½">
|
||
<!ENTITY frac14 "¼">
|
||
<!ENTITY frac34 "¾">
|
||
<!ENTITY frasl "⁄">
|
||
<!ENTITY Gamma "Γ">
|
||
<!ENTITY gamma "γ">
|
||
<!ENTITY ge "≥">
|
||
<!ENTITY gt ">">
|
||
<!ENTITY harr "↔">
|
||
<!ENTITY hArr "⇔">
|
||
<!ENTITY hearts "♥">
|
||
<!ENTITY hellip "…">
|
||
<!ENTITY Iacute "Í">
|
||
<!ENTITY iacute "í">
|
||
<!ENTITY Icirc "Î">
|
||
<!ENTITY icirc "î">
|
||
<!ENTITY iexcl "¡">
|
||
<!ENTITY Igrave "Ì">
|
||
<!ENTITY igrave "ì">
|
||
<!ENTITY image "ℑ">
|
||
<!ENTITY infin "∞">
|
||
<!ENTITY int "∫">
|
||
<!ENTITY Iota "Ι">
|
||
<!ENTITY iota "ι">
|
||
<!ENTITY iquest "¿">
|
||
<!ENTITY isin "∈">
|
||
<!ENTITY Iuml "Ï">
|
||
<!ENTITY iuml "ï">
|
||
<!ENTITY Kappa "Κ">
|
||
<!ENTITY kappa "κ">
|
||
<!ENTITY Lambda "Λ">
|
||
<!ENTITY lambda "λ">
|
||
<!ENTITY lang "〈">
|
||
<!ENTITY laquo "«">
|
||
<!ENTITY larr "←">
|
||
<!ENTITY lArr "⇐">
|
||
<!ENTITY lceil "⌈">
|
||
<!ENTITY ldquo "“">
|
||
<!ENTITY le "≤">
|
||
<!ENTITY lfloor "⌊">
|
||
<!ENTITY lowast "∗">
|
||
<!ENTITY loz "◊">
|
||
<!ENTITY lrm "‎">
|
||
<!ENTITY lsaquo "‹">
|
||
<!ENTITY lsquo "‘">
|
||
<!ENTITY lt "<">
|
||
<!ENTITY macr "¯">
|
||
<!ENTITY mdash "—">
|
||
<!ENTITY micro "µ">
|
||
<!ENTITY middot "·">
|
||
<!ENTITY minus "−">
|
||
<!ENTITY Mu "Μ">
|
||
<!ENTITY mu "μ">
|
||
<!ENTITY nabla "∇">
|
||
<!ENTITY nbsp " ">
|
||
<!ENTITY ndash "–">
|
||
<!ENTITY ne "≠">
|
||
<!ENTITY ni "∋">
|
||
<!ENTITY not "¬">
|
||
<!ENTITY notin "∉">
|
||
<!ENTITY nsub "⊄">
|
||
<!ENTITY Ntilde "Ñ">
|
||
<!ENTITY ntilde "ñ">
|
||
<!ENTITY Nu "Ν">
|
||
<!ENTITY nu "ν">
|
||
<!ENTITY Oacute "Ó">
|
||
<!ENTITY oacute "ó">
|
||
<!ENTITY Ocirc "Ô">
|
||
<!ENTITY ocirc "ô">
|
||
<!ENTITY OElig "Œ">
|
||
<!ENTITY oelig "œ">
|
||
<!ENTITY Ograve "Ò">
|
||
<!ENTITY ograve "ò">
|
||
<!ENTITY oline "‾">
|
||
<!ENTITY Omega "Ω">
|
||
<!ENTITY omega "ω">
|
||
<!ENTITY Omicron "Ο">
|
||
<!ENTITY omicron "ο">
|
||
<!ENTITY oplus "⊕">
|
||
<!ENTITY or "⊦">
|
||
<!ENTITY ordf "ª">
|
||
<!ENTITY ordm "º">
|
||
<!ENTITY Oslash "Ø">
|
||
<!ENTITY oslash "ø">
|
||
<!ENTITY Otilde "Õ">
|
||
<!ENTITY otilde "õ">
|
||
<!ENTITY otimes "⊗">
|
||
<!ENTITY Ouml "Ö">
|
||
<!ENTITY ouml "ö">
|
||
<!ENTITY para "¶">
|
||
<!ENTITY part "∂">
|
||
<!ENTITY permil "‰">
|
||
<!ENTITY perp "⊥">
|
||
<!ENTITY Phi "Φ">
|
||
<!ENTITY phi "φ">
|
||
<!ENTITY Pi "Π">
|
||
<!ENTITY pi "π">
|
||
<!ENTITY piv "ϖ">
|
||
<!ENTITY plusmn "±">
|
||
<!ENTITY pound "£">
|
||
<!ENTITY prime "′">
|
||
<!ENTITY Prime "″">
|
||
<!ENTITY prod "∏">
|
||
<!ENTITY prop "∝">
|
||
<!ENTITY Psi "Ψ">
|
||
<!ENTITY psi "ψ">
|
||
<!ENTITY quot """>
|
||
<!ENTITY radic "√">
|
||
<!ENTITY rang "〉">
|
||
<!ENTITY raquo "»">
|
||
<!ENTITY rarr "→">
|
||
<!ENTITY rArr "⇒">
|
||
<!ENTITY rceil "⌉">
|
||
<!ENTITY rdquo "”">
|
||
<!ENTITY real "ℜ">
|
||
<!ENTITY reg "®">
|
||
<!ENTITY rfloor "⌋">
|
||
<!ENTITY Rho "Ρ">
|
||
<!ENTITY rho "ρ">
|
||
<!ENTITY rlm "‏">
|
||
<!ENTITY rsaquo "›">
|
||
<!ENTITY rsquo "’">
|
||
<!ENTITY sbquo "‚">
|
||
<!ENTITY Scaron "Š">
|
||
<!ENTITY scaron "š">
|
||
<!ENTITY sdot "⋅">
|
||
<!ENTITY sect "§">
|
||
<!ENTITY shy "­">
|
||
<!ENTITY Sigma "Σ">
|
||
<!ENTITY sigma "σ">
|
||
<!ENTITY sigmaf "ς">
|
||
<!ENTITY sim "∼">
|
||
<!ENTITY spades "♠">
|
||
<!ENTITY sub "⊂">
|
||
<!ENTITY sube "⊆">
|
||
<!ENTITY sum "∑">
|
||
<!ENTITY sup "⊃">
|
||
<!ENTITY sup1 "¹">
|
||
<!ENTITY sup2 "²">
|
||
<!ENTITY sup3 "³">
|
||
<!ENTITY supe "⊇">
|
||
<!ENTITY szlig "ß">
|
||
<!ENTITY Tau "Τ">
|
||
<!ENTITY tau "τ">
|
||
<!ENTITY there4 "∴">
|
||
<!ENTITY Theta "Θ">
|
||
<!ENTITY theta "θ">
|
||
<!ENTITY thetasym "ϑ">
|
||
<!ENTITY thinsp " ">
|
||
<!ENTITY THORN "Þ">
|
||
<!ENTITY thorn "þ">
|
||
<!ENTITY tilde "˜">
|
||
<!ENTITY times "×">
|
||
<!ENTITY trade "™">
|
||
<!ENTITY Uacute "Ú">
|
||
<!ENTITY uacute "ú">
|
||
<!ENTITY uarr "↑">
|
||
<!ENTITY uArr "⇑">
|
||
<!ENTITY Ucirc "Û">
|
||
<!ENTITY ucirc "û">
|
||
<!ENTITY Ugrave "Ù">
|
||
<!ENTITY ugrave "ù">
|
||
<!ENTITY uml "¨">
|
||
<!ENTITY upsih "ϒ">
|
||
<!ENTITY Upsilon "Υ">
|
||
<!ENTITY upsilon "υ">
|
||
<!ENTITY Uuml "Ü">
|
||
<!ENTITY uuml "ü">
|
||
<!ENTITY weierp "℘">
|
||
<!ENTITY Xi "Ξ">
|
||
<!ENTITY xi "ξ">
|
||
<!ENTITY Yacute "Ý">
|
||
<!ENTITY yacute "ý">
|
||
<!ENTITY yen "¥">
|
||
<!ENTITY Yuml "Ÿ">
|
||
<!ENTITY yuml "ÿ">
|
||
<!ENTITY Zeta "Ζ">
|
||
<!ENTITY zeta "ζ">
|
||
<!ENTITY zwj "‍">
|
||
<!ENTITY zwnj "‌">`.replace(/\n/g, ' ');
|
||
|
||
/**
|
||
* A reasonably strict xml declaration.
|
||
*/
|
||
const XML_DECL = '<?xml version="1.0" standalone="no"?>';
|
||
|
||
/**
|
||
* The beginning of the XML doctype declaration.
|
||
*/
|
||
const DOCTYPE_START = `<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [`;
|
||
|
||
/**
|
||
* The end of the XML docype declaration.
|
||
*/
|
||
const DOCTYPE_END = ']>';
|
||
|
||
/**
|
||
* A full header for an SVG XML document.
|
||
*/
|
||
const SVG_XML_HEADER = `${XML_DECL}
|
||
${DOCTYPE_START}${HTML_ENTITIES}${DOCTYPE_END}`;
|
||
|
||
void Promise.all([...diagrams].map(renderOneMarmaid));
|
||
});
|
||
</script>
|
||
<style>
|
||
.jp-Mermaid:not(.jp-RenderedMermaid) {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid {
|
||
overflow: auto;
|
||
display: flex;
|
||
}
|
||
|
||
.jp-RenderedMermaid.jp-mod-warning {
|
||
width: auto;
|
||
padding: 0.5em;
|
||
margin-top: 0.5em;
|
||
border: var(--jp-border-width) solid var(--jp-warn-color2);
|
||
border-radius: var(--jp-border-radius);
|
||
color: var(--jp-ui-font-color1);
|
||
font-size: var(--jp-ui-font-size1);
|
||
white-space: pre-wrap;
|
||
word-wrap: break-word;
|
||
}
|
||
|
||
.jp-RenderedMermaid figure {
|
||
margin: 0;
|
||
overflow: auto;
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid img {
|
||
max-width: 100%;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Details > pre {
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary {
|
||
color: var(--jp-warn-color2);
|
||
}
|
||
|
||
.jp-RenderedMermaid:not(.jp-mod-warning) pre {
|
||
display: none;
|
||
}
|
||
|
||
.jp-RenderedMermaid-Summary > pre {
|
||
display: inline-block;
|
||
white-space: normal;
|
||
}
|
||
</style>
|
||
<!-- End of mermaid configuration --></head>
|
||
<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light">
|
||
<main>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h1 id="02---MNIST-Model-Training-&-Visualization">02 - MNIST Model Training & Visualization<a class="anchor-link" href="#02---MNIST-Model-Training-&-Visualization">¶</a></h1><p>This notebook trains a neural network on MNIST data loaded from DuckDB, then visualizes:</p>
|
||
<ul>
|
||
<li>Training loss & accuracy curves</li>
|
||
<li>Confusion matrix</li>
|
||
<li>Per-digit accuracy</li>
|
||
<li>Misclassified examples</li>
|
||
</ul>
|
||
<p><strong>Key ML Concepts Covered:</strong></p>
|
||
<ul>
|
||
<li>Neural network architecture (layers, activations)</li>
|
||
<li>Forward/backward propagation</li>
|
||
<li>Loss functions & optimizers</li>
|
||
<li>Batch training with DataLoaders</li>
|
||
<li>Overfitting detection (train vs validation)</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [1]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">numpy</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">np</span>
|
||
<span class="kn">import</span><span class="w"> </span><span class="nn">duckdb</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">torch.nn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">nn</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">torch.utils.data</span><span class="w"> </span><span class="kn">import</span> <span class="n">DataLoader</span><span class="p">,</span> <span class="n">TensorDataset</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">seaborn</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">sns</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">sklearn.metrics</span><span class="w"> </span><span class="kn">import</span> <span class="n">confusion_matrix</span><span class="p">,</span> <span class="n">classification_report</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">pathlib</span><span class="w"> </span><span class="kn">import</span> <span class="n">Path</span>
|
||
<span class="kn">from</span><span class="w"> </span><span class="nn">tqdm.notebook</span><span class="w"> </span><span class="kn">import</span> <span class="n">tqdm</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="1.-Load-Data-from-DuckDB">1. Load Data from DuckDB<a class="anchor-link" href="#1.-Load-Data-from-DuckDB">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [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="n">con</span> <span class="o">=</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="s1">'../data/mnist.duckdb'</span><span class="p">)),</span> <span class="n">read_only</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||
|
||
<span class="n">train_data</span> <span class="o">=</span> <span class="n">con</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"SELECT * FROM mnist WHERE split='train'"</span><span class="p">)</span><span class="o">.</span><span class="n">fetchnumpy</span><span class="p">()</span>
|
||
<span class="n">test_data</span> <span class="o">=</span> <span class="n">con</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s2">"SELECT * FROM mnist WHERE split='test'"</span><span class="p">)</span><span class="o">.</span><span class="n">fetchnumpy</span><span class="p">()</span>
|
||
<span class="n">con</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||
|
||
<span class="c1"># Extract pixel columns and labels</span>
|
||
<span class="n">px_cols</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s1">'px</span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s1">'</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">784</span><span class="p">)]</span>
|
||
<span class="n">X_train</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">([</span><span class="n">train_data</span><span class="p">[</span><span class="n">c</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">px_cols</span><span class="p">])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span>
|
||
<span class="n">y_train</span> <span class="o">=</span> <span class="n">train_data</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">int64</span><span class="p">)</span>
|
||
<span class="n">X_test</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">column_stack</span><span class="p">([</span><span class="n">test_data</span><span class="p">[</span><span class="n">c</span><span class="p">]</span> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">px_cols</span><span class="p">])</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">float32</span><span class="p">)</span> <span class="o">/</span> <span class="mf">255.0</span>
|
||
<span class="n">y_test</span> <span class="o">=</span> <span class="n">test_data</span><span class="p">[</span><span class="s1">'label'</span><span class="p">]</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">int64</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Train: </span><span class="si">{</span><span class="n">X_train</span><span class="o">.</span><span class="n">shape</span><span class="si">}</span><span class="s1">, Test: </span><span class="si">{</span><span class="n">X_test</span><span class="o">.</span><span class="n">shape</span><span class="si">}</span><span class="s1">'</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>Train: (60000, 784), Test: (10000, 784)
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="2.-Create-PyTorch-DataLoaders">2. Create PyTorch DataLoaders<a class="anchor-link" href="#2.-Create-PyTorch-DataLoaders">¶</a></h2><p>DataLoaders handle batching and shuffling. Batch size is a key hyperparameter:</p>
|
||
<ul>
|
||
<li><strong>Smaller batches</strong> → noisier gradients, can help escape local minima</li>
|
||
<li><strong>Larger batches</strong> → smoother gradients, faster training per epoch</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [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="n">BATCH_SIZE</span> <span class="o">=</span> <span class="mi">128</span>
|
||
|
||
<span class="n">train_ds</span> <span class="o">=</span> <span class="n">TensorDataset</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="n">X_train</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="n">y_train</span><span class="p">))</span>
|
||
<span class="n">test_ds</span> <span class="o">=</span> <span class="n">TensorDataset</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="n">X_test</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="n">y_test</span><span class="p">))</span>
|
||
|
||
<span class="n">train_loader</span> <span class="o">=</span> <span class="n">DataLoader</span><span class="p">(</span><span class="n">train_ds</span><span class="p">,</span> <span class="n">batch_size</span><span class="o">=</span><span class="n">BATCH_SIZE</span><span class="p">,</span> <span class="n">shuffle</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||
<span class="n">test_loader</span> <span class="o">=</span> <span class="n">DataLoader</span><span class="p">(</span><span class="n">test_ds</span><span class="p">,</span> <span class="n">batch_size</span><span class="o">=</span><span class="n">BATCH_SIZE</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="3.-Define-the-Neural-Network">3. Define the Neural Network<a class="anchor-link" href="#3.-Define-the-Neural-Network">¶</a></h2><p>Architecture: 784 → 256 → 128 → 10</p>
|
||
<p><strong>Key parameters to experiment with:</strong></p>
|
||
<ul>
|
||
<li>Hidden layer sizes (try 64, 128, 256, 512)</li>
|
||
<li>Number of layers (try 1-4 hidden layers)</li>
|
||
<li>Activation function (ReLU, Sigmoid, Tanh)</li>
|
||
<li>Dropout rate (regularization to prevent overfitting)</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [4]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="k">class</span><span class="w"> </span><span class="nc">MNISTNet</span><span class="p">(</span><span class="n">nn</span><span class="o">.</span><span class="n">Module</span><span class="p">):</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">hidden1</span><span class="o">=</span><span class="mi">256</span><span class="p">,</span> <span class="n">hidden2</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span> <span class="n">dropout</span><span class="o">=</span><span class="mf">0.2</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">net</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">Sequential</span><span class="p">(</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="mi">784</span><span class="p">,</span> <span class="n">hidden1</span><span class="p">),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">dropout</span><span class="p">),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">hidden1</span><span class="p">,</span> <span class="n">hidden2</span><span class="p">),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">ReLU</span><span class="p">(),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">Dropout</span><span class="p">(</span><span class="n">dropout</span><span class="p">),</span>
|
||
<span class="n">nn</span><span class="o">.</span><span class="n">Linear</span><span class="p">(</span><span class="n">hidden2</span><span class="p">,</span> <span class="mi">10</span><span class="p">)</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="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">net</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||
|
||
<span class="n">device</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">device</span><span class="p">(</span><span class="s1">'cuda'</span> <span class="k">if</span> <span class="n">torch</span><span class="o">.</span><span class="n">cuda</span><span class="o">.</span><span class="n">is_available</span><span class="p">()</span> <span class="k">else</span> <span class="s1">'cpu'</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Using device: </span><span class="si">{</span><span class="n">device</span><span class="si">}</span><span class="s1">'</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>Using device: cpu
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="4.-Training-Loop">4. Training Loop<a class="anchor-link" href="#4.-Training-Loop">¶</a></h2><p><strong>Hyperparameters:</strong></p>
|
||
<ul>
|
||
<li><code>lr</code> (learning rate): How big each optimization step is. Too high → diverges. Too low → slow.</li>
|
||
<li><code>epochs</code>: Number of full passes through the training data.</li>
|
||
<li><code>optimizer</code>: Adam adapts learning rate per-parameter. SGD is simpler but needs tuning.</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [5]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="c1"># === HYPERPARAMETERS (experiment with these!) ===</span>
|
||
<span class="n">EPOCHS</span> <span class="o">=</span> <span class="mi">15</span>
|
||
<span class="n">LEARNING_RATE</span> <span class="o">=</span> <span class="mf">1e-3</span>
|
||
<span class="n">HIDDEN1</span> <span class="o">=</span> <span class="mi">256</span>
|
||
<span class="n">HIDDEN2</span> <span class="o">=</span> <span class="mi">128</span>
|
||
<span class="n">DROPOUT</span> <span class="o">=</span> <span class="mf">0.2</span>
|
||
|
||
<span class="n">model</span> <span class="o">=</span> <span class="n">MNISTNet</span><span class="p">(</span><span class="n">HIDDEN1</span><span class="p">,</span> <span class="n">HIDDEN2</span><span class="p">,</span> <span class="n">DROPOUT</span><span class="p">)</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||
<span class="n">criterion</span> <span class="o">=</span> <span class="n">nn</span><span class="o">.</span><span class="n">CrossEntropyLoss</span><span class="p">()</span>
|
||
<span class="n">optimizer</span> <span class="o">=</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">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">(),</span> <span class="n">lr</span><span class="o">=</span><span class="n">LEARNING_RATE</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Model parameters: </span><span class="si">{</span><span class="nb">sum</span><span class="p">(</span><span class="n">p</span><span class="o">.</span><span class="n">numel</span><span class="p">()</span><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="n">model</span><span class="o">.</span><span class="n">parameters</span><span class="p">())</span><span class="si">:</span><span class="s1">,</span><span class="si">}</span><span class="s1">'</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="n">model</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>Model parameters: 235,146
|
||
MNISTNet(
|
||
(net): Sequential(
|
||
(0): Linear(in_features=784, out_features=256, bias=True)
|
||
(1): ReLU()
|
||
(2): Dropout(p=0.2, inplace=False)
|
||
(3): Linear(in_features=256, out_features=128, bias=True)
|
||
(4): ReLU()
|
||
(5): Dropout(p=0.2, inplace=False)
|
||
(6): Linear(in_features=128, out_features=10, bias=True)
|
||
)
|
||
)
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [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="c1"># Training with metrics tracking</span>
|
||
<span class="n">history</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'train_loss'</span><span class="p">:</span> <span class="p">[],</span> <span class="s1">'train_acc'</span><span class="p">:</span> <span class="p">[],</span> <span class="s1">'test_loss'</span><span class="p">:</span> <span class="p">[],</span> <span class="s1">'test_acc'</span><span class="p">:</span> <span class="p">[]}</span>
|
||
|
||
<span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="n">tqdm</span><span class="p">(</span><span class="nb">range</span><span class="p">(</span><span class="n">EPOCHS</span><span class="p">),</span> <span class="n">desc</span><span class="o">=</span><span class="s1">'Training'</span><span class="p">):</span>
|
||
<span class="c1"># Train</span>
|
||
<span class="n">model</span><span class="o">.</span><span class="n">train</span><span class="p">()</span>
|
||
<span class="n">running_loss</span><span class="p">,</span> <span class="n">correct</span><span class="p">,</span> <span class="n">total</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span>
|
||
<span class="k">for</span> <span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="ow">in</span> <span class="n">train_loader</span><span class="p">:</span>
|
||
<span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="o">=</span> <span class="n">X_batch</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">),</span> <span class="n">y_batch</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||
<span class="n">optimizer</span><span class="o">.</span><span class="n">zero_grad</span><span class="p">()</span>
|
||
<span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">X_batch</span><span class="p">)</span>
|
||
<span class="n">loss</span> <span class="o">=</span> <span class="n">criterion</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">loss</span><span class="o">.</span><span class="n">backward</span><span class="p">()</span>
|
||
<span class="n">optimizer</span><span class="o">.</span><span class="n">step</span><span class="p">()</span>
|
||
<span class="n">running_loss</span> <span class="o">+=</span> <span class="n">loss</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">correct</span> <span class="o">+=</span> <span class="p">(</span><span class="n">outputs</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">y_batch</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||
<span class="n">total</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">history</span><span class="p">[</span><span class="s1">'train_loss'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">running_loss</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
|
||
<span class="n">history</span><span class="p">[</span><span class="s1">'train_acc'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">correct</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Evaluate</span>
|
||
<span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||
<span class="n">running_loss</span><span class="p">,</span> <span class="n">correct</span><span class="p">,</span> <span class="n">total</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span>
|
||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||
<span class="k">for</span> <span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="ow">in</span> <span class="n">test_loader</span><span class="p">:</span>
|
||
<span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="o">=</span> <span class="n">X_batch</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">),</span> <span class="n">y_batch</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">)</span>
|
||
<span class="n">outputs</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">X_batch</span><span class="p">)</span>
|
||
<span class="n">loss</span> <span class="o">=</span> <span class="n">criterion</span><span class="p">(</span><span class="n">outputs</span><span class="p">,</span> <span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">running_loss</span> <span class="o">+=</span> <span class="n">loss</span><span class="o">.</span><span class="n">item</span><span class="p">()</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">correct</span> <span class="o">+=</span> <span class="p">(</span><span class="n">outputs</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">==</span> <span class="n">y_batch</span><span class="p">)</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span><span class="o">.</span><span class="n">item</span><span class="p">()</span>
|
||
<span class="n">total</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">y_batch</span><span class="p">)</span>
|
||
<span class="n">history</span><span class="p">[</span><span class="s1">'test_loss'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">running_loss</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
|
||
<span class="n">history</span><span class="p">[</span><span class="s1">'test_acc'</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">correct</span> <span class="o">/</span> <span class="n">total</span><span class="p">)</span>
|
||
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Epoch </span><span class="si">{</span><span class="n">epoch</span><span class="o">+</span><span class="mi">1</span><span class="si">:</span><span class="s2">2d</span><span class="si">}</span><span class="s2"> | Train Loss: </span><span class="si">{</span><span class="n">history</span><span class="p">[</span><span class="s1">'train_loss'</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="s2">.4f</span><span class="si">}</span><span class="s2"> Acc: </span><span class="si">{</span><span class="n">history</span><span class="p">[</span><span class="s1">'train_acc'</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="s2">.4f</span><span class="si">}</span><span class="s2"> | "</span>
|
||
<span class="sa">f</span><span class="s2">"Test Loss: </span><span class="si">{</span><span class="n">history</span><span class="p">[</span><span class="s1">'test_loss'</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="s2">.4f</span><span class="si">}</span><span class="s2"> Acc: </span><span class="si">{</span><span class="n">history</span><span class="p">[</span><span class="s1">'test_acc'</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="s2">.4f</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedText jp-OutputArea-output" data-mime-type="text/plain" tabindex="0">
|
||
<pre>Training: 0%| | 0/15 [00:00<?, ?it/s]</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="text/plain" tabindex="0">
|
||
<pre>Epoch 1 | Train Loss: 0.3803 Acc: 0.8898 | Test Loss: 0.1511 Acc: 0.9547
|
||
Epoch 2 | Train Loss: 0.1498 Acc: 0.9547 | Test Loss: 0.1011 Acc: 0.9693
|
||
Epoch 3 | Train Loss: 0.1079 Acc: 0.9671 | Test Loss: 0.0837 Acc: 0.9731
|
||
Epoch 4 | Train Loss: 0.0836 Acc: 0.9739 | Test Loss: 0.0759 Acc: 0.9762
|
||
Epoch 5 | Train Loss: 0.0703 Acc: 0.9781 | Test Loss: 0.0729 Acc: 0.9775
|
||
Epoch 6 | Train Loss: 0.0585 Acc: 0.9814 | Test Loss: 0.0722 Acc: 0.9782
|
||
Epoch 7 | Train Loss: 0.0532 Acc: 0.9825 | Test Loss: 0.0709 Acc: 0.9804
|
||
Epoch 8 | Train Loss: 0.0444 Acc: 0.9861 | Test Loss: 0.0724 Acc: 0.9783
|
||
Epoch 9 | Train Loss: 0.0422 Acc: 0.9861 | Test Loss: 0.0615 Acc: 0.9816
|
||
Epoch 10 | Train Loss: 0.0350 Acc: 0.9888 | Test Loss: 0.0631 Acc: 0.9828
|
||
Epoch 11 | Train Loss: 0.0358 Acc: 0.9887 | Test Loss: 0.0622 Acc: 0.9821
|
||
Epoch 12 | Train Loss: 0.0307 Acc: 0.9894 | Test Loss: 0.0670 Acc: 0.9817
|
||
Epoch 13 | Train Loss: 0.0294 Acc: 0.9904 | Test Loss: 0.0677 Acc: 0.9827
|
||
Epoch 14 | Train Loss: 0.0264 Acc: 0.9906 | Test Loss: 0.0659 Acc: 0.9818
|
||
Epoch 15 | Train Loss: 0.0251 Acc: 0.9916 | Test Loss: 0.0653 Acc: 0.9826
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="5.-Training-Curves">5. Training Curves<a class="anchor-link" href="#5.-Training-Curves">¶</a></h2><p><strong>What to look for:</strong></p>
|
||
<ul>
|
||
<li>If test loss increases while train loss decreases → <strong>overfitting</strong> (try more dropout, fewer parameters)</li>
|
||
<li>If both losses plateau high → <strong>underfitting</strong> (try more parameters, lower dropout)</li>
|
||
<li>Gap between train/test accuracy shows generalization</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [7]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="n">fig</span><span class="p">,</span> <span class="p">(</span><span class="n">ax1</span><span class="p">,</span> <span class="n">ax2</span><span class="p">)</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">12</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
|
||
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'train_loss'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s1">'Train'</span><span class="p">)</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'test_loss'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s1">'Test'</span><span class="p">)</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Epoch'</span><span class="p">)</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Loss'</span><span class="p">)</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Loss Curve'</span><span class="p">)</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||
<span class="n">ax1</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.3</span><span class="p">)</span>
|
||
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'train_acc'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s1">'Train'</span><span class="p">)</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">history</span><span class="p">[</span><span class="s1">'test_acc'</span><span class="p">],</span> <span class="n">label</span><span class="o">=</span><span class="s1">'Test'</span><span class="p">)</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'Epoch'</span><span class="p">)</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_ylabel</span><span class="p">(</span><span class="s1">'Accuracy'</span><span class="p">)</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'Accuracy Curve'</span><span class="p">)</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
||
<span class="n">ax2</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.3</span><span class="p">)</span>
|
||
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</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,iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAACjbElEQVR4nOzdB3hUVdoH8P9Mkpn03qkJBEIHQUBFsaAoNqyArii6WFZcWb5dK2IXK4uFFUVRFkVxFV3XgiKKiNIEESGEXtMTSO8z8z3vmcxk0iCBZO6U/8/nOnfu3NzcnEzuHN77nvfoLBaLBURERERERERERE6kd+Y3IyIiIiIiIiIiEgxKERERERERERGR0zEoRURERERERERETsegFBEREREREREROR2DUkRERERERERE5HQMShERERERERERkdMxKEVERERERERERE7HoBQRERERERERETkdg1JEREREREREROR0DEoREREREREREZHTMShFRE7z7rvvQqfT4ddff3WLVt+yZQv+9Kc/oUuXLjAajYiMjMSYMWPwzjvvwGQyaX16RERE5Ab+9a9/qf7PiBEjtD4Vt5STk4O///3vSE1NRWBgIIKCgjB06FA89dRTKCws1Pr0iOgU+Z7qAYiIPNFbb72FO++8E3FxcbjpppuQkpKCkpISrFy5ErfddhuysrLw0EMPaX2aRERE5OLef/99dO/eHRs2bMCePXvQs2dPrU/JbWzcuBHjxo1DaWmpulEowSghNzifffZZrF69Gt9++63Wp0lEp4BBKSKiRtatW6cCUmeccQa++uorhISE2F+bPn266ght27atXdqtrKxM3fEjIiIiz7N//3788ssvWLZsGe644w4VoHr00UfhilytTyJZUFdddRV8fHzw22+/qUwpR08//TQWLFjgkT87kTfh8D0icjnS8bjkkksQGhqK4OBgXHDBBSpQ5KimpgaPP/64ymDy9/dHVFQURo0ahRUrVtj3yc7OxpQpU9C5c2c1/C4hIQFXXnklDhw4cNzvL8eVNHvpODoGpGyGDRuGW265Ra2vWrVK7SuPjuR7yHYZsmgjXyM/z969e9VdPzn2jTfeiGnTpqnt5eXlTb7XpEmTEB8f32C44Ndff42zzz5bdZ7kGJdeeim2b9/eqrYlIiIi55G+REREhPqsvvbaa9XzlgIwf/vb31RGlfRZpO8y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B+uzLZmcgY+IiMgFpKSkqIVcR1pmkXpkUIqIiMi5WFPKC/RNsGa47cgq0fpUiIiIvNY111yD5557rsn2559/Htddd50m50RAeXUt9uWXqabox0wpIiIip2JQygv0SQhRjwcKylBaVav16RAREXml1atXY9y4cU22X3LJJeo10obctJMJimNCjIgNYe1NIiIiZ2JQygtEBRsRF2pUHa6d2daaCURERORcpaWlqq5UY35+figu5uez1kP3mCVFRETkfAxKeVGxcyHFzomIiMj5pKi5FDpv7MMPP0Tfvn35K9FIWlZxg74SERERuWihc3JfUrjzh515LHZORESkkUceeQRXX3019u7di/PPP19tW7lyJZYsWYKPP/6YvxeNZ97rl3j8WaaJiIio/TEo5WXFzpkpRUREpI3LL78cn332GZ555hkVhAoICMCgQYPw/fffIzIykr8WDdSYzEjPtk4Ew+F7REREzseglJewTXEsHa9akxm+Phy5SURE5GyXXnqpWoTUkfrggw/w97//HZs2bYLJZOIvxMn25pWiutaMYKMvukYGsv2JiIicjJEJL9EtMhCBBh9U1Zqxv27aYyIiInI+mWnv5ptvRmJiIl566SU1lG/dunX8VWjAlkEuMxXr9Tr+DoiIiJyMmVJeQjpafRJCsengMVVXKiUuROtTIiIi8hrZ2dl499138fbbb6sMqeuvvx5VVVVqOB+LnGuH9aSIiIi0xUwpL8IZ+IiIiLSpJdW7d29s3boVc+fORWZmJl599VX+KlzA9syiBmUOiIiIyLmYKeVFbB0u29THRERE1PG+/vpr/PWvf8Vdd92FlJQUNrmLsFgs9uF7LHJORESkDWZKeREZviekAyYdMSIiIup4a9asQUlJCYYOHYoRI0bgtddeQ35+PpteY0eOVaC4shZ+PjqkxLKsARERkRYYlPIiveNCIDU8C8qqkVdSpfXpEBEReYWRI0diwYIFyMrKwh133IEPP/xQFTk3m81YsWKFCliRdvWkJCBl8GWXmIiISAv8BPYiAQYfJMcEq/XtHMJHRETkVEFBQbj11ltV5tQff/yB//u//8Ozzz6L2NhYXHHFFfxtOFlaXT0pDt0jIiLSDoNSXobFzomIiLQnhc+ff/55HDlyBB988IHWp+PlM++xyDkREZFWGJTyMix2TkRE5Dp8fHwwfvx4fP7551qf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4veR+lW2oJUMCZTsKqOvHkY/vcrGMvpZnxtkm1rqXrdva/i6BPGIqPWkft2uuuF7/RLD2HREREQegEEpIiLy6IBa54hAtbT0j9xj5TX2oFWTjKvCChwtq1YZWdZhjaXtdm6STWYNZrUcuJLnza7XBcJQU4nOsdWICDSoml/hgX4ID/BDaIAf/P04JJE8S2ZhJYolY1OvQ0qcTOxARERE7o5BKSIi8loyo2BkkEEtAzo3n3lRUW1qmGV1rAJHy6tRXWtWs4BV1ZjUEMGqGnnuuG6u28dkX5fZBG1kxsIKswkVNaZT/CmONLvV30+P8ABroCoswK8uYGV9Htrouf31QIMqat/STItEWkrLKlaPEpBiHTgiIiLPwKAUERHRcQQYfOyF4U+VzHwoQav6gJY8N6khhI5BLPvrzQS21HqNGZU1JuQVlaLS7IOiihq1FJZXq0eJfckxs2sqVV2ttpAsFAlShdVlXakMrLrnKnhVt832eoi/ZGU1yvTy0XNmNGp32zOtQam+CawnRURE5CkYlCIiInLWh64qDq9HoKH9i77Xb7egpKoWxSpIVYPCiuq6xxoUlVvXVQBLPW/4ui2bq6CsWi2nQgJT9UMP64NWjYcgNt3m41Cnq/EQxqZDGeXRT69DaXElYmNPvV3J9TOlGJQiIiLyHAxKEREReRC9LdMpwA9dIlv/dVJfS7KrrAGrukCVCmA5BLUaB7LKa1BcaQ1mSSaXI5URZjKjtApOITNA7nyyq3O+GWmaKdWPM+8RERF5DAaliIiISNWRkqGKssSH+be5RSSoVWOytDj8sH5bw9cbD0u01eSSYY2Na3M1V6/Ldiy9rr5eF3keGa4qs2D66IDUBNecDZSIiIjajkEpIiIiapeglsFXlvqhhM5iG8pInktmk/xm+tk4nJmNUH8/rU+HiIiI2onze45ERERERCdB6ogRERGR5+AnOxEREREREREROR2DUkRERERERERE5HQMShERERERERERkdMxKEVERERERERERE7HoBQRERERERERETkdg1JEREREREREROR0DEoREREREREREZHTMShFREREREREREROx6AUERERERERERE5HYNSRERERERERETkdL7O/5auz2KxqMfi4uIOOb7ZbEZJSQn8/f2h13t3XJBtwbbg+4J/I7xm8Prpyp8ltr6ArW9A2vWh2GdgW/C9wb8TXjN4/eRnift8rra2D8WgVDPkFyO6dOnS7r8YIiIicj/SNwgLC9P6NFwe+1BERETUlj6UzsJbf81GDDMzMxESEgKdToeOiBhKwOvw4cMIDQ2FN2NbsC34vuDfCK8ZvH668meJdJOkM5WYmOj12c1a96HYZ2Bb8L3BvxNeM3j95GeJ+3yutrYPxUypZkiDde7cGR1NfvHeHpSyYVuwLfi+4N8Irxm8frrqZwkzpFyrD8U+A9uC7w3+nfCawesnP0vc43O1NX0o7y5oREREREREREREmmBQioiIiIiIiIiInI5BKQ0YjUY8+uij6tHbsS3YFnxf8G+E1wxeP/lZQuwzsP/E/iT71vx3Bv/NxX9/eue/xVnonIiIiIiIiIiInI6ZUkRERERERERE5HQMShERERERERERkdMxKEVERERERERERE7HoJSTzZs3D927d4e/vz9GjBiBDRs2wNvMnj0bp59+OkJCQhAbG4vx48dj586dWp+WS3j22Weh0+kwffp0eKuMjAz86U9/QlRUFAICAjBgwAD8+uuv8DYmkwmPPPIIkpKSVDv06NEDTz75JCwWCzzd6tWrcfnllyMxMVH9PXz22WcNXpc2mDVrFhISElTbjBkzBrt374a3tUVNTQ3uv/9+9TcSFBSk9pk8eTIyMzPhre8NR3feeafaZ+7cuU49R+o47EOxD3U83t6HYv/Jypv7T4J9qNa1hbf1oVa7eP+JQSknWrp0KWbMmKEq3G/evBmDBg3C2LFjkZubC2/y448/4u6778a6deuwYsUKdVG46KKLUFZWBm+2ceNGvPHGGxg4cCC81bFjx3DWWWfBz88PX3/9NdLS0vDSSy8hIiIC3ua5557D66+/jtdeew07duxQz59//nm8+uqr8HRyLZDro/wDtDnSDq+88grmz5+P9evXq86EXEsrKyvhTW1RXl6uPkuk8y2Py5YtUwH+K664At763rD59NNP1WeMdL7IM7APZcU+VPO8vQ/F/lM9b+4/CfahWtcW3taHKnP1/pOFnGb48OGWu+++2/7cZDJZEhMTLbNnz/bq30Jubq7curD8+OOPFm9VUlJiSUlJsaxYscIyevRoy7333mvxRvfff79l1KhRWp+GS7j00kstt956a4NtV199teXGG2+0eBO5Nnz66af252az2RIfH2954YUX7NsKCwstRqPR8sEH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"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="6.-Confusion-Matrix">6. Confusion Matrix<a class="anchor-link" href="#6.-Confusion-Matrix">¶</a></h2><p>Shows which digits get confused with each other (e.g., 4↔9, 3↔5 are common).</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [8]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="n">model</span><span class="o">.</span><span class="n">eval</span><span class="p">()</span>
|
||
<span class="n">all_preds</span><span class="p">,</span> <span class="n">all_labels</span> <span class="o">=</span> <span class="p">[],</span> <span class="p">[]</span>
|
||
<span class="k">with</span> <span class="n">torch</span><span class="o">.</span><span class="n">no_grad</span><span class="p">():</span>
|
||
<span class="k">for</span> <span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="ow">in</span> <span class="n">test_loader</span><span class="p">:</span>
|
||
<span class="n">preds</span> <span class="o">=</span> <span class="n">model</span><span class="p">(</span><span class="n">X_batch</span><span class="o">.</span><span class="n">to</span><span class="p">(</span><span class="n">device</span><span class="p">))</span><span class="o">.</span><span class="n">argmax</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">.</span><span class="n">cpu</span><span class="p">()</span>
|
||
<span class="n">all_preds</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">preds</span><span class="p">)</span>
|
||
<span class="n">all_labels</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">y_batch</span><span class="p">)</span>
|
||
|
||
<span class="n">all_preds</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">all_preds</span><span class="p">)</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span>
|
||
<span class="n">all_labels</span> <span class="o">=</span> <span class="n">torch</span><span class="o">.</span><span class="n">cat</span><span class="p">(</span><span class="n">all_labels</span><span class="p">)</span><span class="o">.</span><span class="n">numpy</span><span class="p">()</span>
|
||
|
||
<span class="n">cm</span> <span class="o">=</span> <span class="n">confusion_matrix</span><span class="p">(</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">all_preds</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">6</span><span class="p">))</span>
|
||
<span class="n">sns</span><span class="o">.</span><span class="n">heatmap</span><span class="p">(</span><span class="n">cm</span><span class="p">,</span> <span class="n">annot</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">fmt</span><span class="o">=</span><span class="s1">'d'</span><span class="p">,</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'Blues'</span><span class="p">,</span>
|
||
<span class="n">xticklabels</span><span class="o">=</span><span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span> <span class="n">yticklabels</span><span class="o">=</span><span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'Predicted'</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'Actual'</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="s1">'Confusion Matrix'</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell-outputWrapper">
|
||
<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser">
|
||
</div>
|
||
<div class="jp-OutputArea jp-Cell-outputArea">
|
||
<div class="jp-OutputArea-child">
|
||
<div class="jp-OutputPrompt jp-OutputArea-prompt"></div>
|
||
<div class="jp-RenderedImage jp-OutputArea-output" tabindex="0">
|
||
<img alt="No description has been provided for this image" class="" src="data:image/png;base64,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"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [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="nb">print</span><span class="p">(</span><span class="n">classification_report</span><span class="p">(</span><span class="n">all_labels</span><span class="p">,</span> <span class="n">all_preds</span><span class="p">,</span> <span class="n">digits</span><span class="o">=</span><span class="mi">4</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> precision recall f1-score support
|
||
|
||
0 0.9798 0.9908 0.9853 980
|
||
1 0.9877 0.9930 0.9903 1135
|
||
2 0.9872 0.9700 0.9785 1032
|
||
3 0.9861 0.9832 0.9846 1010
|
||
4 0.9825 0.9725 0.9775 982
|
||
5 0.9898 0.9798 0.9848 892
|
||
6 0.9864 0.9875 0.9870 958
|
||
7 0.9806 0.9815 0.9810 1028
|
||
8 0.9785 0.9805 0.9795 974
|
||
9 0.9679 0.9861 0.9769 1009
|
||
|
||
accuracy 0.9826 10000
|
||
macro avg 0.9827 0.9825 0.9825 10000
|
||
weighted avg 0.9826 0.9826 0.9826 10000
|
||
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="7.-Misclassified-Examples">7. Misclassified Examples<a class="anchor-link" href="#7.-Misclassified-Examples">¶</a></h2><p>Seeing what the model gets wrong helps understand its weaknesses.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [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="n">wrong_idx</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">all_preds</span> <span class="o">!=</span> <span class="n">all_labels</span><span class="p">)[</span><span class="mi">0</span><span class="p">][:</span><span class="mi">10</span><span class="p">]</span>
|
||
|
||
<span class="n">fig</span><span class="p">,</span> <span class="n">axes</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">5</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">5</span><span class="p">))</span>
|
||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">wrong_idx</span><span class="p">):</span>
|
||
<span class="n">ax</span> <span class="o">=</span> <span class="n">axes</span><span class="p">[</span><span class="n">i</span> <span class="o">//</span> <span class="mi">5</span><span class="p">,</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">5</span><span class="p">]</span>
|
||
<span class="n">ax</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">X_test</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">),</span> <span class="n">cmap</span><span class="o">=</span><span class="s1">'gray'</span><span class="p">)</span>
|
||
<span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="sa">f</span><span class="s1">'True: </span><span class="si">{</span><span class="n">all_labels</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="si">}</span><span class="se">\n</span><span class="s1">Pred: </span><span class="si">{</span><span class="n">all_preds</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span><span class="si">}</span><span class="s1">'</span><span class="p">,</span> <span class="n">color</span><span class="o">=</span><span class="s1">'red'</span><span class="p">)</span>
|
||
<span class="n">ax</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s1">'off'</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">suptitle</span><span class="p">(</span><span class="s1">'Misclassified Examples'</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">14</span><span class="p">)</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">tight_layout</span><span class="p">()</span>
|
||
<span class="n">plt</span><span class="o">.</span><span class="n">show</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,iVBORw0KGgoAAAANSUhEUgAABHoAAAHuCAYAAADgAGuHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABVF0lEQVR4nO3dB7gU1fk44HMpKvaKigo2MJbYwF7R2IItscQWK3ZR7EosMZbYW+xGsZdYsUSNGtvPGrBrjB1FwYpRVEBh/8/Z+d8Alxm4c9nL7s593+e5D/DNzsy5u3uY2W/POV9DqVQqBQAAAADqXrtqNwAAAACAypDoAQAAACgIiR4AAACAgpDoAQAAACgIiR4AAACAgpDoAQAAACgIiR4AAACAgpDoAQAAACgIiR4AAACAgpDoAYDp7JprrgkNDQ3lP1tbPM/6668f6uX3v/nmm8PKK68cZptttvJj+vfvX44vuuii5Z9qtIkpa+3XBgDIR6IHAHL48MMPywmB+LPAAguEn3/+OfVx//73v//3OB+Cm+fZZ58NO++8c/j222/D/vvvH0488cSw6aab1uT7MybPGl/frJ/HH3+82s0EANqgDtVuAADUow4dOoTPPvss/P3vfw9bbrnlZNuvuuqq0K5d+vcpv/nNb8Lqq68eFlxwwdAWZf3+999/fyiVSuG6664La6655iTbHn300VCLDj/88DDrrLOmbpPgAwCqQaIHAFogJiJeeeWVcPXVV0+W6ImjfG644Ybwq1/9KjzxxBOT7TvHHHOUf9qqrN//008/Lf/ZpUuXybYtscQSoRYdccQR5ZFdAAC1wtQtAGiBTp06hR122KE8CuXzzz+fZNt9991XHu2z55575loP5sUXXwzbbrtt6Nq1a5hxxhnDfPPNF1ZZZZVw6qmnTnaMeM44mmSppZYqt2XuuecOq622Wjj77LOn2va33347HHXUUeW1cOaZZ54w00wzhR49eoRjjjkmjBo1arLHDx8+PBxyyCGhe/fu5XPNOeecYemllw777bdf+O9///u/x8W/n3DCCWGZZZYpj3KZffbZw5JLLhl22223MHTo0MzfP05xiv8eOHBg+d+LLbbY/6Y/xalyU1oHJo4Aism2tdZaq3y+mWeeOfTq1ascS/P111+X2z3//POXHxuf37vuuiu0pnfffbe85tDCCy8cvvrqq2Zti+3faqutyr9zfH3i67vJJpuExx57bLLjNz5/f/zjH8MzzzwTevfuXT5mfP8ccMAB4ccffyw/Lr5X11hjjTDLLLOUf//4Hmg69XDi12bQoEFh1VVXLT9P8Vjx/Rzf182V57UZPXp0OOecc8IKK6xQTgLGNsbfffvtty8nVAGA5pPoAYAWih984wfl66+/fpJ4/CAbP5hvvfXWzT7Wyy+/XB4l9MADD4S11147HHbYYeWkT/xwfMUVV0zy2P/85z9hxRVXDOeee27o3LlzOPjgg8NOO+1Ufuxpp5021XPdeeed5alliy++eDkJExMfsb1nnHFG2GijjcJPP/30v8f+8MMP5Q/qf/nLX8qjavr16xd23333cmIo/t5ffPHF/z7Ux0TEySefXD7WPvvsU/5ZaaWVwj333BPeeeedzPbED/RxPZ74IT+KSaX47/gTk0pZ4jnjmj577bVXuR3xOejbt2/4/vvvy7E42mZi8XeJa+tcfvnl5d8lnicmyn73u9+F22+/PbSWmOyKz98nn3xSbl+j+DzvuOOO5XbF5zIm3RodeOCB5aRKHBV26KGHhs0337y8hlH8d0zApHn++efDhhtuWE6U7LvvvuWE4aWXXhr23nvvcOutt5bfT926dStvi8/rWWedlfl+ueOOO8J2221XbntcEPuXv/xlOREX35sjR46c6u+c97WJ78PG2B577BEOOuigcn946qmnwr/+9a9mP9cAQHIhBgCa6YMPPijFy+cmm2xS/vdyyy1XWnbZZf+3ffjw4aUOHTqU+vXrV/73jDPOWOrWrdskxxg4cGD5GPHPRocddlg5dvfdd092zi+//HKSf/fq1av82CuuuGKyx3788ceT/Ds+br311pskNmzYsNKYMWMm2/ekk04qP/6GG274X+yee+4px/r37z/Z47/77rvS6NGjy39/9dVXy4/beuutJ3tcfEx87JR+/2i33XYrx+Nz3FR8Dps+j/H3j4/fY489SmPHjv1fPP5uW2yxRXnb4MGD/xc/8cQTy7G99957kuM8+OCD5Xham7LE5zQ+/vDDDy8ft+nPn//858n22WGHHcr7XHLJJeV/H3nkkeV/H3vssZM99v33358s9umnn5a6dOlS6t69+yTxxx577H/tn/j9E5+T5ZdfvtTQ0FCad955Sy+88ML/tn377belzp07l+aee+5JnrvG1yb+xOdl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ttkmNX7rrbdm7rP55punxh988MHQlumz1fXaa69lblt66aVT43fffXfmPttuu22oloUXXjh32dcp/S79+vXLVV72iSeeyDzWnnvuGYpCnyWvzp07p8affPLJzH3mmGOO1PiKK66Yuc9nn33mxUmhz9aumWeeOTV+77335v4MeMopp6TGn3766cxj/fjjj6G1ZZVKjz7//PNc+6y33nqZx3p6Cr9nEfusET0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQEj0AAAAABZFeSorJ9O/fP/VZ+c1vfpP5bN1yyy2tXl2rXbt2uc//0EMPpcb/+te/Vqxd0NbdcccdqfG33347c5+VVlopNd7Wq24xfXTp0iU13q1bt8K8BMOGDcvcllWN5JhjjsncJ+91c6GFFsr1eGgrNttss9R4jx49Mve5/fbbc1fWyqrUk1Vd97vvvss8FkwPP/zwQ2p8ww03LMwLcPjhh+fus++++25q/K233qpYu+qdET0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQEj0AAAAABaHqVjOrixx88MGp8ddeey3zyT3ppJNCa1t44YUzt2277bap8V/84hep8RtuuCHzWKNHj25B66D1ZVWx2X777VPj66+/fuaxRo4cmRq/7bbbUuNPP/107nbNOuusmfvcddddmdugtWW9NxsaGnIf68Ybbwz15sQTT0yNzz333Jn73HvvvbnOkVUlBNqKWWaZJTX++9//PvexzjzzzFwVtKZUkXb++edPjf/617/OPNbXX3891TYCE/Tq1Sv16Tj66KNzP02XXnppavyrr77ylP9/RvQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBKK/exDHHHJP6RC2yyCKp8XPOOSfzyX3rrbdCpXTs2DE1fuqpp+Y+1meffZYaV0KdapttttlS49tuu23mPueff36uktBffvll5rGySrLutttuqfHhw4dnHuvjjz9OjT///PPT5f8MyOvtt99OjY8cOTJzn06dOqXG33zzzcK8ABdddFHmth133DE1Puecc7Zii6B+HXrooanxDTbYIDX+2GOPZR5r8ODBqfGNN944c58tttgi5JF1/x8prw6Ta9cuexzJJptskuteIvrvf/+b+/8GEkb0AAAAABSERA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABREm6y6teSSS2Zu22OPPVLj9913X2r8wgsvDNND1qr/u+yyS+5jDRo0qAItgsrr3bt3anzTTTfNXXXrqquuSo1/9NFHmceaYYYZclUJuOeeezKPteCCC6bGv/3228x9unXrlhofOnRo5j7Q2s4444zMbRdccEFqfMstt8zc56yzzgr15IMPPsjc9uOPP+aqupVV2W9K237++eepthFqyXLLLZe5bZ999sl1rKuvvjpz27zzzpsa/8tf/hLyyqqiOWLEiNzHgrZsr732ytx20kkn5T7esccemxp/9dVXcx+rrTGiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAg2mTVrS222CJz24wzzpgab9euujmx7bbbrmLHuu222yp2LMhrrbXWytx2/fXXp8Z32mmnzH3uv//+ir0IY8eOTY3POuusuY/1/vvvp8bXXXfdzH2ef/751PhWW22V6/FQSc8991zmtqwqclkVLKOvv/46V6W86WX99ddPjR999NG5q+tlWW+99TK3rbPOOqnxxx57LNc5oNI6duyYqyLmJZdcknmshRZaKNe577rrrsxtWRUxu3fvHvIaN25c7kp5WZ8ZxowZk/v8UBSbb7557n2mVBH32muvncYWtV1G9AAAAAAUhEQPAAAAQEFI9AAAAAAUhEQPAAAAQEFI9AAAAAAUhEQPAAAAQEE0lEqlUrMe2NAQimKZZZbJ3PbKK6/kKq84pbKPp512Wmp88ODBqfEll1wy81gvvfRS7rLPf/3rX1Pj++67b2p8/PjxoS1o5lu+7tVqn51SqeYZZpghd0ni7777LlTKZpttlqsvffbZZ7mPtdpqq2Xuc/755+cq4bzSSitlHuutt94KRaHP1q7rr78+Nb7TTjvlPtawYcNS45dddlmYHrKu2VO6Nl533XW5ysv/6le/yjzWQw89lBrfZpttMve5++67Qy3SZ+vPHHPMkbkt6153/fXXD23Zxx9/nBrv27dv5j4PP/xwqEX6LHmtuOKKqfEhQ4bkfp/169cvc59LL73Ui9PCPmtEDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBtMmqW1Pyhz/8ITV+8skn535evvnmm9T4Cy+8kBpfc801M4+VVV1r3LhxmfssvPDCqfERI0aEtkxlgeq6/fbbM7c9/vjjqfGLLrqoYufv2rVr5rann346NT527NjU+FprrZV5rJb0s6zKe//4xz9ytSvaeOONU+MfffRRqDf6bO3q2LFjanzllVfOXcGnc+fOoZpefPHF1Ph5552X+3cZPXp0rgqe0UknnZQab9cu+zu5Y489NtQifbb+qmudffbZmfvstddeuc7x/fffZ27LOs+3336bGt9xxx0zj9WrV69QTe+//35q/Morr8zc54wzzmjFFrWcPkuWWWaZJTV+0003pca33HLLzGM98sgjqfGNNtrIC5CTqlsAAAAAbYipWwAAAAAFIdEDAAAAUBASPQAAAAAFIdEDAAAAUBASPQAAAAAFobx6M+2www6p8TPPPDNzn0UWWSS0tqxy1FHv3r1b/fz1SAnJ6ppSOdSs0uv9+vXL3Ofee+9Njffp0yc1fs4552Qea9SoUbn6/7vvvhumh7xl16dUer1nz54tKolbTfpsscw333yp8f322y81vthii+U+x5gxY1LjJ598cu7+n1X2udJmmGGG1Phtt92Wuc+rr76aGj/++ONDNemz1dWxY8fMbZdccklFSqhPyeGHH5657bzzzkuNzzTTTKnxTz75JPNYc801V+73X1afefTRR1Pj9913X+axXnzxxar+n1FJ+ixZDjzwwNT4BRdckOv6G/Xt2zc1fvPNN3sBclJeHQAAAKANMXULAAAAoCAkegAAAAAKQqIHAAAAoCAkegAAAAAKQtWtVqqSEbVv3z41vuyyy6bG//Wvf+WuBrLccstl7jN06NDMbW2ZygK1609/+lNq/Ljjjsvc584770yNb7755qnxTz/9NPNYa6+9du59qimrGteUqoE88cQTmftsv/32qfEff/wxVJM+S1t2xx135K5i2K1bt1BN+mx1LbPMMpnbXn/99Yqd54YbbkiN77HHHpn7jBs3LjW+2267pcavueaa3O+zBx54IHOfrIqcbZ0+27ZN6X5yyJAhqfFZZpklNX7qqadmHuvEE09sQetIo+oWAAAAQBti6hYAAABAQUj0AAAAABSERA8AAABAQUj0AAAAABREh2o3oN6NHTs29z6zzjpr7n1GjBiRGldZiyI588wzU+Prrrtu5j49evRIje+33365qnRF3377bagn7777bua27bbbLjV+++23Z+7z3HPPpcZXXXXV1PiYMWOm2kZg2rz33nuZ2zbbbLPU+Lbbbpu7/1McRx11VEWP98EHH6TGjz/++FyVtaZkvvnmy11Z5vrrr89d9QvasoaGhtT4gAEDMvfJqq6V5d57783dLlqHET0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQyqtXwZFHHpl7nwcffLBV2gK1ZNSoUanxTTfdNHOf8ePHp8bHjh0b2rKHHnooNb7KKqtk7vPiiy+mxu+7777U+CabbJL7dQHyOeOMMzK39e7dOzW+yy67pMaVVy+WeeaZJ9f7YkqmdM3caaedUuNDhw4NlbLQQgulxseMGZO5zy233JIad/2BdNtss01qfNddd839lF1zzTWp8cGDB3v6a4QRPQAAAAAFIdEDAAAAUBASPQAAAAAFIdEDAAAAUBASPQAAAAAFoepWK1pxxRVT4xtttFFrnhYKZ/To0dVuQmG89dZbmdv22muv1Pj111+fGj/ooIMyj3XhhRe2oHWQT8eOHVPjSyyxRO6n8rTTTkuNl0qlzH2yqljdfPPNoVL69++fuW2llVZKjV999dUVOz/19/6faaaZch+rT58+mduef/750NrOPPPM1Pi1116buc/LL7/cii2C4unevXvFjnXKKaeE6eF3v/tdavzWW2+dLuevZ0b0AAAAABSERA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABSERA8AAABAQSiv3opmmWWWXOUwR40alXmsG2+8sWLtAshTErpz586p8XPPPTfzifz4449T43fddZcnn4o58MADU+Nnn3127mM1NDTkLq9+6qmnpsYXWmih3Offa6+9UuO77LJL5j7jxo1Ljf/www+5z0/9GTFiRGp8/vnnD/Vm+PDhueJAfqusskrFyqhn3efNOOOMmcf67W9/mxo/7rjjMvc5+OCDp9pG0hnRAwAAAFAQEj0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQqm61oi+++CJXNYwhQ4ZkHuu5556rWLsA8rjoootS49tuu23mPueff35qXNUtKmno0KGp8e+++y41Pttss1X0/C+88EJobT/++GPmtksuuSQ1fu2117ZiiwCoR2ussUbufeaee+7U+NJLL50av+mmmzKP1a1bt1wVLKMnnnhiqm0knRE9AAAAAAUh0QMAAABQEBI9AAAAAAUh0QMAAABQ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K6wQwqBBE0YFRP/4Rwgff5x8SwLUTp+N57nrrkl/+vVLtsV1P2680asFtdRnG0cU3HLL5Gtafv99CCut5PWCWuqzrrPTxIie1hQXZ4wlG7fZJvmQ9soryZt/3nknfVycKxwvMptvHsLuuyff7McLzmuvhXD77cmQ8MZ9YkWea68N4YMPpryAVTzeKackZZrjt40x8XPTTSG8/noIp50WwgILtOqvDnWpmn02Ou+85LyxWl6sVBDXE4iLp8ebU+sGQG312Y03njzWOFIhTgWJ634AtdNn4xp4yy4bwp/+lIzGi2vgvftuCBddlFS13GsvrxY05TpbtyR6WtPeeycXnauuCuHBB5O5/A8/HMKGG076uJlnTipixQRMXLE8llWOc4Xjh7tYWjkO/87rl78MYZllQrjhhhC++CIZxROrDPztb0llAaC2+mwUR9rF8x5/fAgDBiTn2XrrEM48c9IFmoHa6LNA/fTZeC/81FNJqeb77w/h5ptDmG225Dobz9M02QS4ztaxhlIpTkwFAAAAoN5ZowcAAACgICR6AAAAAApCogcAAACgICR6AAAAAApCogcAAACgICR6at2ii4aw++7VbgXQXPos1Bd9FuqLPgv1RZ+tComeKbnmmhAaGib8zDRTCD16hHDQQSF89lmoeZ9+GsIuu4Sw1FIhzDZbCHPOGcKqq4Zw7bUhlErVbh1UXr332Wj8+BDOPDOExRZL2r/88iHcfHO1WwWtowh99t13Q9h22xDmmiuEmWcOYe21Q3jssWq3ClpHEfqs6yxtSRH6rOtsi3Ro2W5tzJ/+lHzoGj06hP/7vxAuvTSEv/89hNdfT27qatWXX4YwbFhyA9q1awg//RTCww8nI4T+858QTjut2i2E1lGvfTb6wx9COP30EPbeO4RVVglh0KAQdtopuTjvsEO1Wweto1777Mcfh7DGGiG0bx/CkUeGMMssIQwcGMLGG4fw6KMhrLtutVsIraNe+2zkOktbVK991nW25UpkGzgwjnsplf71r0njhx2WxG+6KXvfUaMq88x261Yq7bZbZV+lzTcvlWaZpVT6+efKHheqrd777LBhpVLHjqXSgQdOiI0fXyqts06ptPDC+izFU+999oADSqUOHUqlt96aEPv++1JpkUVKpZVXrkz7oJbUe591naWtqfc+6zrbYqZutcQGGyR/fvBB8mccITPrrCG8914Iv/51Mk1q550nDA89//wQll02GSo3//wh7LtvCCNHNs24hXDKKSEsvHCSVe3dO4Q33kg/fzxP/JmWeZI//BDC2LEtPwbUk3rps3H0Thx5d8ABE2JxJM/++yej8559tmW/P9SbeumzTz0VwkorJVOkG8Vjb7llCC++GMI777Ts94d6Uy991nUW6qvPus62mKlbLdH4ppxnngmxn38OYZNNkrn5Z589YQhc7ARxbuQee4Rw8MFJZ7roohBeeimEp58OoWPH5HEnnJB0jNix4k+8QYxDv9OSMRtumPz54YfNa++PP4bw/fchjBoVwhNPJMPK41DzTp1a9OtD3amXPhvPEad+LL30pPG4tlbj9theKLp66bNjxiRr8zTV2LYhQ0Lo3r0lzwDUl3rps66zUF991nW2xSR6muO//03Wu4lzGuObOc5xjEmSzTef9E243XYh/PnPE2Jx/uNf/xrCjTcma2w0itnNTTcN4bbbkvgXXySLr/bpE8K99ybf4DfOIa7EOjoXXBDCscdO2rFisgeKql777PDhybckjcdrtOCCExZYhyKq1z4bR/LEbxu/+y759nPidkWffNLyY0Mtq9c+6zpLW1WvfdZ1tsVM3WqOX/0qhPnmC2GRRZLFUOOwtrvuCmGhhSZ9XJxeMbH4xp9jjhA22ijpWI0/PXsmx2isyvHII0mms1+/ST/g9e+f3p6Y+WzuaJ5oxx2TRZhvumlCB42jfKCo6rXPxn4544yTx+Mw2cbtUET12mdje775JoTf/S75ZvPtt5NjDh6cbNdnKap67bOus7RV9dpnXWdbzIie5rj44qQMXYcOybftMbPYrkmOLG6L8xEnFufmx+xp587px/388+TPoUOTP5sO746dMW1IeF7duiU/jUmfffZJOnusvGX6FkVUr3029sf4bUpT8duXxu1QRPXaZzfbLIS//CWEY44JYeWVk9iSS4Zw6qkhHHVUchMMRVSvfdZ1lraqXvus62yLSfQ0R1wfo1evKT8mfgvftLPEhatip4hD3dLEN341xHLrV14ZwpNPJvMwoWjqtc/GKVrxm5G4mN3E34bEoeZRly6te36olnrts9FBByXrFrz6aggzzBDCiiuGcNVVybZ4Uw1FVK991nWWtqpe+2zkOtsiEj2taYklkmFsa6015W/iG0fbxIzp4otPiMe5jk1XM6+ExqHk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T58+mfvsscceqfGBAwfmPj9UypTuJ7feeuvUeL9+/XL38XHjxuX+PLvKKqtkbmPKjOgBAAAAKAiJHgAAAICCkOgBAAAAKAiJHgAAAICCkOgBAAAAKAhVt6bRqFGjMrd99dVXFavsscYaa6TGu3fvnrnPG2+8kfs8UIs22WSTzG1TqlZXKV26dEmN33333bmPNaVqJDPOOGNqfNiwYanx+eabL/NYU/q/Ia8vv/wyNT506NDMfVZdddWKnZ+2LauCVrT33nunxrfZZpvU+LzzzluxakCVltXPn3jiieneFmiOXXfdtWJ96YUXXsjVl6Phw4enxj/55JPMfUaOHFmxqltZfvjhh8xtI0aMqNh5IK8NN9wwNX7rrbdm7jPXXHPlOseNN96Yue2UU05Jjffo0SNzn0GDBuU6PxMY0QMAAABQEBI9AAAAAAUh0QMAAABQEBI9AAAAAAUh0QMAAABQEKpuTaPXX389c1tWRZ699tor93myKnUdcMABmfsceOCBuc8D1ZRV3WqFFVbI3Kdv376p8V69eqXGP/roo8xjff7556nxq6++OncFrYaGhtT4kksuGfK69tprU+Pt27fP3GfAgAGhUrIqFWVVSYGW6NSpU2r89NNPz9xns802q9iT/dlnn6XGTzjhhNwVRKZUES/LP/7xj9z7QFFcddVVqfEff/wxc5/ZZpstNT7nnHPmvmeopH/+85+Z2x544IFWPz9svfXWqU/CLbfckhrv2LFj5pP27bffpsb33HPP1Ph9992XeayffvopV3un5N577829T1tjRA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABSE8uqtKKvsakvKq2fZcsstM7ddccUVqfFXXnmlYueHSrr++utT4+uvv37mPpdffnlqvGvXrqnxnXfeOXd59VGjRqXGt91228xjtWuXnkeff/75Q15PPvlkanyRRRbJ3CerbYsttljmPlnlNR966KFcpTVhSpZccsnU+CWXXJIa32CDDabLE/r999+nxvfdd9/MfVpSRj1LVn967rnnMve57bbbKnZ+qKazzz47Nb7ffvtl7pN1bV5nnXVCNd1zzz1VPT/FsuKKK6bGt9pqq8x9svpN1n3e4MGDM4/Vp0+f1PiXX34ZKqVnz5659xk5cmTFzl9URvQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFERDqVQqNeuBDQ2t35o24pxzzkmNH3bYYZn7jB8/Pvd5hg0blhrv1q1baMua+Zave7XaZ1dbbbXMbQ8//HBq/O23387cJ6siTlZ/Ov744zOP9f7774eimG222VLjF198ceY+WRXJBg4cmBrv27dvmB702frTuXPnzG1/+MMfUuMHHnhgqOb/i7X6Pvvkk08yt9Xq9bxWn8u2cp2t9n1rS+5ZWyKruuX0Ov9vf/vb1PigQYNCvdFnq6t3796Z27LeT7PMMkvu89x33325q6h+9dVXoVJmnnnm1Pg333yTuU/79u1T46usskpq/MUXXwxtQakZ11kjegAAAAAKQqIHAAAAoCAkegAAAAAKQqIHAAAAoCAkegAAAAAKokO1G9AW/elPf0qNDx48OHOfK664IjXeqVOnzH0WWGCB1PiFF16YGr/66qszj/Xyyy9nboM8sqpkTamCwI033pi5z5AhQ3JVkGor5p9//tR4W39eqKwVVlghNf7AAw+0qCJXUXz//fep8SuvvDJzn/feey81/sMPP1SsXZDl0ksvzdy244475qpuNb0qOFX7/PVYXYvqmnHGGVPjN910U+574zFjxmTus+uuu6bG77zzzqpWqvvlL3+Zq7JW9Oabb6bG33jjjYq1q6iM6AEAAAAoCIkeAAAAgIKQ6AEAAAAoCIkeAAAAgIKQ6AEAAAAoCIkeAAAAgIJoKDWzBmFDQ0Prt4ZMd911V2p8/fXXz9xnttlmy/WMfvbZZ5nbVlxxxdT4F198EerN9Cq7WW3V7rMnnHBCavy4447L3OfZZ59NjW+44YaZ+/z888+hrfrjH/+Yue3oo4/OXUJ3wIABqfFx48alxn/66acwPeiz1bXyyitnbjv22GNT47/5zW9Cvf2/2JL3WVZ510033TQ1Pnz48NAW6LO1a7nllkuN//Of/8zcZ+65587Vn6b0+n/33Xe5rlndunXLPNYxxxyT+/yVdNZZZ6XGTzzxxMx9xo4dG2qRPltdp512Wua2rL4xJZ9//nlNliTv0qVLanyppZbK3GfUqFG5+tnIkSMzj3XjjTcW5rNEc/qsET0AAAAABSHRAwAAAFAQEj0AAAAABSHRAwAAAFAQEj0AAAAABaHqVp3bd999M7ddfPHFFatG0rVr19T4J598EuqNygLTx/jx43M//08++WRqvHfv3qEty6rGsNFGG2Xuc//996fGH3zwwcx9nnvuuVCL9Nnpo2fPnqnxRx99tGLVHautXbt2uf/Pev3113NX3bnhhhtCW6bP1q5LLrkkNb7PPvvkPlbWfeMzzzyTuyLnY489lvv8F154Ye574/bt24dKyfr9p1Rd9M9//nOoRfpsda2++uqZ22655ZZcn82ml5ZU3aukrMqvTz31VOY+ffr0SY2PGTMm1BtVtwAAAADaEFO3AAAAAApCogcAAACgICR6AAAAAApCogcAAACgICR6AAAAAAqiQ7UbwLR55ZVXPIXUpJaUXcwq1bzAAgtk7jNixIhQT3r16pW5bb/99kuN77rrrqnx4cOHZx7ruuuuS42///77U20jbVNWeddZZ501c5/pUUb1kUceydz2wQcfpMb33nvvXCXUp/S7ZJWjjtp6GXVq04orrpi5bYsttmj180+pz7SkjHqWgw8+ODW+1VZbZe6z0EILhda2/PLLt/o5KJbnnnsud3+e0rW5W7duqfF11103VErW/eTiiy+euc+qq66aGt9yyy0z9/nPf/6TGt9uu+1S42+88UbmsdoaI3oAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACqJNVt1ab731cu/zxBNPhGrKqiBy7LHH5q56lKVdO3k/Kqcl1XhWWmml1Pi1116buc+OO+6YGv/6669DNStrZFUDOOqoozL3+fvf/54aP/HEE1PjTz75ZOaxVNeimrLey9HLL7+cGr/ssstS4998803msTp06JDrmjkl//73v1Pjt956a+5jQTX16NEjc1uXLl0qdp6XXnopd//PW3Wzb9++mfuce+65uavrVVLWffOUrs2QV9Y1cErXxmHDhqXGn3766VZ/Aab0eXLQoEG5j3fppZemxlXXmjqf7AEAAAAKQqIHAAAAoCAkegAAAAAKQqIHAAAAoCAkegAAAAAKoqHUzNI4eSs41YKsygJvvvlm5j5ZK+Vff/31FWvXlltumbsa2Pzzz58ab9++fe7zZ1U82WqrrTL3GTFiRGp83LhxoS1Ug6pH1e6z77zzTmp8vvnmy111Y0oeffTR1PgBBxyQGj/rrLMyj7XkkkvmOvfss8+eue3CCy9MjT/44IOZ+wwfPrxqFcRqmT47fcw111yp8c6dO+c+1tChQzO3jR49Otexsq5/0eOPP54a7969e67/l6KNN944Nf7xxx9PtY1MSp+trqyqj9HNN99csfN8//33uStlZt1rZlXqWXDBBXPf50yv91+3bt1y3TPX8n2zPsv0qPqXVd1ySrI+N7g3Lk31uTOiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACqJDKLCs0uOzzjpr5j59+vRJjf/6178O1SyHnVX28Lvvvsvc5+ijj06N33vvvblKO0NLZJU3vvrqqzP3GTVqVGp89dVXz9xnww03TI3/5z//CZXy888/p8YvuOCC3GXf33jjjYq1Cypp5MiRueLTy0EHHZT7/5ksZ599duY2ZdQhn6z76QMOOKDunsoxY8akxk866aTMfT755JNWbBHUp7nnnjv3Pm+++Wbmth9++GEaW9R2GdEDAAAAUBASPQAAAAAFIdEDAAAAUBASPQAAAAAFIdEDAAAAUBCFrro1bty43JWqZp999lAtw4YNy9z20ksv5a7689hjj1WkXVBJp59+eua2999/PzXetWvXzH0GDRqUGl9ggQVCpZxwwgmp8UsvvbRi54C2Lquf77777rmv80OGDEmNX3XVVS1sHdSPZ599NnPbO++8U5EKdrUg6755/PjxuY91xRVXpMbPPPPM3MeCtiyrgvWUZN3/R6NHj57GFrVdRvQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBFLq8+qeffpoa33rrrTP3WWmllXKdo1+/fpnbHn/88dT4a6+9lho///zzc50b6tHbb79d0bKLv/zlL6exRcD01KlTp9T4YYcdlhpfcMEFM4/13nvvpcbXXHPNFrYO6l9W2fHommuuSY2feuqpoZquvfbaXPfMkftmgGxG9AAAAAAUhEQPAAAAQEFI9AAAAAAUhEQPAAAAQEFI9AAAAAAUREOpVCo164ENDa3fGpgOmvmWr3v6LEWhzxbLqquumhp/5plnUuMjR47MPNbaa6+dGv/Pf/7TwtZRCfos1Bd9lko5+eSTM7cNGDAgNT5w4MDMffr27VuRdrXFPmtEDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBdKh2AwAAsvzwww+Z21TXAoD69uCDD1a7CYVkRA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABSERA8AAABAQUj0AAAAABSE8uoAwHQzbNiw1Pibb76ZGp9jjjlauUUAQCU8/PDDmdu23nrr1PiTTz7pyW8FRvQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFERDqVQqNeuBDQ2t3xqYDpr5lq97+ixFoc9CfdFnob7os1C8PmtEDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFIREDwAAAEBBSPQAAAAAFERDqVQqVbsRAAAAAEw7I3oAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAACkKiBwAAAKAgJHoAAAAAQjH8P1zGG5Db6twdAAAAAElFTkSuQmCC"/>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="8.-Save-Model-&-Training-Results-to-DuckDB">8. Save Model & Training Results to DuckDB<a class="anchor-link" href="#8.-Save-Model-&-Training-Results-to-DuckDB">¶</a></h2>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea">
|
||
<div class="jp-InputPrompt jp-InputArea-prompt">In [11]:</div>
|
||
<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline">
|
||
<div class="cm-editor cm-s-jupyter">
|
||
<div class="highlight hl-ipython3"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">pandas</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">pd</span>
|
||
|
||
<span class="c1"># Save training history</span>
|
||
<span class="n">history_df</span> <span class="o">=</span> <span class="n">pd</span><span class="o">.</span><span class="n">DataFrame</span><span class="p">(</span><span class="n">history</span><span class="p">)</span>
|
||
<span class="n">history_df</span><span class="p">[</span><span class="s1">'epoch'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">range</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">EPOCHS</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
|
||
|
||
<span class="n">con</span> <span class="o">=</span> <span class="n">duckdb</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="s1">'../data/mnist.duckdb'</span><span class="p">)))</span>
|
||
<span class="n">con</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s1">'DROP TABLE IF EXISTS training_history'</span><span class="p">)</span>
|
||
<span class="n">con</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="s1">'CREATE TABLE training_history AS SELECT * FROM history_df'</span><span class="p">)</span>
|
||
<span class="n">con</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||
|
||
<span class="c1"># Save model weights</span>
|
||
<span class="n">torch</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">model</span><span class="o">.</span><span class="n">state_dict</span><span class="p">(),</span> <span class="s1">'../data/mnist_model.pth'</span><span class="p">)</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s1">'Model saved. Final test accuracy: </span><span class="si">{</span><span class="n">history</span><span class="p">[</span><span class="s2">"test_acc"</span><span class="p">][</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span><span class="si">:</span><span class="s1">.4f</span><span class="si">}</span><span class="s1">'</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>Model saved. Final test accuracy: 0.9826
|
||
</pre>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell">
|
||
<div class="jp-Cell-inputWrapper" tabindex="0">
|
||
<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser">
|
||
</div>
|
||
<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt">
|
||
</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput" data-mime-type="text/markdown">
|
||
<h2 id="9.-Experiment-Ideas">9. Experiment Ideas<a class="anchor-link" href="#9.-Experiment-Ideas">¶</a></h2><p>Try changing these parameters and re-running to see the effect:</p>
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Parameter</th>
|
||
<th>Current</th>
|
||
<th>Try</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>LEARNING_RATE</code></td>
|
||
<td>0.001</td>
|
||
<td>0.01, 0.0001</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>HIDDEN1</code></td>
|
||
<td>256</td>
|
||
<td>64, 512</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>HIDDEN2</code></td>
|
||
<td>128</td>
|
||
<td>32, 256</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>DROPOUT</code></td>
|
||
<td>0.2</td>
|
||
<td>0.0, 0.5</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>EPOCHS</code></td>
|
||
<td>15</td>
|
||
<td>5, 30</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>BATCH_SIZE</code></td>
|
||
<td>128</td>
|
||
<td>32, 512</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Optimizer</td>
|
||
<td>Adam</td>
|
||
<td>SGD(lr=0.01, momentum=0.9)</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
</body>
|
||
</html>
|