diff --git a/docs/02advanced/01life-game/index.mdx b/docs/02advanced/01life-game/index.mdx
index 94b127fb3..27c298b26 100644
--- a/docs/02advanced/01life-game/index.mdx
+++ b/docs/02advanced/01life-game/index.mdx
@@ -88,7 +88,7 @@ import LifeGame from "@site/src/components/LifeGame/LifeGame";
 
 早速、ライフゲームの Python でのプログラムを見てみましょう。この後、詳しく解説するので、分からなくても構いません。`Open in Colab` と書いてあるボタンを押してから実行して、実際に動く様子を確認してみてください。
 
-<ViewSource path="/life-game/life_game.ipynb" noOutput />
+<ViewSource path="/life-game/life_game.ipynb" />
 
 それでは、実際に詳しく見ていきましょう。
 
@@ -139,7 +139,7 @@ ita.array.make2d(行数,列数)
 
 これらを使ってあげると、次のようなプログラムになるはずです。
 
-<ViewSource path="/life-game/next_generation.ipynb" noOutput />
+<ViewSource path="/life-game/next_generation.ipynb" />
 
 次の世代の盤面を計算することができたので、次は指定した世代までの盤面を計算する関数を作りましょう。
 
@@ -151,7 +151,7 @@ ita.array.make1d(要素数)
 
 これを用いて、引数を `board` と世代数 `n` にすると、次のようにプログラムを書けます。
 
-<ViewSource path="/life-game/life_game_func.ipynb" noOutput />
+<ViewSource path="/life-game/life_game_func.ipynb" />
 
 後はこれをアニメーションにしてあげれば、完成です。
 
@@ -175,4 +175,4 @@ ita.plot.animation_show(三次元配列)
 
 今までのをすべて合わせると、次のようになって冒頭のプログラムができました。
 
-<ViewSource path="/life-game/life_game.ipynb" noOutput />
+<ViewSource path="/life-game/life_game.ipynb" />
diff --git a/docs/02advanced/03simulation/index.mdx b/docs/02advanced/03simulation/index.mdx
index e5e5a0e29..38a3a2a42 100644
--- a/docs/02advanced/03simulation/index.mdx
+++ b/docs/02advanced/03simulation/index.mdx
@@ -77,13 +77,10 @@ $$
 
 可視化すると、次のようになります。
 
-<ViewSource path="/simulation/uniform_linear_motion_view.ipynb" noOutput />
+<ViewSource path="/simulation/uniform_linear_motion_view.ipynb" />
 
 :::note
 解析解を使うと次のようになります。
 
-<ViewSource
-  path="/simulation/uniform_linear_motion_view_analytical.ipynb"
-  noOutput
-/>
+<ViewSource path="/simulation/uniform_linear_motion_view_analytical.ipynb" />
 :::
diff --git a/package-lock.json b/package-lock.json
index e7963847f..646ad7350 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,6 +17,7 @@
         "@monaco-editor/react": "^4.4.6",
         "@mui/icons-material": "^5.10.15",
         "@mui/material": "^5.10.15",
+        "ansi-to-html": "^0.7.2",
         "clsx": "^1.2.1",
         "hast-util-is-element": "^1.1.0",
         "markdown-it": "^13.0.1",
@@ -24,7 +25,6 @@
         "prism-react-renderer": "^1.3.5",
         "react": "^17.0.2",
         "react-dom": "^17.0.2",
-        "react-jupyter-notebook": "^0.4.0",
         "react-zoom-pan-pinch": "^2.1.3",
         "rehype-katex": "^5.0.0",
         "remark-math": "^3.0.1"
@@ -1974,139 +1974,6 @@
         "node": ">=6.9.0"
       }
     },
-    "node_modules/@codemirror/autocomplete": {
-      "version": "0.19.15",
-      "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.15.tgz",
-      "integrity": "sha512-GQWzvvuXxNUyaEk+5gawbAD8s51/v2Chb++nx0e2eGWrphWk42isBtzOMdc3DxrxrZtPZ55q2ldNp+6G8KJLIQ==",
-      "dependencies": {
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/state": "^0.19.4",
-        "@codemirror/text": "^0.19.2",
-        "@codemirror/tooltip": "^0.19.12",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/common": "^0.15.0"
-      }
-    },
-    "node_modules/@codemirror/gutter": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.9.tgz",
-      "integrity": "sha512-PFrtmilahin1g6uL27aG5tM/rqR9DZzZYZsIrCXA5Uc2OFTFqx4owuhoU9hqfYxHp5ovfvBwQ+txFzqS4vog6Q==",
-      "deprecated": "As of 0.20.0, this package has been merged into @codemirror/view",
-      "dependencies": {
-        "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.23"
-      }
-    },
-    "node_modules/@codemirror/highlight": {
-      "version": "0.19.8",
-      "resolved": "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.8.tgz",
-      "integrity": "sha512-v/lzuHjrYR8MN2mEJcUD6fHSTXXli9C1XGYpr+ElV6fLBIUhMTNKR3qThp611xuWfXfwDxeL7ppcbkM/MzPV3A==",
-      "deprecated": "As of 0.20.0, this package has been split between @lezer/highlight and @codemirror/language",
-      "dependencies": {
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.3",
-        "@codemirror/view": "^0.19.39",
-        "@lezer/common": "^0.15.0",
-        "style-mod": "^4.0.0"
-      }
-    },
-    "node_modules/@codemirror/lang-javascript": {
-      "version": "0.19.7",
-      "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-0.19.7.tgz",
-      "integrity": "sha512-DL9f3JLqOEHH9cIwEqqjnP5bkjdVXeECksLtV+/MbPm+l4H+AG+PkwZaJQ2oR1GfPZKh8MVSIE94aGWNkJP8WQ==",
-      "dependencies": {
-        "@codemirror/autocomplete": "^0.19.0",
-        "@codemirror/highlight": "^0.19.7",
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/lint": "^0.19.0",
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/javascript": "^0.15.1"
-      }
-    },
-    "node_modules/@codemirror/language": {
-      "version": "0.19.10",
-      "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-0.19.10.tgz",
-      "integrity": "sha512-yA0DZ3RYn2CqAAGW62VrU8c4YxscMQn45y/I9sjBlqB1e2OTQLg4CCkMBuMSLXk4xaqjlsgazeOQWaJQOKfV8Q==",
-      "dependencies": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/text": "^0.19.0",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/common": "^0.15.5",
-        "@lezer/lr": "^0.15.0"
-      }
-    },
-    "node_modules/@codemirror/lint": {
-      "version": "0.19.6",
-      "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-0.19.6.tgz",
-      "integrity": "sha512-Pbw1Y5kHVs2J+itQ0uez3dI4qY9ApYVap7eNfV81x1/3/BXgBkKfadaw0gqJ4h4FDG7OnJwb0VbPsjJQllHjaA==",
-      "dependencies": {
-        "@codemirror/gutter": "^0.19.4",
-        "@codemirror/panel": "^0.19.0",
-        "@codemirror/rangeset": "^0.19.1",
-        "@codemirror/state": "^0.19.4",
-        "@codemirror/tooltip": "^0.19.16",
-        "@codemirror/view": "^0.19.22",
-        "crelt": "^1.0.5"
-      }
-    },
-    "node_modules/@codemirror/panel": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/@codemirror/panel/-/panel-0.19.1.tgz",
-      "integrity": "sha512-sYeOCMA3KRYxZYJYn5PNlt9yNsjy3zTNTrbYSfVgjgL9QomIVgOJWPO5hZ2sTN8lufO6lw0vTBsIPL9MSidmBg==",
-      "deprecated": "As of 0.20.0, this package has been merged into @codemirror/view",
-      "dependencies": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0"
-      }
-    },
-    "node_modules/@codemirror/rangeset": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz",
-      "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==",
-      "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state",
-      "dependencies": {
-        "@codemirror/state": "^0.19.0"
-      }
-    },
-    "node_modules/@codemirror/state": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz",
-      "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==",
-      "dependencies": {
-        "@codemirror/text": "^0.19.0"
-      }
-    },
-    "node_modules/@codemirror/text": {
-      "version": "0.19.6",
-      "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz",
-      "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA==",
-      "deprecated": "As of 0.20.0, this package has been merged into @codemirror/state"
-    },
-    "node_modules/@codemirror/tooltip": {
-      "version": "0.19.16",
-      "resolved": "https://registry.npmjs.org/@codemirror/tooltip/-/tooltip-0.19.16.tgz",
-      "integrity": "sha512-zxKDHryUV5/RS45AQL+wOeN+i7/l81wK56OMnUPoTSzCWNITfxHn7BToDsjtrRKbzHqUxKYmBnn/4hPjpZ4WJQ==",
-      "deprecated": "As of 0.20.0, this package has been merged into @codemirror/view",
-      "dependencies": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0"
-      }
-    },
-    "node_modules/@codemirror/view": {
-      "version": "0.19.48",
-      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz",
-      "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==",
-      "dependencies": {
-        "@codemirror/rangeset": "^0.19.5",
-        "@codemirror/state": "^0.19.3",
-        "@codemirror/text": "^0.19.0",
-        "style-mod": "^4.0.0",
-        "w3c-keyname": "^2.2.4"
-      }
-    },
     "node_modules/@colors/colors": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -3074,27 +2941,6 @@
       "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
-    "node_modules/@lezer/common": {
-      "version": "0.15.12",
-      "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz",
-      "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig=="
-    },
-    "node_modules/@lezer/javascript": {
-      "version": "0.15.3",
-      "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-0.15.3.tgz",
-      "integrity": "sha512-8jA2NpOfpWwSPZxRhd9BxK2ZPvGd7nLE3LFTJ5AbMhXAzMHeMjneV6GEVd7dAIee85dtap0jdb6bgOSO0+lfwA==",
-      "dependencies": {
-        "@lezer/lr": "^0.15.0"
-      }
-    },
-    "node_modules/@lezer/lr": {
-      "version": "0.15.8",
-      "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz",
-      "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==",
-      "dependencies": {
-        "@lezer/common": "^0.15.0"
-      }
-    },
     "node_modules/@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
@@ -4835,11 +4681,6 @@
         "algoliasearch": ">= 3.1 < 6"
       }
     },
-    "node_modules/anser": {
-      "version": "1.4.10",
-      "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
-      "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="
-    },
     "node_modules/ansi-align": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -4899,17 +4740,26 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
-    "node_modules/ansi-to-react": {
-      "version": "6.1.6",
-      "resolved": "https://registry.npmjs.org/ansi-to-react/-/ansi-to-react-6.1.6.tgz",
-      "integrity": "sha512-+HWn72GKydtupxX9TORBedqOMsJRiKTqaLUKW8txSBZw9iBpzPKLI8KOu4WzwD4R7hSv1zEspobY6LwlWvwZ6Q==",
+    "node_modules/ansi-to-html": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz",
+      "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==",
       "dependencies": {
-        "anser": "^1.4.1",
-        "escape-carriage": "^1.3.0"
+        "entities": "^2.2.0"
       },
-      "peerDependencies": {
-        "react": "^16.3.2 || ^17.0.0",
-        "react-dom": "^16.3.2 || ^17.0.0"
+      "bin": {
+        "ansi-to-html": "bin/ansi-to-html"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/ansi-to-html/node_modules/entities": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+      "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
+      "funding": {
+        "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
     "node_modules/anymatch": {
@@ -6182,11 +6032,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/crelt": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
-      "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
-    },
     "node_modules/cross-fetch": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
@@ -7001,11 +6846,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/escape-carriage": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.0.tgz",
-      "integrity": "sha512-ATWi5MD8QlAGQOeMgI8zTp671BG8aKvAC0M7yenlxU4CRLGO/sKthxVUyjiOFKjHdIo+6dZZUNFgHFeVEaKfGQ=="
-    },
     "node_modules/escape-goat": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
@@ -7670,18 +7510,6 @@
         "reusify": "^1.0.4"
       }
     },
-    "node_modules/fault": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
-      "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
-      "dependencies": {
-        "format": "^0.2.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
     "node_modules/faye-websocket": {
       "version": "0.11.4",
       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
@@ -8003,14 +7831,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/format": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
-      "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
-      "engines": {
-        "node": ">=0.4.x"
-      }
-    },
     "node_modules/forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -8575,14 +8395,6 @@
         "he": "bin/he"
       }
     },
-    "node_modules/highlight.js": {
-      "version": "10.7.3",
-      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
-      "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==",
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/history": {
       "version": "4.10.1",
       "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@@ -9770,15 +9582,6 @@
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
       "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
     },
-    "node_modules/longest-streak": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
-      "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
     "node_modules/loose-envify": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -9806,19 +9609,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/lowlight": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
-      "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
-      "dependencies": {
-        "fault": "^1.0.0",
-        "highlight.js": "~10.7.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
     "node_modules/lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -9914,18 +9704,6 @@
         "url": "https://github.com/fb55/entities?sponsor=1"
       }
     },
-    "node_modules/markdown-table": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
-      "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
-      "dependencies": {
-        "repeat-string": "^1.0.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
-      }
-    },
     "node_modules/match-at": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
@@ -9955,117 +9733,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/mdast-util-find-and-replace": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz",
-      "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==",
-      "dependencies": {
-        "escape-string-regexp": "^4.0.0",
-        "unist-util-is": "^4.0.0",
-        "unist-util-visit-parents": "^3.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-from-markdown": {
-      "version": "0.8.5",
-      "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
-      "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
-      "dependencies": {
-        "@types/mdast": "^3.0.0",
-        "mdast-util-to-string": "^2.0.0",
-        "micromark": "~2.11.0",
-        "parse-entities": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz",
-      "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==",
-      "dependencies": {
-        "mdast-util-gfm-autolink-literal": "^0.1.0",
-        "mdast-util-gfm-strikethrough": "^0.2.0",
-        "mdast-util-gfm-table": "^0.1.0",
-        "mdast-util-gfm-task-list-item": "^0.1.0",
-        "mdast-util-to-markdown": "^0.6.1"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-autolink-literal": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz",
-      "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==",
-      "dependencies": {
-        "ccount": "^1.0.0",
-        "mdast-util-find-and-replace": "^1.1.0",
-        "micromark": "^2.11.3"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-strikethrough": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz",
-      "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==",
-      "dependencies": {
-        "mdast-util-to-markdown": "^0.6.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-table": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz",
-      "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==",
-      "dependencies": {
-        "markdown-table": "^2.0.0",
-        "mdast-util-to-markdown": "~0.6.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-gfm-task-list-item": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz",
-      "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==",
-      "dependencies": {
-        "mdast-util-to-markdown": "~0.6.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/mdast-util-math": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-0.1.2.tgz",
-      "integrity": "sha512-fogAitds+wH+QRas78Yr1TwmQGN4cW/G2WRw5ePuNoJbBSPJCxIOCE8MTzHgWHVSpgkRaPQTgfzXRE1CrwWSlg==",
-      "dependencies": {
-        "longest-streak": "^2.0.0",
-        "mdast-util-to-markdown": "^0.6.0",
-        "repeat-string": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/mdast-util-to-hast": {
       "version": "10.0.1",
       "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz",
@@ -10085,23 +9752,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/mdast-util-to-markdown": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
-      "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
-      "dependencies": {
-        "@types/unist": "^2.0.0",
-        "longest-streak": "^2.0.0",
-        "mdast-util-to-string": "^2.0.0",
-        "parse-entities": "^2.0.0",
-        "repeat-string": "^1.0.0",
-        "zwitch": "^1.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/mdast-util-to-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
@@ -10166,128 +9816,6 @@
         "node": ">= 0.6"
       }
     },
-    "node_modules/micromark": {
-      "version": "2.11.4",
-      "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
-      "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
-      "funding": [
-        {
-          "type": "GitHub Sponsors",
-          "url": "https://github.com/sponsors/unifiedjs"
-        },
-        {
-          "type": "OpenCollective",
-          "url": "https://opencollective.com/unified"
-        }
-      ],
-      "dependencies": {
-        "debug": "^4.0.0",
-        "parse-entities": "^2.0.0"
-      }
-    },
-    "node_modules/micromark-extension-gfm": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz",
-      "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==",
-      "dependencies": {
-        "micromark": "~2.11.0",
-        "micromark-extension-gfm-autolink-literal": "~0.5.0",
-        "micromark-extension-gfm-strikethrough": "~0.6.5",
-        "micromark-extension-gfm-table": "~0.4.0",
-        "micromark-extension-gfm-tagfilter": "~0.3.0",
-        "micromark-extension-gfm-task-list-item": "~0.3.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-autolink-literal": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz",
-      "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==",
-      "dependencies": {
-        "micromark": "~2.11.3"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-strikethrough": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz",
-      "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==",
-      "dependencies": {
-        "micromark": "~2.11.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-table": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz",
-      "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==",
-      "dependencies": {
-        "micromark": "~2.11.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-tagfilter": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz",
-      "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==",
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-gfm-task-list-item": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz",
-      "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==",
-      "dependencies": {
-        "micromark": "~2.11.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-math": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-0.1.2.tgz",
-      "integrity": "sha512-ZJXsT2eVPM8VTmcw0CPSDeyonOn9SziGK3Z+nkf9Vb6xMPeU+4JMEnO6vzDL10562Favw8Vste74f54rxJ/i6Q==",
-      "dependencies": {
-        "katex": "^0.12.0",
-        "micromark": "~2.11.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/micromark-extension-math/node_modules/commander": {
-      "version": "2.20.3",
-      "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-      "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-    },
-    "node_modules/micromark-extension-math/node_modules/katex": {
-      "version": "0.12.0",
-      "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz",
-      "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==",
-      "dependencies": {
-        "commander": "^2.19.0"
-      },
-      "bin": {
-        "katex": "cli.js"
-      }
-    },
     "node_modules/micromatch": {
       "version": "4.0.5",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -12119,38 +11647,6 @@
         "react-dom": "^17.0.0 || ^16.3.0 || ^15.5.4"
       }
     },
-    "node_modules/react-jupyter-notebook": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/react-jupyter-notebook/-/react-jupyter-notebook-0.4.0.tgz",
-      "integrity": "sha512-puxAs7ACXIGbLcw/phxW5L3VPYFjFBkQzFdZaFeVTm9sATuwoLuSgcY8z7wPMqUyzu9cIApdRAKGCvDWRNuCNQ==",
-      "dependencies": {
-        "@codemirror/gutter": "^0.19.9",
-        "@codemirror/lang-javascript": "^0.19.7",
-        "@codemirror/view": "^0.19.47",
-        "ansi-to-react": "^6.1.4",
-        "katex": "^0.13.2",
-        "react": "^17.0.1",
-        "react-dom": "^17.0.1",
-        "react-markdown": "^6.0.2",
-        "react-syntax-highlighter": "^15.4.3",
-        "rehype-katex": "^5.0.0",
-        "remark-gfm": "^1.0.0",
-        "remark-math": "^4.0.0"
-      }
-    },
-    "node_modules/react-jupyter-notebook/node_modules/remark-math": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-4.0.0.tgz",
-      "integrity": "sha512-lH7SoQenXtQrvL0bm+mjZbvOk//YWNuyR+MxV18Qyv8rgFmMEGNuB0TSCQDkoDaiJ40FCnG8lxErc/zhcedYbw==",
-      "dependencies": {
-        "mdast-util-math": "^0.1.0",
-        "micromark-extension-math": "^0.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/react-lifecycles-compat": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
@@ -12257,51 +11753,6 @@
         "webpack": ">=4.41.1 || 5.x"
       }
     },
-    "node_modules/react-markdown": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.3.tgz",
-      "integrity": "sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg==",
-      "dependencies": {
-        "@types/hast": "^2.0.0",
-        "@types/unist": "^2.0.3",
-        "comma-separated-tokens": "^1.0.0",
-        "prop-types": "^15.7.2",
-        "property-information": "^5.3.0",
-        "react-is": "^17.0.0",
-        "remark-parse": "^9.0.0",
-        "remark-rehype": "^8.0.0",
-        "space-separated-tokens": "^1.1.0",
-        "style-to-object": "^0.3.0",
-        "unified": "^9.0.0",
-        "unist-util-visit": "^2.0.0",
-        "vfile": "^4.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      },
-      "peerDependencies": {
-        "@types/react": ">=16",
-        "react": ">=16"
-      }
-    },
-    "node_modules/react-markdown/node_modules/react-is": {
-      "version": "17.0.2",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-      "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-    },
-    "node_modules/react-markdown/node_modules/remark-parse": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
-      "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
-      "dependencies": {
-        "mdast-util-from-markdown": "^0.8.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/react-router": {
       "version": "5.3.4",
       "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
@@ -12350,21 +11801,6 @@
         "react": ">=15"
       }
     },
-    "node_modules/react-syntax-highlighter": {
-      "version": "15.5.0",
-      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz",
-      "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==",
-      "dependencies": {
-        "@babel/runtime": "^7.3.1",
-        "highlight.js": "^10.4.1",
-        "lowlight": "^1.17.0",
-        "prismjs": "^1.27.0",
-        "refractor": "^3.6.0"
-      },
-      "peerDependencies": {
-        "react": ">= 0.14.0"
-      }
-    },
     "node_modules/react-textarea-autosize": {
       "version": "8.3.4",
       "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz",
@@ -12456,41 +11892,19 @@
       "dependencies": {
         "minimatch": "3.0.4"
       },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/recursive-readdir/node_modules/minimatch": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
-      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
-      "dependencies": {
-        "brace-expansion": "^1.1.7"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
-    "node_modules/refractor": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
-      "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
-      "dependencies": {
-        "hastscript": "^6.0.0",
-        "parse-entities": "^2.0.0",
-        "prismjs": "~1.27.0"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/wooorm"
+      "engines": {
+        "node": ">=0.10.0"
       }
     },
-    "node_modules/refractor/node_modules/prismjs": {
-      "version": "1.27.0",
-      "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
-      "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==",
+    "node_modules/recursive-readdir/node_modules/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
       "engines": {
-        "node": ">=6"
+        "node": "*"
       }
     },
     "node_modules/regenerate": {
@@ -12675,19 +12089,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/remark-gfm": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz",
-      "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==",
-      "dependencies": {
-        "mdast-util-gfm": "^0.1.0",
-        "micromark-extension-gfm": "^0.3.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/remark-math": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-3.0.1.tgz",
@@ -12835,37 +12236,6 @@
         "url": "https://opencollective.com/unified"
       }
     },
-    "node_modules/remark-rehype": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz",
-      "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==",
-      "dependencies": {
-        "mdast-util-to-hast": "^10.2.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
-    "node_modules/remark-rehype/node_modules/mdast-util-to-hast": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz",
-      "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==",
-      "dependencies": {
-        "@types/mdast": "^3.0.0",
-        "@types/unist": "^2.0.0",
-        "mdast-util-definitions": "^4.0.0",
-        "mdurl": "^1.0.0",
-        "unist-builder": "^2.0.0",
-        "unist-util-generated": "^1.0.0",
-        "unist-util-position": "^3.0.0",
-        "unist-util-visit": "^2.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/unified"
-      }
-    },
     "node_modules/remark-squeeze-paragraphs": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz",
@@ -13884,11 +13254,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/style-mod": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
-      "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
-    },
     "node_modules/style-to-object": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz",
@@ -14941,11 +14306,6 @@
       "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
       "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
     },
-    "node_modules/w3c-keyname": {
-      "version": "2.2.6",
-      "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
-      "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
-    },
     "node_modules/wait-on": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz",
@@ -16957,133 +16317,6 @@
         "to-fast-properties": "^2.0.0"
       }
     },
-    "@codemirror/autocomplete": {
-      "version": "0.19.15",
-      "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-0.19.15.tgz",
-      "integrity": "sha512-GQWzvvuXxNUyaEk+5gawbAD8s51/v2Chb++nx0e2eGWrphWk42isBtzOMdc3DxrxrZtPZ55q2ldNp+6G8KJLIQ==",
-      "requires": {
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/state": "^0.19.4",
-        "@codemirror/text": "^0.19.2",
-        "@codemirror/tooltip": "^0.19.12",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/common": "^0.15.0"
-      }
-    },
-    "@codemirror/gutter": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/gutter/-/gutter-0.19.9.tgz",
-      "integrity": "sha512-PFrtmilahin1g6uL27aG5tM/rqR9DZzZYZsIrCXA5Uc2OFTFqx4owuhoU9hqfYxHp5ovfvBwQ+txFzqS4vog6Q==",
-      "requires": {
-        "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.23"
-      }
-    },
-    "@codemirror/highlight": {
-      "version": "0.19.8",
-      "resolved": "https://registry.npmjs.org/@codemirror/highlight/-/highlight-0.19.8.tgz",
-      "integrity": "sha512-v/lzuHjrYR8MN2mEJcUD6fHSTXXli9C1XGYpr+ElV6fLBIUhMTNKR3qThp611xuWfXfwDxeL7ppcbkM/MzPV3A==",
-      "requires": {
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/rangeset": "^0.19.0",
-        "@codemirror/state": "^0.19.3",
-        "@codemirror/view": "^0.19.39",
-        "@lezer/common": "^0.15.0",
-        "style-mod": "^4.0.0"
-      }
-    },
-    "@codemirror/lang-javascript": {
-      "version": "0.19.7",
-      "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-0.19.7.tgz",
-      "integrity": "sha512-DL9f3JLqOEHH9cIwEqqjnP5bkjdVXeECksLtV+/MbPm+l4H+AG+PkwZaJQ2oR1GfPZKh8MVSIE94aGWNkJP8WQ==",
-      "requires": {
-        "@codemirror/autocomplete": "^0.19.0",
-        "@codemirror/highlight": "^0.19.7",
-        "@codemirror/language": "^0.19.0",
-        "@codemirror/lint": "^0.19.0",
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/javascript": "^0.15.1"
-      }
-    },
-    "@codemirror/language": {
-      "version": "0.19.10",
-      "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-0.19.10.tgz",
-      "integrity": "sha512-yA0DZ3RYn2CqAAGW62VrU8c4YxscMQn45y/I9sjBlqB1e2OTQLg4CCkMBuMSLXk4xaqjlsgazeOQWaJQOKfV8Q==",
-      "requires": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/text": "^0.19.0",
-        "@codemirror/view": "^0.19.0",
-        "@lezer/common": "^0.15.5",
-        "@lezer/lr": "^0.15.0"
-      }
-    },
-    "@codemirror/lint": {
-      "version": "0.19.6",
-      "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-0.19.6.tgz",
-      "integrity": "sha512-Pbw1Y5kHVs2J+itQ0uez3dI4qY9ApYVap7eNfV81x1/3/BXgBkKfadaw0gqJ4h4FDG7OnJwb0VbPsjJQllHjaA==",
-      "requires": {
-        "@codemirror/gutter": "^0.19.4",
-        "@codemirror/panel": "^0.19.0",
-        "@codemirror/rangeset": "^0.19.1",
-        "@codemirror/state": "^0.19.4",
-        "@codemirror/tooltip": "^0.19.16",
-        "@codemirror/view": "^0.19.22",
-        "crelt": "^1.0.5"
-      }
-    },
-    "@codemirror/panel": {
-      "version": "0.19.1",
-      "resolved": "https://registry.npmjs.org/@codemirror/panel/-/panel-0.19.1.tgz",
-      "integrity": "sha512-sYeOCMA3KRYxZYJYn5PNlt9yNsjy3zTNTrbYSfVgjgL9QomIVgOJWPO5hZ2sTN8lufO6lw0vTBsIPL9MSidmBg==",
-      "requires": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0"
-      }
-    },
-    "@codemirror/rangeset": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/rangeset/-/rangeset-0.19.9.tgz",
-      "integrity": "sha512-V8YUuOvK+ew87Xem+71nKcqu1SXd5QROMRLMS/ljT5/3MCxtgrRie1Cvild0G/Z2f1fpWxzX78V0U4jjXBorBQ==",
-      "requires": {
-        "@codemirror/state": "^0.19.0"
-      }
-    },
-    "@codemirror/state": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-0.19.9.tgz",
-      "integrity": "sha512-psOzDolKTZkx4CgUqhBQ8T8gBc0xN5z4gzed109aF6x7D7umpDRoimacI/O6d9UGuyl4eYuDCZmDFr2Rq7aGOw==",
-      "requires": {
-        "@codemirror/text": "^0.19.0"
-      }
-    },
-    "@codemirror/text": {
-      "version": "0.19.6",
-      "resolved": "https://registry.npmjs.org/@codemirror/text/-/text-0.19.6.tgz",
-      "integrity": "sha512-T9jnREMIygx+TPC1bOuepz18maGq/92q2a+n4qTqObKwvNMg+8cMTslb8yxeEDEq7S3kpgGWxgO1UWbQRij0dA=="
-    },
-    "@codemirror/tooltip": {
-      "version": "0.19.16",
-      "resolved": "https://registry.npmjs.org/@codemirror/tooltip/-/tooltip-0.19.16.tgz",
-      "integrity": "sha512-zxKDHryUV5/RS45AQL+wOeN+i7/l81wK56OMnUPoTSzCWNITfxHn7BToDsjtrRKbzHqUxKYmBnn/4hPjpZ4WJQ==",
-      "requires": {
-        "@codemirror/state": "^0.19.0",
-        "@codemirror/view": "^0.19.0"
-      }
-    },
-    "@codemirror/view": {
-      "version": "0.19.48",
-      "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-0.19.48.tgz",
-      "integrity": "sha512-0eg7D2Nz4S8/caetCTz61rK0tkHI17V/d15Jy0kLOT8dTLGGNJUponDnW28h2B6bERmPlVHKh8MJIr5OCp1nGw==",
-      "requires": {
-        "@codemirror/rangeset": "^0.19.5",
-        "@codemirror/state": "^0.19.3",
-        "@codemirror/text": "^0.19.0",
-        "style-mod": "^4.0.0",
-        "w3c-keyname": "^2.2.4"
-      }
-    },
     "@colors/colors": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -17813,27 +17046,6 @@
       "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
       "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A=="
     },
-    "@lezer/common": {
-      "version": "0.15.12",
-      "resolved": "https://registry.npmjs.org/@lezer/common/-/common-0.15.12.tgz",
-      "integrity": "sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig=="
-    },
-    "@lezer/javascript": {
-      "version": "0.15.3",
-      "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-0.15.3.tgz",
-      "integrity": "sha512-8jA2NpOfpWwSPZxRhd9BxK2ZPvGd7nLE3LFTJ5AbMhXAzMHeMjneV6GEVd7dAIee85dtap0jdb6bgOSO0+lfwA==",
-      "requires": {
-        "@lezer/lr": "^0.15.0"
-      }
-    },
-    "@lezer/lr": {
-      "version": "0.15.8",
-      "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-0.15.8.tgz",
-      "integrity": "sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg==",
-      "requires": {
-        "@lezer/common": "^0.15.0"
-      }
-    },
     "@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
@@ -19076,11 +18288,6 @@
         "@algolia/events": "^4.0.1"
       }
     },
-    "anser": {
-      "version": "1.4.10",
-      "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
-      "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww=="
-    },
     "ansi-align": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz",
@@ -19124,13 +18331,19 @@
         "color-convert": "^2.0.1"
       }
     },
-    "ansi-to-react": {
-      "version": "6.1.6",
-      "resolved": "https://registry.npmjs.org/ansi-to-react/-/ansi-to-react-6.1.6.tgz",
-      "integrity": "sha512-+HWn72GKydtupxX9TORBedqOMsJRiKTqaLUKW8txSBZw9iBpzPKLI8KOu4WzwD4R7hSv1zEspobY6LwlWvwZ6Q==",
+    "ansi-to-html": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.7.2.tgz",
+      "integrity": "sha512-v6MqmEpNlxF+POuyhKkidusCHWWkaLcGRURzivcU3I9tv7k4JVhFcnukrM5Rlk2rUywdZuzYAZ+kbZqWCnfN3g==",
       "requires": {
-        "anser": "^1.4.1",
-        "escape-carriage": "^1.3.0"
+        "entities": "^2.2.0"
+      },
+      "dependencies": {
+        "entities": {
+          "version": "2.2.0",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz",
+          "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="
+        }
       }
     },
     "anymatch": {
@@ -20057,11 +19270,6 @@
         "yaml": "^1.10.0"
       }
     },
-    "crelt": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
-      "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
-    },
     "cross-fetch": {
       "version": "3.1.5",
       "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
@@ -20645,11 +19853,6 @@
       "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
       "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
     },
-    "escape-carriage": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/escape-carriage/-/escape-carriage-1.3.0.tgz",
-      "integrity": "sha512-ATWi5MD8QlAGQOeMgI8zTp671BG8aKvAC0M7yenlxU4CRLGO/sKthxVUyjiOFKjHdIo+6dZZUNFgHFeVEaKfGQ=="
-    },
     "escape-goat": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
@@ -21134,14 +20337,6 @@
         "reusify": "^1.0.4"
       }
     },
-    "fault": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/fault/-/fault-1.0.4.tgz",
-      "integrity": "sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==",
-      "requires": {
-        "format": "^0.2.0"
-      }
-    },
     "faye-websocket": {
       "version": "0.11.4",
       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz",
@@ -21371,11 +20566,6 @@
         }
       }
     },
-    "format": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
-      "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
-    },
     "forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -21788,11 +20978,6 @@
       "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
       "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw=="
     },
-    "highlight.js": {
-      "version": "10.7.3",
-      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz",
-      "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A=="
-    },
     "history": {
       "version": "4.10.1",
       "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
@@ -22634,11 +21819,6 @@
       "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
       "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
     },
-    "longest-streak": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz",
-      "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg=="
-    },
     "loose-envify": {
       "version": "1.4.0",
       "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@@ -22660,15 +21840,6 @@
       "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
       "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA=="
     },
-    "lowlight": {
-      "version": "1.20.0",
-      "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.20.0.tgz",
-      "integrity": "sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==",
-      "requires": {
-        "fault": "^1.0.0",
-        "highlight.js": "~10.7.0"
-      }
-    },
     "lru-cache": {
       "version": "6.0.0",
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@@ -22742,14 +21913,6 @@
         }
       }
     },
-    "markdown-table": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz",
-      "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==",
-      "requires": {
-        "repeat-string": "^1.0.0"
-      }
-    },
     "match-at": {
       "version": "0.1.1",
       "resolved": "https://registry.npmjs.org/match-at/-/match-at-0.1.1.tgz",
@@ -22771,85 +21934,6 @@
         "unist-util-visit": "^2.0.0"
       }
     },
-    "mdast-util-find-and-replace": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz",
-      "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==",
-      "requires": {
-        "escape-string-regexp": "^4.0.0",
-        "unist-util-is": "^4.0.0",
-        "unist-util-visit-parents": "^3.0.0"
-      }
-    },
-    "mdast-util-from-markdown": {
-      "version": "0.8.5",
-      "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz",
-      "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
-      "requires": {
-        "@types/mdast": "^3.0.0",
-        "mdast-util-to-string": "^2.0.0",
-        "micromark": "~2.11.0",
-        "parse-entities": "^2.0.0",
-        "unist-util-stringify-position": "^2.0.0"
-      }
-    },
-    "mdast-util-gfm": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz",
-      "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==",
-      "requires": {
-        "mdast-util-gfm-autolink-literal": "^0.1.0",
-        "mdast-util-gfm-strikethrough": "^0.2.0",
-        "mdast-util-gfm-table": "^0.1.0",
-        "mdast-util-gfm-task-list-item": "^0.1.0",
-        "mdast-util-to-markdown": "^0.6.1"
-      }
-    },
-    "mdast-util-gfm-autolink-literal": {
-      "version": "0.1.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz",
-      "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==",
-      "requires": {
-        "ccount": "^1.0.0",
-        "mdast-util-find-and-replace": "^1.1.0",
-        "micromark": "^2.11.3"
-      }
-    },
-    "mdast-util-gfm-strikethrough": {
-      "version": "0.2.3",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz",
-      "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==",
-      "requires": {
-        "mdast-util-to-markdown": "^0.6.0"
-      }
-    },
-    "mdast-util-gfm-table": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz",
-      "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==",
-      "requires": {
-        "markdown-table": "^2.0.0",
-        "mdast-util-to-markdown": "~0.6.0"
-      }
-    },
-    "mdast-util-gfm-task-list-item": {
-      "version": "0.1.6",
-      "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz",
-      "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==",
-      "requires": {
-        "mdast-util-to-markdown": "~0.6.0"
-      }
-    },
-    "mdast-util-math": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-0.1.2.tgz",
-      "integrity": "sha512-fogAitds+wH+QRas78Yr1TwmQGN4cW/G2WRw5ePuNoJbBSPJCxIOCE8MTzHgWHVSpgkRaPQTgfzXRE1CrwWSlg==",
-      "requires": {
-        "longest-streak": "^2.0.0",
-        "mdast-util-to-markdown": "^0.6.0",
-        "repeat-string": "^1.0.0"
-      }
-    },
     "mdast-util-to-hast": {
       "version": "10.0.1",
       "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz",
@@ -22865,19 +21949,6 @@
         "unist-util-visit": "^2.0.0"
       }
     },
-    "mdast-util-to-markdown": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz",
-      "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
-      "requires": {
-        "@types/unist": "^2.0.0",
-        "longest-streak": "^2.0.0",
-        "mdast-util-to-string": "^2.0.0",
-        "parse-entities": "^2.0.0",
-        "repeat-string": "^1.0.0",
-        "zwitch": "^1.0.0"
-      }
-    },
     "mdast-util-to-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz",
@@ -22926,89 +21997,6 @@
       "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
       "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
     },
-    "micromark": {
-      "version": "2.11.4",
-      "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz",
-      "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
-      "requires": {
-        "debug": "^4.0.0",
-        "parse-entities": "^2.0.0"
-      }
-    },
-    "micromark-extension-gfm": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz",
-      "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==",
-      "requires": {
-        "micromark": "~2.11.0",
-        "micromark-extension-gfm-autolink-literal": "~0.5.0",
-        "micromark-extension-gfm-strikethrough": "~0.6.5",
-        "micromark-extension-gfm-table": "~0.4.0",
-        "micromark-extension-gfm-tagfilter": "~0.3.0",
-        "micromark-extension-gfm-task-list-item": "~0.3.0"
-      }
-    },
-    "micromark-extension-gfm-autolink-literal": {
-      "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz",
-      "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==",
-      "requires": {
-        "micromark": "~2.11.3"
-      }
-    },
-    "micromark-extension-gfm-strikethrough": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz",
-      "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==",
-      "requires": {
-        "micromark": "~2.11.0"
-      }
-    },
-    "micromark-extension-gfm-table": {
-      "version": "0.4.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz",
-      "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==",
-      "requires": {
-        "micromark": "~2.11.0"
-      }
-    },
-    "micromark-extension-gfm-tagfilter": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz",
-      "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q=="
-    },
-    "micromark-extension-gfm-task-list-item": {
-      "version": "0.3.3",
-      "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz",
-      "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==",
-      "requires": {
-        "micromark": "~2.11.0"
-      }
-    },
-    "micromark-extension-math": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-0.1.2.tgz",
-      "integrity": "sha512-ZJXsT2eVPM8VTmcw0CPSDeyonOn9SziGK3Z+nkf9Vb6xMPeU+4JMEnO6vzDL10562Favw8Vste74f54rxJ/i6Q==",
-      "requires": {
-        "katex": "^0.12.0",
-        "micromark": "~2.11.0"
-      },
-      "dependencies": {
-        "commander": {
-          "version": "2.20.3",
-          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
-          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
-        },
-        "katex": {
-          "version": "0.12.0",
-          "resolved": "https://registry.npmjs.org/katex/-/katex-0.12.0.tgz",
-          "integrity": "sha512-y+8btoc/CK70XqcHqjxiGWBOeIL8upbS0peTPXTvgrh21n1RiWWcIpSWM+4uXq+IAgNh9YYQWdc7LVDPDAEEAg==",
-          "requires": {
-            "commander": "^2.19.0"
-          }
-        }
-      }
-    },
     "micromatch": {
       "version": "4.0.5",
       "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -24260,36 +23248,6 @@
         "react-textarea-autosize": "^8.3.2"
       }
     },
-    "react-jupyter-notebook": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/react-jupyter-notebook/-/react-jupyter-notebook-0.4.0.tgz",
-      "integrity": "sha512-puxAs7ACXIGbLcw/phxW5L3VPYFjFBkQzFdZaFeVTm9sATuwoLuSgcY8z7wPMqUyzu9cIApdRAKGCvDWRNuCNQ==",
-      "requires": {
-        "@codemirror/gutter": "^0.19.9",
-        "@codemirror/lang-javascript": "^0.19.7",
-        "@codemirror/view": "^0.19.47",
-        "ansi-to-react": "^6.1.4",
-        "katex": "^0.13.2",
-        "react": "^17.0.1",
-        "react-dom": "^17.0.1",
-        "react-markdown": "^6.0.2",
-        "react-syntax-highlighter": "^15.4.3",
-        "rehype-katex": "^5.0.0",
-        "remark-gfm": "^1.0.0",
-        "remark-math": "^4.0.0"
-      },
-      "dependencies": {
-        "remark-math": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-4.0.0.tgz",
-          "integrity": "sha512-lH7SoQenXtQrvL0bm+mjZbvOk//YWNuyR+MxV18Qyv8rgFmMEGNuB0TSCQDkoDaiJ40FCnG8lxErc/zhcedYbw==",
-          "requires": {
-            "mdast-util-math": "^0.1.0",
-            "micromark-extension-math": "^0.1.0"
-          }
-        }
-      }
-    },
     "react-lifecycles-compat": {
       "version": "3.0.4",
       "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
@@ -24372,41 +23330,6 @@
         "@babel/runtime": "^7.10.3"
       }
     },
-    "react-markdown": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/react-markdown/-/react-markdown-6.0.3.tgz",
-      "integrity": "sha512-kQbpWiMoBHnj9myLlmZG9T1JdoT/OEyHK7hqM6CqFT14MAkgWiWBUYijLyBmxbntaN6dCDicPcUhWhci1QYodg==",
-      "requires": {
-        "@types/hast": "^2.0.0",
-        "@types/unist": "^2.0.3",
-        "comma-separated-tokens": "^1.0.0",
-        "prop-types": "^15.7.2",
-        "property-information": "^5.3.0",
-        "react-is": "^17.0.0",
-        "remark-parse": "^9.0.0",
-        "remark-rehype": "^8.0.0",
-        "space-separated-tokens": "^1.1.0",
-        "style-to-object": "^0.3.0",
-        "unified": "^9.0.0",
-        "unist-util-visit": "^2.0.0",
-        "vfile": "^4.0.0"
-      },
-      "dependencies": {
-        "react-is": {
-          "version": "17.0.2",
-          "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz",
-          "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="
-        },
-        "remark-parse": {
-          "version": "9.0.0",
-          "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz",
-          "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
-          "requires": {
-            "mdast-util-from-markdown": "^0.8.0"
-          }
-        }
-      }
-    },
     "react-router": {
       "version": "5.3.4",
       "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
@@ -24445,18 +23368,6 @@
         "tiny-warning": "^1.0.0"
       }
     },
-    "react-syntax-highlighter": {
-      "version": "15.5.0",
-      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-15.5.0.tgz",
-      "integrity": "sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==",
-      "requires": {
-        "@babel/runtime": "^7.3.1",
-        "highlight.js": "^10.4.1",
-        "lowlight": "^1.17.0",
-        "prismjs": "^1.27.0",
-        "refractor": "^3.6.0"
-      }
-    },
     "react-textarea-autosize": {
       "version": "8.3.4",
       "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz",
@@ -24533,23 +23444,6 @@
         }
       }
     },
-    "refractor": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz",
-      "integrity": "sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==",
-      "requires": {
-        "hastscript": "^6.0.0",
-        "parse-entities": "^2.0.0",
-        "prismjs": "~1.27.0"
-      },
-      "dependencies": {
-        "prismjs": {
-          "version": "1.27.0",
-          "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz",
-          "integrity": "sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA=="
-        }
-      }
-    },
     "regenerate": {
       "version": "1.4.2",
       "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
@@ -24691,15 +23585,6 @@
       "resolved": "https://registry.npmjs.org/remark-footnotes/-/remark-footnotes-2.0.0.tgz",
       "integrity": "sha512-3Clt8ZMH75Ayjp9q4CorNeyjwIxHFcTkaektplKGl2A1jNGEUey8cKL0ZC5vJwfcD5GFGsNLImLG/NGzWIzoMQ=="
     },
-    "remark-gfm": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz",
-      "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==",
-      "requires": {
-        "mdast-util-gfm": "^0.1.0",
-        "micromark-extension-gfm": "^0.3.0"
-      }
-    },
     "remark-math": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-3.0.1.tgz",
@@ -24814,31 +23699,6 @@
         "xtend": "^4.0.1"
       }
     },
-    "remark-rehype": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-8.1.0.tgz",
-      "integrity": "sha512-EbCu9kHgAxKmW1yEYjx3QafMyGY3q8noUbNUI5xyKbaFP89wbhDrKxyIQNukNYthzjNHZu6J7hwFg7hRm1svYA==",
-      "requires": {
-        "mdast-util-to-hast": "^10.2.0"
-      },
-      "dependencies": {
-        "mdast-util-to-hast": {
-          "version": "10.2.0",
-          "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz",
-          "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==",
-          "requires": {
-            "@types/mdast": "^3.0.0",
-            "@types/unist": "^2.0.0",
-            "mdast-util-definitions": "^4.0.0",
-            "mdurl": "^1.0.0",
-            "unist-builder": "^2.0.0",
-            "unist-util-generated": "^1.0.0",
-            "unist-util-position": "^3.0.0",
-            "unist-util-visit": "^2.0.0"
-          }
-        }
-      }
-    },
     "remark-squeeze-paragraphs": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/remark-squeeze-paragraphs/-/remark-squeeze-paragraphs-4.0.0.tgz",
@@ -25610,11 +24470,6 @@
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
       "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="
     },
-    "style-mod": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
-      "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
-    },
     "style-to-object": {
       "version": "0.3.0",
       "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.3.0.tgz",
@@ -26325,11 +25180,6 @@
       "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz",
       "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w=="
     },
-    "w3c-keyname": {
-      "version": "2.2.6",
-      "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.6.tgz",
-      "integrity": "sha512-f+fciywl1SJEniZHD6H+kUO8gOnwIr7f4ijKA6+ZvJFjeGi1r4PDLl53Ayud9O/rk64RqgoQine0feoeOU0kXg=="
-    },
     "wait-on": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-6.0.1.tgz",
diff --git a/package.json b/package.json
index 92dd6631d..4a7ff8903 100644
--- a/package.json
+++ b/package.json
@@ -24,6 +24,7 @@
     "@monaco-editor/react": "^4.4.6",
     "@mui/icons-material": "^5.10.15",
     "@mui/material": "^5.10.15",
+    "ansi-to-html": "^0.7.2",
     "clsx": "^1.2.1",
     "hast-util-is-element": "^1.1.0",
     "markdown-it": "^13.0.1",
@@ -31,7 +32,6 @@
     "prism-react-renderer": "^1.3.5",
     "react": "^17.0.2",
     "react-dom": "^17.0.2",
-    "react-jupyter-notebook": "^0.4.0",
     "react-zoom-pan-pinch": "^2.1.3",
     "rehype-katex": "^5.0.0",
     "remark-math": "^3.0.1"
diff --git a/src/components/InteractiveCodeEditor/InteractiveCodeEditor.tsx b/src/components/InteractiveCodeEditor/InteractiveCodeEditor.tsx
index 4647be7a9..b0387b8f5 100644
--- a/src/components/InteractiveCodeEditor/InteractiveCodeEditor.tsx
+++ b/src/components/InteractiveCodeEditor/InteractiveCodeEditor.tsx
@@ -2,9 +2,8 @@ import React, { useState } from "react";
 import Tabs from "@theme/Tabs";
 import TabItem from "@theme/TabItem";
 import Editor from "@monaco-editor/react";
-import MarkdownIt from "markdown-it";
-import mk from "markdown-it-katex";
 import BrowserWindow from "@site/src/components/BrowserWindow";
+import mdToHTML from "@site/src/components/mdToHTML";
 import styles from "./styles.module.css";
 
 export default function InteractiveCodeEditor({
@@ -24,41 +23,6 @@ export default function InteractiveCodeEditor({
   const [html, setHTML] = useState<string>(defaultHTML);
   const [css, setCSS] = useState<string>(defaultCSS);
   const [js, setJS] = useState<string>(defaultJavaScript);
-  const md = new MarkdownIt({ html: true, linkify: true, typographer: true });
-  md.use(mk);
-  const markdownDefaultValue = `
-<style>
-  blockquote {
-    margin: 0;
-  }
-
-  blockquote p {
-    padding: 15px;
-    background: #eee;
-    border-radius: 5px;
-  }
-
-  blockquote p::before {
-    content: '\\201C';
-  }
-
-  blockquote p::after {
-    content: '\\201D';
-  }
-
-  code {
-    background-color: #eee;
-    border-radius: 3px;
-    font-family: courier, monospace;
-    padding: 0 3px;
-  }
-  pre code {
-    padding: 20px 5px;
-  }
-</style>
-<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css"/>
-<link rel="stylesheet" href="https://cdn.jsdelivr.net/github-markdown-css/2.2.1/github-markdown.css"/>
-`;
 
   function latexRender(value: string) {
     const header = `\
@@ -140,7 +104,7 @@ export default function InteractiveCodeEditor({
                 language === "html"
                   ? code
                   : language === "markdown"
-                  ? markdownDefaultValue + md.render(code)
+                  ? mdToHTML(code)
                   : language === "latex"
                   ? latexRender(code)
                   : `<style>${css}</style>${html}<script>${js}</script>`
diff --git a/src/components/ViewSource/ViewSource.tsx b/src/components/ViewSource/ViewSource.tsx
index 0cb0b397f..dfc5adc32 100644
--- a/src/components/ViewSource/ViewSource.tsx
+++ b/src/components/ViewSource/ViewSource.tsx
@@ -1,22 +1,158 @@
 import React, { useState, useEffect } from "react";
+import Convert from "ansi-to-html";
 import CodeBlock from "@theme/CodeBlock";
-import JupyterViewer from "react-jupyter-notebook";
-import OpenInColab from "../OpenInColab/OpenInColab";
-import "./styles.css";
+import mdToHTML from "@site/src/components/mdToHTML";
+import OpenInColab from "@site/src/components/OpenInColab/OpenInColab";
+import styles from "./styles.module.css";
 
-function getSources(json) {
-  return json.cells
-    .filter((cell) => cell.cell_type === "code")
-    .map((cell) => cell.source.join(""));
+type MarkdownCell = { cell_type: "markdown"; source: string };
+type CodeCell = {
+  cell_type: "code";
+  source: string;
+  output: string;
+  cellColor: string;
+};
+type NotebookData = [...(MarkdownCell | CodeCell)[]];
+
+/**
+ * 各種データをHTMLに変換
+ * @param type 変換するデータの種類
+ * @param input 入力
+ * @returns HTML形式の出力
+ */
+function toHTML(type: "text" | "html" | "js" | "png", input: string): string {
+  const convert = new Convert({ newline: true });
+  switch (type) {
+    case "text":
+      return convert.toHtml(input);
+    case "html":
+      return input;
+    case "png":
+      return `<img src="data:image/png;base64,${input}"></img>`;
+    case "js":
+      return `<script>${input}</script>`;
+  }
+}
+
+/**
+ * ipynbのoutputsオブジェクトをHTML形式に変換
+ * @param outputs ipynbのoutputsオブジェクト
+ * @returns HTML形式の出力とセルの種類
+ */
+type CellType = "normal" | "error";
+function getOutput(outputs): { result: string; cellType: CellType } {
+  const results: string[] = [];
+  let cellType: CellType = "normal";
+  for (const output of outputs) {
+    switch (output.output_type) {
+      case "stream":
+        results.push(toHTML("text", output.text.join("")));
+        break;
+      case "execute_result": {
+        const data = [];
+        if (output.data["text/plain"] != null)
+          data.push(toHTML("text", output.data["text/plain"].join("")));
+        if (output.data["text/html"] != null)
+          data.push(toHTML("html", output.data["text/html"].join("")));
+        results.push(data.join(""));
+        break;
+      }
+      case "error":
+        results.push(toHTML("text", output.traceback.join("")));
+        cellType = "error";
+        break;
+      case "display_data": {
+        const item = [];
+        if (output.data["text/plain"] != null)
+          item.push(toHTML("text", output.data["text/plain"].join("")));
+        if (output.data["text/html"] != null)
+          item.push(toHTML("html", output.data["text/html"].join("")));
+        if (output.data["application/javascript"] != null)
+          item.push(toHTML("js", output.data["application/javascript"]));
+        if (output.data["image/png"] != null)
+          item.push(toHTML("png", output.data["image/png"]));
+        results.push(item.join(""));
+        break;
+      }
+    }
+  }
+  const result = results.join("");
+  return { result, cellType };
+}
+
+/**
+ * Notebookのデータを読み取る
+ * @param notebook Notebookのオブジェクト
+ * @returns 読み取った情報
+ */
+function getNotebookData(notebook): NotebookData {
+  const notebookData: NotebookData = [];
+  for (const cell of notebook.cells) {
+    switch (cell.cell_type) {
+      case "markdown":
+        notebookData.push({
+          cell_type: "markdown",
+          source: cell.source.length === 0 ? null : cell.source.join(""),
+        });
+        break;
+      case "code": {
+        const { result, cellType } = getOutput(cell.outputs);
+        notebookData.push({
+          cell_type: "code",
+          source: cell.source.length === 0 ? null : cell.source.join(""),
+          output: cell.outputs.length === 0 ? null : result,
+          cellColor: cellType === "normal" ? "#eee" : "#ffdddc",
+        });
+        break;
+      }
+    }
+  }
+  return notebookData;
+}
+
+/**
+ * セルをiframeで出力
+ * @param param0 出力するもの
+ * @param param1 セルの色
+ * @param param2 セルのタイトル
+ * @returns iframe
+ */
+function OutputCell({
+  children: output,
+  cellColor,
+  title,
+}: {
+  children: string;
+  cellColor: string;
+  title: string;
+}): JSX.Element {
+  return (
+    <div
+      className={styles.iframeWrapper}
+      style={{ backgroundColor: cellColor }}
+    >
+      <iframe
+        height="40px"
+        width="100%"
+        style={{ minHeight: "40px" }}
+        srcDoc={output}
+        onLoad={(e) => {
+          const iframe = e.target as HTMLIFrameElement;
+          iframe.height =
+            iframe.contentDocument.documentElement.scrollHeight + "px";
+        }}
+        title={title}
+      />
+    </div>
+  );
 }
 
 /**
  * ipynbファイルからソースコードと出力、OpenInColabへのリンクを生成
- * @param param0 現在ファイルからのipynbへの相対パス
+ * @param param0 ipynbへのパス
  * @param param1 Pythonの出力を表示するか
  * @returns ソースコードと出力、OpenInColabへのリンク
  */
-
 export default function ViewSource({
   path,
   noOutput = false,
@@ -24,30 +160,37 @@ export default function ViewSource({
   path: string;
   noOutput?: boolean;
 }) {
-  const [sources, setSources] = useState<string[]>([]);
-  const [content, setContent] = useState();
+  const [notebookData, setNotebookData] = useState<NotebookData>([]);
   useEffect(() => {
     fetch(path)
       .then((response) => response.json())
       .then((json) => {
-        setSources(getSources(json));
-        setContent(json);
+        setNotebookData(getNotebookData(json));
       });
   }, []);
   return (
     <>
-      {sources.map((source, i) => (
+      {notebookData.map((cell, i) => (
         <React.Fragment key={i}>
-          <CodeBlock language="python">{source}</CodeBlock>
+          {cell.cell_type === "markdown" && cell.source != null && (
+            <OutputCell cellColor="#f8f8f8" title="Markdown Code">
+              {mdToHTML(cell.source)}
+            </OutputCell>
+          )}
+          {cell.cell_type === "code" && (
+            <>
+              {cell.source != null && (
+                <CodeBlock language="python">{cell.source}</CodeBlock>
+              )}
+              {!noOutput && cell.output != null && (
+                <OutputCell cellColor={cell.cellColor} title="Code Output">
+                  {cell.output}
+                </OutputCell>
+              )}
+            </>
+          )}
         </React.Fragment>
       ))}
-      {content !== undefined && !noOutput && (
-        <JupyterViewer
-          rawIpynb={content}
-          language="python"
-          displaySource="hide"
-        />
-      )}
       <OpenInColab path={path} />
     </>
   );
diff --git a/src/components/ViewSource/styles.css b/src/components/ViewSource/styles.css
deleted file mode 100644
index eafa39079..000000000
--- a/src/components/ViewSource/styles.css
+++ /dev/null
@@ -1,15 +0,0 @@
-.block-light {
-  display: none;
-}
-
-.block-hidden {
-  display: none;
-}
-
-.cell-header {
-  display: none;
-}
-
-.block-light-selected {
-  display: none;
-}
diff --git a/src/components/ViewSource/styles.module.css b/src/components/ViewSource/styles.module.css
new file mode 100644
index 000000000..3f64e98ab
--- /dev/null
+++ b/src/components/ViewSource/styles.module.css
@@ -0,0 +1,4 @@
+.iframe-wrapper {
+  border-radius: 8px;
+  margin-bottom: 5px;
+}
diff --git a/src/components/ViewSource2.tsx b/src/components/ViewSource2.tsx
deleted file mode 100644
index 7f1c085bc..000000000
--- a/src/components/ViewSource2.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-/* eslint-disable react/prop-types */
-import React, { useState, useEffect } from "react";
-import usePathname from "./usePathname";
-import JupyterViewer from "react-jupyter-notebook";
-import OpenInColab from "./OpenInColab/OpenInColab";
-
-/**
- * ipynbファイルからソースコードと出力、OpenInColabへのリンクを生成
- * @param param0 現在ファイルからのipynbへの相対パス
- * @param param1 Pythonの出力を表示するか
- * @returns ソースコードと出力、OpenInColabへのリンク
- */
-
-export default function ViewSource({
-  path,
-  noOutput = false,
-}: {
-  path: string;
-  noOutput?: boolean;
-}) {
-  const pathname = usePathname();
-  const [content, setContent] = useState();
-  useEffect(() => {
-    async function tmp() {
-      // 該当のipynbファイルをjson形式でとってくる
-      const json = await import(
-        `/docs/${pathname.slice(6)}${path.slice(0, -6)}.json`
-      );
-      setContent(json);
-    }
-    tmp();
-  }, []);
-  return (
-    <>
-      {content !== undefined && (
-        <JupyterViewer
-          rawIpynb={content}
-          language="python"
-          displayOutput={noOutput ? "hide" : "show"}
-        />
-      )}
-      <OpenInColab path={path} />
-    </>
-  );
-}
diff --git a/src/components/mdToHTML.tsx b/src/components/mdToHTML.tsx
new file mode 100644
index 000000000..9a55a84f8
--- /dev/null
+++ b/src/components/mdToHTML.tsx
@@ -0,0 +1,41 @@
+import MarkdownIt from "markdown-it";
+import mk from "markdown-it-katex";
+
+export default function mdToHTML(mdCode) {
+  const md = new MarkdownIt({ html: true, linkify: true, typographer: true });
+  md.use(mk);
+  const markdownDefaultValue = `
+<style>
+  blockquote {
+    margin: 0;
+  }
+
+  blockquote p {
+    padding: 15px;
+    background: #eee;
+    border-radius: 5px;
+  }
+
+  blockquote p::before {
+    content: '\\201C';
+  }
+
+  blockquote p::after {
+    content: '\\201D';
+  }
+
+  code {
+    background-color: #eee;
+    border-radius: 3px;
+    font-family: courier, monospace;
+    padding: 0 3px;
+  }
+  pre code {
+    padding: 20px 5px;
+  }
+</style>
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.5.1/katex.min.css"/>
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/github-markdown-css/2.2.1/github-markdown.css"/>
+`;
+  return markdownDefaultValue + md.render(mdCode);
+}
