summaryrefslogtreecommitdiff
path: root/docs/posts
diff options
context:
space:
mode:
authorNavan Chauhan <navanchauhan@gmail.com>2023-10-16 16:04:29 -0600
committerNavan Chauhan <navanchauhan@gmail.com>2023-10-16 16:04:29 -0600
commit48d3baf9803f673a101f6360a3d40b8211ec3e10 (patch)
treed38655908277c204704d1ac9deac408b95deb78b /docs/posts
parent13d2fc49885c271b4b3d0235e286588b93c63a86 (diff)
update dependencies
Diffstat (limited to 'docs/posts')
-rw-r--r--docs/posts/2019-12-16-TensorFlow-Polynomial-Regression.html250
-rw-r--r--docs/posts/2019-12-22-Fake-News-Detector.html2
-rw-r--r--docs/posts/2020-01-16-Image-Classifier-Using-Turicreate.html96
-rw-r--r--docs/posts/2020-08-01-Natural-Feature-Tracking-ARJS.html38
-rw-r--r--docs/posts/2020-10-11-macOS-Virtual-Cam-OBS.html4
-rw-r--r--docs/posts/2020-11-17-Lets-Encrypt-DuckDns.html46
-rw-r--r--docs/posts/2020-12-1-HTML-JS-RSS-Feed.html340
-rw-r--r--docs/posts/2021-06-27-Crude-ML-AI-Powered-Chatbot-Swift.html28
-rw-r--r--docs/posts/2022-08-05-Why-You-No-Host.html2
-rw-r--r--docs/posts/2023-02-08-Interact-with-siri-from-the-terminal.html8
-rw-r--r--docs/posts/2023-04-30-n-body-simulation.html1065
-rw-r--r--docs/posts/2023-10-04-bomb-lab.html1356
12 files changed, 1631 insertions, 1604 deletions
diff --git a/docs/posts/2019-12-16-TensorFlow-Polynomial-Regression.html b/docs/posts/2019-12-16-TensorFlow-Polynomial-Regression.html
index c3876de..ccee075 100644
--- a/docs/posts/2019-12-16-TensorFlow-Polynomial-Regression.html
+++ b/docs/posts/2019-12-16-TensorFlow-Polynomial-Regression.html
@@ -268,31 +268,31 @@ values using the X values. We then plot it to compare the actual data and predic
</div>
<div class="codehilite">
-<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span><span class="w"></span>
+<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
+<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">88999125000.0</span><span class="err"> </span><span class="nc">a,b</span><span class="p">:</span><span class="err"> </span><span class="nc">180396.42</span><span class="err"> </span><span class="nc">-478869.12</span>
<span class="nt">88999125000.0</span><span class="na"> 180396.42 -478869.12</span>
</code></pre>
</div>
@@ -333,31 +333,31 @@ values using the X values. We then plot it to compare the actual data and predic
</div>
<div class="codehilite">
-<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">52571360000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">1002.4456</span><span class="err"> </span><span class="nc">1097.0197</span><span class="err"> </span><span class="nc">1276.6921</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">37798890000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">1952.4263</span><span class="err"> </span><span class="nc">2130.2825</span><span class="err"> </span><span class="nc">2469.7756</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">26751185000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">2839.5825</span><span class="err"> </span><span class="nc">3081.6118</span><span class="err"> </span><span class="nc">3554.351</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">19020106000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">3644.56</span><span class="err"> </span><span class="nc">3922.9563</span><span class="err"> </span><span class="nc">4486.3135</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">14060446000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">4345.042</span><span class="err"> </span><span class="nc">4621.4233</span><span class="err"> </span><span class="nc">5212.693</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">11201084000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">4921.1855</span><span class="err"> </span><span class="nc">5148.1504</span><span class="err"> </span><span class="nc">5689.0713</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">9732740000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5364.764</span><span class="err"> </span><span class="nc">5493.0156</span><span class="err"> </span><span class="nc">5906.754</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">9050918000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5685.4067</span><span class="err"> </span><span class="nc">5673.182</span><span class="err"> </span><span class="nc">5902.0728</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8750394000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5906.9814</span><span class="err"> </span><span class="nc">5724.8906</span><span class="err"> </span><span class="nc">5734.746</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8613128000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6057.3677</span><span class="err"> </span><span class="nc">5687.3364</span><span class="err"> </span><span class="nc">5461.167</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8540034600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6160.547</span><span class="err"> </span><span class="nc">5592.3022</span><span class="err"> </span><span class="nc">5122.8633</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8490983000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6233.9175</span><span class="err"> </span><span class="nc">5462.025</span><span class="err"> </span><span class="nc">4747.111</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8450816500.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6289.048</span><span class="err"> </span><span class="nc">5310.7583</span><span class="err"> </span><span class="nc">4350.6997</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8414082000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6333.199</span><span class="err"> </span><span class="nc">5147.394</span><span class="err"> </span><span class="nc">3943.9294</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8378841600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6370.7944</span><span class="err"> </span><span class="nc">4977.1704</span><span class="err"> </span><span class="nc">3532.476</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8344471000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6404.468</span><span class="err"> </span><span class="nc">4803.542</span><span class="err"> </span><span class="nc">3120.2087</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8310785500.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6435.365</span><span class="err"> </span><span class="nc">4628.1523</span><span class="err"> </span><span class="nc">2709.1445</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8277482000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6465.5493</span><span class="err"> </span><span class="nc">4451.833</span><span class="err"> </span><span class="nc">2300.2783</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8244650000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6494.609</span><span class="err"> </span><span class="nc">4274.826</span><span class="err"> </span><span class="nc">1894.3738</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8212349000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6522.8247</span><span class="err"> </span><span class="nc">4098.1733</span><span class="err"> </span><span class="nc">1491.9915</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8180598300.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6550.6567</span><span class="err"> </span><span class="nc">3922.7405</span><span class="err"> </span><span class="nc">1093.3868</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8149257700.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6578.489</span><span class="err"> </span><span class="nc">3747.8362</span><span class="err"> </span><span class="nc">698.53357</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8118325000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6606.1973</span><span class="err"> </span><span class="nc">3573.2742</span><span class="err"> </span><span class="nc">307.3541</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8088001000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6632.96</span><span class="err"> </span><span class="nc">3399.878</span><span class="err"> </span><span class="nc">-79.89219</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8058094600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6659.793</span><span class="err"> </span><span class="nc">3227.2517</span><span class="err"> </span><span class="nc">-463.03156</span><span class="w"></span>
+<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">52571360000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">1002.4456</span><span class="err"> </span><span class="nc">1097.0197</span><span class="err"> </span><span class="nc">1276.6921</span>
+<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">37798890000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">1952.4263</span><span class="err"> </span><span class="nc">2130.2825</span><span class="err"> </span><span class="nc">2469.7756</span>
+<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">26751185000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">2839.5825</span><span class="err"> </span><span class="nc">3081.6118</span><span class="err"> </span><span class="nc">3554.351</span>
+<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">19020106000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">3644.56</span><span class="err"> </span><span class="nc">3922.9563</span><span class="err"> </span><span class="nc">4486.3135</span>
+<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">14060446000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">4345.042</span><span class="err"> </span><span class="nc">4621.4233</span><span class="err"> </span><span class="nc">5212.693</span>
+<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">11201084000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">4921.1855</span><span class="err"> </span><span class="nc">5148.1504</span><span class="err"> </span><span class="nc">5689.0713</span>
+<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">9732740000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5364.764</span><span class="err"> </span><span class="nc">5493.0156</span><span class="err"> </span><span class="nc">5906.754</span>
+<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">9050918000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5685.4067</span><span class="err"> </span><span class="nc">5673.182</span><span class="err"> </span><span class="nc">5902.0728</span>
+<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8750394000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">5906.9814</span><span class="err"> </span><span class="nc">5724.8906</span><span class="err"> </span><span class="nc">5734.746</span>
+<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8613128000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6057.3677</span><span class="err"> </span><span class="nc">5687.3364</span><span class="err"> </span><span class="nc">5461.167</span>
+<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8540034600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6160.547</span><span class="err"> </span><span class="nc">5592.3022</span><span class="err"> </span><span class="nc">5122.8633</span>
+<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8490983000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6233.9175</span><span class="err"> </span><span class="nc">5462.025</span><span class="err"> </span><span class="nc">4747.111</span>
+<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8450816500.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6289.048</span><span class="err"> </span><span class="nc">5310.7583</span><span class="err"> </span><span class="nc">4350.6997</span>
+<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8414082000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6333.199</span><span class="err"> </span><span class="nc">5147.394</span><span class="err"> </span><span class="nc">3943.9294</span>
+<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8378841600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6370.7944</span><span class="err"> </span><span class="nc">4977.1704</span><span class="err"> </span><span class="nc">3532.476</span>
+<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8344471000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6404.468</span><span class="err"> </span><span class="nc">4803.542</span><span class="err"> </span><span class="nc">3120.2087</span>
+<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8310785500.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6435.365</span><span class="err"> </span><span class="nc">4628.1523</span><span class="err"> </span><span class="nc">2709.1445</span>
+<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8277482000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6465.5493</span><span class="err"> </span><span class="nc">4451.833</span><span class="err"> </span><span class="nc">2300.2783</span>
+<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8244650000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6494.609</span><span class="err"> </span><span class="nc">4274.826</span><span class="err"> </span><span class="nc">1894.3738</span>
+<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8212349000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6522.8247</span><span class="err"> </span><span class="nc">4098.1733</span><span class="err"> </span><span class="nc">1491.9915</span>
+<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8180598300.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6550.6567</span><span class="err"> </span><span class="nc">3922.7405</span><span class="err"> </span><span class="nc">1093.3868</span>
+<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8149257700.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6578.489</span><span class="err"> </span><span class="nc">3747.8362</span><span class="err"> </span><span class="nc">698.53357</span>
+<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8118325000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6606.1973</span><span class="err"> </span><span class="nc">3573.2742</span><span class="err"> </span><span class="nc">307.3541</span>
+<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8088001000.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6632.96</span><span class="err"> </span><span class="nc">3399.878</span><span class="err"> </span><span class="nc">-79.89219</span>
+<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">8058094600.0</span><span class="err"> </span><span class="nc">a,b,c</span><span class="p">:</span><span class="err"> </span><span class="nc">6659.793</span><span class="err"> </span><span class="nc">3227.2517</span><span class="err"> </span><span class="nc">-463.03156</span>
<span class="nt">8058094600.0</span><span class="na"> 6659.793 3227.2517 -463.03156</span>
</code></pre>
</div>
@@ -399,31 +399,31 @@ values using the X values. We then plot it to compare the actual data and predic
</div>
<div class="codehilite">
-<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">4279814000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">670.1527</span><span class="err"> </span><span class="nc">694.4212</span><span class="err"> </span><span class="nc">751.4653</span><span class="err"> </span><span class="nc">903.9527</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3770950400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">742.6414</span><span class="err"> </span><span class="nc">666.3489</span><span class="err"> </span><span class="nc">636.94525</span><span class="err"> </span><span class="nc">859.2088</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3717708300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">756.2582</span><span class="err"> </span><span class="nc">569.3339</span><span class="err"> </span><span class="nc">448.105</span><span class="err"> </span><span class="nc">748.23956</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3667464000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">769.4476</span><span class="err"> </span><span class="nc">474.0318</span><span class="err"> </span><span class="nc">265.5761</span><span class="err"> </span><span class="nc">654.75525</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3620040700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">782.32324</span><span class="err"> </span><span class="nc">380.54272</span><span class="err"> </span><span class="nc">89.39888</span><span class="err"> </span><span class="nc">578.5136</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3575265800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">794.8898</span><span class="err"> </span><span class="nc">288.83356</span><span class="err"> </span><span class="nc">-80.5215</span><span class="err"> </span><span class="nc">519.13654</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3532972000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">807.1608</span><span class="err"> </span><span class="nc">198.87044</span><span class="err"> </span><span class="nc">-244.31102</span><span class="err"> </span><span class="nc">476.2061</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3493009200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">819.13513</span><span class="err"> </span><span class="nc">110.64169</span><span class="err"> </span><span class="nc">-402.0677</span><span class="err"> </span><span class="nc">449.3291</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3455228400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">830.80255</span><span class="err"> </span><span class="nc">24.0964</span><span class="err"> </span><span class="nc">-553.92804</span><span class="err"> </span><span class="nc">438.0652</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3419475500.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">842.21594</span><span class="err"> </span><span class="nc">-60.797424</span><span class="err"> </span><span class="nc">-700.0123</span><span class="err"> </span><span class="nc">441.983</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3385625300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">853.3363</span><span class="err"> </span><span class="nc">-144.08699</span><span class="err"> </span><span class="nc">-840.467</span><span class="err"> </span><span class="nc">460.6356</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3353544700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">864.19135</span><span class="err"> </span><span class="nc">-225.8125</span><span class="err"> </span><span class="nc">-975.4196</span><span class="err"> </span><span class="nc">493.57703</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3323125000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">874.778</span><span class="err"> </span><span class="nc">-305.98932</span><span class="err"> </span><span class="nc">-1104.9867</span><span class="err"> </span><span class="nc">540.39465</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3294257000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">885.1007</span><span class="err"> </span><span class="nc">-384.63474</span><span class="err"> </span><span class="nc">-1229.277</span><span class="err"> </span><span class="nc">600.65607</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3266820000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">895.18823</span><span class="err"> </span><span class="nc">-461.819</span><span class="err"> </span><span class="nc">-1348.4417</span><span class="err"> </span><span class="nc">673.9051</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3240736000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">905.0128</span><span class="err"> </span><span class="nc">-537.541</span><span class="err"> </span><span class="nc">-1462.6171</span><span class="err"> </span><span class="nc">759.7118</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3215895000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">914.60065</span><span class="err"> </span><span class="nc">-611.8676</span><span class="err"> </span><span class="nc">-1571.9058</span><span class="err"> </span><span class="nc">857.6638</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3192216800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">923.9603</span><span class="err"> </span><span class="nc">-684.8093</span><span class="err"> </span><span class="nc">-1676.4642</span><span class="err"> </span><span class="nc">967.30475</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3169632300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">933.08594</span><span class="err"> </span><span class="nc">-756.3582</span><span class="err"> </span><span class="nc">-1776.4275</span><span class="err"> </span><span class="nc">1088.2198</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3148046300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">941.9928</span><span class="err"> </span><span class="nc">-826.6257</span><span class="err"> </span><span class="nc">-1871.9355</span><span class="err"> </span><span class="nc">1219.9702</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3127394800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">950.67896</span><span class="err"> </span><span class="nc">-895.6205</span><span class="err"> </span><span class="nc">-1963.0989</span><span class="err"> </span><span class="nc">1362.1665</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3107608600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">959.1487</span><span class="err"> </span><span class="nc">-963.38116</span><span class="err"> </span><span class="nc">-2050.0586</span><span class="err"> </span><span class="nc">1514.4026</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3088618200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">967.4355</span><span class="err"> </span><span class="nc">-1029.9625</span><span class="err"> </span><span class="nc">-2132.961</span><span class="err"> </span><span class="nc">1676.2717</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3070361300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">975.52875</span><span class="err"> </span><span class="nc">-1095.4292</span><span class="err"> </span><span class="nc">-2211.854</span><span class="err"> </span><span class="nc">1847.4485</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3052791300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">983.4346</span><span class="err"> </span><span class="nc">-1159.7922</span><span class="err"> </span><span class="nc">-2286.9412</span><span class="err"> </span><span class="nc">2027.4857</span><span class="w"></span>
+<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">4279814000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">670.1527</span><span class="err"> </span><span class="nc">694.4212</span><span class="err"> </span><span class="nc">751.4653</span><span class="err"> </span><span class="nc">903.9527</span>
+<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3770950400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">742.6414</span><span class="err"> </span><span class="nc">666.3489</span><span class="err"> </span><span class="nc">636.94525</span><span class="err"> </span><span class="nc">859.2088</span>
+<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3717708300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">756.2582</span><span class="err"> </span><span class="nc">569.3339</span><span class="err"> </span><span class="nc">448.105</span><span class="err"> </span><span class="nc">748.23956</span>
+<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3667464000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">769.4476</span><span class="err"> </span><span class="nc">474.0318</span><span class="err"> </span><span class="nc">265.5761</span><span class="err"> </span><span class="nc">654.75525</span>
+<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3620040700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">782.32324</span><span class="err"> </span><span class="nc">380.54272</span><span class="err"> </span><span class="nc">89.39888</span><span class="err"> </span><span class="nc">578.5136</span>
+<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3575265800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">794.8898</span><span class="err"> </span><span class="nc">288.83356</span><span class="err"> </span><span class="nc">-80.5215</span><span class="err"> </span><span class="nc">519.13654</span>
+<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3532972000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">807.1608</span><span class="err"> </span><span class="nc">198.87044</span><span class="err"> </span><span class="nc">-244.31102</span><span class="err"> </span><span class="nc">476.2061</span>
+<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3493009200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">819.13513</span><span class="err"> </span><span class="nc">110.64169</span><span class="err"> </span><span class="nc">-402.0677</span><span class="err"> </span><span class="nc">449.3291</span>
+<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3455228400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">830.80255</span><span class="err"> </span><span class="nc">24.0964</span><span class="err"> </span><span class="nc">-553.92804</span><span class="err"> </span><span class="nc">438.0652</span>
+<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3419475500.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">842.21594</span><span class="err"> </span><span class="nc">-60.797424</span><span class="err"> </span><span class="nc">-700.0123</span><span class="err"> </span><span class="nc">441.983</span>
+<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3385625300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">853.3363</span><span class="err"> </span><span class="nc">-144.08699</span><span class="err"> </span><span class="nc">-840.467</span><span class="err"> </span><span class="nc">460.6356</span>
+<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3353544700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">864.19135</span><span class="err"> </span><span class="nc">-225.8125</span><span class="err"> </span><span class="nc">-975.4196</span><span class="err"> </span><span class="nc">493.57703</span>
+<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3323125000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">874.778</span><span class="err"> </span><span class="nc">-305.98932</span><span class="err"> </span><span class="nc">-1104.9867</span><span class="err"> </span><span class="nc">540.39465</span>
+<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3294257000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">885.1007</span><span class="err"> </span><span class="nc">-384.63474</span><span class="err"> </span><span class="nc">-1229.277</span><span class="err"> </span><span class="nc">600.65607</span>
+<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3266820000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">895.18823</span><span class="err"> </span><span class="nc">-461.819</span><span class="err"> </span><span class="nc">-1348.4417</span><span class="err"> </span><span class="nc">673.9051</span>
+<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3240736000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">905.0128</span><span class="err"> </span><span class="nc">-537.541</span><span class="err"> </span><span class="nc">-1462.6171</span><span class="err"> </span><span class="nc">759.7118</span>
+<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3215895000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">914.60065</span><span class="err"> </span><span class="nc">-611.8676</span><span class="err"> </span><span class="nc">-1571.9058</span><span class="err"> </span><span class="nc">857.6638</span>
+<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3192216800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">923.9603</span><span class="err"> </span><span class="nc">-684.8093</span><span class="err"> </span><span class="nc">-1676.4642</span><span class="err"> </span><span class="nc">967.30475</span>
+<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3169632300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">933.08594</span><span class="err"> </span><span class="nc">-756.3582</span><span class="err"> </span><span class="nc">-1776.4275</span><span class="err"> </span><span class="nc">1088.2198</span>
+<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3148046300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">941.9928</span><span class="err"> </span><span class="nc">-826.6257</span><span class="err"> </span><span class="nc">-1871.9355</span><span class="err"> </span><span class="nc">1219.9702</span>
+<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3127394800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">950.67896</span><span class="err"> </span><span class="nc">-895.6205</span><span class="err"> </span><span class="nc">-1963.0989</span><span class="err"> </span><span class="nc">1362.1665</span>
+<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3107608600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">959.1487</span><span class="err"> </span><span class="nc">-963.38116</span><span class="err"> </span><span class="nc">-2050.0586</span><span class="err"> </span><span class="nc">1514.4026</span>
+<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3088618200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">967.4355</span><span class="err"> </span><span class="nc">-1029.9625</span><span class="err"> </span><span class="nc">-2132.961</span><span class="err"> </span><span class="nc">1676.2717</span>
+<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3070361300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">975.52875</span><span class="err"> </span><span class="nc">-1095.4292</span><span class="err"> </span><span class="nc">-2211.854</span><span class="err"> </span><span class="nc">1847.4485</span>
+<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">3052791300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">983.4346</span><span class="err"> </span><span class="nc">-1159.7922</span><span class="err"> </span><span class="nc">-2286.9412</span><span class="err"> </span><span class="nc">2027.4857</span>
<span class="nt">3052791300.0</span><span class="na"> 983.4346 -1159.7922 -2286.9412 2027.4857</span>
</code></pre>
</div>
@@ -466,31 +466,31 @@ values using the X values. We then plot it to compare the actual data and predic
</div>
<div class="codehilite">
-<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1902632600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">84.48304</span><span class="err"> </span><span class="nc">52.210594</span><span class="err"> </span><span class="nc">54.791424</span><span class="err"> </span><span class="nc">142.51952</span><span class="err"> </span><span class="nc">512.0343</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1854316200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">88.998955</span><span class="err"> </span><span class="nc">13.073557</span><span class="err"> </span><span class="nc">14.276088</span><span class="err"> </span><span class="nc">223.55667</span><span class="err"> </span><span class="nc">1056.4655</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1812812400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">92.9462</span><span class="err"> </span><span class="nc">-22.331177</span><span class="err"> </span><span class="nc">-15.262934</span><span class="err"> </span><span class="nc">327.41858</span><span class="err"> </span><span class="nc">1634.9054</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1775716000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">96.42522</span><span class="err"> </span><span class="nc">-54.64535</span><span class="err"> </span><span class="nc">-35.829437</span><span class="err"> </span><span class="nc">449.5028</span><span class="err"> </span><span class="nc">2239.1392</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1741494100.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">99.524734</span><span class="err"> </span><span class="nc">-84.43976</span><span class="err"> </span><span class="nc">-49.181057</span><span class="err"> </span><span class="nc">585.85876</span><span class="err"> </span><span class="nc">2862.4915</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1709199600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">102.31984</span><span class="err"> </span><span class="nc">-112.19895</span><span class="err"> </span><span class="nc">-56.808075</span><span class="err"> </span><span class="nc">733.1876</span><span class="err"> </span><span class="nc">3499.6199</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1678261800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">104.87324</span><span class="err"> </span><span class="nc">-138.32709</span><span class="err"> </span><span class="nc">-59.9442</span><span class="err"> </span><span class="nc">888.79626</span><span class="err"> </span><span class="nc">4146.2944</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1648340600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">107.23536</span><span class="err"> </span><span class="nc">-163.15173</span><span class="err"> </span><span class="nc">-59.58964</span><span class="err"> </span><span class="nc">1050.524</span><span class="err"> </span><span class="nc">4798.979</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1619243400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">109.44742</span><span class="err"> </span><span class="nc">-186.9409</span><span class="err"> </span><span class="nc">-56.53944</span><span class="err"> </span><span class="nc">1216.6432</span><span class="err"> </span><span class="nc">5454.9463</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1590821900.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">111.54233</span><span class="err"> </span><span class="nc">-209.91287</span><span class="err"> </span><span class="nc">-51.423084</span><span class="err"> </span><span class="nc">1385.8513</span><span class="err"> </span><span class="nc">6113.5137</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1563042200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">113.54405</span><span class="err"> </span><span class="nc">-232.21953</span><span class="err"> </span><span class="nc">-44.73371</span><span class="err"> </span><span class="nc">1557.1084</span><span class="err"> </span><span class="nc">6771.7046</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1535855600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">115.471565</span><span class="err"> </span><span class="nc">-253.9838</span><span class="err"> </span><span class="nc">-36.851135</span><span class="err"> </span><span class="nc">1729.535</span><span class="err"> </span><span class="nc">7429.069</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1509255300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">117.33939</span><span class="err"> </span><span class="nc">-275.29697</span><span class="err"> </span><span class="nc">-28.0714</span><span class="err"> </span><span class="nc">1902.5308</span><span class="err"> </span><span class="nc">8083.9634</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1483227000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">119.1605</span><span class="err"> </span><span class="nc">-296.2472</span><span class="err"> </span><span class="nc">-18.618649</span><span class="err"> </span><span class="nc">2075.6094</span><span class="err"> </span><span class="nc">8735.381</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1457726700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">120.94584</span><span class="err"> </span><span class="nc">-316.915</span><span class="err"> </span><span class="nc">-8.650095</span><span class="err"> </span><span class="nc">2248.3247</span><span class="err"> </span><span class="nc">9384.197</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1432777300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">122.69806</span><span class="err"> </span><span class="nc">-337.30704</span><span class="err"> </span><span class="nc">1.7027153</span><span class="err"> </span><span class="nc">2420.5771</span><span class="err"> </span><span class="nc">10028.871</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1408365000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">124.42179</span><span class="err"> </span><span class="nc">-357.45245</span><span class="err"> </span><span class="nc">12.33499</span><span class="err"> </span><span class="nc">2592.2983</span><span class="err"> </span><span class="nc">10669.157</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1384480000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">126.12332</span><span class="err"> </span><span class="nc">-377.39734</span><span class="err"> </span><span class="nc">23.168756</span><span class="err"> </span><span class="nc">2763.0933</span><span class="err"> </span><span class="nc">11305.027</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1361116800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">127.80568</span><span class="err"> </span><span class="nc">-397.16415</span><span class="err"> </span><span class="nc">34.160156</span><span class="err"> </span><span class="nc">2933.0452</span><span class="err"> </span><span class="nc">11935.669</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1338288100.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">129.4674</span><span class="err"> </span><span class="nc">-416.72803</span><span class="err"> </span><span class="nc">45.259155</span><span class="err"> </span><span class="nc">3101.7727</span><span class="err"> </span><span class="nc">12561.179</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1315959700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">131.11403</span><span class="err"> </span><span class="nc">-436.14285</span><span class="err"> </span><span class="nc">56.4436</span><span class="err"> </span><span class="nc">3269.3142</span><span class="err"> </span><span class="nc">13182.058</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1294164700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">132.74377</span><span class="err"> </span><span class="nc">-455.3779</span><span class="err"> </span><span class="nc">67.6757</span><span class="err"> </span><span class="nc">3435.3833</span><span class="err"> </span><span class="nc">13796.807</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1272863600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">134.35779</span><span class="err"> </span><span class="nc">-474.45316</span><span class="err"> </span><span class="nc">78.96117</span><span class="err"> </span><span class="nc">3600.264</span><span class="err"> </span><span class="nc">14406.58</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1252052600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">135.9583</span><span class="err"> </span><span class="nc">-493.38254</span><span class="err"> </span><span class="nc">90.268616</span><span class="err"> </span><span class="nc">3764.0078</span><span class="err"> </span><span class="nc">15010.481</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1231713700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">137.54753</span><span class="err"> </span><span class="nc">-512.1876</span><span class="err"> </span><span class="nc">101.59372</span><span class="err"> </span><span class="nc">3926.4897</span><span class="err"> </span><span class="nc">15609.368</span><span class="w"></span>
+<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1902632600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">84.48304</span><span class="err"> </span><span class="nc">52.210594</span><span class="err"> </span><span class="nc">54.791424</span><span class="err"> </span><span class="nc">142.51952</span><span class="err"> </span><span class="nc">512.0343</span>
+<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1854316200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">88.998955</span><span class="err"> </span><span class="nc">13.073557</span><span class="err"> </span><span class="nc">14.276088</span><span class="err"> </span><span class="nc">223.55667</span><span class="err"> </span><span class="nc">1056.4655</span>
+<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1812812400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">92.9462</span><span class="err"> </span><span class="nc">-22.331177</span><span class="err"> </span><span class="nc">-15.262934</span><span class="err"> </span><span class="nc">327.41858</span><span class="err"> </span><span class="nc">1634.9054</span>
+<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1775716000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">96.42522</span><span class="err"> </span><span class="nc">-54.64535</span><span class="err"> </span><span class="nc">-35.829437</span><span class="err"> </span><span class="nc">449.5028</span><span class="err"> </span><span class="nc">2239.1392</span>
+<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1741494100.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">99.524734</span><span class="err"> </span><span class="nc">-84.43976</span><span class="err"> </span><span class="nc">-49.181057</span><span class="err"> </span><span class="nc">585.85876</span><span class="err"> </span><span class="nc">2862.4915</span>
+<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1709199600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">102.31984</span><span class="err"> </span><span class="nc">-112.19895</span><span class="err"> </span><span class="nc">-56.808075</span><span class="err"> </span><span class="nc">733.1876</span><span class="err"> </span><span class="nc">3499.6199</span>
+<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1678261800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">104.87324</span><span class="err"> </span><span class="nc">-138.32709</span><span class="err"> </span><span class="nc">-59.9442</span><span class="err"> </span><span class="nc">888.79626</span><span class="err"> </span><span class="nc">4146.2944</span>
+<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1648340600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">107.23536</span><span class="err"> </span><span class="nc">-163.15173</span><span class="err"> </span><span class="nc">-59.58964</span><span class="err"> </span><span class="nc">1050.524</span><span class="err"> </span><span class="nc">4798.979</span>
+<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1619243400.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">109.44742</span><span class="err"> </span><span class="nc">-186.9409</span><span class="err"> </span><span class="nc">-56.53944</span><span class="err"> </span><span class="nc">1216.6432</span><span class="err"> </span><span class="nc">5454.9463</span>
+<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1590821900.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">111.54233</span><span class="err"> </span><span class="nc">-209.91287</span><span class="err"> </span><span class="nc">-51.423084</span><span class="err"> </span><span class="nc">1385.8513</span><span class="err"> </span><span class="nc">6113.5137</span>
+<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1563042200.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">113.54405</span><span class="err"> </span><span class="nc">-232.21953</span><span class="err"> </span><span class="nc">-44.73371</span><span class="err"> </span><span class="nc">1557.1084</span><span class="err"> </span><span class="nc">6771.7046</span>
+<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1535855600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">115.471565</span><span class="err"> </span><span class="nc">-253.9838</span><span class="err"> </span><span class="nc">-36.851135</span><span class="err"> </span><span class="nc">1729.535</span><span class="err"> </span><span class="nc">7429.069</span>
+<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1509255300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">117.33939</span><span class="err"> </span><span class="nc">-275.29697</span><span class="err"> </span><span class="nc">-28.0714</span><span class="err"> </span><span class="nc">1902.5308</span><span class="err"> </span><span class="nc">8083.9634</span>
+<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1483227000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">119.1605</span><span class="err"> </span><span class="nc">-296.2472</span><span class="err"> </span><span class="nc">-18.618649</span><span class="err"> </span><span class="nc">2075.6094</span><span class="err"> </span><span class="nc">8735.381</span>
+<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1457726700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">120.94584</span><span class="err"> </span><span class="nc">-316.915</span><span class="err"> </span><span class="nc">-8.650095</span><span class="err"> </span><span class="nc">2248.3247</span><span class="err"> </span><span class="nc">9384.197</span>
+<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1432777300.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">122.69806</span><span class="err"> </span><span class="nc">-337.30704</span><span class="err"> </span><span class="nc">1.7027153</span><span class="err"> </span><span class="nc">2420.5771</span><span class="err"> </span><span class="nc">10028.871</span>
+<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1408365000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">124.42179</span><span class="err"> </span><span class="nc">-357.45245</span><span class="err"> </span><span class="nc">12.33499</span><span class="err"> </span><span class="nc">2592.2983</span><span class="err"> </span><span class="nc">10669.157</span>
+<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1384480000.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">126.12332</span><span class="err"> </span><span class="nc">-377.39734</span><span class="err"> </span><span class="nc">23.168756</span><span class="err"> </span><span class="nc">2763.0933</span><span class="err"> </span><span class="nc">11305.027</span>
+<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1361116800.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">127.80568</span><span class="err"> </span><span class="nc">-397.16415</span><span class="err"> </span><span class="nc">34.160156</span><span class="err"> </span><span class="nc">2933.0452</span><span class="err"> </span><span class="nc">11935.669</span>
+<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1338288100.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">129.4674</span><span class="err"> </span><span class="nc">-416.72803</span><span class="err"> </span><span class="nc">45.259155</span><span class="err"> </span><span class="nc">3101.7727</span><span class="err"> </span><span class="nc">12561.179</span>
+<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1315959700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">131.11403</span><span class="err"> </span><span class="nc">-436.14285</span><span class="err"> </span><span class="nc">56.4436</span><span class="err"> </span><span class="nc">3269.3142</span><span class="err"> </span><span class="nc">13182.058</span>
+<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1294164700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">132.74377</span><span class="err"> </span><span class="nc">-455.3779</span><span class="err"> </span><span class="nc">67.6757</span><span class="err"> </span><span class="nc">3435.3833</span><span class="err"> </span><span class="nc">13796.807</span>
+<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1272863600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">134.35779</span><span class="err"> </span><span class="nc">-474.45316</span><span class="err"> </span><span class="nc">78.96117</span><span class="err"> </span><span class="nc">3600.264</span><span class="err"> </span><span class="nc">14406.58</span>
+<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1252052600.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">135.9583</span><span class="err"> </span><span class="nc">-493.38254</span><span class="err"> </span><span class="nc">90.268616</span><span class="err"> </span><span class="nc">3764.0078</span><span class="err"> </span><span class="nc">15010.481</span>
+<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1231713700.0</span><span class="err"> </span><span class="nc">a,b,c,d</span><span class="p">:</span><span class="err"> </span><span class="nc">137.54753</span><span class="err"> </span><span class="nc">-512.1876</span><span class="err"> </span><span class="nc">101.59372</span><span class="err"> </span><span class="nc">3926.4897</span><span class="err"> </span><span class="nc">15609.368</span>
<span class="nt">1231713700.0</span><span class="na"> 137.54753 -512.1876 101.59372 3926.4897 15609.368</span>
</code></pre>
</div>
@@ -532,31 +532,31 @@ values using the X values. We then plot it to compare the actual data and predic
</div>
<div class="codehilite">
-<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1409200100.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">7.949472</span><span class="err"> </span><span class="nc">7.46219</span><span class="err"> </span><span class="nc">55.626034</span><span class="err"> </span><span class="nc">184.29028</span><span class="err"> </span><span class="nc">484.00223</span><span class="err"> </span><span class="nc">1024.0083</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1306882400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">8.732181</span><span class="err"> </span><span class="nc">-4.0085897</span><span class="err"> </span><span class="nc">73.25298</span><span class="err"> </span><span class="nc">315.90103</span><span class="err"> </span><span class="nc">904.08887</span><span class="err"> </span><span class="nc">2004.9749</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1212606000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">9.732249</span><span class="err"> </span><span class="nc">-16.90125</span><span class="err"> </span><span class="nc">86.28379</span><span class="err"> </span><span class="nc">437.06552</span><span class="err"> </span><span class="nc">1305.055</span><span class="err"> </span><span class="nc">2966.2188</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1123640400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">10.74851</span><span class="err"> </span><span class="nc">-29.82692</span><span class="err"> </span><span class="nc">98.59997</span><span class="err"> </span><span class="nc">555.331</span><span class="err"> </span><span class="nc">1698.4631</span><span class="err"> </span><span class="nc">3917.9155</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1039694300.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">11.75426</span><span class="err"> </span><span class="nc">-42.598194</span><span class="err"> </span><span class="nc">110.698326</span><span class="err"> </span><span class="nc">671.64355</span><span class="err"> </span><span class="nc">2085.5513</span><span class="err"> </span><span class="nc">4860.8535</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">960663550.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">12.745439</span><span class="err"> </span><span class="nc">-55.18337</span><span class="err"> </span><span class="nc">122.644936</span><span class="err"> </span><span class="nc">786.00214</span><span class="err"> </span><span class="nc">2466.1638</span><span class="err"> </span><span class="nc">5794.3735</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">886438340.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">13.721028</span><span class="err"> </span><span class="nc">-67.57168</span><span class="err"> </span><span class="nc">134.43822</span><span class="err"> </span><span class="nc">898.3691</span><span class="err"> </span><span class="nc">2839.9958</span><span class="err"> </span><span class="nc">6717.659</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">816913100.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">14.679965</span><span class="err"> </span><span class="nc">-79.75113</span><span class="err"> </span><span class="nc">146.07385</span><span class="err"> </span><span class="nc">1008.66895</span><span class="err"> </span><span class="nc">3206.6692</span><span class="err"> </span><span class="nc">7629.812</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">751971500.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">15.62181</span><span class="err"> </span><span class="nc">-91.71608</span><span class="err"> </span><span class="nc">157.55713</span><span class="err"> </span><span class="nc">1116.7715</span><span class="err"> </span><span class="nc">3565.8323</span><span class="err"> </span><span class="nc">8529.976</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">691508740.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">16.545347</span><span class="err"> </span><span class="nc">-103.4531</span><span class="err"> </span><span class="nc">168.88321</span><span class="err"> </span><span class="nc">1222.6348</span><span class="err"> </span><span class="nc">3916.9785</span><span class="err"> </span><span class="nc">9416.236</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">635382000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">17.450052</span><span class="err"> </span><span class="nc">-114.954254</span><span class="err"> </span><span class="nc">180.03932</span><span class="err"> </span><span class="nc">1326.1565</span><span class="err"> </span><span class="nc">4259.842</span><span class="err"> </span><span class="nc">10287.99</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">583477250.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">18.334944</span><span class="err"> </span><span class="nc">-126.20821</span><span class="err"> </span><span class="nc">191.02948</span><span class="err"> </span><span class="nc">1427.2095</span><span class="err"> </span><span class="nc">4593.8</span><span class="err"> </span><span class="nc">11143.449</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">535640400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">19.198917</span><span class="err"> </span><span class="nc">-137.20206</span><span class="err"> </span><span class="nc">201.84718</span><span class="err"> </span><span class="nc">1525.6926</span><span class="err"> </span><span class="nc">4918.5327</span><span class="err"> </span><span class="nc">11981.633</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">491722240.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">20.041153</span><span class="err"> </span><span class="nc">-147.92719</span><span class="err"> </span><span class="nc">212.49709</span><span class="err"> </span><span class="nc">1621.5496</span><span class="err"> </span><span class="nc">5233.627</span><span class="err"> </span><span class="nc">12800.468</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">451559520.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">20.860966</span><span class="err"> </span><span class="nc">-158.37456</span><span class="err"> </span><span class="nc">222.97133</span><span class="err"> </span><span class="nc">1714.7141</span><span class="err"> </span><span class="nc">5538.676</span><span class="err"> </span><span class="nc">13598.337</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">414988960.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">21.657421</span><span class="err"> </span><span class="nc">-168.53406</span><span class="err"> </span><span class="nc">233.27422</span><span class="err"> </span><span class="nc">1805.0874</span><span class="err"> </span><span class="nc">5833.1978</span><span class="err"> </span><span class="nc">14373.658</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">381837920.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">22.429693</span><span class="err"> </span><span class="nc">-178.39536</span><span class="err"> </span><span class="nc">243.39914</span><span class="err"> </span><span class="nc">1892.5883</span><span class="err"> </span><span class="nc">6116.847</span><span class="err"> </span><span class="nc">15124.394</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">351931300.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">23.176882</span><span class="err"> </span><span class="nc">-187.94789</span><span class="err"> </span><span class="nc">253.3445</span><span class="err"> </span><span class="nc">1977.137</span><span class="err"> </span><span class="nc">6389.117</span><span class="err"> </span><span class="nc">15848.417</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">325074400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">23.898485</span><span class="err"> </span><span class="nc">-197.18741</span><span class="err"> </span><span class="nc">263.12512</span><span class="err"> </span><span class="nc">2058.6716</span><span class="err"> </span><span class="nc">6649.8037</span><span class="err"> </span><span class="nc">16543.95</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">301073570.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">24.593851</span><span class="err"> </span><span class="nc">-206.10497</span><span class="err"> </span><span class="nc">272.72385</span><span class="err"> </span><span class="nc">2137.1797</span><span class="err"> </span><span class="nc">6898.544</span><span class="err"> </span><span class="nc">17209.367</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">279727000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">25.262104</span><span class="err"> </span><span class="nc">-214.69217</span><span class="err"> </span><span class="nc">282.14642</span><span class="err"> </span><span class="nc">2212.6372</span><span class="err"> </span><span class="nc">7135.217</span><span class="err"> </span><span class="nc">17842.854</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">260845550.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">25.903376</span><span class="err"> </span><span class="nc">-222.94969</span><span class="err"> </span><span class="nc">291.4003</span><span class="err"> </span><span class="nc">2284.9844</span><span class="err"> </span><span class="nc">7359.4644</span><span class="err"> </span><span class="nc">18442.408</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">244218030.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">26.517094</span><span class="err"> </span><span class="nc">-230.8697</span><span class="err"> </span><span class="nc">300.45532</span><span class="err"> </span><span class="nc">2354.3003</span><span class="err"> </span><span class="nc">7571.261</span><span class="err"> </span><span class="nc">19007.49</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">229660080.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">27.102589</span><span class="err"> </span><span class="nc">-238.44817</span><span class="err"> </span><span class="nc">309.35342</span><span class="err"> </span><span class="nc">2420.4185</span><span class="err"> </span><span class="nc">7770.5728</span><span class="err"> </span><span class="nc">19536.19</span><span class="w"></span>
-<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">216972400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">27.660324</span><span class="err"> </span><span class="nc">-245.69016</span><span class="err"> </span><span class="nc">318.10062</span><span class="err"> </span><span class="nc">2483.3608</span><span class="err"> </span><span class="nc">7957.354</span><span class="err"> </span><span class="nc">20027.707</span><span class="w"></span>
+<pre><span></span><code><span class="nt">Epoch</span><span class="na"> 1000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1409200100.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">7.949472</span><span class="err"> </span><span class="nc">7.46219</span><span class="err"> </span><span class="nc">55.626034</span><span class="err"> </span><span class="nc">184.29028</span><span class="err"> </span><span class="nc">484.00223</span><span class="err"> </span><span class="nc">1024.0083</span>
+<span class="nt">Epoch</span><span class="na"> 2000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1306882400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">8.732181</span><span class="err"> </span><span class="nc">-4.0085897</span><span class="err"> </span><span class="nc">73.25298</span><span class="err"> </span><span class="nc">315.90103</span><span class="err"> </span><span class="nc">904.08887</span><span class="err"> </span><span class="nc">2004.9749</span>
+<span class="nt">Epoch</span><span class="na"> 3000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1212606000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">9.732249</span><span class="err"> </span><span class="nc">-16.90125</span><span class="err"> </span><span class="nc">86.28379</span><span class="err"> </span><span class="nc">437.06552</span><span class="err"> </span><span class="nc">1305.055</span><span class="err"> </span><span class="nc">2966.2188</span>
+<span class="nt">Epoch</span><span class="na"> 4000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1123640400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">10.74851</span><span class="err"> </span><span class="nc">-29.82692</span><span class="err"> </span><span class="nc">98.59997</span><span class="err"> </span><span class="nc">555.331</span><span class="err"> </span><span class="nc">1698.4631</span><span class="err"> </span><span class="nc">3917.9155</span>
+<span class="nt">Epoch</span><span class="na"> 5000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">1039694300.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">11.75426</span><span class="err"> </span><span class="nc">-42.598194</span><span class="err"> </span><span class="nc">110.698326</span><span class="err"> </span><span class="nc">671.64355</span><span class="err"> </span><span class="nc">2085.5513</span><span class="err"> </span><span class="nc">4860.8535</span>
+<span class="nt">Epoch</span><span class="na"> 6000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">960663550.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">12.745439</span><span class="err"> </span><span class="nc">-55.18337</span><span class="err"> </span><span class="nc">122.644936</span><span class="err"> </span><span class="nc">786.00214</span><span class="err"> </span><span class="nc">2466.1638</span><span class="err"> </span><span class="nc">5794.3735</span>
+<span class="nt">Epoch</span><span class="na"> 7000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">886438340.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">13.721028</span><span class="err"> </span><span class="nc">-67.57168</span><span class="err"> </span><span class="nc">134.43822</span><span class="err"> </span><span class="nc">898.3691</span><span class="err"> </span><span class="nc">2839.9958</span><span class="err"> </span><span class="nc">6717.659</span>
+<span class="nt">Epoch</span><span class="na"> 8000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">816913100.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">14.679965</span><span class="err"> </span><span class="nc">-79.75113</span><span class="err"> </span><span class="nc">146.07385</span><span class="err"> </span><span class="nc">1008.66895</span><span class="err"> </span><span class="nc">3206.6692</span><span class="err"> </span><span class="nc">7629.812</span>
+<span class="nt">Epoch</span><span class="na"> 9000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">751971500.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">15.62181</span><span class="err"> </span><span class="nc">-91.71608</span><span class="err"> </span><span class="nc">157.55713</span><span class="err"> </span><span class="nc">1116.7715</span><span class="err"> </span><span class="nc">3565.8323</span><span class="err"> </span><span class="nc">8529.976</span>
+<span class="nt">Epoch</span><span class="na"> 10000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">691508740.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">16.545347</span><span class="err"> </span><span class="nc">-103.4531</span><span class="err"> </span><span class="nc">168.88321</span><span class="err"> </span><span class="nc">1222.6348</span><span class="err"> </span><span class="nc">3916.9785</span><span class="err"> </span><span class="nc">9416.236</span>
+<span class="nt">Epoch</span><span class="na"> 11000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">635382000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">17.450052</span><span class="err"> </span><span class="nc">-114.954254</span><span class="err"> </span><span class="nc">180.03932</span><span class="err"> </span><span class="nc">1326.1565</span><span class="err"> </span><span class="nc">4259.842</span><span class="err"> </span><span class="nc">10287.99</span>
+<span class="nt">Epoch</span><span class="na"> 12000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">583477250.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">18.334944</span><span class="err"> </span><span class="nc">-126.20821</span><span class="err"> </span><span class="nc">191.02948</span><span class="err"> </span><span class="nc">1427.2095</span><span class="err"> </span><span class="nc">4593.8</span><span class="err"> </span><span class="nc">11143.449</span>
+<span class="nt">Epoch</span><span class="na"> 13000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">535640400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">19.198917</span><span class="err"> </span><span class="nc">-137.20206</span><span class="err"> </span><span class="nc">201.84718</span><span class="err"> </span><span class="nc">1525.6926</span><span class="err"> </span><span class="nc">4918.5327</span><span class="err"> </span><span class="nc">11981.633</span>
+<span class="nt">Epoch</span><span class="na"> 14000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">491722240.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">20.041153</span><span class="err"> </span><span class="nc">-147.92719</span><span class="err"> </span><span class="nc">212.49709</span><span class="err"> </span><span class="nc">1621.5496</span><span class="err"> </span><span class="nc">5233.627</span><span class="err"> </span><span class="nc">12800.468</span>
+<span class="nt">Epoch</span><span class="na"> 15000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">451559520.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">20.860966</span><span class="err"> </span><span class="nc">-158.37456</span><span class="err"> </span><span class="nc">222.97133</span><span class="err"> </span><span class="nc">1714.7141</span><span class="err"> </span><span class="nc">5538.676</span><span class="err"> </span><span class="nc">13598.337</span>
+<span class="nt">Epoch</span><span class="na"> 16000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">414988960.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">21.657421</span><span class="err"> </span><span class="nc">-168.53406</span><span class="err"> </span><span class="nc">233.27422</span><span class="err"> </span><span class="nc">1805.0874</span><span class="err"> </span><span class="nc">5833.1978</span><span class="err"> </span><span class="nc">14373.658</span>
+<span class="nt">Epoch</span><span class="na"> 17000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">381837920.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">22.429693</span><span class="err"> </span><span class="nc">-178.39536</span><span class="err"> </span><span class="nc">243.39914</span><span class="err"> </span><span class="nc">1892.5883</span><span class="err"> </span><span class="nc">6116.847</span><span class="err"> </span><span class="nc">15124.394</span>
+<span class="nt">Epoch</span><span class="na"> 18000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">351931300.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">23.176882</span><span class="err"> </span><span class="nc">-187.94789</span><span class="err"> </span><span class="nc">253.3445</span><span class="err"> </span><span class="nc">1977.137</span><span class="err"> </span><span class="nc">6389.117</span><span class="err"> </span><span class="nc">15848.417</span>
+<span class="nt">Epoch</span><span class="na"> 19000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">325074400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">23.898485</span><span class="err"> </span><span class="nc">-197.18741</span><span class="err"> </span><span class="nc">263.12512</span><span class="err"> </span><span class="nc">2058.6716</span><span class="err"> </span><span class="nc">6649.8037</span><span class="err"> </span><span class="nc">16543.95</span>
+<span class="nt">Epoch</span><span class="na"> 20000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">301073570.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">24.593851</span><span class="err"> </span><span class="nc">-206.10497</span><span class="err"> </span><span class="nc">272.72385</span><span class="err"> </span><span class="nc">2137.1797</span><span class="err"> </span><span class="nc">6898.544</span><span class="err"> </span><span class="nc">17209.367</span>
+<span class="nt">Epoch</span><span class="na"> 21000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">279727000.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">25.262104</span><span class="err"> </span><span class="nc">-214.69217</span><span class="err"> </span><span class="nc">282.14642</span><span class="err"> </span><span class="nc">2212.6372</span><span class="err"> </span><span class="nc">7135.217</span><span class="err"> </span><span class="nc">17842.854</span>
+<span class="nt">Epoch</span><span class="na"> 22000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">260845550.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">25.903376</span><span class="err"> </span><span class="nc">-222.94969</span><span class="err"> </span><span class="nc">291.4003</span><span class="err"> </span><span class="nc">2284.9844</span><span class="err"> </span><span class="nc">7359.4644</span><span class="err"> </span><span class="nc">18442.408</span>
+<span class="nt">Epoch</span><span class="na"> 23000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">244218030.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">26.517094</span><span class="err"> </span><span class="nc">-230.8697</span><span class="err"> </span><span class="nc">300.45532</span><span class="err"> </span><span class="nc">2354.3003</span><span class="err"> </span><span class="nc">7571.261</span><span class="err"> </span><span class="nc">19007.49</span>
+<span class="nt">Epoch</span><span class="na"> 24000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">229660080.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">27.102589</span><span class="err"> </span><span class="nc">-238.44817</span><span class="err"> </span><span class="nc">309.35342</span><span class="err"> </span><span class="nc">2420.4185</span><span class="err"> </span><span class="nc">7770.5728</span><span class="err"> </span><span class="nc">19536.19</span>
+<span class="nt">Epoch</span><span class="na"> 25000 </span><span class="p">:</span><span class="err"> </span><span class="nc">Training</span><span class="err"> </span><span class="nc">Cost</span><span class="p">:</span><span class="err"> </span><span class="nc">216972400.0</span><span class="err"> </span><span class="nc">a,b,c,d,e,f</span><span class="p">:</span><span class="err"> </span><span class="nc">27.660324</span><span class="err"> </span><span class="nc">-245.69016</span><span class="err"> </span><span class="nc">318.10062</span><span class="err"> </span><span class="nc">2483.3608</span><span class="err"> </span><span class="nc">7957.354</span><span class="err"> </span><span class="nc">20027.707</span>
<span class="nt">216972400.0</span><span class="na"> 27.660324 -245.69016 318.10062 2483.3608 7957.354 20027.707</span>
</code></pre>
</div>
diff --git a/docs/posts/2019-12-22-Fake-News-Detector.html b/docs/posts/2019-12-22-Fake-News-Detector.html
index 676a34e..9f76794 100644
--- a/docs/posts/2019-12-22-Fake-News-Detector.html
+++ b/docs/posts/2019-12-22-Fake-News-Detector.html
@@ -85,7 +85,7 @@ a CUDA compatible MXNet package.</p>
<h3>Downloading the Dataset</h3>
<div class="codehilite">
-<pre><span></span><code><span class="nt">!wget</span><span class="na"> -q &quot;https</span><span class="p">:</span><span class="nc">//github.com/joolsa/fake_real_news_dataset/raw/master/fake_or_real_news.csv.zip&quot;</span><span class="w"></span>
+<pre><span></span><code><span class="nt">!wget</span><span class="na"> -q &quot;https</span><span class="p">:</span><span class="nc">//github.com/joolsa/fake_real_news_dataset/raw/master/fake_or_real_news.csv.zip&quot;</span>
<span class="nt">!unzip</span><span class="na"> fake_or_real_news.csv.zip</span>
</code></pre>
</div>
diff --git a/docs/posts/2020-01-16-Image-Classifier-Using-Turicreate.html b/docs/posts/2020-01-16-Image-Classifier-Using-Turicreate.html
index c1fea70..dfa8f23 100644
--- a/docs/posts/2020-01-16-Image-Classifier-Using-Turicreate.html
+++ b/docs/posts/2020-01-16-Image-Classifier-Using-Turicreate.html
@@ -192,39 +192,39 @@
<p>\</p>
<div class="codehilite">
-<pre><span></span><code><span class="nt">+-------------------------+------------------------+</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">path</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">image</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="nt">+-------------------------+------------------------+</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/1.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/10.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/100.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/101.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/102.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/103.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/104.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/105.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/106.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/107.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="nt">+-------------------------+------------------------+</span><span class="w"></span>
+<pre><span></span><code><span class="nt">+-------------------------+------------------------+</span>
+<span class="err">|</span><span class="w"> </span><span class="err">path</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">image</span><span class="w"> </span><span class="err">|</span>
+<span class="nt">+-------------------------+------------------------+</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/1.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/10.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/100.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/101.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/102.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/103.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/104.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/105.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/106.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/107.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span>
+<span class="nt">+-------------------------+------------------------+</span>
<span class="nt">[2028</span><span class="na"> rows x 2 columns]</span>
-<span class="na">Note</span><span class="p">:</span><span class="err"> </span><span class="nc">Only</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">head</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">SFrame</span><span class="err"> </span><span class="nc">is</span><span class="err"> </span><span class="nc">printed.</span><span class="w"></span>
+<span class="na">Note</span><span class="p">:</span><span class="err"> </span><span class="nc">Only</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">head</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">SFrame</span><span class="err"> </span><span class="nc">is</span><span class="err"> </span><span class="nc">printed.</span>
<span class="nt">You</span><span class="na"> can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.</span>
<span class="na">+-------------------------+------------------------+---------+</span>
-<span class="p">|</span><span class="na"> path </span><span class="p">|</span><span class="na"> image </span><span class="p">|</span><span class="na"> label </span><span class="p">|</span><span class="w"></span>
-<span class="nt">+-------------------------+------------------------+---------+</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/1.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/10.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/100.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/101.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/102.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/103.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/104.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/105.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/106.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">./train/default/107.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="nt">+-------------------------+------------------------+---------+</span><span class="w"></span>
+<span class="p">|</span><span class="na"> path </span><span class="p">|</span><span class="na"> image </span><span class="p">|</span><span class="na"> label </span><span class="p">|</span>
+<span class="nt">+-------------------------+------------------------+---------+</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/1.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/10.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/100.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/101.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/102.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/103.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/104.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/105.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/106.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">./train/default/107.jpg</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">Height:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">Width:</span><span class="w"> </span><span class="err">224</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">default</span><span class="w"> </span><span class="err">|</span>
+<span class="nt">+-------------------------+------------------------+---------+</span>
<span class="nt">[2028</span><span class="na"> rows x 3 columns]</span>
-<span class="na">Note</span><span class="p">:</span><span class="err"> </span><span class="nc">Only</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">head</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">SFrame</span><span class="err"> </span><span class="nc">is</span><span class="err"> </span><span class="nc">printed.</span><span class="w"></span>
+<span class="na">Note</span><span class="p">:</span><span class="err"> </span><span class="nc">Only</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">head</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">the</span><span class="err"> </span><span class="nc">SFrame</span><span class="err"> </span><span class="nc">is</span><span class="err"> </span><span class="nc">printed.</span>
<span class="nt">You</span><span class="na"> can use print_rows(num_rows=m, num_columns=n) to print more rows and columns.</span>
</code></pre>
</div>
@@ -288,28 +288,28 @@
<span class="na">Completed 1536/1633</span>
<span class="na">Completed 1600/1633</span>
<span class="na">Completed 1633/1633</span>
-<span class="na">PROGRESS</span><span class="p">:</span><span class="err"> </span><span class="nc">Creating</span><span class="err"> </span><span class="nc">a</span><span class="err"> </span><span class="nc">validation</span><span class="err"> </span><span class="nc">set</span><span class="err"> </span><span class="nc">from</span><span class="err"> </span><span class="nc">5</span><span class="err"> </span><span class="nc">percent</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">training</span><span class="err"> </span><span class="nc">data.</span><span class="err"> </span><span class="nc">This</span><span class="err"> </span><span class="nc">may</span><span class="err"> </span><span class="nc">take</span><span class="err"> </span><span class="nc">a</span><span class="err"> </span><span class="nc">while.</span><span class="w"></span>
-<span class="w"> </span><span class="err">You</span><span class="w"> </span><span class="err">can</span><span class="w"> </span><span class="err">set</span><span class="w"> </span><span class="err">``validation_set=None``</span><span class="w"> </span><span class="err">to</span><span class="w"> </span><span class="err">disable</span><span class="w"> </span><span class="err">validation</span><span class="w"> </span><span class="err">tracking.</span><span class="w"></span>
-
-<span class="nt">Logistic</span><span class="na"> regression</span><span class="p">:</span><span class="w"></span>
-<span class="nt">--------------------------------------------------------</span><span class="w"></span>
-<span class="nt">Number</span><span class="na"> of examples </span><span class="p">:</span><span class="err"> </span><span class="nc">1551</span><span class="w"></span>
-<span class="nt">Number</span><span class="na"> of classes </span><span class="p">:</span><span class="err"> </span><span class="nc">3</span><span class="w"></span>
-<span class="nt">Number</span><span class="na"> of feature columns </span><span class="p">:</span><span class="err"> </span><span class="nc">1</span><span class="w"></span>
-<span class="nt">Number</span><span class="na"> of unpacked features </span><span class="p">:</span><span class="err"> </span><span class="nc">2048</span><span class="w"></span>
-<span class="nt">Number</span><span class="na"> of coefficients </span><span class="p">:</span><span class="err"> </span><span class="nc">4098</span><span class="w"></span>
+<span class="na">PROGRESS</span><span class="p">:</span><span class="err"> </span><span class="nc">Creating</span><span class="err"> </span><span class="nc">a</span><span class="err"> </span><span class="nc">validation</span><span class="err"> </span><span class="nc">set</span><span class="err"> </span><span class="nc">from</span><span class="err"> </span><span class="nc">5</span><span class="err"> </span><span class="nc">percent</span><span class="err"> </span><span class="nc">of</span><span class="err"> </span><span class="nc">training</span><span class="err"> </span><span class="nc">data.</span><span class="err"> </span><span class="nc">This</span><span class="err"> </span><span class="nc">may</span><span class="err"> </span><span class="nc">take</span><span class="err"> </span><span class="nc">a</span><span class="err"> </span><span class="nc">while.</span>
+<span class="w"> </span><span class="err">You</span><span class="w"> </span><span class="err">can</span><span class="w"> </span><span class="err">set</span><span class="w"> </span><span class="err">``validation_set=None``</span><span class="w"> </span><span class="err">to</span><span class="w"> </span><span class="err">disable</span><span class="w"> </span><span class="err">validation</span><span class="w"> </span><span class="err">tracking.</span>
+
+<span class="nt">Logistic</span><span class="na"> regression</span><span class="p">:</span>
+<span class="nt">--------------------------------------------------------</span>
+<span class="nt">Number</span><span class="na"> of examples </span><span class="p">:</span><span class="err"> </span><span class="nc">1551</span>
+<span class="nt">Number</span><span class="na"> of classes </span><span class="p">:</span><span class="err"> </span><span class="nc">3</span>
+<span class="nt">Number</span><span class="na"> of feature columns </span><span class="p">:</span><span class="err"> </span><span class="nc">1</span>
+<span class="nt">Number</span><span class="na"> of unpacked features </span><span class="p">:</span><span class="err"> </span><span class="nc">2048</span>
+<span class="nt">Number</span><span class="na"> of coefficients </span><span class="p">:</span><span class="err"> </span><span class="nc">4098</span>
<span class="nt">Starting</span><span class="na"> L-BFGS</span>
<span class="na">--------------------------------------------------------</span>
<span class="na">+-----------+----------+-----------+--------------+-------------------+---------------------+</span>
-<span class="p">|</span><span class="na"> Iteration </span><span class="p">|</span><span class="na"> Passes </span><span class="p">|</span><span class="na"> Step size </span><span class="p">|</span><span class="na"> Elapsed Time </span><span class="p">|</span><span class="na"> Training Accuracy </span><span class="p">|</span><span class="na"> Validation Accuracy </span><span class="p">|</span><span class="w"></span>
-<span class="nt">+-----------+----------+-----------+--------------+-------------------+---------------------+</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">0</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">6</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.018611</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.891830</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.553836</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.560976</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">1</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">10</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.390832</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">1.622383</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.744681</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.792683</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">2</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">11</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.488541</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">1.943987</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.733075</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.804878</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">3</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">14</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.442703</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.512545</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.727917</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.841463</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">4</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">15</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.442703</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.826964</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.861380</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.853659</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="err">|</span><span class="w"> </span><span class="err">9</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">28</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.340435</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">5.492035</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.941328</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.975610</span><span class="w"> </span><span class="err">|</span><span class="w"></span>
-<span class="nt">+-----------+----------+-----------+--------------+-------------------+---------------------+</span><span class="w"></span>
+<span class="p">|</span><span class="na"> Iteration </span><span class="p">|</span><span class="na"> Passes </span><span class="p">|</span><span class="na"> Step size </span><span class="p">|</span><span class="na"> Elapsed Time </span><span class="p">|</span><span class="na"> Training Accuracy </span><span class="p">|</span><span class="na"> Validation Accuracy </span><span class="p">|</span>
+<span class="nt">+-----------+----------+-----------+--------------+-------------------+---------------------+</span>
+<span class="err">|</span><span class="w"> </span><span class="err">0</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">6</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.018611</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.891830</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.553836</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.560976</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">1</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">10</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.390832</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">1.622383</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.744681</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.792683</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">2</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">11</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.488541</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">1.943987</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.733075</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.804878</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">3</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">14</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.442703</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.512545</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.727917</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.841463</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">4</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">15</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.442703</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.826964</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.861380</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.853659</span><span class="w"> </span><span class="err">|</span>
+<span class="err">|</span><span class="w"> </span><span class="err">9</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">28</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">2.340435</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">5.492035</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.941328</span><span class="w"> </span><span class="err">|</span><span class="w"> </span><span class="err">0.975610</span><span class="w"> </span><span class="err">|</span>
+<span class="nt">+-----------+----------+-----------+--------------+-------------------+---------------------+</span>
<span class="nt">Performing</span><span class="na"> feature extraction on resized images...</span>
<span class="na">Completed 64/395</span>
<span class="na">Completed 128/395</span>
diff --git a/docs/posts/2020-08-01-Natural-Feature-Tracking-ARJS.html b/docs/posts/2020-08-01-Natural-Feature-Tracking-ARJS.html
index 038dc59..4508a2a 100644
--- a/docs/posts/2020-08-01-Natural-Feature-Tracking-ARJS.html
+++ b/docs/posts/2020-08-01-Natural-Feature-Tracking-ARJS.html
@@ -201,25 +201,25 @@ me.fset me.fset3 me.iset
<pre><span></span><code><span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;https://cdn.jsdelivr.net/gh/aframevr/aframe@1c2407b26c61958baa93967b5412487cd94b290b/dist/aframe-master.min.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;https://raw.githack.com/AR-js-org/AR.js/master/aframe/build/aframe-ar-nft.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
-<span class="p">&lt;</span><span class="nt">style</span><span class="p">&gt;</span><span class="w"></span>
-<span class="w"> </span><span class="p">.</span><span class="nc">arjs-loader</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">height</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="kt">%</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">width</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="kt">%</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">absolute</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">top</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">left</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">background-color</span><span class="p">:</span><span class="w"> </span><span class="nb">rgba</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.8</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="k">z-index</span><span class="p">:</span><span class="w"> </span><span class="mi">9999</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">display</span><span class="p">:</span><span class="w"> </span><span class="kc">flex</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">justify-content</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">align-items</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="p">.</span><span class="nc">arjs-loader</span><span class="w"> </span><span class="nt">div</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">text-align</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">font-size</span><span class="p">:</span><span class="w"> </span><span class="mf">1.25</span><span class="kt">em</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">color</span><span class="p">:</span><span class="w"> </span><span class="kc">white</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
+<span class="p">&lt;</span><span class="nt">style</span><span class="p">&gt;</span>
+<span class="w"> </span><span class="p">.</span><span class="nc">arjs-loader</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">height</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
+<span class="w"> </span><span class="k">width</span><span class="p">:</span><span class="w"> </span><span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
+<span class="w"> </span><span class="k">position</span><span class="p">:</span><span class="w"> </span><span class="kc">absolute</span><span class="p">;</span>
+<span class="w"> </span><span class="k">top</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="k">left</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span>
+<span class="w"> </span><span class="k">background-color</span><span class="p">:</span><span class="w"> </span><span class="nb">rgba</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.8</span><span class="p">);</span>
+<span class="w"> </span><span class="k">z-index</span><span class="p">:</span><span class="w"> </span><span class="mi">9999</span><span class="p">;</span>
+<span class="w"> </span><span class="k">display</span><span class="p">:</span><span class="w"> </span><span class="kc">flex</span><span class="p">;</span>
+<span class="w"> </span><span class="k">justify-content</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span>
+<span class="w"> </span><span class="k">align-items</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="p">.</span><span class="nc">arjs-loader</span><span class="w"> </span><span class="nt">div</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">text-align</span><span class="p">:</span><span class="w"> </span><span class="kc">center</span><span class="p">;</span>
+<span class="w"> </span><span class="k">font-size</span><span class="p">:</span><span class="w"> </span><span class="mf">1.25</span><span class="kt">em</span><span class="p">;</span>
+<span class="w"> </span><span class="k">color</span><span class="p">:</span><span class="w"> </span><span class="kc">white</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
<span class="p">&lt;/</span><span class="nt">style</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">body</span> <span class="na">style</span><span class="o">=</span><span class="s">&quot;margin : 0px; overflow: hidden;&quot;</span><span class="p">&gt;</span>
diff --git a/docs/posts/2020-10-11-macOS-Virtual-Cam-OBS.html b/docs/posts/2020-10-11-macOS-Virtual-Cam-OBS.html
index 2823d2a..d4b5038 100644
--- a/docs/posts/2020-10-11-macOS-Virtual-Cam-OBS.html
+++ b/docs/posts/2020-10-11-macOS-Virtual-Cam-OBS.html
@@ -154,7 +154,9 @@ brew cask install obs-virtualcam
<link rel="stylesheet" href="/assets/posts/obs/dics.css"></p>
<script src="/assets/posts/obs/dics.js"></script>
-</head>
+
+<p></head></p>
+
<script>
new Dics({
diff --git a/docs/posts/2020-11-17-Lets-Encrypt-DuckDns.html b/docs/posts/2020-11-17-Lets-Encrypt-DuckDns.html
index bc1f6c4..0060954 100644
--- a/docs/posts/2020-11-17-Lets-Encrypt-DuckDns.html
+++ b/docs/posts/2020-11-17-Lets-Encrypt-DuckDns.html
@@ -61,14 +61,14 @@
<h2>Dependencies</h2>
<div class="codehilite">
-<pre><span></span><code>sudo apt update <span class="o">&amp;&amp;</span> sudo apt install certbot -y
+<pre><span></span><code>sudo<span class="w"> </span>apt<span class="w"> </span>update<span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span>sudo<span class="w"> </span>apt<span class="w"> </span>install<span class="w"> </span>certbot<span class="w"> </span>-y
</code></pre>
</div>
<h2>Get the Certificate</h2>
<div class="codehilite">
-<pre><span></span><code>sudo certbot certonly --manual --preferred-challenges dns-01 --email senpai@email.com -d mydomain.duckdns.org
+<pre><span></span><code>sudo<span class="w"> </span>certbot<span class="w"> </span>certonly<span class="w"> </span>--manual<span class="w"> </span>--preferred-challenges<span class="w"> </span>dns-01<span class="w"> </span>--email<span class="w"> </span>senpai@email.com<span class="w"> </span>-d<span class="w"> </span>mydomain.duckdns.org
</code></pre>
</div>
@@ -84,25 +84,25 @@
<p>You can check if the TXT records have been updated by using the <code>dig</code> command:</p>
<div class="codehilite">
-<pre><span></span><code>dig navanspi.duckdns.org TXT
-<span class="p">;</span> &lt;&lt;&gt;&gt; DiG <span class="m">9</span>.16.1-Ubuntu &lt;&lt;&gt;&gt; navanspi.duckdns.org TXT
-<span class="p">;;</span> global options: +cmd
-<span class="p">;;</span> Got answer:
-<span class="p">;;</span> -&gt;&gt;HEADER<span class="s">&lt;&lt;- opco</span>de: QUERY, status: NOERROR, id: <span class="m">27592</span>
-<span class="p">;;</span> flags: qr rd ra<span class="p">;</span> QUERY: <span class="m">1</span>, ANSWER: <span class="m">1</span>, AUTHORITY: <span class="m">0</span>, ADDITIONAL: <span class="m">1</span>
-
-<span class="p">;;</span> OPT PSEUDOSECTION:
-<span class="p">;</span> EDNS: version: <span class="m">0</span>, flags:<span class="p">;</span> udp: <span class="m">65494</span>
-<span class="p">;;</span> QUESTION SECTION:
-<span class="p">;</span>navanspi.duckdns.org. IN TXT
-
-<span class="p">;;</span> ANSWER SECTION:
-navanspi.duckdns.org. <span class="m">60</span> IN TXT <span class="s2">&quot;4OKbijIJmc82Yv2NiGVm1RmaBHSCZ_230qNtj9YA-qk&quot;</span>
-
-<span class="p">;;</span> Query time: <span class="m">275</span> msec
-<span class="p">;;</span> SERVER: <span class="m">127</span>.0.0.53#53<span class="o">(</span><span class="m">127</span>.0.0.53<span class="o">)</span>
-<span class="p">;;</span> WHEN: Tue Nov <span class="m">17</span> <span class="m">15</span>:23:15 IST <span class="m">2020</span>
-<span class="p">;;</span> MSG SIZE rcvd: <span class="m">105</span>
+<pre><span></span><code>dig<span class="w"> </span>navanspi.duckdns.org<span class="w"> </span>TXT
+<span class="p">;</span><span class="w"> </span>&lt;&lt;&gt;&gt;<span class="w"> </span>DiG<span class="w"> </span><span class="m">9</span>.16.1-Ubuntu<span class="w"> </span>&lt;&lt;&gt;&gt;<span class="w"> </span>navanspi.duckdns.org<span class="w"> </span>TXT
+<span class="p">;;</span><span class="w"> </span>global<span class="w"> </span>options:<span class="w"> </span>+cmd
+<span class="p">;;</span><span class="w"> </span>Got<span class="w"> </span>answer:
+<span class="p">;;</span><span class="w"> </span>-&gt;&gt;HEADER<span class="s">&lt;&lt;- opco</span>de:<span class="w"> </span>QUERY,<span class="w"> </span>status:<span class="w"> </span>NOERROR,<span class="w"> </span>id:<span class="w"> </span><span class="m">27592</span>
+<span class="p">;;</span><span class="w"> </span>flags:<span class="w"> </span>qr<span class="w"> </span>rd<span class="w"> </span>ra<span class="p">;</span><span class="w"> </span>QUERY:<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>ANSWER:<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>AUTHORITY:<span class="w"> </span><span class="m">0</span>,<span class="w"> </span>ADDITIONAL:<span class="w"> </span><span class="m">1</span>
+
+<span class="p">;;</span><span class="w"> </span>OPT<span class="w"> </span>PSEUDOSECTION:
+<span class="p">;</span><span class="w"> </span>EDNS:<span class="w"> </span>version:<span class="w"> </span><span class="m">0</span>,<span class="w"> </span>flags:<span class="p">;</span><span class="w"> </span>udp:<span class="w"> </span><span class="m">65494</span>
+<span class="p">;;</span><span class="w"> </span>QUESTION<span class="w"> </span>SECTION:
+<span class="p">;</span>navanspi.duckdns.org.<span class="w"> </span>IN<span class="w"> </span>TXT
+
+<span class="p">;;</span><span class="w"> </span>ANSWER<span class="w"> </span>SECTION:
+navanspi.duckdns.org.<span class="w"> </span><span class="m">60</span><span class="w"> </span>IN<span class="w"> </span>TXT<span class="w"> </span><span class="s2">&quot;4OKbijIJmc82Yv2NiGVm1RmaBHSCZ_230qNtj9YA-qk&quot;</span>
+
+<span class="p">;;</span><span class="w"> </span>Query<span class="w"> </span>time:<span class="w"> </span><span class="m">275</span><span class="w"> </span>msec
+<span class="p">;;</span><span class="w"> </span>SERVER:<span class="w"> </span><span class="m">127</span>.0.0.53#53<span class="o">(</span><span class="m">127</span>.0.0.53<span class="o">)</span>
+<span class="p">;;</span><span class="w"> </span>WHEN:<span class="w"> </span>Tue<span class="w"> </span>Nov<span class="w"> </span><span class="m">17</span><span class="w"> </span><span class="m">15</span>:23:15<span class="w"> </span>IST<span class="w"> </span><span class="m">2020</span>
+<span class="p">;;</span><span class="w"> </span>MSG<span class="w"> </span>SIZE<span class="w"> </span>rcvd:<span class="w"> </span><span class="m">105</span>
</code></pre>
</div>
@@ -119,14 +119,14 @@ navanspi.duckdns.org. <span class="m">60</span> IN TXT <span class="
<p>Example Gunicorn command for running a web-app:</p>
<div class="codehilite">
-<pre><span></span><code>gunicorn api:app -k uvicorn.workers.UvicornWorker -b <span class="m">0</span>.0.0.0:7589
+<pre><span></span><code>gunicorn<span class="w"> </span>api:app<span class="w"> </span>-k<span class="w"> </span>uvicorn.workers.UvicornWorker<span class="w"> </span>-b<span class="w"> </span><span class="m">0</span>.0.0.0:7589
</code></pre>
</div>
<p>To use the certificate with it, simply copy the <code>cert.pem</code> and <code>privkey.pem</code> to your working directory ( change the appropriate permissions ) and include them in the command</p>
<div class="codehilite">
-<pre><span></span><code>gunicorn api:app -k uvicorn.workers.UvicornWorker -b <span class="m">0</span>.0.0.0:7589 --certfile<span class="o">=</span>cert.pem --keyfile<span class="o">=</span>privkey.pem
+<pre><span></span><code>gunicorn<span class="w"> </span>api:app<span class="w"> </span>-k<span class="w"> </span>uvicorn.workers.UvicornWorker<span class="w"> </span>-b<span class="w"> </span><span class="m">0</span>.0.0.0:7589<span class="w"> </span>--certfile<span class="o">=</span>cert.pem<span class="w"> </span>--keyfile<span class="o">=</span>privkey.pem
</code></pre>
</div>
diff --git a/docs/posts/2020-12-1-HTML-JS-RSS-Feed.html b/docs/posts/2020-12-1-HTML-JS-RSS-Feed.html
index 84c6840..cf1936f 100644
--- a/docs/posts/2020-12-1-HTML-JS-RSS-Feed.html
+++ b/docs/posts/2020-12-1-HTML-JS-RSS-Feed.html
@@ -80,176 +80,176 @@
<span class="p">&lt;/</span><span class="nt">main</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&quot;https://gitcdn.xyz/repo/rbren/rss-parser/master/dist/rss-parser.js&quot;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
-<span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span><span class="w"></span>
-
-<span class="kd">const</span><span class="w"> </span><span class="nx">feeds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;BuzzFeed - India&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.buzzfeed.com/in.xml&quot;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;summary&quot;</span><span class="o">:</span><span class="kc">true</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;New Yorker&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;http://www.newyorker.com/feed/news&quot;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;Vox&quot;</span><span class="o">:</span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.vox.com/rss/index.xml&quot;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;limit&quot;</span><span class="o">:</span><span class="w"> </span><span class="mf">3</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;r/Jokes&quot;</span><span class="o">:</span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://reddit.com/r/Jokes/hot/.rss?sort=hot&quot;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;ignore&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;repost&quot;</span><span class="p">,</span><span class="s2">&quot;discord&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">const</span><span class="w"> </span><span class="nx">config_extra</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="s2">&quot;Responsive-Images&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
-<span class="s2">&quot;direct-link&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
-<span class="s2">&quot;show-date&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
-<span class="s2">&quot;left-column&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
-<span class="s2">&quot;defaults&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;limit&quot;</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="s2">&quot;summary&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">const</span><span class="w"> </span><span class="nx">CORS_PROXY</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;https://cors-anywhere.herokuapp.com/&quot;</span><span class="w"></span>
-
-<span class="kd">var</span><span class="w"> </span><span class="nx">contents_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="nx">contents_title</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;Contents&quot;</span><span class="w"></span>
-<span class="nx">contents_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents_title</span><span class="p">)</span><span class="w"></span>
-
-<span class="k">async</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">){</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">count_lim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">count_lim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">count_lim</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">count_lim</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">show_summary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">show_summary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">show_summary</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">show_summary</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;ignore&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">href</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;#&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="w"></span>
-<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;list-group-item&quot;</span><span class="p">,</span><span class="s2">&quot;list-group-item-action&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">key</span><span class="w"></span>
-<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">feed_div</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">key</span><span class="w"></span>
-<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">key</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">title</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;From &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">title</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;feed&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">feed_div</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">parser</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">RSSParser</span><span class="p">();</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">countPosts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="w"></span>
-<span class="w"> </span><span class="nx">parser</span><span class="p">.</span><span class="nx">parseURL</span><span class="p">(</span><span class="nx">CORS_PROXY</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;link&quot;</span><span class="p">],</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span><span class="w"> </span><span class="nx">feed</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="nx">err</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">feed</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">countPosts</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">count_lim</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="w"></span>
-<span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">title</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">content</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">skip</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card&quot;</span><span class="p">,</span><span class="s2">&quot;mb-3&quot;</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">row</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;row&quot;</span><span class="p">,</span><span class="s2">&quot;no-gutters&quot;</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left_col</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">left_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-2&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left_col_body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">right_col</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">right_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-10&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">node_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h5&quot;</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-header&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_title</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">title</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node_body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node_content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">show_summary</span><span class="p">){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">content</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;direct-link&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_link</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_link</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_link</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&lt;b&gt;Link:&lt;/b&gt; &lt;a href=&#39;&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">link</span><span class="w"> </span><span class="o">+</span><span class="s2">&quot;&#39;&gt;Direct Link&lt;/a&gt;&quot;</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;show-date&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_date</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_date</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_date</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&lt;p&gt;&lt;b&gt;Date: &lt;/b&gt;&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">pubDate</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">&quot;&lt;/p&gt;&quot;</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_title</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_content</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">right_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_body</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="nx">left_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col_body</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">right_col</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span><span class="w"></span>
-
-<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">key</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="nx">countPosts</span><span class="o">+=</span><span class="mf">1</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">})</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;Responsive-Images&quot;</span><span class="p">]){</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">inputs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">&#39;img&#39;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">inputs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">inputs</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;img-fluid&quot;</span><span class="p">)</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="p">})</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-<span class="p">(</span><span class="k">async</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">feeds</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span><span class="w"></span>
-<span class="p">}})();</span><span class="w"></span>
+<span class="p">&lt;</span><span class="nt">script</span><span class="p">&gt;</span>
+
+<span class="kd">const</span><span class="w"> </span><span class="nx">feeds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;BuzzFeed - India&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.buzzfeed.com/in.xml&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="s2">&quot;summary&quot;</span><span class="o">:</span><span class="kc">true</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="s2">&quot;New Yorker&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;http://www.newyorker.com/feed/news&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="s2">&quot;Vox&quot;</span><span class="o">:</span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://www.vox.com/rss/index.xml&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="s2">&quot;limit&quot;</span><span class="o">:</span><span class="w"> </span><span class="mf">3</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="s2">&quot;r/Jokes&quot;</span><span class="o">:</span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;link&quot;</span><span class="o">:</span><span class="s2">&quot;https://reddit.com/r/Jokes/hot/.rss?sort=hot&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="s2">&quot;ignore&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;repost&quot;</span><span class="p">,</span><span class="s2">&quot;discord&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="p">}</span>
+
+<span class="kd">const</span><span class="w"> </span><span class="nx">config_extra</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="s2">&quot;Responsive-Images&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="s2">&quot;direct-link&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;show-date&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;left-column&quot;</span><span class="o">:</span><span class="kc">false</span><span class="p">,</span>
+<span class="s2">&quot;defaults&quot;</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="s2">&quot;limit&quot;</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span>
+<span class="w"> </span><span class="s2">&quot;summary&quot;</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span>
+<span class="p">}</span>
+<span class="p">}</span>
+
+<span class="kd">const</span><span class="w"> </span><span class="nx">CORS_PROXY</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;https://cors-anywhere.herokuapp.com/&quot;</span>
+
+<span class="kd">var</span><span class="w"> </span><span class="nx">contents_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">)</span>
+<span class="nx">contents_title</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;Contents&quot;</span>
+<span class="nx">contents_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span>
+<span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents_title</span><span class="p">)</span>
+
+<span class="k">async</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">){</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">count_lim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">count_lim</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">count_lim</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;limit&quot;</span><span class="p">]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">count_lim</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">show_summary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">show_summary</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">show_summary</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;defaults&quot;</span><span class="p">][</span><span class="s2">&quot;summary&quot;</span><span class="p">]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">show_summary</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;ignore&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">ignore_tags</span><span class="w"> </span><span class="o">===</span><span class="w"> </span><span class="kc">undefined</span><span class="p">)</span><span class="w"> </span><span class="o">?</span><span class="w"> </span><span class="p">[]</span><span class="w"> </span><span class="o">:</span><span class="w"> </span><span class="nx">ignore_tags</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">contents</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;a&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">href</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;#&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span>
+<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;list-group-item&quot;</span><span class="p">,</span><span class="s2">&quot;list-group-item-action&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">contents</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">key</span>
+<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;contents&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">contents</span><span class="p">)</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">feed_div</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">key</span>
+<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">setAttribute</span><span class="p">(</span><span class="s2">&quot;id&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">key</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h2&quot;</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">title</span><span class="p">.</span><span class="nx">textContent</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;From &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">key</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;pb-1&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">feed_div</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">title</span><span class="p">)</span>
+<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;feed&quot;</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">feed_div</span><span class="p">)</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">parser</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">RSSParser</span><span class="p">();</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">countPosts</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span>
+<span class="w"> </span><span class="nx">parser</span><span class="p">.</span><span class="nx">parseURL</span><span class="p">(</span><span class="nx">CORS_PROXY</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">feeds</span><span class="p">[</span><span class="nx">key</span><span class="p">][</span><span class="s2">&quot;link&quot;</span><span class="p">],</span><span class="w"> </span><span class="kd">function</span><span class="p">(</span><span class="nx">err</span><span class="p">,</span><span class="w"> </span><span class="nx">feed</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="k">throw</span><span class="w"> </span><span class="nx">err</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">feed</span><span class="p">.</span><span class="nx">items</span><span class="p">.</span><span class="nx">forEach</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">entry</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">countPosts</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">count_lim</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span>
+<span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">ignore_tags</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">title</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">entry</span><span class="p">.</span><span class="nx">content</span><span class="p">.</span><span class="nx">includes</span><span class="p">(</span><span class="nx">ignore_tags</span><span class="p">[</span><span class="nx">i</span><span class="p">])){</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">skip</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">skip</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">node</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card&quot;</span><span class="p">,</span><span class="s2">&quot;mb-3&quot;</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">row</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;row&quot;</span><span class="p">,</span><span class="s2">&quot;no-gutters&quot;</span><span class="p">)</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left_col</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">left_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-2&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">left_col_body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">right_col</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">right_col</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;col-md-10&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">node_title</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;h5&quot;</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nx">node_title</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-header&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_title</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">title</span>
+
+<span class="w"> </span><span class="nx">node_body</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;div&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_body</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-body&quot;</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nx">node_content</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">show_summary</span><span class="p">){</span>
+<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">content</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;direct-link&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">node_link</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_link</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_link</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&lt;b&gt;Link:&lt;/b&gt; &lt;a href=&#39;&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">link</span><span class="w"> </span><span class="o">+</span><span class="s2">&quot;&#39;&gt;Direct Link&lt;/a&gt;&quot;</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_link</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;show-date&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">node_date</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s2">&quot;p&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_date</span><span class="p">.</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;card-text&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">node_date</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;&lt;p&gt;&lt;b&gt;Date: &lt;/b&gt;&quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">entry</span><span class="p">.</span><span class="nx">pubDate</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="s2">&quot;&lt;/p&gt;&quot;</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">left_col_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">node_content</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_date</span><span class="p">)</span>
+
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_title</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nx">node_body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_content</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nx">right_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node_body</span><span class="p">)</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;left-column&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="nx">left_col</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col_body</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">left_col</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="nx">row</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">right_col</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nx">node</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">row</span><span class="p">)</span>
+
+<span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">key</span><span class="p">).</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span>
+<span class="w"> </span><span class="nx">countPosts</span><span class="o">+=</span><span class="mf">1</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">})</span>
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">config_extra</span><span class="p">[</span><span class="s2">&quot;Responsive-Images&quot;</span><span class="p">]){</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">inputs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s1">&#39;img&#39;</span><span class="p">)</span>
+<span class="w"> </span><span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">inputs</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">inputs</span><span class="p">[</span><span class="nx">i</span><span class="p">].</span><span class="nx">classList</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="s2">&quot;img-fluid&quot;</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="p">})</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kc">true</span>
+<span class="p">}</span>
+<span class="p">(</span><span class="k">async</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="p">{</span>
+<span class="k">for</span><span class="p">(</span><span class="kd">var</span><span class="w"> </span><span class="nx">key</span><span class="w"> </span><span class="ow">in</span><span class="w"> </span><span class="nx">feeds</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">await</span><span class="w"> </span><span class="nx">myfunc</span><span class="p">(</span><span class="nx">key</span><span class="p">);</span>
+<span class="p">}})();</span>
<span class="p">&lt;/</span><span class="nt">script</span><span class="p">&gt;</span>
<span class="p">&lt;</span><span class="nt">noscript</span><span class="p">&gt;</span>Uh Oh! Your browser does not support JavaScript or JavaScript is currently disabled. Please enable JavaScript or switch to a different browser.<span class="p">&lt;/</span><span class="nt">noscript</span><span class="p">&gt;</span>
diff --git a/docs/posts/2021-06-27-Crude-ML-AI-Powered-Chatbot-Swift.html b/docs/posts/2021-06-27-Crude-ML-AI-Powered-Chatbot-Swift.html
index c29bb8c..887b617 100644
--- a/docs/posts/2021-06-27-Crude-ML-AI-Powered-Chatbot-Swift.html
+++ b/docs/posts/2021-06-27-Crude-ML-AI-Powered-Chatbot-Swift.html
@@ -103,20 +103,20 @@ I created a sample JSON with only 3 examples (I know, very less, but works for a
<p><img src="/assets/posts/swift-chatbot/drugs-json.png" alt="Screenshot of Sample Dataset" /></p>
<div class="codehilite">
-<pre><span></span><code><span class="p">[</span><span class="w"></span>
-<span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Tell&quot;</span><span class="p">,</span><span class="s2">&quot;me&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;drug&quot;</span><span class="p">,</span><span class="s2">&quot;Aspirin&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Please&quot;</span><span class="p">,</span><span class="s2">&quot;tell&quot;</span><span class="p">,</span><span class="s2">&quot;me&quot;</span><span class="p">,</span><span class="s2">&quot;information&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;compound&quot;</span><span class="p">,</span><span class="s2">&quot;salicylic&quot;</span><span class="p">,</span><span class="s2">&quot;acid&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Information&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;compound&quot;</span><span class="p">,</span><span class="s2">&quot;Ibuprofen&quot;</span><span class="p">,</span><span class="s2">&quot;please&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span><span class="w"></span>
-<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="p">]</span><span class="w"></span>
+<pre><span></span><code><span class="p">[</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Tell&quot;</span><span class="p">,</span><span class="s2">&quot;me&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;drug&quot;</span><span class="p">,</span><span class="s2">&quot;Aspirin&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span>
+<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Please&quot;</span><span class="p">,</span><span class="s2">&quot;tell&quot;</span><span class="p">,</span><span class="s2">&quot;me&quot;</span><span class="p">,</span><span class="s2">&quot;information&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;compound&quot;</span><span class="p">,</span><span class="s2">&quot;salicylic&quot;</span><span class="p">,</span><span class="s2">&quot;acid&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span>
+<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nt">&quot;tokens&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;Information&quot;</span><span class="p">,</span><span class="s2">&quot;about&quot;</span><span class="p">,</span><span class="s2">&quot;the&quot;</span><span class="p">,</span><span class="s2">&quot;compound&quot;</span><span class="p">,</span><span class="s2">&quot;Ibuprofen&quot;</span><span class="p">,</span><span class="s2">&quot;please&quot;</span><span class="p">,</span><span class="s2">&quot;.&quot;</span><span class="p">],</span>
+<span class="w"> </span><span class="nt">&quot;labels&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;COMPOUND&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">,</span><span class="s2">&quot;NONE&quot;</span><span class="p">]</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="p">]</span>
</code></pre>
</div>
diff --git a/docs/posts/2022-08-05-Why-You-No-Host.html b/docs/posts/2022-08-05-Why-You-No-Host.html
index 208f6dd..c4a2295 100644
--- a/docs/posts/2022-08-05-Why-You-No-Host.html
+++ b/docs/posts/2022-08-05-Why-You-No-Host.html
@@ -79,7 +79,7 @@
</ul></li>
<li>How about account suspensions without any prior notice?
<ul>
-<li><a rel="noopener" target="_blank" href="https://hn.algolia.com/?dateRange=all&amp;page=0&amp;prefix=true&amp;query=account%20suspended&amp;sort=byPopularity&amp;type=story">Hacker News stories with “account suspended“</a></li>
+<li><a rel="noopener" target="_blank" href="https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=account%20suspended&sort=byPopularity&type=story">Hacker News stories with “account suspended“</a></li>
</ul></li>
<li>Do you value security and privacy?</li>
<li>Or, do you want a new hobby?</li>
diff --git a/docs/posts/2023-02-08-Interact-with-siri-from-the-terminal.html b/docs/posts/2023-02-08-Interact-with-siri-from-the-terminal.html
index 2db536b..9b8973b 100644
--- a/docs/posts/2023-02-08-Interact-with-siri-from-the-terminal.html
+++ b/docs/posts/2023-02-08-Interact-with-siri-from-the-terminal.html
@@ -104,7 +104,7 @@
<span class="k">def</span> <span class="nf">execute_command</span><span class="p">(</span><span class="n">command_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
- <span class="sd">&quot;&quot;&quot;Execute a Siri command.&quot;&quot;&quot;</span>
+<span class="w"> </span><span class="sd">&quot;&quot;&quot;Execute a Siri command.&quot;&quot;&quot;</span>
<span class="n">script</span> <span class="o">=</span> <span class="n">applescript</span><span class="o">.</span><span class="n">AppleScript</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> tell application &quot;System Events&quot; to tell the front menu bar of process &quot;SystemUIServer&quot;</span>
@@ -141,8 +141,8 @@
<p>Usage:</p>
<div class="codehilite">
-<pre><span></span><code>python3 main.py <span class="s2">&quot;play some taylor swift&quot;</span>
-python3 main.py <span class="s2">&quot;turn off the lights and play some music&quot;</span> --openai
+<pre><span></span><code>python3<span class="w"> </span>main.py<span class="w"> </span><span class="s2">&quot;play some taylor swift&quot;</span>
+python3<span class="w"> </span>main.py<span class="w"> </span><span class="s2">&quot;turn off the lights and play some music&quot;</span><span class="w"> </span>--openai
</code></pre>
</div>
@@ -179,7 +179,7 @@ python3 main.py <span class="s2">&quot;turn off the lights and play some music&q
<pre><span></span><code><span class="kn">import</span> <span class="nn">applescript</span>
<span class="k">def</span> <span class="nf">execute_command</span><span class="p">(</span><span class="n">command_text</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="kc">None</span><span class="p">:</span>
- <span class="sd">&quot;&quot;&quot;Execute a Siri command.&quot;&quot;&quot;</span>
+<span class="w"> </span><span class="sd">&quot;&quot;&quot;Execute a Siri command.&quot;&quot;&quot;</span>
<span class="n">script</span> <span class="o">=</span> <span class="n">applescript</span><span class="o">.</span><span class="n">AppleScript</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> tell application &quot;System Events&quot; to tell the front menu bar of process &quot;SystemUIServer&quot;</span>
diff --git a/docs/posts/2023-04-30-n-body-simulation.html b/docs/posts/2023-04-30-n-body-simulation.html
index cb0bf6c..e12380a 100644
--- a/docs/posts/2023-04-30-n-body-simulation.html
+++ b/docs/posts/2023-04-30-n-body-simulation.html
@@ -89,46 +89,46 @@
<pre><span></span><code><span class="cm">/*</span>
<span class="cm"> * Earth - Sun Orbit Plot</span>
<span class="cm"> * Taken from Numerics tutorial</span>
-<span class="cm"> */</span><span class="w"></span>
-
-<span class="kd">const</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67e-11</span><span class="p">;</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2e30</span><span class="p">;</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">AU</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">;</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">v0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">);</span><span class="w"> </span><span class="c1">// SI</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span><span class="w"> </span><span class="nx">v</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">dv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">],</span><span class="w"> </span><span class="o">-</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">dr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[...</span><span class="nx">v</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">dr</span><span class="p">,</span><span class="w"> </span><span class="nx">dv</span><span class="p">];</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="c1">// initialize system</span><span class="w"></span>
-<span class="kd">let</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">AU</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">theta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">atan2</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">],</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]);</span><span class="w"></span>
-<span class="kd">let</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">v0</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">theta</span><span class="p">),</span><span class="w"> </span><span class="nx">v0</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">theta</span><span class="p">)];</span><span class="w"></span>
-
-<span class="kd">const</span><span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span><span class="w"> </span><span class="c1">// years</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">dt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">t</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">t</span><span class="p">[</span><span class="mf">0</span><span class="p">])</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">;</span><span class="w"> </span><span class="c1">// s</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">x4Plot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">y4Plot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span><span class="w"></span>
-
-<span class="c1">// integrate using RK4!</span><span class="w"></span>
-<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span><span class="w"> </span><span class="nx">v</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k1</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k1</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">])).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">k1</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k4</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">k1</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k4</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">x4Plot</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="nx">y4Plot</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="c1">// make data for plot</span><span class="w"></span>
-<span class="kd">var</span><span class="w"> </span><span class="nx">sun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">earth</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">x4Plot</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">),</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">y4Plot</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">)</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
-<span class="kd">const</span><span class="w"> </span><span class="nx">circle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">)),</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">))</span><span class="w"> </span><span class="p">};</span><span class="w"></span>
+<span class="cm"> */</span>
+
+<span class="kd">const</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67e-11</span><span class="p">;</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2e30</span><span class="p">;</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">AU</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">;</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">v0</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">);</span><span class="w"> </span><span class="c1">// SI</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span><span class="w"> </span><span class="nx">v</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">dv</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">],</span><span class="w"> </span><span class="o">-</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Msun</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">]];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">dr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[...</span><span class="nx">v</span><span class="p">];</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">dr</span><span class="p">,</span><span class="w"> </span><span class="nx">dv</span><span class="p">];</span>
+<span class="p">}</span>
+
+<span class="c1">// initialize system</span>
+<span class="kd">let</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">AU</span><span class="p">,</span><span class="w"> </span><span class="mf">0</span><span class="p">];</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">theta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">atan2</span><span class="p">(</span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">],</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">]);</span>
+<span class="kd">let</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="nx">v0</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">theta</span><span class="p">),</span><span class="w"> </span><span class="nx">v0</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">theta</span><span class="p">)];</span>
+
+<span class="kd">const</span><span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">0.0</span><span class="p">);</span><span class="w"> </span><span class="c1">// years</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">dt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">t</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">t</span><span class="p">[</span><span class="mf">0</span><span class="p">])</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">;</span><span class="w"> </span><span class="c1">// s</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">x4Plot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">y4Plot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="mf">0</span><span class="p">);</span>
+
+<span class="c1">// integrate using RK4!</span>
+<span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">t</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">,</span><span class="w"> </span><span class="nx">v</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k1</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k1</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">2</span><span class="p">)).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">dR</span><span class="p">(</span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]),</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">])).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">dt</span><span class="p">));</span>
+<span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">ri</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">ri</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">k1</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k4</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">v</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">vi</span><span class="p">,</span><span class="w"> </span><span class="nx">j</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">vi</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">k1</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k2</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">k3</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">k4</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">j</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">6</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">x4Plot</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span>
+<span class="w"> </span><span class="nx">y4Plot</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
+<span class="p">}</span>
+
+<span class="c1">// make data for plot</span>
+<span class="kd">var</span><span class="w"> </span><span class="nx">sun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">};</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">earth</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">x4Plot</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">),</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">y4Plot</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">AU</span><span class="p">)</span><span class="w"> </span><span class="p">};</span>
+<span class="kd">const</span><span class="w"> </span><span class="nx">circle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">)),</span><span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="mf">1001</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">100</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">))</span><span class="w"> </span><span class="p">};</span>
</code></pre>
</div>
@@ -150,76 +150,77 @@ Next, the function dR takes the position r and velocity v of Earth as input and
<h3>Plotting the orbit</h3>
-<p>Now that we have the data for the Sun's position, Earth's orbit, and the reference circle, we can plot them using Plotly.js.
- <div class="codehilite">
- <pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="nx">traceSun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">sun</span><span class="p">.</span><span class="nx">x</span><span class="p">],</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">sun</span><span class="p">.</span><span class="nx">y</span><span class="p">],</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;markers&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;star&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;gold&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Sun&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="p">};</span><span class="w"></span>
- <br />
- <span class="kd">const</span><span class="w"> </span><span class="nx">traceEarth</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">earth</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">earth</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;lines&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;white&quot;</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Earth&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="p">};</span><span class="w"></span>
- <br />
- <span class="kd">const</span><span class="w"> </span><span class="nx">traceOrbit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">circle</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="nx">circle</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;lines&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;crimson&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">dash</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;dash&quot;</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;1 AU Circle&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="p">};</span><span class="w"></span>
- <br />
- <span class="kd">const</span><span class="w"> </span><span class="nx">earthSunLayout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Earth-Sun Orbit&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;x [AU]&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">],</span><span class="w"></span>
- <span class="w"> </span><span class="nx">showgrid</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">gridcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;rgba(255,255,255,0.5)&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">gridwidth</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">zeroline</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">tickmode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;auto&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">nticks</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;y [AU]&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">],</span><span class="w"></span>
- <span class="w"> </span><span class="nx">showgrid</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">gridcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;rgba(255,255,255,0.5)&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">gridwidth</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">zeroline</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">tickmode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;auto&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">nticks</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">margin</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">l</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">r</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">b</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">t</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">pad</span><span class="o">:</span><span class="w"> </span><span class="mf">4</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">paper<em>bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;black&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">plot</em>bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;black&quot;</span><span class="p">,</span><span class="w"></span>
- <span class="p">};</span><span class="w"></span>
- <span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,[</span><span class="nx">traceSun</span><span class="p">,</span><span class="nx">traceEarth</span><span class="p">,</span><span class="nx">traceOrbit</span><span class="p">],</span><span class="w"> </span><span class="nx">earthSunLayout</span><span class="p">);</span><span class="w"></span>
- </code></pre>
- </div></p>
+<p>Now that we have the data for the Sun's position, Earth's orbit, and the reference circle, we can plot them using Plotly.js.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">traceSun</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">sun</span><span class="p">.</span><span class="nx">x</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">sun</span><span class="p">.</span><span class="nx">y</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;markers&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;star&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;gold&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Sun&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceEarth</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">earth</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">earth</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;lines&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;white&quot;</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Earth&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceOrbit</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">circle</span><span class="p">.</span><span class="nx">x</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="nx">circle</span><span class="p">.</span><span class="nx">y</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;lines&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;crimson&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">dash</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;dash&quot;</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;1 AU Circle&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">earthSunLayout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;Earth-Sun Orbit&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;x [AU]&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">showgrid</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">gridcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;rgba(255,255,255,0.5)&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">gridwidth</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">zeroline</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">tickmode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;auto&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">nticks</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;y [AU]&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">showgrid</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">gridcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;rgba(255,255,255,0.5)&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">gridwidth</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">zeroline</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">tickmode</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;auto&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">nticks</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">margin</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">l</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">r</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">b</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">t</span><span class="o">:</span><span class="w"> </span><span class="mf">50</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">pad</span><span class="o">:</span><span class="w"> </span><span class="mf">4</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">paper_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;black&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">plot_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s2">&quot;black&quot;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">};</span>
+<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,[</span><span class="nx">traceSun</span><span class="p">,</span><span class="nx">traceEarth</span><span class="p">,</span><span class="nx">traceOrbit</span><span class="p">],</span><span class="w"> </span><span class="nx">earthSunLayout</span><span class="p">);</span>
+</code></pre>
+</div>
<h2>Figure of 8 orbit</h2>
@@ -240,78 +241,78 @@ Next, the function dR takes the position r and velocity v of Earth as input and
<p>The code for this simulation is very similar to the Earth-Sun orbit simulation, except that we now have three bodies instead of two. We also use a different set of initial conditions to generate the figure of 8 orbit.</p>
<div class="codehilite">
-<pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">];</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">delta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">clone</span><span class="p">(</span><span class="nx">coords</span><span class="p">);</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">xn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">yn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaVx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaVy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.0</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">sep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span><span class="w"> </span><span class="mf">2</span><span class="p">));</span><span class="w"> </span><span class="c1">// Euclidean distance</span><span class="w"></span>
-<span class="w"> </span><span class="nx">deltaVx</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">sep</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">deltaVy</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">sep</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">deltaVx</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">deltaVy</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vx</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vy</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">delta</span><span class="p">;</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">k4</span><span class="p">),</span><span class="w"> </span><span class="mf">1</span><span class="o">/</span><span class="mf">6</span><span class="p">));</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="c1">// Initial conditions setup</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">M</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.97000436</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.24208753</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.4662036850</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.933240737</span><span class="p">,</span><span class="w"> </span><span class="mf">0.4662036850</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.4323657300</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.86473146</span><span class="p">,</span><span class="w"> </span><span class="mf">0.4323657300</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">Ei</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">0.5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">sum</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">dotPow</span><span class="p">(</span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">dotPow</span><span class="p">(</span><span class="nx">vy</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))));</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">linspace</span><span class="p">(</span><span class="nx">start</span><span class="p">,</span><span class="w"> </span><span class="nx">stop</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">step</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">stop</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">start</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">num</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">num</span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">step</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">i</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="nx">vy</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">time</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">linspace</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">6.3259</span><span class="p">,</span><span class="w"> </span><span class="mf">1001</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">X</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">Y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">VX</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">VY</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">M</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">X</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">Y</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">VX</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">VX</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">VY</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">VY</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
+<pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">];</span>
+
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">delta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">clone</span><span class="p">(</span><span class="nx">coords</span><span class="p">);</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">xn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">yn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaVx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.0</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaVy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0.0</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">sep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">],</span><span class="w"> </span><span class="mf">2</span><span class="p">));</span><span class="w"> </span><span class="c1">// Euclidean distance</span>
+<span class="w"> </span><span class="nx">deltaVx</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">sep</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">deltaVy</span><span class="w"> </span><span class="o">-=</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="nx">sep</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">deltaVx</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">deltaVy</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vx</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">delta</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vy</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">delta</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+
+<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">k4</span><span class="p">),</span><span class="w"> </span><span class="mf">1</span><span class="o">/</span><span class="mf">6</span><span class="p">));</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="w"> </span><span class="c1">// Initial conditions setup</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">M</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="mf">0.97000436</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">0.0</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.24208753</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.4662036850</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.933240737</span><span class="p">,</span><span class="w"> </span><span class="mf">0.4662036850</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">vy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="mf">0.4323657300</span><span class="p">,</span><span class="w"> </span><span class="o">-</span><span class="mf">0.86473146</span><span class="p">,</span><span class="w"> </span><span class="mf">0.4323657300</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">Ei</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="mf">1</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">0.97000436</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">pow</span><span class="p">(</span><span class="mf">0.24208753</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">0.5</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">sum</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">dotPow</span><span class="p">(</span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">dotPow</span><span class="p">(</span><span class="nx">vy</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="p">))));</span>
+
+<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">linspace</span><span class="p">(</span><span class="nx">start</span><span class="p">,</span><span class="w"> </span><span class="nx">stop</span><span class="p">,</span><span class="w"> </span><span class="nx">num</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">step</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">stop</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">start</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">num</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">num</span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">start</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">step</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">i</span><span class="p">));</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="nx">vy</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">time</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">linspace</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">6.3259</span><span class="p">,</span><span class="w"> </span><span class="mf">1001</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">deltaT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span>
+
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">X</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">Y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">VX</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">VY</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">zeros</span><span class="p">(</span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">).</span><span class="nx">toArray</span><span class="p">();</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">M</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">X</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span>
+<span class="w"> </span><span class="nx">Y</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span>
+<span class="w"> </span><span class="nx">VX</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">VX</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span>
+<span class="w"> </span><span class="nx">VY</span><span class="p">.</span><span class="nx">forEach</span><span class="p">((</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">idx</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">VY</span><span class="p">[</span><span class="nx">idx</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">idx</span><span class="p">]);</span>
+<span class="w"> </span><span class="p">}</span>
</code></pre>
</div>
@@ -329,365 +330,369 @@ Next, the function dR takes the position r and velocity v of Earth as input and
<h3>Animation?</h3>
-<p>Now that we have time-series data, we need to animate it. We can use Plotly's animate function, as this does not force a full re-render, saving us some precious GPU and CPU cycles when we are trying to run this in the browser itself
- <div class="codehilite">
- <pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">plotClassicFunc</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span><span class="w"></span>
- <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">tailLength</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">tailLength</span><span class="p">;</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <br />
- <span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">currentIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">plotIndex</span><span class="p">;</span><span class="w"></span>
- <br />
- <span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">currentIndex</span><span class="p">].</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">currentIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <br />
- <span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
- <span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="p">];</span><span class="w"></span>
- <br />
- <span class="c1">// width: 1000, height: 400</span><span class="w"></span>
- <span class="kd">const</span><span class="w"> </span><span class="nx">layout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;∞ Three-Body Problem: t = &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">currentIndex</span><span class="p">].</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">),</span><span class="w"></span>
- <span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">]</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;y&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">scaleanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">scaleratio</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">]</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">plot<em>bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">paper</em>bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">font</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;white&#39;</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="p">};</span><span class="w"></span>
- <br />
- <span class="k">try</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="nx">Plotly</span><span class="p">.</span><span class="nx">animate</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">data</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="o">:</span><span class="w"> </span><span class="nx">layout</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">staticPlot</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">transition</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">},</span><span class="w"></span>
- <span class="w"> </span><span class="nx">frame</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="nx">redraw</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <span class="w"> </span><span class="p">});</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s1">&#39;plot&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">data</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="p">);</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <br />
- <br />
- <span class="nx">plotIndex</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">delay</span><span class="p">;</span><span class="w"></span>
- <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotClassic</span><span class="o">===</span><span class="kc">true</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">requestAnimationFrame</span><span class="p">(</span><span class="nx">plotClassicFunc</span><span class="p">);</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
- <span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"></span>
- <span class="w"> </span><span class="p">}</span><span class="w"></span>
- <span class="p">}</span><span class="w"></span>
- <br />
- <span class="p">}</span><span class="w"></span>
- </code></pre>
- </div></p>
+<p>Now that we have time-series data, we need to animate it. We can use Plotly's animate function, as this does not force a full re-render, saving us some precious GPU and CPU cycles when we are trying to run this in the browser itself</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">plotClassicFunc</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">1</span><span class="p">;</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">tailLength</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">length</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">tailLength</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">tailLength</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">currentIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">plotIndex</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">currentIndex</span><span class="p">].</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">e</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">currentIndex</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">X</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">Y</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="nx">tailLength</span><span class="p">,</span><span class="w"> </span><span class="nx">currentIndex</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;lines+markers&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">8</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">line</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">];</span>
+
+<span class="w"> </span><span class="c1">// width: 1000, height: 400</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">layout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;∞ Three-Body Problem: t = &#39;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">currentIndex</span><span class="p">].</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">),</span>
+<span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">1.1</span><span class="p">,</span><span class="mf">1.1</span><span class="p">]</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;y&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">scaleanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">scaleratio</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span><span class="mf">0.5</span><span class="p">]</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">plot_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">paper_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">font</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;white&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">animate</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">data</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="o">:</span><span class="w"> </span><span class="nx">layout</span>
+<span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">staticPlot</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">transition</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">frame</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">redraw</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">});</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s1">&#39;plot&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">data</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+
+
+<span class="w"> </span><span class="nx">plotIndex</span><span class="w"> </span><span class="o">+=</span><span class="w"> </span><span class="nx">delay</span><span class="p">;</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">plotClassic</span><span class="o">===</span><span class="kc">true</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">requestAnimationFrame</span><span class="p">(</span><span class="nx">plotClassicFunc</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="p">}</span>
+</code></pre>
+</div>
<h2>"General" N-Body Solver</h2>
<h3>Show me the code!</h3>
<div class="codehilite">
-<pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span><span class="w"></span>
-
-<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">k4</span><span class="p">),</span><span class="w"> </span><span class="mf">1</span><span class="o">/</span><span class="mf">6</span><span class="p">));</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">detectCollisionsEscape</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="nx">vy</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">V</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vx</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">v</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">v</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">vy</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">R</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">V</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">v</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">collision</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">rn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">R</span><span class="p">[</span><span class="nx">n</span><span class="p">],</span><span class="w"> </span><span class="nx">xn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">n</span><span class="p">],</span><span class="w"> </span><span class="nx">yn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">minSep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">rn</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">R</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">sep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">((</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">sep</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">minSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">collision</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">collisionInds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">n</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">sep</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">escape</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">escapeInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">nBodyStep</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Similar to our step function before, but keeping track of collisions</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">);</span><span class="w"> </span><span class="c1">// Update the positions as we did before</span><span class="w"></span>
-<span class="w"> </span><span class="c1">//console.log(detectCollisionsEscape(coords, deltaT, maxSep));</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">detectCollisionsEscape</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">);</span><span class="w"> </span><span class="c1">// Detect collisions/escapes</span><span class="w"></span>
-
-
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">collision</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Do inelastic collision and delete extra body (2 -&gt; 1)</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">i1</span><span class="p">,</span><span class="w"> </span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">x1</span><span class="p">,</span><span class="w"> </span><span class="nx">x2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">y1</span><span class="p">,</span><span class="w"> </span><span class="nx">y2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">vx1</span><span class="p">,</span><span class="w"> </span><span class="nx">vx2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">vy1</span><span class="p">,</span><span class="w"> </span><span class="nx">vy2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">px1</span><span class="p">,</span><span class="w"> </span><span class="nx">px2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vx1</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vx2</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">py1</span><span class="p">,</span><span class="w"> </span><span class="nx">py2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vy1</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vy2</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">px</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">px1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">px2</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">py</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">py1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">py2</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">newM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vfx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">px</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vfy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">py</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">x1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">x2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]);</span><span class="w"> </span><span class="c1">// Center of mass</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">y1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">y2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vfx</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vfy</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">masses</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">nBodies</span><span class="o">--</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="c1">// Could also implement condition for escape where we stop calculating forces but I&#39;m too lazy for now</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="nx">min</span><span class="p">,</span><span class="w"> </span><span class="nx">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">max</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">min</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">min</span><span class="p">;</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">arr</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">innerArr</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">innerArr</span><span class="p">.</span><span class="nx">slice</span><span class="p">());</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="kd">function</span><span class="w"> </span><span class="nx">genNBodyResults</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">tStop</span><span class="p">,</span><span class="w"> </span><span class="nx">nTPts</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodiesStop</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">btn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;startSim3&quot;</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="c1">// Set button text to Solving</span><span class="w"></span>
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">prevText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;Solving...&quot;</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">)];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2e30</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">Mp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1e4</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Initialize coordinates on ~Keplerian orbits</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">accept</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">accept</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Prevent a particle from spawning within 0.2 AU too close to &quot;star&quot;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">;</span><span class="w"> </span><span class="c1">// Say radius of 2 AU</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">r</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mf">0.2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">accept</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">theta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">theta</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">theta</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">r</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1000</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"> </span><span class="c1">// Perturb the velocities ever so slightly</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vTheta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">atan2</span><span class="p">(</span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">vTheta</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">vTheta</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="c1">//console.log(&#39;Initial coords:&#39;, coords);</span><span class="w"></span>
-
-
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">masses</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="nx">Mp</span><span class="p">);</span><span class="w"> </span><span class="c1">// Initialize masses</span><span class="w"></span>
-<span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Mstar</span><span class="p">;</span><span class="w"> </span><span class="c1">// Make index one special as the central star</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// Initialize central star at origin with no velocity</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">time</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">nTPts</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">tStop</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">nTPts</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">);</span><span class="w"> </span><span class="c1">// Years -&gt; s</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">deltaT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">coordsRecord</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">coords</span><span class="p">)];</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">massRecord</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">.</span><span class="nx">slice</span><span class="p">()];</span><span class="w"> </span><span class="c1">// Initialize records with initial conditions</span><span class="w"></span>
-
-
-<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">tInd</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nTPts</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">nBodiesStop</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="c1">//console.log(&#39;Initial coords:&#39;, coords);</span><span class="w"></span>
-<span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nBodyStep</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">);</span><span class="w"> </span><span class="c1">// Update</span><span class="w"></span>
-<span class="w"> </span><span class="nx">coordsRecord</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">coords</span><span class="p">));</span><span class="w"></span>
-<span class="w"> </span><span class="nx">massRecord</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">masses</span><span class="p">.</span><span class="nx">slice</span><span class="p">());</span><span class="w"> </span><span class="c1">// Add to records</span><span class="w"></span>
-<span class="w"> </span><span class="nx">tInd</span><span class="o">++</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">tInd</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="c1">//console.log(`currently at t = ${(t / yearSec).toFixed(2)} years\r`);</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`final time = </span><span class="si">${</span><span class="nx">time</span><span class="p">[</span><span class="nx">tInd</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">yearSec</span><span class="si">}</span><span class="sb"> years with </span><span class="si">${</span><span class="nx">nBodies</span><span class="si">}</span><span class="sb"> bodies remaining`</span><span class="p">);</span><span class="w"></span>
-
-<span class="w"> </span><span class="c1">// Set button text to Start Simulation</span><span class="w"></span>
-<span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">prevText</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsRecord</span><span class="p">,</span><span class="w"> </span><span class="nx">massRecord</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">tInd</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">)];</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-
-<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsRecordR</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">tR</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">genNBodyResults</span><span class="p">(</span><span class="mf">256</span><span class="p">,</span><span class="mf">1</span><span class="p">,</span><span class="mf">1001</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="c1">//console.log(coordsRecordR);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">createFrame</span><span class="p">(</span><span class="nx">coordsR</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">coordsR</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[];</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceCentralStar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">],</span><span class="w"></span>
-<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">],</span><span class="w"></span>
-<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;markers&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">type</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;scatter&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;Central star&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;gold&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="p">};</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">xCoords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="mf">1</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yCoords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="mf">1</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">);</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceOtherBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">xCoords</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">yCoords</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;markers&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">type</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;scatter&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;dodgerblue&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;circle&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="p">};</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">traceCentralStar</span><span class="p">,</span><span class="w"> </span><span class="nx">traceOtherBodies</span><span class="p">];</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-
-
-<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">createLayout</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">text</span><span class="o">:</span><span class="w"> </span><span class="sb">`N-Body Problem: t = </span><span class="si">${</span><span class="nb">Number</span><span class="p">(</span><span class="nx">t</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">).</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">)</span><span class="si">}</span><span class="sb"> years`</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="mf">0.03</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="mf">0.97</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">xanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;left&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">yanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;top&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">font</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">14</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x [AU]&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">2.1</span><span class="p">,</span><span class="w"> </span><span class="mf">2.1</span><span class="p">]</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;y [AU]&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">2.1</span><span class="p">,</span><span class="w"> </span><span class="mf">2.1</span><span class="p">],</span><span class="w"> </span><span class="nx">scaleanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">scaleratio</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="nx">showlegend</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">margin</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">l</span><span class="o">:</span><span class="w"> </span><span class="mf">60</span><span class="p">,</span><span class="w"> </span><span class="nx">r</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="p">,</span><span class="w"> </span><span class="nx">t</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">800</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">height</span><span class="o">:</span><span class="w"> </span><span class="mf">800</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">plot_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="p">};</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">animateNBodyProblem</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nFrames</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tR</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"></span>
-
-<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nFrames</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">frameData</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">createFrame</span><span class="p">(</span><span class="nx">coordsRecordR</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span><span class="w"></span>
-<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">layout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">createLayout</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="c1">//Plotly.newPlot(plotDiv, frameData, layout);</span><span class="w"></span>
-<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">animate</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">frameData</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="o">:</span><span class="w"> </span><span class="nx">layout</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">staticPlot</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">transition</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="p">},</span><span class="w"></span>
-<span class="w"> </span><span class="nx">frame</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="nx">redraw</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">});</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s1">&#39;plot&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">frameData</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="p">);</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="w"> </span><span class="p">}</span><span class="w"></span>
-<span class="p">}</span><span class="w"></span>
-
-<span class="nx">animateNBodyProblem</span><span class="p">();</span><span class="w"></span>
+<pre><span></span><code><span class="kd">function</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">3</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">k2</span><span class="p">,</span><span class="w"> </span><span class="mf">0.5</span><span class="p">)),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">k4</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaR</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">));</span>
+
+<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="nx">math</span><span class="p">.</span><span class="nx">add</span><span class="p">(</span><span class="nx">k1</span><span class="p">,</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k2</span><span class="p">),</span><span class="w"> </span><span class="nx">math</span><span class="p">.</span><span class="nx">multiply</span><span class="p">(</span><span class="mf">2.0</span><span class="p">,</span><span class="w"> </span><span class="nx">k3</span><span class="p">),</span><span class="w"> </span><span class="nx">k4</span><span class="p">),</span><span class="w"> </span><span class="mf">1</span><span class="o">/</span><span class="mf">6</span><span class="p">));</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">detectCollisionsEscape</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">x</span><span class="p">,</span><span class="w"> </span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">vx</span><span class="p">,</span><span class="w"> </span><span class="nx">vy</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coords</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">V</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vx</span><span class="p">.</span><span class="nx">map</span><span class="p">((</span><span class="nx">v</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">v</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">vy</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">));</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">R</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">V</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">v</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">collision</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">n</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">rn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">R</span><span class="p">[</span><span class="nx">n</span><span class="p">],</span><span class="w"> </span><span class="nx">xn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">n</span><span class="p">],</span><span class="w"> </span><span class="nx">yn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">n</span><span class="p">];</span>
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">x</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">i</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="nx">n</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">minSep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">rn</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">R</span><span class="p">[</span><span class="nx">i</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">sep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">((</span><span class="nx">xn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">x</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="p">(</span><span class="nx">yn</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">y</span><span class="p">[</span><span class="nx">i</span><span class="p">])</span><span class="w"> </span><span class="o">**</span><span class="w"> </span><span class="mf">2</span><span class="p">);</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">sep</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">minSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">collision</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">collisionInds</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">n</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">];</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">sep</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">escape</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">escapeInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">n</span><span class="p">;</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">nBodyStep</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Similar to our step function before, but keeping track of collisions</span>
+<span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">step</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">);</span><span class="w"> </span><span class="c1">// Update the positions as we did before</span>
+<span class="w"> </span><span class="c1">//console.log(detectCollisionsEscape(coords, deltaT, maxSep));</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="p">[</span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">detectCollisionsEscape</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="nx">maxSep</span><span class="p">);</span><span class="w"> </span><span class="c1">// Detect collisions/escapes</span>
+
+
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">collision</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Do inelastic collision and delete extra body (2 -&gt; 1)</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">i1</span><span class="p">,</span><span class="w"> </span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">x1</span><span class="p">,</span><span class="w"> </span><span class="nx">x2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">y1</span><span class="p">,</span><span class="w"> </span><span class="nx">y2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">vx1</span><span class="p">,</span><span class="w"> </span><span class="nx">vx2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">vy1</span><span class="p">,</span><span class="w"> </span><span class="nx">vy2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i1</span><span class="p">],</span><span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i2</span><span class="p">]];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">px1</span><span class="p">,</span><span class="w"> </span><span class="nx">px2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vx1</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vx2</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="p">[</span><span class="nx">py1</span><span class="p">,</span><span class="w"> </span><span class="nx">py2</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vy1</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">vy2</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">px</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">px1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">px2</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">py</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">py1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">py2</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">newM</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vfx</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">px</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vfy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">py</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">x1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">x2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]);</span><span class="w"> </span><span class="c1">// Center of mass</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="nx">y1</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">y2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">])</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i2</span><span class="p">]);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vfx</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">vfy</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">].</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="nx">i1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">newM</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">masses</span><span class="p">.</span><span class="nx">splice</span><span class="p">(</span><span class="nx">i2</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">nBodies</span><span class="o">--</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="c1">// Could also implement condition for escape where we stop calculating forces but I&#39;m too lazy for now</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">collision</span><span class="p">,</span><span class="w"> </span><span class="nx">collisionInds</span><span class="p">,</span><span class="w"> </span><span class="nx">escape</span><span class="p">,</span><span class="w"> </span><span class="nx">escapeInd</span><span class="p">];</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="nx">min</span><span class="p">,</span><span class="w"> </span><span class="nx">max</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="p">(</span><span class="nx">max</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">min</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">min</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">arr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">arr</span><span class="p">.</span><span class="nx">map</span><span class="p">(</span><span class="nx">innerArr</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">innerArr</span><span class="p">.</span><span class="nx">slice</span><span class="p">());</span>
+<span class="p">}</span>
+
+<span class="kd">function</span><span class="w"> </span><span class="nx">genNBodyResults</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">tStop</span><span class="p">,</span><span class="w"> </span><span class="nx">nTPts</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodiesStop</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">10</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">6.67408313131313e-11</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">btn</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="s2">&quot;startSim3&quot;</span><span class="p">);</span>
+<span class="w"> </span><span class="c1">// Set button text to Solving</span>
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="nx">prevText</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">&quot;Solving...&quot;</span><span class="p">;</span>
+
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">coords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">),</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="mf">0</span><span class="p">)];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">2e30</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">Mp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1e4</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Initialize coordinates on ~Keplerian orbits</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">accept</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
+<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">accept</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="c1">// Prevent a particle from spawning within 0.2 AU too close to &quot;star&quot;</span>
+<span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">()</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">;</span><span class="w"> </span><span class="c1">// Say radius of 2 AU</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">r</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mf">0.2</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">accept</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">true</span><span class="p">;</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">theta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">PI</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">theta</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">r</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">theta</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sqrt</span><span class="p">(</span><span class="nx">G</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">Mstar</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">r</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="nx">v</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1000</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">uniform</span><span class="p">(</span><span class="o">-</span><span class="mf">1</span><span class="p">,</span><span class="w"> </span><span class="mf">1</span><span class="p">);</span><span class="w"> </span><span class="c1">// Perturb the velocities ever so slightly</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">vTheta</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">atan2</span><span class="p">(</span><span class="nx">y</span><span class="p">,</span><span class="w"> </span><span class="nx">x</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">x</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">y</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">-</span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">sin</span><span class="p">(</span><span class="nx">vTheta</span><span class="p">);</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">perturbedV</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nb">Math</span><span class="p">.</span><span class="nx">cos</span><span class="p">(</span><span class="nx">vTheta</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="c1">//console.log(&#39;Initial coords:&#39;, coords);</span>
+
+
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">masses</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">(</span><span class="nx">nBodies</span><span class="p">).</span><span class="nx">fill</span><span class="p">(</span><span class="nx">Mp</span><span class="p">);</span><span class="w"> </span><span class="c1">// Initialize masses</span>
+<span class="w"> </span><span class="nx">masses</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">Mstar</span><span class="p">;</span><span class="w"> </span><span class="c1">// Make index one special as the central star</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">2</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">coords</span><span class="p">[</span><span class="mf">3</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="c1">// Initialize central star at origin with no velocity</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">time</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">Array</span><span class="p">.</span><span class="kr">from</span><span class="p">({</span><span class="w"> </span><span class="nx">length</span><span class="o">:</span><span class="w"> </span><span class="nx">nTPts</span><span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">(</span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">tStop</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="p">(</span><span class="nx">nTPts</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mf">1</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">);</span><span class="w"> </span><span class="c1">// Years -&gt; s</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">deltaT</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">1</span><span class="p">]</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="mf">0</span><span class="p">];</span>
+<span class="w"> </span><span class="kd">let</span><span class="w"> </span><span class="nx">tInd</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">coordsRecord</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">coords</span><span class="p">)];</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">massRecord</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">[</span><span class="nx">masses</span><span class="p">.</span><span class="nx">slice</span><span class="p">()];</span><span class="w"> </span><span class="c1">// Initialize records with initial conditions</span>
+
+
+<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="nx">tInd</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nTPts</span><span class="w"> </span><span class="o">&amp;&amp;</span><span class="w"> </span><span class="nx">nBodies</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="nx">nBodiesStop</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="c1">//console.log(&#39;Initial coords:&#39;, coords);</span>
+<span class="w"> </span><span class="p">[</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">nBodyStep</span><span class="p">(</span><span class="nx">coords</span><span class="p">,</span><span class="w"> </span><span class="nx">masses</span><span class="p">,</span><span class="w"> </span><span class="nx">deltaT</span><span class="p">,</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">,</span><span class="w"> </span><span class="nx">nBodies</span><span class="p">,</span><span class="w"> </span><span class="nx">G</span><span class="p">);</span><span class="w"> </span><span class="c1">// Update</span>
+<span class="w"> </span><span class="nx">coordsRecord</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">deepCopyCoordsArray</span><span class="p">(</span><span class="nx">coords</span><span class="p">));</span>
+<span class="w"> </span><span class="nx">massRecord</span><span class="p">.</span><span class="nx">push</span><span class="p">(</span><span class="nx">masses</span><span class="p">.</span><span class="nx">slice</span><span class="p">());</span><span class="w"> </span><span class="c1">// Add to records</span>
+<span class="w"> </span><span class="nx">tInd</span><span class="o">++</span><span class="p">;</span>
+<span class="w"> </span><span class="nx">t</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">time</span><span class="p">[</span><span class="nx">tInd</span><span class="p">];</span>
+<span class="w"> </span><span class="c1">//console.log(`currently at t = ${(t / yearSec).toFixed(2)} years\r`);</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="sb">`final time = </span><span class="si">${</span><span class="nx">time</span><span class="p">[</span><span class="nx">tInd</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">yearSec</span><span class="si">}</span><span class="sb"> years with </span><span class="si">${</span><span class="nx">nBodies</span><span class="si">}</span><span class="sb"> bodies remaining`</span><span class="p">);</span>
+
+<span class="w"> </span><span class="c1">// Set button text to Start Simulation</span>
+<span class="w"> </span><span class="nx">btn</span><span class="p">.</span><span class="nx">innerHTML</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">prevText</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsRecord</span><span class="p">,</span><span class="w"> </span><span class="nx">massRecord</span><span class="p">,</span><span class="w"> </span><span class="nx">time</span><span class="p">.</span><span class="nx">slice</span><span class="p">(</span><span class="mf">0</span><span class="p">,</span><span class="w"> </span><span class="nx">tInd</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mf">1</span><span class="p">)];</span>
+<span class="p">}</span>
+
+
+<span class="w"> </span><span class="kd">var</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsRecordR</span><span class="p">,</span><span class="w"> </span><span class="nx">_</span><span class="p">,</span><span class="w"> </span><span class="nx">tR</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">genNBodyResults</span><span class="p">(</span><span class="mf">256</span><span class="p">,</span><span class="mf">1</span><span class="p">,</span><span class="mf">1001</span><span class="p">);</span>
+<span class="w"> </span><span class="c1">//console.log(coordsRecordR);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yearSec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">365</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">24</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="mf">3600</span><span class="p">;</span>
+
+<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">createFrame</span><span class="p">(</span><span class="nx">coordsR</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="nx">coordsR</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="o">!</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[];</span>
+<span class="w"> </span><span class="p">}</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceCentralStar</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">][</span><span class="mf">0</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">],</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;markers&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">type</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;scatter&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;Central star&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;gold&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;star&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">10</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">xCoords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">0</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="mf">1</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">x</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">x</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">yCoords</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">coordsR</span><span class="p">[</span><span class="mf">1</span><span class="p">].</span><span class="nx">slice</span><span class="p">(</span><span class="mf">1</span><span class="p">).</span><span class="nx">map</span><span class="p">(</span><span class="nx">y</span><span class="w"> </span><span class="p">=&gt;</span><span class="w"> </span><span class="nx">y</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="mf">1.5e11</span><span class="p">);</span>
+
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">traceOtherBodies</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="nx">xCoords</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="nx">yCoords</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">mode</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;markers&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">type</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;scatter&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">name</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">marker</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">color</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;dodgerblue&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">symbol</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;circle&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">2</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">};</span>
+
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">[</span><span class="nx">traceCentralStar</span><span class="p">,</span><span class="w"> </span><span class="nx">traceOtherBodies</span><span class="p">];</span>
+<span class="w"> </span><span class="p">}</span>
+
+
+<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">createLayout</span><span class="p">(</span><span class="nx">i</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">text</span><span class="o">:</span><span class="w"> </span><span class="sb">`N-Body Problem: t = </span><span class="si">${</span><span class="nb">Number</span><span class="p">(</span><span class="nx">t</span><span class="p">[</span><span class="nx">i</span><span class="p">]</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="nx">yearSec</span><span class="p">).</span><span class="nx">toFixed</span><span class="p">(</span><span class="mf">3</span><span class="p">)</span><span class="si">}</span><span class="sb"> years`</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">x</span><span class="o">:</span><span class="w"> </span><span class="mf">0.03</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">y</span><span class="o">:</span><span class="w"> </span><span class="mf">0.97</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">xanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;left&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">yanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;top&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">font</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">size</span><span class="o">:</span><span class="w"> </span><span class="mf">14</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">xaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x [AU]&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">2.1</span><span class="p">,</span><span class="w"> </span><span class="mf">2.1</span><span class="p">]</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">yaxis</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">title</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;y [AU]&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">range</span><span class="o">:</span><span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mf">2.1</span><span class="p">,</span><span class="w"> </span><span class="mf">2.1</span><span class="p">],</span><span class="w"> </span><span class="nx">scaleanchor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;x&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">scaleratio</span><span class="o">:</span><span class="w"> </span><span class="mf">1</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">showlegend</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">margin</span><span class="o">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nx">l</span><span class="o">:</span><span class="w"> </span><span class="mf">60</span><span class="p">,</span><span class="w"> </span><span class="nx">r</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="p">,</span><span class="w"> </span><span class="nx">t</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="p">,</span><span class="w"> </span><span class="nx">b</span><span class="o">:</span><span class="w"> </span><span class="mf">40</span><span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">width</span><span class="o">:</span><span class="w"> </span><span class="mf">800</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">height</span><span class="o">:</span><span class="w"> </span><span class="mf">800</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">plot_bgcolor</span><span class="o">:</span><span class="w"> </span><span class="s1">&#39;black&#39;</span><span class="p">,</span>
+<span class="w"> </span><span class="p">};</span>
+<span class="p">}</span>
+
+<span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="nx">animateNBodyProblem</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">nFrames</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">tR</span><span class="p">.</span><span class="nx">length</span><span class="p">;</span>
+
+<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kd">let</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mf">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="nx">nFrames</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">frameData</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">createFrame</span><span class="p">(</span><span class="nx">coordsRecordR</span><span class="p">[</span><span class="nx">i</span><span class="p">]);</span>
+<span class="w"> </span><span class="kd">const</span><span class="w"> </span><span class="nx">layout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">createLayout</span><span class="p">(</span><span class="nx">i</span><span class="p">);</span>
+<span class="w"> </span><span class="c1">//Plotly.newPlot(plotDiv, frameData, layout);</span>
+<span class="w"> </span><span class="k">try</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">animate</span><span class="p">(</span><span class="s2">&quot;plot&quot;</span><span class="p">,</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">data</span><span class="o">:</span><span class="w"> </span><span class="nx">frameData</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="o">:</span><span class="w"> </span><span class="nx">layout</span>
+<span class="w"> </span><span class="p">},</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">staticPlot</span><span class="o">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">transition</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
+<span class="w"> </span><span class="p">},</span>
+<span class="w"> </span><span class="nx">frame</span><span class="o">:</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">duration</span><span class="o">:</span><span class="w"> </span><span class="mf">0</span><span class="p">,</span>
+<span class="w"> </span><span class="nx">redraw</span><span class="o">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">});</span>
+<span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">catch</span><span class="w"> </span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="nx">Plotly</span><span class="p">.</span><span class="nx">newPlot</span><span class="p">(</span><span class="s1">&#39;plot&#39;</span><span class="p">,</span><span class="w"> </span><span class="nx">frameData</span><span class="p">,</span><span class="w"> </span><span class="nx">layout</span><span class="p">);</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="w"> </span><span class="p">}</span>
+<span class="p">}</span>
+
+<span class="nx">animateNBodyProblem</span><span class="p">();</span>
</code></pre>
</div>
<h2>Playground</h2>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/11.8.0/math.js"></script>
+
<script src="/assets/n-body/script.js"></script>
+
<div id="main-plot-div">
<noscript>
The simulations require JavaScript to be viewed properly :(
@@ -705,10 +710,12 @@ The simulations require JavaScript to be viewed properly :(
<input type="number" min="1" max="10000" value="7e3" id="vRange">
</div>
-<button type="button" id="startSim1" onclick="plotEarthSun()">Sun-Earth Orbit</button>
+
+<p><button type="button" id="startSim1" onclick="plotEarthSun()">Sun-Earth Orbit</button>
<button type="button" id="startSim2" onclick="plotClassic3BodyProblem()">Classic 3-Body Problem</button>
<button type="button" id="startSim3" onclick="plotRandomNBodySimulation()">Random n-Body Simulation</button>
-<button type="button" id="startSim4" onclick="plotRandom3BodySimulation()">Random 3-Body Simulation</button>
+<button type="button" id="startSim4" onclick="plotRandom3BodySimulation()">Random 3-Body Simulation</button></p>
+
<script>
function clearAl() {
plotOrbit = false;
diff --git a/docs/posts/2023-10-04-bomb-lab.html b/docs/posts/2023-10-04-bomb-lab.html
index 226487f..2c9518c 100644
--- a/docs/posts/2023-10-04-bomb-lab.html
+++ b/docs/posts/2023-10-04-bomb-lab.html
@@ -77,130 +77,133 @@
<h2>Phase 1</h2>
<div class="codehilite">
-<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$ gdb -ex <span class="s1">&#39;break phase_1&#39;</span> -ex <span class="s1">&#39;break explode_bomb&#39;</span> -ex <span class="s1">&#39;run&#39;</span> ./bomb
-GNU gdb <span class="o">(</span>Ubuntu <span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span> <span class="m">12</span>.1
-Copyright <span class="o">(</span>C<span class="o">)</span> <span class="m">2022</span> Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version <span class="m">3</span> or later &lt;http://gnu.org/licenses/gpl.html&gt;
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-Type <span class="s2">&quot;show copying&quot;</span> and <span class="s2">&quot;show warranty&quot;</span> <span class="k">for</span> details.
-This GDB was configured as <span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
-Type <span class="s2">&quot;show configuration&quot;</span> <span class="k">for</span> configuration details.
-For bug reporting instructions, please see:
+<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$<span class="w"> </span>gdb<span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break phase_1&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break explode_bomb&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;run&#39;</span><span class="w"> </span>./bomb<span class="w"> </span>
+GNU<span class="w"> </span>gdb<span class="w"> </span><span class="o">(</span>Ubuntu<span class="w"> </span><span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span><span class="w"> </span><span class="m">12</span>.1
+Copyright<span class="w"> </span><span class="o">(</span>C<span class="o">)</span><span class="w"> </span><span class="m">2022</span><span class="w"> </span>Free<span class="w"> </span>Software<span class="w"> </span>Foundation,<span class="w"> </span>Inc.
+License<span class="w"> </span>GPLv3+:<span class="w"> </span>GNU<span class="w"> </span>GPL<span class="w"> </span>version<span class="w"> </span><span class="m">3</span><span class="w"> </span>or<span class="w"> </span>later<span class="w"> </span>&lt;http://gnu.org/licenses/gpl.html&gt;
+This<span class="w"> </span>is<span class="w"> </span>free<span class="w"> </span>software:<span class="w"> </span>you<span class="w"> </span>are<span class="w"> </span>free<span class="w"> </span>to<span class="w"> </span>change<span class="w"> </span>and<span class="w"> </span>redistribute<span class="w"> </span>it.
+There<span class="w"> </span>is<span class="w"> </span>NO<span class="w"> </span>WARRANTY,<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>extent<span class="w"> </span>permitted<span class="w"> </span>by<span class="w"> </span>law.
+Type<span class="w"> </span><span class="s2">&quot;show copying&quot;</span><span class="w"> </span>and<span class="w"> </span><span class="s2">&quot;show warranty&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>details.
+This<span class="w"> </span>GDB<span class="w"> </span>was<span class="w"> </span>configured<span class="w"> </span>as<span class="w"> </span><span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;show configuration&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>configuration<span class="w"> </span>details.
+For<span class="w"> </span>bug<span class="w"> </span>reporting<span class="w"> </span>instructions,<span class="w"> </span>please<span class="w"> </span>see:
&lt;https://www.gnu.org/software/gdb/bugs/&gt;.
-Find the GDB manual and other documentation resources online at:
- &lt;http://www.gnu.org/software/gdb/documentation/&gt;.
-
-For help, <span class="nb">type</span> <span class="s2">&quot;help&quot;</span>.
-Type <span class="s2">&quot;apropos word&quot;</span> to search <span class="k">for</span> commands related to <span class="s2">&quot;word&quot;</span>...
-Reading symbols from ./bomb...
-Breakpoint <span class="m">1</span> at 0x15c7
-Breakpoint <span class="m">2</span> at 0x1d4a
-Starting program: /home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb
-<span class="o">[</span>Thread debugging using libthread_db enabled<span class="o">]</span>
-Using host libthread_db library <span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
-Welcome to my fiendish little bomb. You have <span class="m">6</span> phases with
-which to blow yourself up. Have a nice day!
-<span class="nb">test</span> string
-
-Breakpoint <span class="m">1</span>, 0x00005555555555c7 <span class="k">in</span> phase_1 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> dias phase_1
-Undefined command: <span class="s2">&quot;dias&quot;</span>. Try <span class="s2">&quot;help&quot;</span>.
-<span class="o">(</span>gdb<span class="o">)</span> disas phase_1
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_1:
-<span class="o">=</span>&gt; 0x00005555555555c7 &lt;+0&gt;: endbr64
- 0x00005555555555cb &lt;+4&gt;: sub <span class="nv">$0</span>x8,%rsp
- 0x00005555555555cf &lt;+8&gt;: lea 0x1b7a<span class="o">(</span>%rip<span class="o">)</span>,%rsi <span class="c1"># 0x555555557150</span>
- 0x00005555555555d6 &lt;+15&gt;: call 0x555555555b31 &lt;strings_not_equal&gt;
- 0x00005555555555db &lt;+20&gt;: <span class="nb">test</span> %eax,%eax
- 0x00005555555555dd &lt;+22&gt;: jne 0x5555555555e4 &lt;phase_1+29&gt;
- 0x00005555555555df &lt;+24&gt;: add <span class="nv">$0</span>x8,%rsp
- 0x00005555555555e3 &lt;+28&gt;: ret
- 0x00005555555555e4 &lt;+29&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x00005555555555e9 &lt;+34&gt;: jmp 0x5555555555df &lt;phase_1+24&gt;
-End of assembler dump.
-<span class="o">(</span>gdb<span class="o">)</span> print 0x555555557150
-<span class="nv">$1</span> <span class="o">=</span> <span class="m">93824992244048</span>
-<span class="o">(</span>gdb<span class="o">)</span> x/1s 0x555555557150
-0x555555557150: <span class="s2">&quot;Controlling complexity is the essence of computer programming.&quot;</span>
-<span class="o">(</span>gdb<span class="o">)</span>
+Find<span class="w"> </span>the<span class="w"> </span>GDB<span class="w"> </span>manual<span class="w"> </span>and<span class="w"> </span>other<span class="w"> </span>documentation<span class="w"> </span>resources<span class="w"> </span>online<span class="w"> </span>at:
+<span class="w"> </span>&lt;http://www.gnu.org/software/gdb/documentation/&gt;.
+
+For<span class="w"> </span>help,<span class="w"> </span><span class="nb">type</span><span class="w"> </span><span class="s2">&quot;help&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;apropos word&quot;</span><span class="w"> </span>to<span class="w"> </span>search<span class="w"> </span><span class="k">for</span><span class="w"> </span>commands<span class="w"> </span>related<span class="w"> </span>to<span class="w"> </span><span class="s2">&quot;word&quot;</span>...
+Reading<span class="w"> </span>symbols<span class="w"> </span>from<span class="w"> </span>./bomb...
+Breakpoint<span class="w"> </span><span class="m">1</span><span class="w"> </span>at<span class="w"> </span>0x15c7
+Breakpoint<span class="w"> </span><span class="m">2</span><span class="w"> </span>at<span class="w"> </span>0x1d4a
+Starting<span class="w"> </span>program:<span class="w"> </span>/home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb<span class="w"> </span>
+<span class="o">[</span>Thread<span class="w"> </span>debugging<span class="w"> </span>using<span class="w"> </span>libthread_db<span class="w"> </span>enabled<span class="o">]</span>
+Using<span class="w"> </span>host<span class="w"> </span>libthread_db<span class="w"> </span>library<span class="w"> </span><span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
+Welcome<span class="w"> </span>to<span class="w"> </span>my<span class="w"> </span>fiendish<span class="w"> </span>little<span class="w"> </span>bomb.<span class="w"> </span>You<span class="w"> </span>have<span class="w"> </span><span class="m">6</span><span class="w"> </span>phases<span class="w"> </span>with
+which<span class="w"> </span>to<span class="w"> </span>blow<span class="w"> </span>yourself<span class="w"> </span>up.<span class="w"> </span>Have<span class="w"> </span>a<span class="w"> </span>nice<span class="w"> </span>day!
+<span class="nb">test</span><span class="w"> </span>string
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x00005555555555c7<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_1<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>dias<span class="w"> </span>phase_1
+Undefined<span class="w"> </span>command:<span class="w"> </span><span class="s2">&quot;dias&quot;</span>.<span class="w"> </span>Try<span class="w"> </span><span class="s2">&quot;help&quot;</span>.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas<span class="w"> </span>phase_1
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_1:
+<span class="o">=</span>&gt;<span class="w"> </span>0x00005555555555c7<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x00005555555555cb<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x8,%rsp
+<span class="w"> </span>0x00005555555555cf<span class="w"> </span>&lt;+8&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1b7a<span class="o">(</span>%rip<span class="o">)</span>,%rsi<span class="w"> </span><span class="c1"># 0x555555557150</span>
+<span class="w"> </span>0x00005555555555d6<span class="w"> </span>&lt;+15&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555b31<span class="w"> </span>&lt;strings_not_equal&gt;
+<span class="w"> </span>0x00005555555555db<span class="w"> </span>&lt;+20&gt;:<span class="w"> </span><span class="nb">test</span><span class="w"> </span>%eax,%eax
+<span class="w"> </span>0x00005555555555dd<span class="w"> </span>&lt;+22&gt;:<span class="w"> </span>jne<span class="w"> </span>0x5555555555e4<span class="w"> </span>&lt;phase_1+29&gt;
+<span class="w"> </span>0x00005555555555df<span class="w"> </span>&lt;+24&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x8,%rsp
+<span class="w"> </span>0x00005555555555e3<span class="w"> </span>&lt;+28&gt;:<span class="w"> </span>ret<span class="w"> </span>
+<span class="w"> </span>0x00005555555555e4<span class="w"> </span>&lt;+29&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555555e9<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555555df<span class="w"> </span>&lt;phase_1+24&gt;
+End<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>dump.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>print<span class="w"> </span>0x555555557150
+<span class="nv">$1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">93824992244048</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/1s<span class="w"> </span>0x555555557150
+0x555555557150:<span class="w"> </span><span class="s2">&quot;Controlling complexity is the essence of computer programming.&quot;</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<h2>Phase 2</h2>
<div class="codehilite">
-<pre><span></span><code>Phase <span class="m">1</span> defused. How about the next one?
-<span class="m">1</span> <span class="m">2</span> <span class="m">3</span> <span class="m">4</span> <span class="m">5</span> <span class="m">6</span>
-
-Breakpoint <span class="m">1</span>, 0x00005555555555eb <span class="k">in</span> phase_2 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> disas
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_2:
-<span class="o">=</span>&gt; 0x00005555555555eb &lt;+0&gt;: endbr64
- 0x00005555555555ef &lt;+4&gt;: push %rbp
- 0x00005555555555f0 &lt;+5&gt;: push %rbx
- 0x00005555555555f1 &lt;+6&gt;: sub <span class="nv">$0</span>x28,%rsp
- 0x00005555555555f5 &lt;+10&gt;: mov %rsp,%rsi
- 0x00005555555555f8 &lt;+13&gt;: call 0x555555555d97 &lt;read_six_numbers&gt;
- 0x00005555555555fd &lt;+18&gt;: cmpl <span class="nv">$0</span>x0,<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555601 &lt;+22&gt;: js 0x55555555560d &lt;phase_2+34&gt;
- 0x0000555555555603 &lt;+24&gt;: mov %rsp,%rbp
- 0x0000555555555606 &lt;+27&gt;: mov <span class="nv">$0</span>x1,%ebx
- 0x000055555555560b &lt;+32&gt;: jmp 0x555555555620 &lt;phase_2+53&gt;
- 0x000055555555560d &lt;+34&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x0000555555555612 &lt;+39&gt;: jmp 0x555555555603 &lt;phase_2+24&gt;
- 0x0000555555555614 &lt;+41&gt;: add <span class="nv">$0</span>x1,%ebx
- 0x0000555555555617 &lt;+44&gt;: add <span class="nv">$0</span>x4,%rbp
- 0x000055555555561b &lt;+48&gt;: cmp <span class="nv">$0</span>x6,%ebx
- 0x000055555555561e &lt;+51&gt;: je 0x555555555631 &lt;phase_2+70&gt;
- 0x0000555555555620 &lt;+53&gt;: mov %ebx,%eax
- 0x0000555555555622 &lt;+55&gt;: add 0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
- 0x0000555555555625 &lt;+58&gt;: cmp %eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
- 0x0000555555555628 &lt;+61&gt;: je 0x555555555614 &lt;phase_2+41&gt;
- 0x000055555555562a &lt;+63&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x000055555555562f &lt;+68&gt;: jmp 0x555555555614 &lt;phase_2+41&gt;
- 0x0000555555555631 &lt;+70&gt;: add <span class="nv">$0</span>x28,%rsp
- 0x0000555555555635 &lt;+74&gt;: pop %rbx
- 0x0000555555555636 &lt;+75&gt;: pop %rbp
- 0x0000555555555637 &lt;+76&gt;: ret
-End of assembler dump.
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code>Phase<span class="w"> </span><span class="m">1</span><span class="w"> </span>defused.<span class="w"> </span>How<span class="w"> </span>about<span class="w"> </span>the<span class="w"> </span>next<span class="w"> </span>one?
+<span class="m">1</span><span class="w"> </span><span class="m">2</span><span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="m">4</span><span class="w"> </span><span class="m">5</span><span class="w"> </span><span class="m">6</span>
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x00005555555555eb<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_2<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_2:
+<span class="o">=</span>&gt;<span class="w"> </span>0x00005555555555eb<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x00005555555555ef<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>push<span class="w"> </span>%rbp
+<span class="w"> </span>0x00005555555555f0<span class="w"> </span>&lt;+5&gt;:<span class="w"> </span>push<span class="w"> </span>%rbx
+<span class="w"> </span>0x00005555555555f1<span class="w"> </span>&lt;+6&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x28,%rsp
+<span class="w"> </span>0x00005555555555f5<span class="w"> </span>&lt;+10&gt;:<span class="w"> </span>mov<span class="w"> </span>%rsp,%rsi
+<span class="w"> </span>0x00005555555555f8<span class="w"> </span>&lt;+13&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d97<span class="w"> </span>&lt;read_six_numbers&gt;
+<span class="w"> </span>0x00005555555555fd<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x0,<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555601<span class="w"> </span>&lt;+22&gt;:<span class="w"> </span>js<span class="w"> </span>0x55555555560d<span class="w"> </span>&lt;phase_2+34&gt;
+<span class="w"> </span>0x0000555555555603<span class="w"> </span>&lt;+24&gt;:<span class="w"> </span>mov<span class="w"> </span>%rsp,%rbp
+<span class="w"> </span>0x0000555555555606<span class="w"> </span>&lt;+27&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x1,%ebx
+<span class="w"> </span>0x000055555555560b<span class="w"> </span>&lt;+32&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555620<span class="w"> </span>&lt;phase_2+53&gt;
+<span class="w"> </span>0x000055555555560d<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555612<span class="w"> </span>&lt;+39&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555603<span class="w"> </span>&lt;phase_2+24&gt;
+<span class="w"> </span>0x0000555555555614<span class="w"> </span>&lt;+41&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%ebx
+<span class="w"> </span>0x0000555555555617<span class="w"> </span>&lt;+44&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x4,%rbp
+<span class="w"> </span>0x000055555555561b<span class="w"> </span>&lt;+48&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%ebx
+<span class="w"> </span>0x000055555555561e<span class="w"> </span>&lt;+51&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555631<span class="w"> </span>&lt;phase_2+70&gt;
+<span class="w"> </span>0x0000555555555620<span class="w"> </span>&lt;+53&gt;:<span class="w"> </span>mov<span class="w"> </span>%ebx,%eax
+<span class="w"> </span>0x0000555555555622<span class="w"> </span>&lt;+55&gt;:<span class="w"> </span>add<span class="w"> </span>0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
+<span class="w"> </span>0x0000555555555625<span class="w"> </span>&lt;+58&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555628<span class="w"> </span>&lt;+61&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555614<span class="w"> </span>&lt;phase_2+41&gt;
+<span class="w"> </span>0x000055555555562a<span class="w"> </span>&lt;+63&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555562f<span class="w"> </span>&lt;+68&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555614<span class="w"> </span>&lt;phase_2+41&gt;
+<span class="w"> </span>0x0000555555555631<span class="w"> </span>&lt;+70&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x28,%rsp
+<span class="w"> </span>0x0000555555555635<span class="w"> </span>&lt;+74&gt;:<span class="w"> </span>pop<span class="w"> </span>%rbx
+<span class="w"> </span>0x0000555555555636<span class="w"> </span>&lt;+75&gt;:<span class="w"> </span>pop<span class="w"> </span>%rbp
+<span class="w"> </span>0x0000555555555637<span class="w"> </span>&lt;+76&gt;:<span class="w"> </span>ret<span class="w"> </span>
+End<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>dump.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<div class="codehilite">
-<pre><span></span><code> 0x00005555555555fd &lt;+18&gt;: cmpl <span class="nv">$0</span>x0,<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555601 &lt;+22&gt;: js 0x55555555560d &lt;phase_2+34&gt;
+<pre><span></span><code><span class="w"> </span>0x00005555555555fd<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x0,<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555601<span class="w"> </span>&lt;+22&gt;:<span class="w"> </span>js<span class="w"> </span>0x55555555560d<span class="w"> </span>&lt;phase_2+34&gt;
...
- 0x000055555555560d &lt;+34&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555560d<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
</code></pre>
</div>
-<p>The program first compares if the first number is not 0. If the number is not 0, then the <code>cmpl</code> instruction returns a negative value. The <code>js</code> instruction stands for jump if sign -> causing a jump to the specified address if the sign bit is set. This would result in the explode_bomb function being called.
- <div class="codehilite">
- <pre><span></span><code>0x0000555555555603 &lt;+24&gt;: mov %rsp,%rbp
- 0x0000555555555606 &lt;+27&gt;: mov <span class="nv">$0</span>x1,%ebx
- </code></pre>
- </div></p>
+<p>The program first compares if the first number is not 0. If the number is not 0, then the <code>cmpl</code> instruction returns a negative value. The <code>js</code> instruction stands for jump if sign -> causing a jump to the specified address if the sign bit is set. This would result in the explode_bomb function being called.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x0000555555555603<span class="w"> </span>&lt;+24&gt;:<span class="w"> </span>mov<span class="w"> </span>%rsp,%rbp
+<span class="w"> </span>0x0000555555555606<span class="w"> </span>&lt;+27&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x1,%ebx
+</code></pre>
+</div>
<p><code>%rsp</code> in x86-64 asm, is the stack pointer i.e. it points to the top of the current stack frame. Since the program just read six numbers, the top of the stack (<code>%rsp</code>) contains the address of the first number.</p>
<p>By executing <code>mov %rsp,%rbp</code> we are setting the base pointer (<code>%rbp</code>) to point to this address.</p>
-<p>Now, for the second instruction <code>mov $0x1,%ebx</code>, we are initalising the <code>%ebx</code> register with the value 1. Based on the assembly code, you can see that this is being used as a counter/index for the loop.
- <div class="codehilite">
- <pre><span></span><code>0x000055555555560b &lt;+32&gt;: jmp 0x555555555620 &lt;phase_2+53&gt;
- </code></pre>
- </div></p>
-
-<p>The program now jumps to <phase_2+53>
- <div class="codehilite">
- <pre><span></span><code>0x0000555555555620 &lt;+53&gt;: mov %ebx,%eax
- 0x0000555555555622 &lt;+55&gt;: add 0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
- 0x0000555555555625 &lt;+58&gt;: cmp %eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
- 0x0000555555555628 &lt;+61&gt;: je 0x555555555614 &lt;phase_2+41&gt;
- </code></pre>
- </div></p>
+<p>Now, for the second instruction <code>mov $0x1,%ebx</code>, we are initalising the <code>%ebx</code> register with the value 1. Based on the assembly code, you can see that this is being used as a counter/index for the loop.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x000055555555560b<span class="w"> </span>&lt;+32&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555620<span class="w"> </span>&lt;phase_2+53&gt;
+</code></pre>
+</div>
+
+<p>The program now jumps to <phase_2+53></p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x0000555555555620<span class="w"> </span>&lt;+53&gt;:<span class="w"> </span>mov<span class="w"> </span>%ebx,%eax
+<span class="w"> </span>0x0000555555555622<span class="w"> </span>&lt;+55&gt;:<span class="w"> </span>add<span class="w"> </span>0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
+<span class="w"> </span>0x0000555555555625<span class="w"> </span>&lt;+58&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555628<span class="w"> </span>&lt;+61&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555614<span class="w"> </span>&lt;phase_2+41&gt;
+</code></pre>
+</div>
<p>Here, the value from <code>%ebx</code> is copied to the <code>%eax</code> register. For this iteration, the value should be 1.</p>
@@ -208,18 +211,19 @@ End of assembler dump.
<p><code>cmp %eax,0x4(%rbp)</code> - The instruction compares the value in %eax to the value at the memory address <code>%rbp + 4</code>. Since Integers in this context are stored using a word of memory of 4 bytes, this indicates it checks against the second number in the sequence.</p>
-<p><code>je 0x555555555614 &lt;phase_2+41&gt;</code> - The program will jump to <code>phase_2+41</code> if the previous <code>cmp</code> instruction determined the values as equal.
- <div class="codehilite">
- <pre><span></span><code>0x0000555555555614 &lt;+41&gt;: add <span class="nv">$0</span>x1,%ebx
- 0x0000555555555617 &lt;+44&gt;: add <span class="nv">$0</span>x4,%rbp
- 0x000055555555561b &lt;+48&gt;: cmp <span class="nv">$0</span>x6,%ebx
- 0x000055555555561e &lt;+51&gt;: je 0x555555555631 &lt;phase<em>2+70&gt;
- 0x0000555555555620 &lt;+53&gt;: mov %ebx,%eax
- 0x0000555555555622 &lt;+55&gt;: add 0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
- 0x0000555555555625 &lt;+58&gt;: cmp %eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
- 0x0000555555555628 &lt;+61&gt;: je 0x555555555614 &lt;phase</em>2+41&gt;
- </code></pre>
- </div></p>
+<p><code>je 0x555555555614 &lt;phase_2+41&gt;</code> - The program will jump to <code>phase_2+41</code> if the previous <code>cmp</code> instruction determined the values as equal. </p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x0000555555555614<span class="w"> </span>&lt;+41&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%ebx
+<span class="w"> </span>0x0000555555555617<span class="w"> </span>&lt;+44&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x4,%rbp
+<span class="w"> </span>0x000055555555561b<span class="w"> </span>&lt;+48&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%ebx
+<span class="w"> </span>0x000055555555561e<span class="w"> </span>&lt;+51&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555631<span class="w"> </span>&lt;phase_2+70&gt;
+<span class="w"> </span>0x0000555555555620<span class="w"> </span>&lt;+53&gt;:<span class="w"> </span>mov<span class="w"> </span>%ebx,%eax
+<span class="w"> </span>0x0000555555555622<span class="w"> </span>&lt;+55&gt;:<span class="w"> </span>add<span class="w"> </span>0x0<span class="o">(</span>%rbp<span class="o">)</span>,%eax
+<span class="w"> </span>0x0000555555555625<span class="w"> </span>&lt;+58&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x4<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555628<span class="w"> </span>&lt;+61&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555614<span class="w"> </span>&lt;phase_2+41&gt;
+</code></pre>
+</div>
<p>Here, we can see that the program increments <code>%ebx</code> by 1, adds a 4 byte offset to <code>%rbp</code> (the number we will be matching now), and checks if <code>%ebx</code> is equal to 6. If it is, it breaks the loop and jumps to <code>&lt;phase_2+70&gt;</code> succesfully finishing this stage.</p>
@@ -236,13 +240,13 @@ End of assembler dump.
<div class="codehilite">
<pre><span></span><code>...
-Phase <span class="m">1</span> defused. How about the next one?
-<span class="m">0</span> <span class="m">1</span> <span class="m">3</span> <span class="m">6</span> <span class="m">10</span> <span class="m">15</span>
+Phase<span class="w"> </span><span class="m">1</span><span class="w"> </span>defused.<span class="w"> </span>How<span class="w"> </span>about<span class="w"> </span>the<span class="w"> </span>next<span class="w"> </span>one?
+<span class="m">0</span><span class="w"> </span><span class="m">1</span><span class="w"> </span><span class="m">3</span><span class="w"> </span><span class="m">6</span><span class="w"> </span><span class="m">10</span><span class="w"> </span><span class="m">15</span>
-Breakpoint <span class="m">1</span>, 0x00005555555555eb <span class="k">in</span> phase_2 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> <span class="k">continue</span>
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x00005555555555eb<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_2<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span><span class="k">continue</span>
Continuing.
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
</code></pre>
</div>
@@ -251,96 +255,96 @@ That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going
<p>Let us look at the disassembled code first</p>
<div class="codehilite">
-<pre><span></span><code><span class="m">0000000000001638</span> &lt;phase_3&gt;:
- <span class="m">1638</span>: f3 0f 1e fa endbr64
- 163c: <span class="m">48</span> <span class="m">83</span> ec <span class="m">18</span> sub <span class="nv">$0</span>x18,%rsp
- <span class="m">1640</span>: <span class="m">48</span> 8d 4c <span class="m">24</span> <span class="m">07</span> lea 0x7<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
- <span class="m">1645</span>: <span class="m">48</span> 8d <span class="m">54</span> <span class="m">24</span> 0c lea 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 164a: 4c 8d <span class="m">44</span> <span class="m">24</span> <span class="m">08</span> lea 0x8<span class="o">(</span>%rsp<span class="o">)</span>,%r8
- 164f: <span class="m">48</span> 8d <span class="m">35</span> <span class="m">60</span> 1b <span class="m">00</span> <span class="m">00</span> lea 0x1b60<span class="o">(</span>%rip<span class="o">)</span>,%rsi <span class="c1"># 31b6 &lt;_IO_stdin_used+0x1b6&gt;</span>
- <span class="m">1656</span>: b8 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x0,%eax
- 165b: e8 <span class="m">80</span> <span class="nb">fc</span> ff ff call 12e0 &lt;__isoc99_sscanf@plt&gt;
- <span class="m">1660</span>: <span class="m">83</span> f8 <span class="m">02</span> cmp <span class="nv">$0</span>x2,%eax
- <span class="m">1663</span>: 7e <span class="m">20</span> jle <span class="m">1685</span> &lt;phase_3+0x4d&gt;
- <span class="m">1665</span>: <span class="m">83</span> 7c <span class="m">24</span> 0c <span class="m">07</span> cmpl <span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
- 166a: 0f <span class="m">87</span> 0d <span class="m">01</span> <span class="m">00</span> <span class="m">00</span> ja 177d &lt;phase_3+0x145&gt;
- <span class="m">1670</span>: 8b <span class="m">44</span> <span class="m">24</span> 0c mov 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
- <span class="m">1674</span>: <span class="m">48</span> 8d <span class="m">15</span> <span class="m">55</span> 1b <span class="m">00</span> <span class="m">00</span> lea 0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx <span class="c1"># 31d0 &lt;_IO_stdin_used+0x1d0&gt;</span>
- 167b: <span class="m">48</span> <span class="m">63</span> <span class="m">04</span> <span class="m">82</span> movslq <span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
- 167f: <span class="m">48</span> <span class="m">01</span> d0 add %rdx,%rax
- <span class="m">1682</span>: 3e ff e0 notrack jmp *%rax
- <span class="m">1685</span>: e8 c0 <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 168a: eb d9 jmp <span class="m">1665</span> &lt;phase_3+0x2d&gt;
- 168c: b8 <span class="m">63</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x63,%eax
- <span class="m">1691</span>: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> 3d <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x23d,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- <span class="m">1698</span>: <span class="m">00</span>
- <span class="m">1699</span>: 0f <span class="m">84</span> e8 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 169f: e8 a6 <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 16a4: b8 <span class="m">63</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x63,%eax
- 16a9: e9 d9 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 16ae: b8 <span class="m">61</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x61,%eax
- 16b3: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> <span class="m">27</span> <span class="m">01</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x127,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 16ba: <span class="m">00</span>
- 16bb: 0f <span class="m">84</span> c6 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 16c1: e8 <span class="m">84</span> <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 16c6: b8 <span class="m">61</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x61,%eax
- 16cb: e9 b7 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 16d0: b8 <span class="m">78</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x78,%eax
- 16d5: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> e7 <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x2e7,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 16dc: <span class="m">00</span>
- 16dd: 0f <span class="m">84</span> a4 <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 16e3: e8 <span class="m">62</span> <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 16e8: b8 <span class="m">78</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x78,%eax
- 16ed: e9 <span class="m">95</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 16f2: b8 <span class="m">64</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x64,%eax
- 16f7: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> <span class="m">80</span> <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x280,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 16fe: <span class="m">00</span>
- 16ff: 0f <span class="m">84</span> <span class="m">82</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1705</span>: e8 <span class="m">40</span> <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 170a: b8 <span class="m">64</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x64,%eax
- 170f: eb <span class="m">76</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1711</span>: b8 6d <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x6d,%eax
- <span class="m">1716</span>: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> ff <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x2ff,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 171d: <span class="m">00</span>
- 171e: <span class="m">74</span> <span class="m">67</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1720</span>: e8 <span class="m">25</span> <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- <span class="m">1725</span>: b8 6d <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x6d,%eax
- 172a: eb 5b jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 172c: b8 <span class="m">71</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x71,%eax
- <span class="m">1731</span>: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> <span class="m">75</span> <span class="m">03</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x375,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- <span class="m">1738</span>: <span class="m">00</span>
- <span class="m">1739</span>: <span class="m">74</span> 4c je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 173b: e8 0a <span class="m">06</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- <span class="m">1740</span>: b8 <span class="m">71</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x71,%eax
- <span class="m">1745</span>: eb <span class="m">40</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1747</span>: b8 <span class="m">79</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x79,%eax
- 174c: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> <span class="m">94</span> <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x294,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- <span class="m">1753</span>: <span class="m">00</span>
- <span class="m">1754</span>: <span class="m">74</span> <span class="m">31</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1756</span>: e8 ef <span class="m">05</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- 175b: b8 <span class="m">79</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x79,%eax
- <span class="m">1760</span>: eb <span class="m">25</span> jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1762</span>: b8 <span class="m">79</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x79,%eax
- <span class="m">1767</span>: <span class="m">81</span> 7c <span class="m">24</span> <span class="m">08</span> <span class="m">88</span> <span class="m">02</span> <span class="m">00</span> cmpl <span class="nv">$0</span>x288,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 176e: <span class="m">00</span>
- 176f: <span class="m">74</span> <span class="m">16</span> je <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- <span class="m">1771</span>: e8 d4 <span class="m">05</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- <span class="m">1776</span>: b8 <span class="m">79</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x79,%eax
- 177b: eb 0a jmp <span class="m">1787</span> &lt;phase_3+0x14f&gt;
- 177d: e8 c8 <span class="m">05</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- <span class="m">1782</span>: b8 <span class="m">68</span> <span class="m">00</span> <span class="m">00</span> <span class="m">00</span> mov <span class="nv">$0</span>x68,%eax
- <span class="m">1787</span>: <span class="m">38</span> <span class="m">44</span> <span class="m">24</span> <span class="m">07</span> cmp %al,0x7<span class="o">(</span>%rsp<span class="o">)</span>
- 178b: <span class="m">75</span> <span class="m">05</span> jne <span class="m">1792</span> &lt;phase_3+0x15a&gt;
- 178d: <span class="m">48</span> <span class="m">83</span> c4 <span class="m">18</span> add <span class="nv">$0</span>x18,%rsp
- <span class="m">1791</span>: c3 ret
- <span class="m">1792</span>: e8 b3 <span class="m">05</span> <span class="m">00</span> <span class="m">00</span> call 1d4a &lt;explode_bomb&gt;
- <span class="m">1797</span>: eb f4 jmp 178d &lt;phase_3+0x155&gt;
+<pre><span></span><code><span class="m">0000000000001638</span><span class="w"> </span>&lt;phase_3&gt;:
+<span class="w"> </span><span class="m">1638</span>:<span class="w"> </span>f3<span class="w"> </span>0f<span class="w"> </span>1e<span class="w"> </span>fa<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>163c:<span class="w"> </span><span class="m">48</span><span class="w"> </span><span class="m">83</span><span class="w"> </span>ec<span class="w"> </span><span class="m">18</span><span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span><span class="m">1640</span>:<span class="w"> </span><span class="m">48</span><span class="w"> </span>8d<span class="w"> </span>4c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">07</span><span class="w"> </span>lea<span class="w"> </span>0x7<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
+<span class="w"> </span><span class="m">1645</span>:<span class="w"> </span><span class="m">48</span><span class="w"> </span>8d<span class="w"> </span><span class="m">54</span><span class="w"> </span><span class="m">24</span><span class="w"> </span>0c<span class="w"> </span>lea<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>164a:<span class="w"> </span>4c<span class="w"> </span>8d<span class="w"> </span><span class="m">44</span><span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span>lea<span class="w"> </span>0x8<span class="o">(</span>%rsp<span class="o">)</span>,%r8
+<span class="w"> </span>164f:<span class="w"> </span><span class="m">48</span><span class="w"> </span>8d<span class="w"> </span><span class="m">35</span><span class="w"> </span><span class="m">60</span><span class="w"> </span>1b<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>lea<span class="w"> </span>0x1b60<span class="o">(</span>%rip<span class="o">)</span>,%rsi<span class="w"> </span><span class="c1"># 31b6 &lt;_IO_stdin_used+0x1b6&gt;</span>
+<span class="w"> </span><span class="m">1656</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%eax
+<span class="w"> </span>165b:<span class="w"> </span>e8<span class="w"> </span><span class="m">80</span><span class="w"> </span><span class="nb">fc</span><span class="w"> </span>ff<span class="w"> </span>ff<span class="w"> </span>call<span class="w"> </span>12e0<span class="w"> </span>&lt;__isoc99_sscanf@plt&gt;
+<span class="w"> </span><span class="m">1660</span>:<span class="w"> </span><span class="m">83</span><span class="w"> </span>f8<span class="w"> </span><span class="m">02</span><span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span><span class="m">1663</span>:<span class="w"> </span>7e<span class="w"> </span><span class="m">20</span><span class="w"> </span>jle<span class="w"> </span><span class="m">1685</span><span class="w"> </span>&lt;phase_3+0x4d&gt;
+<span class="w"> </span><span class="m">1665</span>:<span class="w"> </span><span class="m">83</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span>0c<span class="w"> </span><span class="m">07</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>166a:<span class="w"> </span>0f<span class="w"> </span><span class="m">87</span><span class="w"> </span>0d<span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>ja<span class="w"> </span>177d<span class="w"> </span>&lt;phase_3+0x145&gt;
+<span class="w"> </span><span class="m">1670</span>:<span class="w"> </span>8b<span class="w"> </span><span class="m">44</span><span class="w"> </span><span class="m">24</span><span class="w"> </span>0c<span class="w"> </span>mov<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
+<span class="w"> </span><span class="m">1674</span>:<span class="w"> </span><span class="m">48</span><span class="w"> </span>8d<span class="w"> </span><span class="m">15</span><span class="w"> </span><span class="m">55</span><span class="w"> </span>1b<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>lea<span class="w"> </span>0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx<span class="w"> </span><span class="c1"># 31d0 &lt;_IO_stdin_used+0x1d0&gt;</span>
+<span class="w"> </span>167b:<span class="w"> </span><span class="m">48</span><span class="w"> </span><span class="m">63</span><span class="w"> </span><span class="m">04</span><span class="w"> </span><span class="m">82</span><span class="w"> </span>movslq<span class="w"> </span><span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
+<span class="w"> </span>167f:<span class="w"> </span><span class="m">48</span><span class="w"> </span><span class="m">01</span><span class="w"> </span>d0<span class="w"> </span>add<span class="w"> </span>%rdx,%rax
+<span class="w"> </span><span class="m">1682</span>:<span class="w"> </span>3e<span class="w"> </span>ff<span class="w"> </span>e0<span class="w"> </span>notrack<span class="w"> </span>jmp<span class="w"> </span>*%rax
+<span class="w"> </span><span class="m">1685</span>:<span class="w"> </span>e8<span class="w"> </span>c0<span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>168a:<span class="w"> </span>eb<span class="w"> </span>d9<span class="w"> </span>jmp<span class="w"> </span><span class="m">1665</span><span class="w"> </span>&lt;phase_3+0x2d&gt;
+<span class="w"> </span>168c:<span class="w"> </span>b8<span class="w"> </span><span class="m">63</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x63,%eax
+<span class="w"> </span><span class="m">1691</span>:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span>3d<span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x23d,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span><span class="m">1698</span>:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span><span class="m">1699</span>:<span class="w"> </span>0f<span class="w"> </span><span class="m">84</span><span class="w"> </span>e8<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>169f:<span class="w"> </span>e8<span class="w"> </span>a6<span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>16a4:<span class="w"> </span>b8<span class="w"> </span><span class="m">63</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x63,%eax
+<span class="w"> </span>16a9:<span class="w"> </span>e9<span class="w"> </span>d9<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>16ae:<span class="w"> </span>b8<span class="w"> </span><span class="m">61</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x61,%eax
+<span class="w"> </span>16b3:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">27</span><span class="w"> </span><span class="m">01</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x127,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>16ba:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span>16bb:<span class="w"> </span>0f<span class="w"> </span><span class="m">84</span><span class="w"> </span>c6<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>16c1:<span class="w"> </span>e8<span class="w"> </span><span class="m">84</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>16c6:<span class="w"> </span>b8<span class="w"> </span><span class="m">61</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x61,%eax
+<span class="w"> </span>16cb:<span class="w"> </span>e9<span class="w"> </span>b7<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>16d0:<span class="w"> </span>b8<span class="w"> </span><span class="m">78</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x78,%eax
+<span class="w"> </span>16d5:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span>e7<span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x2e7,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>16dc:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span>16dd:<span class="w"> </span>0f<span class="w"> </span><span class="m">84</span><span class="w"> </span>a4<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>16e3:<span class="w"> </span>e8<span class="w"> </span><span class="m">62</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>16e8:<span class="w"> </span>b8<span class="w"> </span><span class="m">78</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x78,%eax
+<span class="w"> </span>16ed:<span class="w"> </span>e9<span class="w"> </span><span class="m">95</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>16f2:<span class="w"> </span>b8<span class="w"> </span><span class="m">64</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x64,%eax
+<span class="w"> </span>16f7:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">80</span><span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x280,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>16fe:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span>16ff:<span class="w"> </span>0f<span class="w"> </span><span class="m">84</span><span class="w"> </span><span class="m">82</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1705</span>:<span class="w"> </span>e8<span class="w"> </span><span class="m">40</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>170a:<span class="w"> </span>b8<span class="w"> </span><span class="m">64</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x64,%eax
+<span class="w"> </span>170f:<span class="w"> </span>eb<span class="w"> </span><span class="m">76</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1711</span>:<span class="w"> </span>b8<span class="w"> </span>6d<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x6d,%eax
+<span class="w"> </span><span class="m">1716</span>:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span>ff<span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x2ff,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>171d:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span>171e:<span class="w"> </span><span class="m">74</span><span class="w"> </span><span class="m">67</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1720</span>:<span class="w"> </span>e8<span class="w"> </span><span class="m">25</span><span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span><span class="m">1725</span>:<span class="w"> </span>b8<span class="w"> </span>6d<span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x6d,%eax
+<span class="w"> </span>172a:<span class="w"> </span>eb<span class="w"> </span>5b<span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>172c:<span class="w"> </span>b8<span class="w"> </span><span class="m">71</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x71,%eax
+<span class="w"> </span><span class="m">1731</span>:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">75</span><span class="w"> </span><span class="m">03</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x375,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span><span class="m">1738</span>:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span><span class="m">1739</span>:<span class="w"> </span><span class="m">74</span><span class="w"> </span>4c<span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>173b:<span class="w"> </span>e8<span class="w"> </span>0a<span class="w"> </span><span class="m">06</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span><span class="m">1740</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">71</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x71,%eax
+<span class="w"> </span><span class="m">1745</span>:<span class="w"> </span>eb<span class="w"> </span><span class="m">40</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1747</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">79</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x79,%eax
+<span class="w"> </span>174c:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">94</span><span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x294,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span><span class="m">1753</span>:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span><span class="m">1754</span>:<span class="w"> </span><span class="m">74</span><span class="w"> </span><span class="m">31</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1756</span>:<span class="w"> </span>e8<span class="w"> </span>ef<span class="w"> </span><span class="m">05</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>175b:<span class="w"> </span>b8<span class="w"> </span><span class="m">79</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x79,%eax
+<span class="w"> </span><span class="m">1760</span>:<span class="w"> </span>eb<span class="w"> </span><span class="m">25</span><span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1762</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">79</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x79,%eax
+<span class="w"> </span><span class="m">1767</span>:<span class="w"> </span><span class="m">81</span><span class="w"> </span>7c<span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">08</span><span class="w"> </span><span class="m">88</span><span class="w"> </span><span class="m">02</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x288,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>176e:<span class="w"> </span><span class="m">00</span><span class="w"> </span>
+<span class="w"> </span>176f:<span class="w"> </span><span class="m">74</span><span class="w"> </span><span class="m">16</span><span class="w"> </span>je<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span><span class="m">1771</span>:<span class="w"> </span>e8<span class="w"> </span>d4<span class="w"> </span><span class="m">05</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span><span class="m">1776</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">79</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x79,%eax
+<span class="w"> </span>177b:<span class="w"> </span>eb<span class="w"> </span>0a<span class="w"> </span>jmp<span class="w"> </span><span class="m">1787</span><span class="w"> </span>&lt;phase_3+0x14f&gt;
+<span class="w"> </span>177d:<span class="w"> </span>e8<span class="w"> </span>c8<span class="w"> </span><span class="m">05</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span><span class="m">1782</span>:<span class="w"> </span>b8<span class="w"> </span><span class="m">68</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x68,%eax
+<span class="w"> </span><span class="m">1787</span>:<span class="w"> </span><span class="m">38</span><span class="w"> </span><span class="m">44</span><span class="w"> </span><span class="m">24</span><span class="w"> </span><span class="m">07</span><span class="w"> </span>cmp<span class="w"> </span>%al,0x7<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>178b:<span class="w"> </span><span class="m">75</span><span class="w"> </span><span class="m">05</span><span class="w"> </span>jne<span class="w"> </span><span class="m">1792</span><span class="w"> </span>&lt;phase_3+0x15a&gt;
+<span class="w"> </span>178d:<span class="w"> </span><span class="m">48</span><span class="w"> </span><span class="m">83</span><span class="w"> </span>c4<span class="w"> </span><span class="m">18</span><span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span><span class="m">1791</span>:<span class="w"> </span>c3<span class="w"> </span>ret<span class="w"> </span>
+<span class="w"> </span><span class="m">1792</span>:<span class="w"> </span>e8<span class="w"> </span>b3<span class="w"> </span><span class="m">05</span><span class="w"> </span><span class="m">00</span><span class="w"> </span><span class="m">00</span><span class="w"> </span>call<span class="w"> </span>1d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span><span class="m">1797</span>:<span class="w"> </span>eb<span class="w"> </span>f4<span class="w"> </span>jmp<span class="w"> </span>178d<span class="w"> </span>&lt;phase_3+0x155&gt;
</code></pre>
</div>
<div class="codehilite">
<pre><span></span><code>...
- 165b: e8 <span class="m">80</span> <span class="nb">fc</span> ff ff call 12e0 &lt;__isoc99_sscanf@plt&gt;
+<span class="w"> </span>165b:<span class="w"> </span>e8<span class="w"> </span><span class="m">80</span><span class="w"> </span><span class="nb">fc</span><span class="w"> </span>ff<span class="w"> </span>ff<span class="w"> </span>call<span class="w"> </span>12e0<span class="w"> </span>&lt;__isoc99_sscanf@plt&gt;
...
</code></pre>
</div>
@@ -350,82 +354,82 @@ That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going
<p>Because I do not want to enter the solutions to phases 1 and 2 again and again, I am goig to pass a file which has these solutions.</p>
<div class="codehilite">
-<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$ gdb -ex <span class="s1">&#39;break phase_3&#39;</span> -ex <span class="s1">&#39;break explode_bomb&#39;</span> -ex <span class="s1">&#39;run&#39;</span> -args ./bomb sol.txt
-GNU gdb <span class="o">(</span>Ubuntu <span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span> <span class="m">12</span>.1
-Copyright <span class="o">(</span>C<span class="o">)</span> <span class="m">2022</span> Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version <span class="m">3</span> or later &lt;http://gnu.org/licenses/gpl.html&gt;
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-Type <span class="s2">&quot;show copying&quot;</span> and <span class="s2">&quot;show warranty&quot;</span> <span class="k">for</span> details.
-This GDB was configured as <span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
-Type <span class="s2">&quot;show configuration&quot;</span> <span class="k">for</span> configuration details.
-For bug reporting instructions, please see:
+<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$<span class="w"> </span>gdb<span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break phase_3&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break explode_bomb&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;run&#39;</span><span class="w"> </span>-args<span class="w"> </span>./bomb<span class="w"> </span>sol.txt<span class="w"> </span>
+GNU<span class="w"> </span>gdb<span class="w"> </span><span class="o">(</span>Ubuntu<span class="w"> </span><span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span><span class="w"> </span><span class="m">12</span>.1
+Copyright<span class="w"> </span><span class="o">(</span>C<span class="o">)</span><span class="w"> </span><span class="m">2022</span><span class="w"> </span>Free<span class="w"> </span>Software<span class="w"> </span>Foundation,<span class="w"> </span>Inc.
+License<span class="w"> </span>GPLv3+:<span class="w"> </span>GNU<span class="w"> </span>GPL<span class="w"> </span>version<span class="w"> </span><span class="m">3</span><span class="w"> </span>or<span class="w"> </span>later<span class="w"> </span>&lt;http://gnu.org/licenses/gpl.html&gt;
+This<span class="w"> </span>is<span class="w"> </span>free<span class="w"> </span>software:<span class="w"> </span>you<span class="w"> </span>are<span class="w"> </span>free<span class="w"> </span>to<span class="w"> </span>change<span class="w"> </span>and<span class="w"> </span>redistribute<span class="w"> </span>it.
+There<span class="w"> </span>is<span class="w"> </span>NO<span class="w"> </span>WARRANTY,<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>extent<span class="w"> </span>permitted<span class="w"> </span>by<span class="w"> </span>law.
+Type<span class="w"> </span><span class="s2">&quot;show copying&quot;</span><span class="w"> </span>and<span class="w"> </span><span class="s2">&quot;show warranty&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>details.
+This<span class="w"> </span>GDB<span class="w"> </span>was<span class="w"> </span>configured<span class="w"> </span>as<span class="w"> </span><span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;show configuration&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>configuration<span class="w"> </span>details.
+For<span class="w"> </span>bug<span class="w"> </span>reporting<span class="w"> </span>instructions,<span class="w"> </span>please<span class="w"> </span>see:
&lt;https://www.gnu.org/software/gdb/bugs/&gt;.
-Find the GDB manual and other documentation resources online at:
- &lt;http://www.gnu.org/software/gdb/documentation/&gt;.
-
-For help, <span class="nb">type</span> <span class="s2">&quot;help&quot;</span>.
-Type <span class="s2">&quot;apropos word&quot;</span> to search <span class="k">for</span> commands related to <span class="s2">&quot;word&quot;</span>...
-Reading symbols from ./bomb...
-Breakpoint <span class="m">1</span> at 0x1638
-Breakpoint <span class="m">2</span> at 0x1d4a
-Starting program: /home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb sol.txt
-<span class="o">[</span>Thread debugging using libthread_db enabled<span class="o">]</span>
-Using host libthread_db library <span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
-Welcome to my fiendish little bomb. You have <span class="m">6</span> phases with
-which to blow yourself up. Have a nice day!
-Phase <span class="m">1</span> defused. How about the next one?
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
-random string
-
-Breakpoint <span class="m">1</span>, 0x0000555555555638 <span class="k">in</span> phase_3 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> disas
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_3:
-<span class="o">=</span>&gt; 0x0000555555555638 &lt;+0&gt;: endbr64
- 0x000055555555563c &lt;+4&gt;: sub <span class="nv">$0</span>x18,%rsp
- 0x0000555555555640 &lt;+8&gt;: lea 0x7<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
- 0x0000555555555645 &lt;+13&gt;: lea 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 0x000055555555564a &lt;+18&gt;: lea 0x8<span class="o">(</span>%rsp<span class="o">)</span>,%r8
- 0x000055555555564f &lt;+23&gt;: lea 0x1b60<span class="o">(</span>%rip<span class="o">)</span>,%rsi <span class="c1"># 0x5555555571b6</span>
- 0x0000555555555656 &lt;+30&gt;: mov <span class="nv">$0</span>x0,%eax
- 0x000055555555565b &lt;+35&gt;: call 0x5555555552e0 &lt;__isoc99_sscanf@plt&gt;
- 0x0000555555555660 &lt;+40&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x0000555555555663 &lt;+43&gt;: jle 0x555555555685 &lt;phase_3+77&gt;
- 0x0000555555555665 &lt;+45&gt;: cmpl <span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
- 0x000055555555566a &lt;+50&gt;: ja 0x55555555577d &lt;phase_3+325&gt;
- 0x0000555555555670 &lt;+56&gt;: mov 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
- 0x0000555555555674 &lt;+60&gt;: lea 0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx <span class="c1"># 0x5555555571d0</span>
- 0x000055555555567b &lt;+67&gt;: movslq <span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
- 0x000055555555567f &lt;+71&gt;: add %rdx,%rax
- 0x0000555555555682 &lt;+74&gt;: notrack jmp *%rax
- 0x0000555555555685 &lt;+77&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x000055555555568a &lt;+82&gt;: jmp 0x555555555665 &lt;phase_3+45&gt;
- 0x000055555555568c &lt;+84&gt;: mov <span class="nv">$0</span>x63,%eax
- 0x0000555555555691 &lt;+89&gt;: cmpl <span class="nv">$0</span>x23d,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555699 &lt;+97&gt;: je 0x555555555787 &lt;phase_3+335&gt;
- 0x000055555555569f &lt;+103&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x00005555555556a4 &lt;+108&gt;: mov <span class="nv">$0</span>x63,%eax
- 0x00005555555556a9 &lt;+113&gt;: jmp 0x555555555787 &lt;phase_3+335&gt;
---Type &lt;RET&gt; <span class="k">for</span> more, q to quit, c to <span class="k">continue</span> without paging--
+Find<span class="w"> </span>the<span class="w"> </span>GDB<span class="w"> </span>manual<span class="w"> </span>and<span class="w"> </span>other<span class="w"> </span>documentation<span class="w"> </span>resources<span class="w"> </span>online<span class="w"> </span>at:
+<span class="w"> </span>&lt;http://www.gnu.org/software/gdb/documentation/&gt;.
+
+For<span class="w"> </span>help,<span class="w"> </span><span class="nb">type</span><span class="w"> </span><span class="s2">&quot;help&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;apropos word&quot;</span><span class="w"> </span>to<span class="w"> </span>search<span class="w"> </span><span class="k">for</span><span class="w"> </span>commands<span class="w"> </span>related<span class="w"> </span>to<span class="w"> </span><span class="s2">&quot;word&quot;</span>...
+Reading<span class="w"> </span>symbols<span class="w"> </span>from<span class="w"> </span>./bomb...
+Breakpoint<span class="w"> </span><span class="m">1</span><span class="w"> </span>at<span class="w"> </span>0x1638
+Breakpoint<span class="w"> </span><span class="m">2</span><span class="w"> </span>at<span class="w"> </span>0x1d4a
+Starting<span class="w"> </span>program:<span class="w"> </span>/home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb<span class="w"> </span>sol.txt
+<span class="o">[</span>Thread<span class="w"> </span>debugging<span class="w"> </span>using<span class="w"> </span>libthread_db<span class="w"> </span>enabled<span class="o">]</span>
+Using<span class="w"> </span>host<span class="w"> </span>libthread_db<span class="w"> </span>library<span class="w"> </span><span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
+Welcome<span class="w"> </span>to<span class="w"> </span>my<span class="w"> </span>fiendish<span class="w"> </span>little<span class="w"> </span>bomb.<span class="w"> </span>You<span class="w"> </span>have<span class="w"> </span><span class="m">6</span><span class="w"> </span>phases<span class="w"> </span>with
+which<span class="w"> </span>to<span class="w"> </span>blow<span class="w"> </span>yourself<span class="w"> </span>up.<span class="w"> </span>Have<span class="w"> </span>a<span class="w"> </span>nice<span class="w"> </span>day!
+Phase<span class="w"> </span><span class="m">1</span><span class="w"> </span>defused.<span class="w"> </span>How<span class="w"> </span>about<span class="w"> </span>the<span class="w"> </span>next<span class="w"> </span>one?
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
+random<span class="w"> </span>string
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x0000555555555638<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_3<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_3:
+<span class="o">=</span>&gt;<span class="w"> </span>0x0000555555555638<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x000055555555563c<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span>0x0000555555555640<span class="w"> </span>&lt;+8&gt;:<span class="w"> </span>lea<span class="w"> </span>0x7<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
+<span class="w"> </span>0x0000555555555645<span class="w"> </span>&lt;+13&gt;:<span class="w"> </span>lea<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>0x000055555555564a<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>lea<span class="w"> </span>0x8<span class="o">(</span>%rsp<span class="o">)</span>,%r8
+<span class="w"> </span>0x000055555555564f<span class="w"> </span>&lt;+23&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1b60<span class="o">(</span>%rip<span class="o">)</span>,%rsi<span class="w"> </span><span class="c1"># 0x5555555571b6</span>
+<span class="w"> </span>0x0000555555555656<span class="w"> </span>&lt;+30&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%eax
+<span class="w"> </span>0x000055555555565b<span class="w"> </span>&lt;+35&gt;:<span class="w"> </span>call<span class="w"> </span>0x5555555552e0<span class="w"> </span>&lt;__isoc99_sscanf@plt&gt;
+<span class="w"> </span>0x0000555555555660<span class="w"> </span>&lt;+40&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x0000555555555663<span class="w"> </span>&lt;+43&gt;:<span class="w"> </span>jle<span class="w"> </span>0x555555555685<span class="w"> </span>&lt;phase_3+77&gt;
+<span class="w"> </span>0x0000555555555665<span class="w"> </span>&lt;+45&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x000055555555566a<span class="w"> </span>&lt;+50&gt;:<span class="w"> </span>ja<span class="w"> </span>0x55555555577d<span class="w"> </span>&lt;phase_3+325&gt;
+<span class="w"> </span>0x0000555555555670<span class="w"> </span>&lt;+56&gt;:<span class="w"> </span>mov<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
+<span class="w"> </span>0x0000555555555674<span class="w"> </span>&lt;+60&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx<span class="w"> </span><span class="c1"># 0x5555555571d0</span>
+<span class="w"> </span>0x000055555555567b<span class="w"> </span>&lt;+67&gt;:<span class="w"> </span>movslq<span class="w"> </span><span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
+<span class="w"> </span>0x000055555555567f<span class="w"> </span>&lt;+71&gt;:<span class="w"> </span>add<span class="w"> </span>%rdx,%rax
+<span class="w"> </span>0x0000555555555682<span class="w"> </span>&lt;+74&gt;:<span class="w"> </span>notrack<span class="w"> </span>jmp<span class="w"> </span>*%rax
+<span class="w"> </span>0x0000555555555685<span class="w"> </span>&lt;+77&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555568a<span class="w"> </span>&lt;+82&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555665<span class="w"> </span>&lt;phase_3+45&gt;
+<span class="w"> </span>0x000055555555568c<span class="w"> </span>&lt;+84&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x63,%eax
+<span class="w"> </span>0x0000555555555691<span class="w"> </span>&lt;+89&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x23d,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555699<span class="w"> </span>&lt;+97&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555787<span class="w"> </span>&lt;phase_3+335&gt;
+<span class="w"> </span>0x000055555555569f<span class="w"> </span>&lt;+103&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555556a4<span class="w"> </span>&lt;+108&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x63,%eax
+<span class="w"> </span>0x00005555555556a9<span class="w"> </span>&lt;+113&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555787<span class="w"> </span>&lt;phase_3+335&gt;
+--Type<span class="w"> </span>&lt;RET&gt;<span class="w"> </span><span class="k">for</span><span class="w"> </span>more,<span class="w"> </span>q<span class="w"> </span>to<span class="w"> </span>quit,<span class="w"> </span>c<span class="w"> </span>to<span class="w"> </span><span class="k">continue</span><span class="w"> </span>without<span class="w"> </span>paging--
</code></pre>
</div>
<p><code>gdb</code> has thankfully marked the address which is being passed to <code>scanf</code>. We can access the value:</p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> x/1s 0x5555555571b6
-0x5555555571b6: <span class="s2">&quot;%d %c %d&quot;</span>
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/1s<span class="w"> </span>0x5555555571b6
+0x5555555571b6:<span class="w"> </span><span class="s2">&quot;%d %c %d&quot;</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<p>BINGO! The program expects an integer, character, and another integer. Onwards.</p>
<div class="codehilite">
-<pre><span></span><code> 0x0000555555555660 &lt;+40&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x0000555555555663 &lt;+43&gt;: jle 0x555555555685 &lt;phase_3+77&gt;
+<pre><span></span><code><span class="w"> </span>0x0000555555555660<span class="w"> </span>&lt;+40&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x0000555555555663<span class="w"> </span>&lt;+43&gt;:<span class="w"> </span>jle<span class="w"> </span>0x555555555685<span class="w"> </span>&lt;phase_3+77&gt;
...
- 0x0000555555555685 &lt;+77&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555685<span class="w"> </span>&lt;+77&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
</code></pre>
</div>
@@ -434,23 +438,24 @@ Dump of assembler code <span class="k">for</span> <span class="k">function</span
<p><em>Note: <code>scanf</code> returns the number of fields that were succesfully converted and assigned</em></p>
<div class="codehilite">
-<pre><span></span><code> 0x0000555555555665 &lt;+45&gt;: cmpl <span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
- 0x000055555555566a &lt;+50&gt;: ja 0x55555555577d &lt;phase_3+325&gt;
+<pre><span></span><code><span class="w"> </span>0x0000555555555665<span class="w"> </span>&lt;+45&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x7,0xc<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x000055555555566a<span class="w"> </span>&lt;+50&gt;:<span class="w"> </span>ja<span class="w"> </span>0x55555555577d<span class="w"> </span>&lt;phase_3+325&gt;
...
- 0x000055555555577d &lt;+325&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555577d<span class="w"> </span>&lt;+325&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
</code></pre>
</div>
-<p>Similarly, the program checks and ensures the returned value is not &gt; 7.
- <div class="codehilite">
- <pre><span></span><code>0x0000555555555670 &lt;+56&gt;: mov 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
- 0x0000555555555674 &lt;+60&gt;: lea 0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx <span class="c1"># 0x5555555571d0</span>
- 0x000055555555567b &lt;+67&gt;: movslq <span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
- 0x000055555555567f &lt;+71&gt;: add %rdx,%rax
- 0x0000555555555682 &lt;+74&gt;: notrack jmp *%rax
- 0x0000555555555685 &lt;+77&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- </code></pre>
- </div></p>
+<p>Similarly, the program checks and ensures the returned value is not &gt; 7. </p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x0000555555555670<span class="w"> </span>&lt;+56&gt;:<span class="w"> </span>mov<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%eax
+<span class="w"> </span>0x0000555555555674<span class="w"> </span>&lt;+60&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1b55<span class="o">(</span>%rip<span class="o">)</span>,%rdx<span class="w"> </span><span class="c1"># 0x5555555571d0</span>
+<span class="w"> </span>0x000055555555567b<span class="w"> </span>&lt;+67&gt;:<span class="w"> </span>movslq<span class="w"> </span><span class="o">(</span>%rdx,%rax,4<span class="o">)</span>,%rax
+<span class="w"> </span>0x000055555555567f<span class="w"> </span>&lt;+71&gt;:<span class="w"> </span>add<span class="w"> </span>%rdx,%rax
+<span class="w"> </span>0x0000555555555682<span class="w"> </span>&lt;+74&gt;:<span class="w"> </span>notrack<span class="w"> </span>jmp<span class="w"> </span>*%rax
+<span class="w"> </span>0x0000555555555685<span class="w"> </span>&lt;+77&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+</code></pre>
+</div>
<ul>
<li><code>0x0000555555555670 &lt;+56&gt;: mov 0xc(%rsp),%eax</code> - Moves value located at <code>0xc</code> (12 in Decimal) bytes above the stack pointer to <code>%eax</code> register. </li>
@@ -480,34 +485,36 @@ $1 = 3
<p><img src="/assets/bomb-lab/phase-3.png" alt="Screenshot of GDB terminal depicting us checking the value of the instruction to be jumped to" /></p>
-<p>We can see that this makes us jump to <code>&lt;phase_3+186&gt;</code> (Continue to step through the code by using <code>ni</code>)
- <div class="codehilite">
- <pre><span></span><code>0x00005555555556f2 &lt;+186&gt;: mov <span class="nv">$0</span>x64,%eax
- 0x00005555555556f7 &lt;+191&gt;: cmpl <span class="nv">$0</span>x280,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x00005555555556ff &lt;+199&gt;: je 0x555555555787 &lt;phase<em>3+335&gt;
- 0x0000555555555705 &lt;+205&gt;: call 0x555555555d4a &lt;explode</em>bomb&gt;
- </code></pre>
- </div></p>
-
-<p>We see that <code>0x64</code> (Decimal 100) is being stored in <code>%eax</code>. Then, the program compares <code>0x280</code> (Decimal 640) with memory address <code>0x8</code> bytes above the stack pointer (<code>%rsp</code>). If the values are equal, then it jumps to <code>&lt;phase_3+335&gt;</code>, otherwise <code>explode_bomb</code> is called.
- <div class="codehilite">
- <pre><span></span><code>0x0000555555555787 &lt;+335&gt;: cmp %al,0x7<span class="o">(</span>%rsp<span class="o">)</span>
- 0x000055555555578b &lt;+339&gt;: jne 0x555555555792 &lt;phase<em>3+346&gt;
- 0x000055555555578d &lt;+341&gt;: add <span class="nv">$0</span>x18,%rsp
- 0x0000555555555791 &lt;+345&gt;: ret <br />
- 0x0000555555555792 &lt;+346&gt;: call 0x555555555d4a &lt;explode</em>bomb&gt;
- </code></pre>
- </div></p>
+<p>We can see that this makes us jump to <code>&lt;phase_3+186&gt;</code> (Continue to step through the code by using <code>ni</code>)</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555556f2<span class="w"> </span>&lt;+186&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x64,%eax
+<span class="w"> </span>0x00005555555556f7<span class="w"> </span>&lt;+191&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x280,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x00005555555556ff<span class="w"> </span>&lt;+199&gt;:<span class="w"> </span>je<span class="w"> </span>0x555555555787<span class="w"> </span>&lt;phase_3+335&gt;
+<span class="w"> </span>0x0000555555555705<span class="w"> </span>&lt;+205&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+</code></pre>
+</div>
+
+<p>We see that <code>0x64</code> (Decimal 100) is being stored in <code>%eax</code>. Then, the program compares <code>0x280</code> (Decimal 640) with memory address <code>0x8</code> bytes above the stack pointer (<code>%rsp</code>). If the values are equal, then it jumps to <code>&lt;phase_3+335&gt;</code>, otherwise <code>explode_bomb</code> is called.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x0000555555555787<span class="w"> </span>&lt;+335&gt;:<span class="w"> </span>cmp<span class="w"> </span>%al,0x7<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x000055555555578b<span class="w"> </span>&lt;+339&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555792<span class="w"> </span>&lt;phase_3+346&gt;
+<span class="w"> </span>0x000055555555578d<span class="w"> </span>&lt;+341&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span>0x0000555555555791<span class="w"> </span>&lt;+345&gt;:<span class="w"> </span>ret<span class="w"> </span>
+<span class="w"> </span>0x0000555555555792<span class="w"> </span>&lt;+346&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+</code></pre>
+</div>
<p>Here, the program is comparing the value of our given character to the value stored in <code>%al</code> (lower 8 bits of <code>EAX</code>), and checks if they are not equal.</p>
<p>Knowing that the character is stored at an offset of 7 bytes to <code>%rsp</code>, we can print and check the value by running:</p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> x/1cw <span class="nv">$rsp</span>+7
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/1cw<span class="w"> </span><span class="nv">$rsp</span>+7
c
-<span class="o">(</span>gdb<span class="o">)</span> print <span class="nv">$al</span>
-<span class="nv">$1</span> <span class="o">=</span> <span class="m">100</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>print<span class="w"> </span><span class="nv">$al</span>
+<span class="nv">$1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">100</span>
</code></pre>
</div>
@@ -515,114 +522,116 @@ c
<div class="codehilite">
<pre><span></span><code>...
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
-<span class="m">3</span> d <span class="m">640</span>
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
+<span class="m">3</span><span class="w"> </span>d<span class="w"> </span><span class="m">640</span>
-Breakpoint <span class="m">1</span>, 0x0000555555555638 <span class="k">in</span> phase_3 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> <span class="k">continue</span>
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x0000555555555638<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_3<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span><span class="k">continue</span>
Continuing.
-Halfway there!
+Halfway<span class="w"> </span>there!
</code></pre>
</div>
<h2>Phase 4</h2>
<div class="codehilite">
-<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$ gdb -ex <span class="s1">&#39;break phase_4&#39;</span> -ex <span class="s1">&#39;break explode_bomb&#39;</span> -ex <span class="s1">&#39;run&#39;</span> -args ./bomb sol.txt
-GNU gdb <span class="o">(</span>Ubuntu <span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span> <span class="m">12</span>.1
-Copyright <span class="o">(</span>C<span class="o">)</span> <span class="m">2022</span> Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version <span class="m">3</span> or later &lt;http://gnu.org/licenses/gpl.html&gt;
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law.
-Type <span class="s2">&quot;show copying&quot;</span> and <span class="s2">&quot;show warranty&quot;</span> <span class="k">for</span> details.
-This GDB was configured as <span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
-Type <span class="s2">&quot;show configuration&quot;</span> <span class="k">for</span> configuration details.
-For bug reporting instructions, please see:
+<pre><span></span><code>joxxxn@jupyter-nxxh6xx8:~/lab2-bomblab-navanchauhan/bombbomb$<span class="w"> </span>gdb<span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break phase_4&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;break explode_bomb&#39;</span><span class="w"> </span>-ex<span class="w"> </span><span class="s1">&#39;run&#39;</span><span class="w"> </span>-args<span class="w"> </span>./bomb<span class="w"> </span>sol.txt<span class="w"> </span>
+GNU<span class="w"> </span>gdb<span class="w"> </span><span class="o">(</span>Ubuntu<span class="w"> </span><span class="m">12</span>.1-0ubuntu1~22.04<span class="o">)</span><span class="w"> </span><span class="m">12</span>.1
+Copyright<span class="w"> </span><span class="o">(</span>C<span class="o">)</span><span class="w"> </span><span class="m">2022</span><span class="w"> </span>Free<span class="w"> </span>Software<span class="w"> </span>Foundation,<span class="w"> </span>Inc.
+License<span class="w"> </span>GPLv3+:<span class="w"> </span>GNU<span class="w"> </span>GPL<span class="w"> </span>version<span class="w"> </span><span class="m">3</span><span class="w"> </span>or<span class="w"> </span>later<span class="w"> </span>&lt;http://gnu.org/licenses/gpl.html&gt;
+This<span class="w"> </span>is<span class="w"> </span>free<span class="w"> </span>software:<span class="w"> </span>you<span class="w"> </span>are<span class="w"> </span>free<span class="w"> </span>to<span class="w"> </span>change<span class="w"> </span>and<span class="w"> </span>redistribute<span class="w"> </span>it.
+There<span class="w"> </span>is<span class="w"> </span>NO<span class="w"> </span>WARRANTY,<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>extent<span class="w"> </span>permitted<span class="w"> </span>by<span class="w"> </span>law.
+Type<span class="w"> </span><span class="s2">&quot;show copying&quot;</span><span class="w"> </span>and<span class="w"> </span><span class="s2">&quot;show warranty&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>details.
+This<span class="w"> </span>GDB<span class="w"> </span>was<span class="w"> </span>configured<span class="w"> </span>as<span class="w"> </span><span class="s2">&quot;x86_64-linux-gnu&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;show configuration&quot;</span><span class="w"> </span><span class="k">for</span><span class="w"> </span>configuration<span class="w"> </span>details.
+For<span class="w"> </span>bug<span class="w"> </span>reporting<span class="w"> </span>instructions,<span class="w"> </span>please<span class="w"> </span>see:
&lt;https://www.gnu.org/software/gdb/bugs/&gt;.
-Find the GDB manual and other documentation resources online at:
- &lt;http://www.gnu.org/software/gdb/documentation/&gt;.
-
-For help, <span class="nb">type</span> <span class="s2">&quot;help&quot;</span>.
-Type <span class="s2">&quot;apropos word&quot;</span> to search <span class="k">for</span> commands related to <span class="s2">&quot;word&quot;</span>...
-Reading symbols from ./bomb...
-Breakpoint <span class="m">1</span> at 0x17d3
-Breakpoint <span class="m">2</span> at 0x1d4a
-Starting program: /home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb sol.txt
-<span class="o">[</span>Thread debugging using libthread_db enabled<span class="o">]</span>
-Using host libthread_db library <span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
-Welcome to my fiendish little bomb. You have <span class="m">6</span> phases with
-which to blow yourself up. Have a nice day!
-Phase <span class="m">1</span> defused. How about the next one?
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
-Halfway there!
-<span class="nb">test</span> string
-
-Breakpoint <span class="m">1</span>, 0x00005555555557d3 <span class="k">in</span> phase_4 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> disas phase_4
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_4:
-<span class="o">=</span>&gt; 0x00005555555557d3 &lt;+0&gt;: endbr64
- 0x00005555555557d7 &lt;+4&gt;: sub <span class="nv">$0</span>x18,%rsp
- 0x00005555555557db &lt;+8&gt;: lea 0x8<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
- 0x00005555555557e0 &lt;+13&gt;: lea 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 0x00005555555557e5 &lt;+18&gt;: lea 0x1bba<span class="o">(</span>%rip<span class="o">)</span>,%rsi <span class="c1"># 0x5555555573a6</span>
- 0x00005555555557ec &lt;+25&gt;: mov <span class="nv">$0</span>x0,%eax
- 0x00005555555557f1 &lt;+30&gt;: call 0x5555555552e0 &lt;__isoc99_sscanf@plt&gt;
- 0x00005555555557f6 &lt;+35&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x00005555555557f9 &lt;+38&gt;: jne 0x555555555802 &lt;phase_4+47&gt;
- 0x00005555555557fb &lt;+40&gt;: cmpl <span class="nv">$0</span>xe,0xc<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555800 &lt;+45&gt;: jbe 0x555555555807 &lt;phase_4+52&gt;
- 0x0000555555555802 &lt;+47&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x0000555555555807 &lt;+52&gt;: mov <span class="nv">$0</span>xe,%edx
- 0x000055555555580c &lt;+57&gt;: mov <span class="nv">$0</span>x0,%esi
- 0x0000555555555811 &lt;+62&gt;: mov 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%edi
- 0x0000555555555815 &lt;+66&gt;: call 0x555555555799 &lt;func4&gt;
- 0x000055555555581a &lt;+71&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x000055555555581d &lt;+74&gt;: jne 0x555555555826 &lt;phase_4+83&gt;
- 0x000055555555581f &lt;+76&gt;: cmpl <span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555824 &lt;+81&gt;: je 0x55555555582b &lt;phase_4+88&gt;
- 0x0000555555555826 &lt;+83&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x000055555555582b &lt;+88&gt;: add <span class="nv">$0</span>x18,%rsp
- 0x000055555555582f &lt;+92&gt;: ret
-End of assembler dump.
-<span class="o">(</span>gdb<span class="o">)</span>
+Find<span class="w"> </span>the<span class="w"> </span>GDB<span class="w"> </span>manual<span class="w"> </span>and<span class="w"> </span>other<span class="w"> </span>documentation<span class="w"> </span>resources<span class="w"> </span>online<span class="w"> </span>at:
+<span class="w"> </span>&lt;http://www.gnu.org/software/gdb/documentation/&gt;.
+
+For<span class="w"> </span>help,<span class="w"> </span><span class="nb">type</span><span class="w"> </span><span class="s2">&quot;help&quot;</span>.
+Type<span class="w"> </span><span class="s2">&quot;apropos word&quot;</span><span class="w"> </span>to<span class="w"> </span>search<span class="w"> </span><span class="k">for</span><span class="w"> </span>commands<span class="w"> </span>related<span class="w"> </span>to<span class="w"> </span><span class="s2">&quot;word&quot;</span>...
+Reading<span class="w"> </span>symbols<span class="w"> </span>from<span class="w"> </span>./bomb...
+Breakpoint<span class="w"> </span><span class="m">1</span><span class="w"> </span>at<span class="w"> </span>0x17d3
+Breakpoint<span class="w"> </span><span class="m">2</span><span class="w"> </span>at<span class="w"> </span>0x1d4a
+Starting<span class="w"> </span>program:<span class="w"> </span>/home/joxxxn/lab2-bomblab-navanchauhan/bombbomb/bomb<span class="w"> </span>sol.txt
+<span class="o">[</span>Thread<span class="w"> </span>debugging<span class="w"> </span>using<span class="w"> </span>libthread_db<span class="w"> </span>enabled<span class="o">]</span>
+Using<span class="w"> </span>host<span class="w"> </span>libthread_db<span class="w"> </span>library<span class="w"> </span><span class="s2">&quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;</span>.
+Welcome<span class="w"> </span>to<span class="w"> </span>my<span class="w"> </span>fiendish<span class="w"> </span>little<span class="w"> </span>bomb.<span class="w"> </span>You<span class="w"> </span>have<span class="w"> </span><span class="m">6</span><span class="w"> </span>phases<span class="w"> </span>with
+which<span class="w"> </span>to<span class="w"> </span>blow<span class="w"> </span>yourself<span class="w"> </span>up.<span class="w"> </span>Have<span class="w"> </span>a<span class="w"> </span>nice<span class="w"> </span>day!
+Phase<span class="w"> </span><span class="m">1</span><span class="w"> </span>defused.<span class="w"> </span>How<span class="w"> </span>about<span class="w"> </span>the<span class="w"> </span>next<span class="w"> </span>one?
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
+Halfway<span class="w"> </span>there!
+<span class="nb">test</span><span class="w"> </span>string
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x00005555555557d3<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_4<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas<span class="w"> </span>phase_4
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_4:
+<span class="o">=</span>&gt;<span class="w"> </span>0x00005555555557d3<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x00005555555557d7<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span>0x00005555555557db<span class="w"> </span>&lt;+8&gt;:<span class="w"> </span>lea<span class="w"> </span>0x8<span class="o">(</span>%rsp<span class="o">)</span>,%rcx
+<span class="w"> </span>0x00005555555557e0<span class="w"> </span>&lt;+13&gt;:<span class="w"> </span>lea<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>0x00005555555557e5<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1bba<span class="o">(</span>%rip<span class="o">)</span>,%rsi<span class="w"> </span><span class="c1"># 0x5555555573a6</span>
+<span class="w"> </span>0x00005555555557ec<span class="w"> </span>&lt;+25&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%eax
+<span class="w"> </span>0x00005555555557f1<span class="w"> </span>&lt;+30&gt;:<span class="w"> </span>call<span class="w"> </span>0x5555555552e0<span class="w"> </span>&lt;__isoc99_sscanf@plt&gt;
+<span class="w"> </span>0x00005555555557f6<span class="w"> </span>&lt;+35&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x00005555555557f9<span class="w"> </span>&lt;+38&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555802<span class="w"> </span>&lt;phase_4+47&gt;
+<span class="w"> </span>0x00005555555557fb<span class="w"> </span>&lt;+40&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>xe,0xc<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555800<span class="w"> </span>&lt;+45&gt;:<span class="w"> </span>jbe<span class="w"> </span>0x555555555807<span class="w"> </span>&lt;phase_4+52&gt;
+<span class="w"> </span>0x0000555555555802<span class="w"> </span>&lt;+47&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555807<span class="w"> </span>&lt;+52&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>xe,%edx
+<span class="w"> </span>0x000055555555580c<span class="w"> </span>&lt;+57&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%esi
+<span class="w"> </span>0x0000555555555811<span class="w"> </span>&lt;+62&gt;:<span class="w"> </span>mov<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%edi
+<span class="w"> </span>0x0000555555555815<span class="w"> </span>&lt;+66&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;
+<span class="w"> </span>0x000055555555581a<span class="w"> </span>&lt;+71&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x000055555555581d<span class="w"> </span>&lt;+74&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555826<span class="w"> </span>&lt;phase_4+83&gt;
+<span class="w"> </span>0x000055555555581f<span class="w"> </span>&lt;+76&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555824<span class="w"> </span>&lt;+81&gt;:<span class="w"> </span>je<span class="w"> </span>0x55555555582b<span class="w"> </span>&lt;phase_4+88&gt;
+<span class="w"> </span>0x0000555555555826<span class="w"> </span>&lt;+83&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555582b<span class="w"> </span>&lt;+88&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x18,%rsp
+<span class="w"> </span>0x000055555555582f<span class="w"> </span>&lt;+92&gt;:<span class="w"> </span>ret<span class="w"> </span>
+End<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>dump.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<p>Again, <code>gdb</code> has marked the string being passed to <code>scanf</code></p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> x/1s 0x5555555573a6
-0x5555555573a6: <span class="s2">&quot;%d %d&quot;</span>
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/1s<span class="w"> </span>0x5555555573a6
+0x5555555573a6:<span class="w"> </span><span class="s2">&quot;%d %d&quot;</span>
</code></pre>
</div>
-<p>Okay, so this time we are supposed to enter 2 numbers.
- <div class="codehilite">
- <pre><span></span><code>0x00005555555557f6 &lt;+35&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x00005555555557f9 &lt;+38&gt;: jne 0x555555555802 &lt;phase_4+47&gt;
- </code></pre>
- </div></p>
+<p>Okay, so this time we are supposed to enter 2 numbers.</p>
-<p>Checks if there were 2 values read from calling <code>scanf</code>, if not -> jump to <code>&lt;phase_4+47&gt;</code> which calls <code>&lt;explode_bomb&gt;</code>.
- <div class="codehilite">
- <pre><span></span><code>0x00005555555557fb &lt;+40&gt;: cmpl <span class="nv">$0</span>xe,0xc<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555800 &lt;+45&gt;: jbe 0x555555555807 &lt;phase_4+52&gt;
- </code></pre>
- </div></p>
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555557f6<span class="w"> </span>&lt;+35&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x00005555555557f9<span class="w"> </span>&lt;+38&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555802<span class="w"> </span>&lt;phase_4+47&gt;
+</code></pre>
+</div>
+
+<p>Checks if there were 2 values read from calling <code>scanf</code>, if not -> jump to <code>&lt;phase_4+47&gt;</code> which calls <code>&lt;explode_bomb&gt;</code>.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555557fb<span class="w"> </span>&lt;+40&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>xe,0xc<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555800<span class="w"> </span>&lt;+45&gt;:<span class="w"> </span>jbe<span class="w"> </span>0x555555555807<span class="w"> </span>&lt;phase_4+52&gt;
+</code></pre>
+</div>
<p>Compare <code>0xe</code> (14 in Decimal) and value stored at <code>$rsp</code> + <code>0xc</code> bytes (Decimal 12). If this condition is met (&lt;= 14), jump to <code>&lt;phase_4+52&gt;</code>. If not, then explode bomb.</p>
<div class="codehilite">
<pre><span></span><code>...
- 0x0000555555555807 &lt;+52&gt;: mov <span class="nv">$0</span>xe,%edx
- 0x000055555555580c &lt;+57&gt;: mov <span class="nv">$0</span>x0,%esi
- 0x0000555555555811 &lt;+62&gt;: mov 0xc<span class="o">(</span>%rsp<span class="o">)</span>,%edi
- 0x0000555555555815 &lt;+66&gt;: call 0x555555555799 &lt;func4&gt;
- 0x000055555555581a &lt;+71&gt;: cmp <span class="nv">$0</span>x2,%eax
- 0x000055555555581d &lt;+74&gt;: jne 0x555555555826 &lt;phase_4+83&gt;
- 0x000055555555581f &lt;+76&gt;: cmpl <span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555824 &lt;+81&gt;: je 0x55555555582b &lt;phase_4+88&gt;
- 0x0000555555555826 &lt;+83&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555807<span class="w"> </span>&lt;+52&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>xe,%edx
+<span class="w"> </span>0x000055555555580c<span class="w"> </span>&lt;+57&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%esi
+<span class="w"> </span>0x0000555555555811<span class="w"> </span>&lt;+62&gt;:<span class="w"> </span>mov<span class="w"> </span>0xc<span class="o">(</span>%rsp<span class="o">)</span>,%edi
+<span class="w"> </span>0x0000555555555815<span class="w"> </span>&lt;+66&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;
+<span class="w"> </span>0x000055555555581a<span class="w"> </span>&lt;+71&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x2,%eax
+<span class="w"> </span>0x000055555555581d<span class="w"> </span>&lt;+74&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555826<span class="w"> </span>&lt;phase_4+83&gt;
+<span class="w"> </span>0x000055555555581f<span class="w"> </span>&lt;+76&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555824<span class="w"> </span>&lt;+81&gt;:<span class="w"> </span>je<span class="w"> </span>0x55555555582b<span class="w"> </span>&lt;phase_4+88&gt;
+<span class="w"> </span>0x0000555555555826<span class="w"> </span>&lt;+83&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
</code></pre>
</div>
@@ -634,28 +643,28 @@ End of assembler dump.
<p>Let us look into <code>func4</code></p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> disas func4
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> func4:
- 0x0000555555555799 &lt;+0&gt;: endbr64
- 0x000055555555579d &lt;+4&gt;: sub <span class="nv">$0</span>x8,%rsp
- 0x00005555555557a1 &lt;+8&gt;: mov %edx,%ecx
- 0x00005555555557a3 &lt;+10&gt;: sub %esi,%ecx
- 0x00005555555557a5 &lt;+12&gt;: shr %ecx
- 0x00005555555557a7 &lt;+14&gt;: add %esi,%ecx
- 0x00005555555557a9 &lt;+16&gt;: cmp %edi,%ecx
- 0x00005555555557ab &lt;+18&gt;: ja 0x5555555557b9 &lt;func4+32&gt;
- 0x00005555555557ad &lt;+20&gt;: mov <span class="nv">$0</span>x0,%eax
- 0x00005555555557b2 &lt;+25&gt;: jb 0x5555555557c5 &lt;func4+44&gt;
- 0x00005555555557b4 &lt;+27&gt;: add <span class="nv">$0</span>x8,%rsp
- 0x00005555555557b8 &lt;+31&gt;: ret
- 0x00005555555557b9 &lt;+32&gt;: lea -0x1<span class="o">(</span>%rcx<span class="o">)</span>,%edx
- 0x00005555555557bc &lt;+35&gt;: call 0x555555555799 &lt;func4&gt;
- 0x00005555555557c1 &lt;+40&gt;: add %eax,%eax
- 0x00005555555557c3 &lt;+42&gt;: jmp 0x5555555557b4 &lt;func4+27&gt;
- 0x00005555555557c5 &lt;+44&gt;: lea 0x1<span class="o">(</span>%rcx<span class="o">)</span>,%esi
- 0x00005555555557c8 &lt;+47&gt;: call 0x555555555799 &lt;func4&gt;
- 0x00005555555557cd &lt;+52&gt;: lea 0x1<span class="o">(</span>%rax,%rax,1<span class="o">)</span>,%eax
- 0x00005555555557d1 &lt;+56&gt;: jmp 0x5555555557b4 &lt;func4+27&gt;
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas<span class="w"> </span>func4
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>func4:
+<span class="w"> </span>0x0000555555555799<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x000055555555579d<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x8,%rsp
+<span class="w"> </span>0x00005555555557a1<span class="w"> </span>&lt;+8&gt;:<span class="w"> </span>mov<span class="w"> </span>%edx,%ecx
+<span class="w"> </span>0x00005555555557a3<span class="w"> </span>&lt;+10&gt;:<span class="w"> </span>sub<span class="w"> </span>%esi,%ecx
+<span class="w"> </span>0x00005555555557a5<span class="w"> </span>&lt;+12&gt;:<span class="w"> </span>shr<span class="w"> </span>%ecx
+<span class="w"> </span>0x00005555555557a7<span class="w"> </span>&lt;+14&gt;:<span class="w"> </span>add<span class="w"> </span>%esi,%ecx
+<span class="w"> </span>0x00005555555557a9<span class="w"> </span>&lt;+16&gt;:<span class="w"> </span>cmp<span class="w"> </span>%edi,%ecx
+<span class="w"> </span>0x00005555555557ab<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>ja<span class="w"> </span>0x5555555557b9<span class="w"> </span>&lt;func4+32&gt;
+<span class="w"> </span>0x00005555555557ad<span class="w"> </span>&lt;+20&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%eax
+<span class="w"> </span>0x00005555555557b2<span class="w"> </span>&lt;+25&gt;:<span class="w"> </span>jb<span class="w"> </span>0x5555555557c5<span class="w"> </span>&lt;func4+44&gt;
+<span class="w"> </span>0x00005555555557b4<span class="w"> </span>&lt;+27&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x8,%rsp
+<span class="w"> </span>0x00005555555557b8<span class="w"> </span>&lt;+31&gt;:<span class="w"> </span>ret<span class="w"> </span>
+<span class="w"> </span>0x00005555555557b9<span class="w"> </span>&lt;+32&gt;:<span class="w"> </span>lea<span class="w"> </span>-0x1<span class="o">(</span>%rcx<span class="o">)</span>,%edx
+<span class="w"> </span>0x00005555555557bc<span class="w"> </span>&lt;+35&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;
+<span class="w"> </span>0x00005555555557c1<span class="w"> </span>&lt;+40&gt;:<span class="w"> </span>add<span class="w"> </span>%eax,%eax
+<span class="w"> </span>0x00005555555557c3<span class="w"> </span>&lt;+42&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555557b4<span class="w"> </span>&lt;func4+27&gt;
+<span class="w"> </span>0x00005555555557c5<span class="w"> </span>&lt;+44&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1<span class="o">(</span>%rcx<span class="o">)</span>,%esi
+<span class="w"> </span>0x00005555555557c8<span class="w"> </span>&lt;+47&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;
+<span class="w"> </span>0x00005555555557cd<span class="w"> </span>&lt;+52&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1<span class="o">(</span>%rax,%rax,1<span class="o">)</span>,%eax
+<span class="w"> </span>0x00005555555557d1<span class="w"> </span>&lt;+56&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555557b4<span class="w"> </span>&lt;func4+27&gt;
</code></pre>
</div>
@@ -665,25 +674,25 @@ Dump of assembler code <span class="k">for</span> <span class="k">function</span
<div class="codehilite">
<pre><span></span><code>endbr64
-sub <span class="nv">$0</span>x8,%rsp // subtract <span class="m">8</span> bytes from the stack pointer
-mov %edx,%ecx // Move the value <span class="k">in</span> register %edx to %ecx
-sub %esi,%ecx // Subtract the value <span class="k">in</span> %esi from %ecx
-shr %ecx // Right <span class="nb">shift</span> the value <span class="k">in</span> %ecx by one bit <span class="o">(</span>dividing the value by <span class="m">2</span><span class="o">)</span>
-add %esi,%ecx // Add the value <span class="k">in</span> %esi to %ecx
-cmp %edi,%ecx // Compare
-ja 0x5555555557b9 &lt;func4+32&gt; // If %ecx &gt; %edi -&gt; jump to instruction at offset +32
-mov <span class="nv">$0</span>x0,%eax // Move <span class="m">0</span> to %eax
-jb 0x5555555557c5 &lt;func4+44&gt; // If %ecx &lt; %edi -&gt; jump to instruction at offset +44.
-add <span class="nv">$0</span>x8,%rsp // add <span class="m">8</span> bytes to the stack pointer
-ret // <span class="k">return</span>
-lea -0x1<span class="o">(</span>%rcx<span class="o">)</span>,%edx // LEA of <span class="nv">$rxc</span> - <span class="m">1</span> into <span class="nv">$edx</span>
-call 0x555555555799 &lt;func4&gt; // Call itself
-add %eax,%eax // Double the value <span class="k">in</span> %eax
-jmp 0x5555555557b4 &lt;func4+27&gt; // jump to the instruction at offset +27
-lea 0x1<span class="o">(</span>%rcx<span class="o">)</span>,%esi
-call 0x555555555799 &lt;func4&gt;
-lea 0x1<span class="o">(</span>%rax,%rax,1<span class="o">)</span>,%eax // LEA of %rax * <span class="m">2</span> + <span class="m">1</span> into <span class="nv">$eax</span>
-jmp 0x5555555557b4 &lt;func4+27&gt;
+sub<span class="w"> </span><span class="nv">$0</span>x8,%rsp<span class="w"> </span>//<span class="w"> </span>subtract<span class="w"> </span><span class="m">8</span><span class="w"> </span>bytes<span class="w"> </span>from<span class="w"> </span>the<span class="w"> </span>stack<span class="w"> </span>pointer
+mov<span class="w"> </span>%edx,%ecx<span class="w"> </span>//<span class="w"> </span>Move<span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span><span class="k">in</span><span class="w"> </span>register<span class="w"> </span>%edx<span class="w"> </span>to<span class="w"> </span>%ecx
+sub<span class="w"> </span>%esi,%ecx<span class="w"> </span>//<span class="w"> </span>Subtract<span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span><span class="k">in</span><span class="w"> </span>%esi<span class="w"> </span>from<span class="w"> </span>%ecx
+shr<span class="w"> </span>%ecx<span class="w"> </span>//<span class="w"> </span>Right<span class="w"> </span><span class="nb">shift</span><span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span><span class="k">in</span><span class="w"> </span>%ecx<span class="w"> </span>by<span class="w"> </span>one<span class="w"> </span>bit<span class="w"> </span><span class="o">(</span>dividing<span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span>by<span class="w"> </span><span class="m">2</span><span class="o">)</span>
+add<span class="w"> </span>%esi,%ecx<span class="w"> </span>//<span class="w"> </span>Add<span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span><span class="k">in</span><span class="w"> </span>%esi<span class="w"> </span>to<span class="w"> </span>%ecx
+cmp<span class="w"> </span>%edi,%ecx<span class="w"> </span>//<span class="w"> </span>Compare
+ja<span class="w"> </span>0x5555555557b9<span class="w"> </span>&lt;func4+32&gt;<span class="w"> </span>//<span class="w"> </span>If<span class="w"> </span>%ecx<span class="w"> </span>&gt;<span class="w"> </span>%edi<span class="w"> </span>-&gt;<span class="w"> </span>jump<span class="w"> </span>to<span class="w"> </span>instruction<span class="w"> </span>at<span class="w"> </span>offset<span class="w"> </span>+32
+mov<span class="w"> </span><span class="nv">$0</span>x0,%eax<span class="w"> </span>//<span class="w"> </span>Move<span class="w"> </span><span class="m">0</span><span class="w"> </span>to<span class="w"> </span>%eax
+jb<span class="w"> </span>0x5555555557c5<span class="w"> </span>&lt;func4+44&gt;<span class="w"> </span>//<span class="w"> </span>If<span class="w"> </span>%ecx<span class="w"> </span>&lt;<span class="w"> </span>%edi<span class="w"> </span>-&gt;<span class="w"> </span>jump<span class="w"> </span>to<span class="w"> </span>instruction<span class="w"> </span>at<span class="w"> </span>offset<span class="w"> </span>+44.
+add<span class="w"> </span><span class="nv">$0</span>x8,%rsp<span class="w"> </span>//<span class="w"> </span>add<span class="w"> </span><span class="m">8</span><span class="w"> </span>bytes<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>stack<span class="w"> </span>pointer
+ret<span class="w"> </span>//<span class="w"> </span><span class="k">return</span>
+lea<span class="w"> </span>-0x1<span class="o">(</span>%rcx<span class="o">)</span>,%edx<span class="w"> </span>//<span class="w"> </span>LEA<span class="w"> </span>of<span class="w"> </span><span class="nv">$rxc</span><span class="w"> </span>-<span class="w"> </span><span class="m">1</span><span class="w"> </span>into<span class="w"> </span><span class="nv">$edx</span>
+call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;<span class="w"> </span>//<span class="w"> </span>Call<span class="w"> </span>itself
+add<span class="w"> </span>%eax,%eax<span class="w"> </span>//<span class="w"> </span>Double<span class="w"> </span>the<span class="w"> </span>value<span class="w"> </span><span class="k">in</span><span class="w"> </span>%eax
+jmp<span class="w"> </span>0x5555555557b4<span class="w"> </span>&lt;func4+27&gt;<span class="w"> </span>//<span class="w"> </span>jump<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>instruction<span class="w"> </span>at<span class="w"> </span>offset<span class="w"> </span>+27
+lea<span class="w"> </span>0x1<span class="o">(</span>%rcx<span class="o">)</span>,%esi
+call<span class="w"> </span>0x555555555799<span class="w"> </span>&lt;func4&gt;
+lea<span class="w"> </span>0x1<span class="o">(</span>%rax,%rax,1<span class="o">)</span>,%eax<span class="w"> </span>//<span class="w"> </span>LEA<span class="w"> </span>of<span class="w"> </span>%rax<span class="w"> </span>*<span class="w"> </span><span class="m">2</span><span class="w"> </span>+<span class="w"> </span><span class="m">1</span><span class="w"> </span>into<span class="w"> </span><span class="nv">$eax</span><span class="w"> </span>
+jmp<span class="w"> </span>0x5555555557b4<span class="w"> </span>&lt;func4+27&gt;
</code></pre>
</div>
@@ -710,79 +719,80 @@ jmp 0x5555555557b4 &lt;func4+27&gt;
<p>Okay, so we know that the number needed to be passed to <code>func4</code> is 5. But, what about the second digit?</p>
-<p>If we go back to the code for <code>&lt;phase_4&gt;</code>, we can see that:
- <div class="codehilite">
- <pre><span></span><code>0x000055555555581f &lt;+76&gt;: cmpl <span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555824 &lt;+81&gt;: je 0x55555555582b &lt;phase_4+88&gt;
- </code></pre>
- </div></p>
+<p>If we go back to the code for <code>&lt;phase_4&gt;</code>, we can see that:</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x000055555555581f<span class="w"> </span>&lt;+76&gt;:<span class="w"> </span>cmpl<span class="w"> </span><span class="nv">$0</span>x2,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555824<span class="w"> </span>&lt;+81&gt;:<span class="w"> </span>je<span class="w"> </span>0x55555555582b<span class="w"> </span>&lt;phase_4+88&gt;
+</code></pre>
+</div>
<p>The value at <code>$rsp+8</code> should be equal to 2. So, let us try passing <code>5 2</code> as our input.</p>
<div class="codehilite">
<pre><span></span><code>...
-Phase <span class="m">1</span> defused. How about the next one?
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
-Halfway there!
-<span class="m">5</span> <span class="m">2</span>
+Phase<span class="w"> </span><span class="m">1</span><span class="w"> </span>defused.<span class="w"> </span>How<span class="w"> </span>about<span class="w"> </span>the<span class="w"> </span>next<span class="w"> </span>one?
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
+Halfway<span class="w"> </span>there!
+<span class="m">5</span><span class="w"> </span><span class="m">2</span>
-Breakpoint <span class="m">1</span>, 0x00005555555557d3 <span class="k">in</span> phase_4 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> <span class="k">continue</span>
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x00005555555557d3<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_4<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span><span class="k">continue</span>
Continuing.
-So you got that one. Try this one.
+So<span class="w"> </span>you<span class="w"> </span>got<span class="w"> </span>that<span class="w"> </span>one.<span class="w"> </span>Try<span class="w"> </span>this<span class="w"> </span>one.
</code></pre>
</div>
<h2>Phase 5</h2>
<div class="codehilite">
-<pre><span></span><code>So you got that one. Try this one.
-<span class="nb">test</span> string
-
-Breakpoint <span class="m">1</span>, 0x0000555555555830 <span class="k">in</span> phase_5 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> disas phase_5
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_5:
-<span class="o">=</span>&gt; 0x0000555555555830 &lt;+0&gt;: endbr64
- 0x0000555555555834 &lt;+4&gt;: push %rbx
- 0x0000555555555835 &lt;+5&gt;: sub <span class="nv">$0</span>x10,%rsp
- 0x0000555555555839 &lt;+9&gt;: mov %rdi,%rbx
- 0x000055555555583c &lt;+12&gt;: call 0x555555555b10 &lt;string_length&gt;
- 0x0000555555555841 &lt;+17&gt;: cmp <span class="nv">$0</span>x6,%eax
- 0x0000555555555844 &lt;+20&gt;: jne 0x55555555588b &lt;phase_5+91&gt;
- 0x0000555555555846 &lt;+22&gt;: mov <span class="nv">$0</span>x0,%eax
- 0x000055555555584b &lt;+27&gt;: lea 0x199e<span class="o">(</span>%rip<span class="o">)</span>,%rcx <span class="c1"># 0x5555555571f0 &lt;array.0&gt;</span>
- 0x0000555555555852 &lt;+34&gt;: movzbl <span class="o">(</span>%rbx,%rax,1<span class="o">)</span>,%edx
- 0x0000555555555856 &lt;+38&gt;: and <span class="nv">$0</span>xf,%edx
- 0x0000555555555859 &lt;+41&gt;: movzbl <span class="o">(</span>%rcx,%rdx,1<span class="o">)</span>,%edx
- 0x000055555555585d &lt;+45&gt;: mov %dl,0x9<span class="o">(</span>%rsp,%rax,1<span class="o">)</span>
- 0x0000555555555861 &lt;+49&gt;: add <span class="nv">$0</span>x1,%rax
- 0x0000555555555865 &lt;+53&gt;: cmp <span class="nv">$0</span>x6,%rax
- 0x0000555555555869 &lt;+57&gt;: jne 0x555555555852 &lt;phase_5+34&gt;
- 0x000055555555586b &lt;+59&gt;: movb <span class="nv">$0</span>x0,0xf<span class="o">(</span>%rsp<span class="o">)</span>
- 0x0000555555555870 &lt;+64&gt;: lea 0x9<span class="o">(</span>%rsp<span class="o">)</span>,%rdi
- 0x0000555555555875 &lt;+69&gt;: lea 0x1943<span class="o">(</span>%rip<span class="o">)</span>,%rsi <span class="c1"># 0x5555555571bf</span>
- 0x000055555555587c &lt;+76&gt;: call 0x555555555b31 &lt;strings_not_equal&gt;
- 0x0000555555555881 &lt;+81&gt;: <span class="nb">test</span> %eax,%eax
- 0x0000555555555883 &lt;+83&gt;: jne 0x555555555892 &lt;phase_5+98&gt;
- 0x0000555555555885 &lt;+85&gt;: add <span class="nv">$0</span>x10,%rsp
- 0x0000555555555889 &lt;+89&gt;: pop %rbx
- 0x000055555555588a &lt;+90&gt;: ret
- 0x000055555555588b &lt;+91&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x0000555555555890 &lt;+96&gt;: jmp 0x555555555846 &lt;phase_5+22&gt;
- 0x0000555555555892 &lt;+98&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x0000555555555897 &lt;+103&gt;: jmp 0x555555555885 &lt;phase_5+85&gt;
-End of assembler dump.
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code>So<span class="w"> </span>you<span class="w"> </span>got<span class="w"> </span>that<span class="w"> </span>one.<span class="w"> </span>Try<span class="w"> </span>this<span class="w"> </span>one.
+<span class="nb">test</span><span class="w"> </span>string
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x0000555555555830<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_5<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas<span class="w"> </span>phase_5
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_5:
+<span class="o">=</span>&gt;<span class="w"> </span>0x0000555555555830<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x0000555555555834<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>push<span class="w"> </span>%rbx
+<span class="w"> </span>0x0000555555555835<span class="w"> </span>&lt;+5&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x10,%rsp
+<span class="w"> </span>0x0000555555555839<span class="w"> </span>&lt;+9&gt;:<span class="w"> </span>mov<span class="w"> </span>%rdi,%rbx
+<span class="w"> </span>0x000055555555583c<span class="w"> </span>&lt;+12&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555b10<span class="w"> </span>&lt;string_length&gt;
+<span class="w"> </span>0x0000555555555841<span class="w"> </span>&lt;+17&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%eax
+<span class="w"> </span>0x0000555555555844<span class="w"> </span>&lt;+20&gt;:<span class="w"> </span>jne<span class="w"> </span>0x55555555588b<span class="w"> </span>&lt;phase_5+91&gt;
+<span class="w"> </span>0x0000555555555846<span class="w"> </span>&lt;+22&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%eax
+<span class="w"> </span>0x000055555555584b<span class="w"> </span>&lt;+27&gt;:<span class="w"> </span>lea<span class="w"> </span>0x199e<span class="o">(</span>%rip<span class="o">)</span>,%rcx<span class="w"> </span><span class="c1"># 0x5555555571f0 &lt;array.0&gt;</span>
+<span class="w"> </span>0x0000555555555852<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>movzbl<span class="w"> </span><span class="o">(</span>%rbx,%rax,1<span class="o">)</span>,%edx
+<span class="w"> </span>0x0000555555555856<span class="w"> </span>&lt;+38&gt;:<span class="w"> </span>and<span class="w"> </span><span class="nv">$0</span>xf,%edx
+<span class="w"> </span>0x0000555555555859<span class="w"> </span>&lt;+41&gt;:<span class="w"> </span>movzbl<span class="w"> </span><span class="o">(</span>%rcx,%rdx,1<span class="o">)</span>,%edx
+<span class="w"> </span>0x000055555555585d<span class="w"> </span>&lt;+45&gt;:<span class="w"> </span>mov<span class="w"> </span>%dl,0x9<span class="o">(</span>%rsp,%rax,1<span class="o">)</span>
+<span class="w"> </span>0x0000555555555861<span class="w"> </span>&lt;+49&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%rax
+<span class="w"> </span>0x0000555555555865<span class="w"> </span>&lt;+53&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%rax
+<span class="w"> </span>0x0000555555555869<span class="w"> </span>&lt;+57&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555852<span class="w"> </span>&lt;phase_5+34&gt;
+<span class="w"> </span>0x000055555555586b<span class="w"> </span>&lt;+59&gt;:<span class="w"> </span>movb<span class="w"> </span><span class="nv">$0</span>x0,0xf<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x0000555555555870<span class="w"> </span>&lt;+64&gt;:<span class="w"> </span>lea<span class="w"> </span>0x9<span class="o">(</span>%rsp<span class="o">)</span>,%rdi
+<span class="w"> </span>0x0000555555555875<span class="w"> </span>&lt;+69&gt;:<span class="w"> </span>lea<span class="w"> </span>0x1943<span class="o">(</span>%rip<span class="o">)</span>,%rsi<span class="w"> </span><span class="c1"># 0x5555555571bf</span>
+<span class="w"> </span>0x000055555555587c<span class="w"> </span>&lt;+76&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555b31<span class="w"> </span>&lt;strings_not_equal&gt;
+<span class="w"> </span>0x0000555555555881<span class="w"> </span>&lt;+81&gt;:<span class="w"> </span><span class="nb">test</span><span class="w"> </span>%eax,%eax
+<span class="w"> </span>0x0000555555555883<span class="w"> </span>&lt;+83&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555892<span class="w"> </span>&lt;phase_5+98&gt;
+<span class="w"> </span>0x0000555555555885<span class="w"> </span>&lt;+85&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x10,%rsp
+<span class="w"> </span>0x0000555555555889<span class="w"> </span>&lt;+89&gt;:<span class="w"> </span>pop<span class="w"> </span>%rbx
+<span class="w"> </span>0x000055555555588a<span class="w"> </span>&lt;+90&gt;:<span class="w"> </span>ret<span class="w"> </span>
+<span class="w"> </span>0x000055555555588b<span class="w"> </span>&lt;+91&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555890<span class="w"> </span>&lt;+96&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555846<span class="w"> </span>&lt;phase_5+22&gt;
+<span class="w"> </span>0x0000555555555892<span class="w"> </span>&lt;+98&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x0000555555555897<span class="w"> </span>&lt;+103&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555885<span class="w"> </span>&lt;phase_5+85&gt;
+End<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>dump.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<div class="codehilite">
<pre><span></span><code>...
- 0x000055555555583c &lt;+12&gt;: call 0x555555555b10 &lt;string_length&gt;
- 0x0000555555555841 &lt;+17&gt;: cmp <span class="nv">$0</span>x6,%eax
- 0x0000555555555844 &lt;+20&gt;: jne 0x55555555588b &lt;phase_5+91&gt;
+<span class="w"> </span>0x000055555555583c<span class="w"> </span>&lt;+12&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555b10<span class="w"> </span>&lt;string_length&gt;
+<span class="w"> </span>0x0000555555555841<span class="w"> </span>&lt;+17&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%eax
+<span class="w"> </span>0x0000555555555844<span class="w"> </span>&lt;+20&gt;:<span class="w"> </span>jne<span class="w"> </span>0x55555555588b<span class="w"> </span>&lt;phase_5+91&gt;
...
- 0x000055555555588b &lt;+91&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
+<span class="w"> </span>0x000055555555588b<span class="w"> </span>&lt;+91&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
...
</code></pre>
</div>
@@ -810,11 +820,11 @@ End of assembler dump.
<p>We can check the reference string we need, which <code>gdb</code> has marked as <code># 0x5555555571bf</code>, and the lookup table marked as <code># 0x5555555571f0 &lt;array.0&gt;</code></p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> x/s 0x5555555571bf
-0x5555555571bf: <span class="s2">&quot;bruins&quot;</span>
-<span class="o">(</span>gdb<span class="o">)</span> x/s 0x5555555571f0
-0x5555555571f0 &lt;array.0&gt;: <span class="s2">&quot;maduiersnfotvbylSo you think you can stop the bomb with ctrl-c, do you?&quot;</span>
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/s<span class="w"> </span>0x5555555571bf
+0x5555555571bf:<span class="w"> </span><span class="s2">&quot;bruins&quot;</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/s<span class="w"> </span>0x5555555571f0
+0x5555555571f0<span class="w"> </span>&lt;array.0&gt;:<span class="w"> </span><span class="s2">&quot;maduiersnfotvbylSo you think you can stop the bomb with ctrl-c, do you?&quot;</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
@@ -850,15 +860,15 @@ s -&gt; g
<div class="codehilite">
<pre><span></span><code>...
-That<span class="err">&#39;</span>s number <span class="m">2</span>. Keep going!
-Halfway there!
-So you got that one. Try this one.
+That<span class="err">&#39;</span>s<span class="w"> </span>number<span class="w"> </span><span class="m">2</span>.<span class="w"> </span>Keep<span class="w"> </span>going!
+Halfway<span class="w"> </span>there!
+So<span class="w"> </span>you<span class="w"> </span>got<span class="w"> </span>that<span class="w"> </span>one.<span class="w"> </span>Try<span class="w"> </span>this<span class="w"> </span>one.
mfcdhg
-Breakpoint <span class="m">1</span>, 0x0000555555555830 <span class="k">in</span> phase_5 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> <span class="k">continue</span>
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x0000555555555830<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_5<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span><span class="k">continue</span>
Continuing.
-Good work! On to the next...
+Good<span class="w"> </span>work!<span class="w"> </span>On<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>next...
</code></pre>
</div>
@@ -867,122 +877,123 @@ Good work! On to the next...
<h2>Phase 6</h2>
<div class="codehilite">
-<pre><span></span><code>Good work! On to the next...
-<span class="nb">test</span> string
-
-Breakpoint <span class="m">1</span>, 0x0000555555555899 <span class="k">in</span> phase_6 <span class="o">()</span>
-<span class="o">(</span>gdb<span class="o">)</span> disas phase_6
-Dump of assembler code <span class="k">for</span> <span class="k">function</span> phase_6:
-<span class="o">=</span>&gt; 0x0000555555555899 &lt;+0&gt;: endbr64
- 0x000055555555589d &lt;+4&gt;: push %r15
- 0x000055555555589f &lt;+6&gt;: push %r14
- 0x00005555555558a1 &lt;+8&gt;: push %r13
- 0x00005555555558a3 &lt;+10&gt;: push %r12
- 0x00005555555558a5 &lt;+12&gt;: push %rbp
- 0x00005555555558a6 &lt;+13&gt;: push %rbx
- 0x00005555555558a7 &lt;+14&gt;: sub <span class="nv">$0</span>x68,%rsp
- 0x00005555555558ab &lt;+18&gt;: lea 0x40<span class="o">(</span>%rsp<span class="o">)</span>,%rax
- 0x00005555555558b0 &lt;+23&gt;: mov %rax,%r14
- 0x00005555555558b3 &lt;+26&gt;: mov %rax,0x8<span class="o">(</span>%rsp<span class="o">)</span>
- 0x00005555555558b8 &lt;+31&gt;: mov %rax,%rsi
- 0x00005555555558bb &lt;+34&gt;: call 0x555555555d97 &lt;read_six_numbers&gt;
- 0x00005555555558c0 &lt;+39&gt;: mov %r14,%r12
- 0x00005555555558c3 &lt;+42&gt;: mov <span class="nv">$0</span>x1,%r15d
- 0x00005555555558c9 &lt;+48&gt;: mov %r14,%r13
- 0x00005555555558cc &lt;+51&gt;: jmp 0x555555555997 &lt;phase_6+254&gt;
- 0x00005555555558d1 &lt;+56&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x00005555555558d6 &lt;+61&gt;: jmp 0x5555555559a9 &lt;phase_6+272&gt;
- 0x00005555555558db &lt;+66&gt;: add <span class="nv">$0</span>x1,%rbx
- 0x00005555555558df &lt;+70&gt;: cmp <span class="nv">$0</span>x5,%ebx
- 0x00005555555558e2 &lt;+73&gt;: jg 0x55555555598f &lt;phase_6+246&gt;
- 0x00005555555558e8 &lt;+79&gt;: mov 0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax
- 0x00005555555558ed &lt;+84&gt;: cmp %eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
- 0x00005555555558f0 &lt;+87&gt;: jne 0x5555555558db &lt;phase_6+66&gt;
- 0x00005555555558f2 &lt;+89&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x00005555555558f7 &lt;+94&gt;: jmp 0x5555555558db &lt;phase_6+66&gt;
- 0x00005555555558f9 &lt;+96&gt;: mov 0x8<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 0x00005555555558fe &lt;+101&gt;: add <span class="nv">$0</span>x18,%rdx
- 0x0000555555555902 &lt;+105&gt;: mov <span class="nv">$0</span>x7,%ecx
- 0x0000555555555907 &lt;+110&gt;: mov %ecx,%eax
- 0x0000555555555909 &lt;+112&gt;: sub <span class="o">(</span>%r12<span class="o">)</span>,%eax
- 0x000055555555590d &lt;+116&gt;: mov %eax,<span class="o">(</span>%r12<span class="o">)</span>
- 0x0000555555555911 &lt;+120&gt;: add <span class="nv">$0</span>x4,%r12
- 0x0000555555555915 &lt;+124&gt;: cmp %r12,%rdx
- 0x0000555555555918 &lt;+127&gt;: jne 0x555555555907 &lt;phase_6+110&gt;
- 0x000055555555591a &lt;+129&gt;: mov <span class="nv">$0</span>x0,%esi
- 0x000055555555591f &lt;+134&gt;: mov 0x40<span class="o">(</span>%rsp,%rsi,4<span class="o">)</span>,%ecx
- 0x0000555555555923 &lt;+138&gt;: mov <span class="nv">$0</span>x1,%eax
- 0x0000555555555928 &lt;+143&gt;: lea 0x3d01<span class="o">(</span>%rip<span class="o">)</span>,%rdx <span class="c1"># 0x555555559630 &lt;node1&gt;</span>
---Type &lt;RET&gt; <span class="k">for</span> more, q to quit, c to <span class="k">continue</span> without paging--
- 0x000055555555592f &lt;+150&gt;: cmp <span class="nv">$0</span>x1,%ecx
- 0x0000555555555932 &lt;+153&gt;: jle 0x55555555593f &lt;phase_6+166&gt;
- 0x0000555555555934 &lt;+155&gt;: mov 0x8<span class="o">(</span>%rdx<span class="o">)</span>,%rdx
- 0x0000555555555938 &lt;+159&gt;: add <span class="nv">$0</span>x1,%eax
- 0x000055555555593b &lt;+162&gt;: cmp %ecx,%eax
- 0x000055555555593d &lt;+164&gt;: jne 0x555555555934 &lt;phase_6+155&gt;
- 0x000055555555593f &lt;+166&gt;: mov %rdx,0x10<span class="o">(</span>%rsp,%rsi,8<span class="o">)</span>
- 0x0000555555555944 &lt;+171&gt;: add <span class="nv">$0</span>x1,%rsi
- 0x0000555555555948 &lt;+175&gt;: cmp <span class="nv">$0</span>x6,%rsi
- 0x000055555555594c &lt;+179&gt;: jne 0x55555555591f &lt;phase_6+134&gt;
- 0x000055555555594e &lt;+181&gt;: mov 0x10<span class="o">(</span>%rsp<span class="o">)</span>,%rbx
- 0x0000555555555953 &lt;+186&gt;: mov 0x18<span class="o">(</span>%rsp<span class="o">)</span>,%rax
- 0x0000555555555958 &lt;+191&gt;: mov %rax,0x8<span class="o">(</span>%rbx<span class="o">)</span>
- 0x000055555555595c &lt;+195&gt;: mov 0x20<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 0x0000555555555961 &lt;+200&gt;: mov %rdx,0x8<span class="o">(</span>%rax<span class="o">)</span>
- 0x0000555555555965 &lt;+204&gt;: mov 0x28<span class="o">(</span>%rsp<span class="o">)</span>,%rax
- 0x000055555555596a &lt;+209&gt;: mov %rax,0x8<span class="o">(</span>%rdx<span class="o">)</span>
- 0x000055555555596e &lt;+213&gt;: mov 0x30<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
- 0x0000555555555973 &lt;+218&gt;: mov %rdx,0x8<span class="o">(</span>%rax<span class="o">)</span>
- 0x0000555555555977 &lt;+222&gt;: mov 0x38<span class="o">(</span>%rsp<span class="o">)</span>,%rax
- 0x000055555555597c &lt;+227&gt;: mov %rax,0x8<span class="o">(</span>%rdx<span class="o">)</span>
- 0x0000555555555980 &lt;+231&gt;: movq <span class="nv">$0</span>x0,0x8<span class="o">(</span>%rax<span class="o">)</span>
- 0x0000555555555988 &lt;+239&gt;: mov <span class="nv">$0</span>x5,%ebp
- 0x000055555555598d &lt;+244&gt;: jmp 0x5555555559c4 &lt;phase_6+299&gt;
- 0x000055555555598f &lt;+246&gt;: add <span class="nv">$0</span>x1,%r15
- 0x0000555555555993 &lt;+250&gt;: add <span class="nv">$0</span>x4,%r14
- 0x0000555555555997 &lt;+254&gt;: mov %r14,%rbp
- 0x000055555555599a &lt;+257&gt;: mov <span class="o">(</span>%r14<span class="o">)</span>,%eax
- 0x000055555555599d &lt;+260&gt;: sub <span class="nv">$0</span>x1,%eax
- 0x00005555555559a0 &lt;+263&gt;: cmp <span class="nv">$0</span>x5,%eax
- 0x00005555555559a3 &lt;+266&gt;: ja 0x5555555558d1 &lt;phase_6+56&gt;
- 0x00005555555559a9 &lt;+272&gt;: cmp <span class="nv">$0</span>x5,%r15d
- 0x00005555555559ad &lt;+276&gt;: jg 0x5555555558f9 &lt;phase_6+96&gt;
- 0x00005555555559b3 &lt;+282&gt;: mov %r15,%rbx
- 0x00005555555559b6 &lt;+285&gt;: jmp 0x5555555558e8 &lt;phase_6+79&gt;
- 0x00005555555559bb &lt;+290&gt;: mov 0x8<span class="o">(</span>%rbx<span class="o">)</span>,%rbx
- 0x00005555555559bf &lt;+294&gt;: sub <span class="nv">$0</span>x1,%ebp
- 0x00005555555559c2 &lt;+297&gt;: je 0x5555555559d5 &lt;phase_6+316&gt;
- 0x00005555555559c4 &lt;+299&gt;: mov 0x8<span class="o">(</span>%rbx<span class="o">)</span>,%rax
- 0x00005555555559c8 &lt;+303&gt;: mov <span class="o">(</span>%rax<span class="o">)</span>,%eax
- 0x00005555555559ca &lt;+305&gt;: cmp %eax,<span class="o">(</span>%rbx<span class="o">)</span>
---Type &lt;RET&gt; <span class="k">for</span> more, q to quit, c to <span class="k">continue</span> without paging--
- 0x00005555555559cc &lt;+307&gt;: jge 0x5555555559bb &lt;phase_6+290&gt;
- 0x00005555555559ce &lt;+309&gt;: call 0x555555555d4a &lt;explode_bomb&gt;
- 0x00005555555559d3 &lt;+314&gt;: jmp 0x5555555559bb &lt;phase_6+290&gt;
- 0x00005555555559d5 &lt;+316&gt;: add <span class="nv">$0</span>x68,%rsp
- 0x00005555555559d9 &lt;+320&gt;: pop %rbx
- 0x00005555555559da &lt;+321&gt;: pop %rbp
- 0x00005555555559db &lt;+322&gt;: pop %r12
- 0x00005555555559dd &lt;+324&gt;: pop %r13
- 0x00005555555559df &lt;+326&gt;: pop %r14
- 0x00005555555559e1 &lt;+328&gt;: pop %r15
- 0x00005555555559e3 &lt;+330&gt;: ret
-End of assembler dump.
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code>Good<span class="w"> </span>work!<span class="w"> </span>On<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>next...
+<span class="nb">test</span><span class="w"> </span>string
+
+Breakpoint<span class="w"> </span><span class="m">1</span>,<span class="w"> </span>0x0000555555555899<span class="w"> </span><span class="k">in</span><span class="w"> </span>phase_6<span class="w"> </span><span class="o">()</span>
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>disas<span class="w"> </span>phase_6
+Dump<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>code<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="k">function</span><span class="w"> </span>phase_6:
+<span class="o">=</span>&gt;<span class="w"> </span>0x0000555555555899<span class="w"> </span>&lt;+0&gt;:<span class="w"> </span>endbr64<span class="w"> </span>
+<span class="w"> </span>0x000055555555589d<span class="w"> </span>&lt;+4&gt;:<span class="w"> </span>push<span class="w"> </span>%r15
+<span class="w"> </span>0x000055555555589f<span class="w"> </span>&lt;+6&gt;:<span class="w"> </span>push<span class="w"> </span>%r14
+<span class="w"> </span>0x00005555555558a1<span class="w"> </span>&lt;+8&gt;:<span class="w"> </span>push<span class="w"> </span>%r13
+<span class="w"> </span>0x00005555555558a3<span class="w"> </span>&lt;+10&gt;:<span class="w"> </span>push<span class="w"> </span>%r12
+<span class="w"> </span>0x00005555555558a5<span class="w"> </span>&lt;+12&gt;:<span class="w"> </span>push<span class="w"> </span>%rbp
+<span class="w"> </span>0x00005555555558a6<span class="w"> </span>&lt;+13&gt;:<span class="w"> </span>push<span class="w"> </span>%rbx
+<span class="w"> </span>0x00005555555558a7<span class="w"> </span>&lt;+14&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x68,%rsp
+<span class="w"> </span>0x00005555555558ab<span class="w"> </span>&lt;+18&gt;:<span class="w"> </span>lea<span class="w"> </span>0x40<span class="o">(</span>%rsp<span class="o">)</span>,%rax
+<span class="w"> </span>0x00005555555558b0<span class="w"> </span>&lt;+23&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,%r14
+<span class="w"> </span>0x00005555555558b3<span class="w"> </span>&lt;+26&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,0x8<span class="o">(</span>%rsp<span class="o">)</span>
+<span class="w"> </span>0x00005555555558b8<span class="w"> </span>&lt;+31&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,%rsi
+<span class="w"> </span>0x00005555555558bb<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d97<span class="w"> </span>&lt;read_six_numbers&gt;
+<span class="w"> </span>0x00005555555558c0<span class="w"> </span>&lt;+39&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%r12
+<span class="w"> </span>0x00005555555558c3<span class="w"> </span>&lt;+42&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x1,%r15d
+<span class="w"> </span>0x00005555555558c9<span class="w"> </span>&lt;+48&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%r13
+<span class="w"> </span>0x00005555555558cc<span class="w"> </span>&lt;+51&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555997<span class="w"> </span>&lt;phase_6+254&gt;
+<span class="w"> </span>0x00005555555558d1<span class="w"> </span>&lt;+56&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555558d6<span class="w"> </span>&lt;+61&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555559a9<span class="w"> </span>&lt;phase_6+272&gt;
+<span class="w"> </span>0x00005555555558db<span class="w"> </span>&lt;+66&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%rbx
+<span class="w"> </span>0x00005555555558df<span class="w"> </span>&lt;+70&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%ebx
+<span class="w"> </span>0x00005555555558e2<span class="w"> </span>&lt;+73&gt;:<span class="w"> </span>jg<span class="w"> </span>0x55555555598f<span class="w"> </span>&lt;phase_6+246&gt;
+<span class="w"> </span>0x00005555555558e8<span class="w"> </span>&lt;+79&gt;:<span class="w"> </span>mov<span class="w"> </span>0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax
+<span class="w"> </span>0x00005555555558ed<span class="w"> </span>&lt;+84&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x00005555555558f0<span class="w"> </span>&lt;+87&gt;:<span class="w"> </span>jne<span class="w"> </span>0x5555555558db<span class="w"> </span>&lt;phase_6+66&gt;
+<span class="w"> </span>0x00005555555558f2<span class="w"> </span>&lt;+89&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555558f7<span class="w"> </span>&lt;+94&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555558db<span class="w"> </span>&lt;phase_6+66&gt;
+<span class="w"> </span>0x00005555555558f9<span class="w"> </span>&lt;+96&gt;:<span class="w"> </span>mov<span class="w"> </span>0x8<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>0x00005555555558fe<span class="w"> </span>&lt;+101&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x18,%rdx
+<span class="w"> </span>0x0000555555555902<span class="w"> </span>&lt;+105&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x7,%ecx
+<span class="w"> </span>0x0000555555555907<span class="w"> </span>&lt;+110&gt;:<span class="w"> </span>mov<span class="w"> </span>%ecx,%eax
+<span class="w"> </span>0x0000555555555909<span class="w"> </span>&lt;+112&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="o">(</span>%r12<span class="o">)</span>,%eax
+<span class="w"> </span>0x000055555555590d<span class="w"> </span>&lt;+116&gt;:<span class="w"> </span>mov<span class="w"> </span>%eax,<span class="o">(</span>%r12<span class="o">)</span>
+<span class="w"> </span>0x0000555555555911<span class="w"> </span>&lt;+120&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x4,%r12
+<span class="w"> </span>0x0000555555555915<span class="w"> </span>&lt;+124&gt;:<span class="w"> </span>cmp<span class="w"> </span>%r12,%rdx
+<span class="w"> </span>0x0000555555555918<span class="w"> </span>&lt;+127&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555907<span class="w"> </span>&lt;phase_6+110&gt;
+<span class="w"> </span>0x000055555555591a<span class="w"> </span>&lt;+129&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x0,%esi
+<span class="w"> </span>0x000055555555591f<span class="w"> </span>&lt;+134&gt;:<span class="w"> </span>mov<span class="w"> </span>0x40<span class="o">(</span>%rsp,%rsi,4<span class="o">)</span>,%ecx
+<span class="w"> </span>0x0000555555555923<span class="w"> </span>&lt;+138&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x1,%eax
+<span class="w"> </span>0x0000555555555928<span class="w"> </span>&lt;+143&gt;:<span class="w"> </span>lea<span class="w"> </span>0x3d01<span class="o">(</span>%rip<span class="o">)</span>,%rdx<span class="w"> </span><span class="c1"># 0x555555559630 &lt;node1&gt;</span>
+--Type<span class="w"> </span>&lt;RET&gt;<span class="w"> </span><span class="k">for</span><span class="w"> </span>more,<span class="w"> </span>q<span class="w"> </span>to<span class="w"> </span>quit,<span class="w"> </span>c<span class="w"> </span>to<span class="w"> </span><span class="k">continue</span><span class="w"> </span>without<span class="w"> </span>paging--
+<span class="w"> </span>0x000055555555592f<span class="w"> </span>&lt;+150&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x1,%ecx
+<span class="w"> </span>0x0000555555555932<span class="w"> </span>&lt;+153&gt;:<span class="w"> </span>jle<span class="w"> </span>0x55555555593f<span class="w"> </span>&lt;phase_6+166&gt;
+<span class="w"> </span>0x0000555555555934<span class="w"> </span>&lt;+155&gt;:<span class="w"> </span>mov<span class="w"> </span>0x8<span class="o">(</span>%rdx<span class="o">)</span>,%rdx
+<span class="w"> </span>0x0000555555555938<span class="w"> </span>&lt;+159&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%eax
+<span class="w"> </span>0x000055555555593b<span class="w"> </span>&lt;+162&gt;:<span class="w"> </span>cmp<span class="w"> </span>%ecx,%eax
+<span class="w"> </span>0x000055555555593d<span class="w"> </span>&lt;+164&gt;:<span class="w"> </span>jne<span class="w"> </span>0x555555555934<span class="w"> </span>&lt;phase_6+155&gt;
+<span class="w"> </span>0x000055555555593f<span class="w"> </span>&lt;+166&gt;:<span class="w"> </span>mov<span class="w"> </span>%rdx,0x10<span class="o">(</span>%rsp,%rsi,8<span class="o">)</span>
+<span class="w"> </span>0x0000555555555944<span class="w"> </span>&lt;+171&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%rsi
+<span class="w"> </span>0x0000555555555948<span class="w"> </span>&lt;+175&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x6,%rsi
+<span class="w"> </span>0x000055555555594c<span class="w"> </span>&lt;+179&gt;:<span class="w"> </span>jne<span class="w"> </span>0x55555555591f<span class="w"> </span>&lt;phase_6+134&gt;
+<span class="w"> </span>0x000055555555594e<span class="w"> </span>&lt;+181&gt;:<span class="w"> </span>mov<span class="w"> </span>0x10<span class="o">(</span>%rsp<span class="o">)</span>,%rbx
+<span class="w"> </span>0x0000555555555953<span class="w"> </span>&lt;+186&gt;:<span class="w"> </span>mov<span class="w"> </span>0x18<span class="o">(</span>%rsp<span class="o">)</span>,%rax
+<span class="w"> </span>0x0000555555555958<span class="w"> </span>&lt;+191&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,0x8<span class="o">(</span>%rbx<span class="o">)</span>
+<span class="w"> </span>0x000055555555595c<span class="w"> </span>&lt;+195&gt;:<span class="w"> </span>mov<span class="w"> </span>0x20<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>0x0000555555555961<span class="w"> </span>&lt;+200&gt;:<span class="w"> </span>mov<span class="w"> </span>%rdx,0x8<span class="o">(</span>%rax<span class="o">)</span>
+<span class="w"> </span>0x0000555555555965<span class="w"> </span>&lt;+204&gt;:<span class="w"> </span>mov<span class="w"> </span>0x28<span class="o">(</span>%rsp<span class="o">)</span>,%rax
+<span class="w"> </span>0x000055555555596a<span class="w"> </span>&lt;+209&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,0x8<span class="o">(</span>%rdx<span class="o">)</span>
+<span class="w"> </span>0x000055555555596e<span class="w"> </span>&lt;+213&gt;:<span class="w"> </span>mov<span class="w"> </span>0x30<span class="o">(</span>%rsp<span class="o">)</span>,%rdx
+<span class="w"> </span>0x0000555555555973<span class="w"> </span>&lt;+218&gt;:<span class="w"> </span>mov<span class="w"> </span>%rdx,0x8<span class="o">(</span>%rax<span class="o">)</span>
+<span class="w"> </span>0x0000555555555977<span class="w"> </span>&lt;+222&gt;:<span class="w"> </span>mov<span class="w"> </span>0x38<span class="o">(</span>%rsp<span class="o">)</span>,%rax
+<span class="w"> </span>0x000055555555597c<span class="w"> </span>&lt;+227&gt;:<span class="w"> </span>mov<span class="w"> </span>%rax,0x8<span class="o">(</span>%rdx<span class="o">)</span>
+<span class="w"> </span>0x0000555555555980<span class="w"> </span>&lt;+231&gt;:<span class="w"> </span>movq<span class="w"> </span><span class="nv">$0</span>x0,0x8<span class="o">(</span>%rax<span class="o">)</span>
+<span class="w"> </span>0x0000555555555988<span class="w"> </span>&lt;+239&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x5,%ebp
+<span class="w"> </span>0x000055555555598d<span class="w"> </span>&lt;+244&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555559c4<span class="w"> </span>&lt;phase_6+299&gt;
+<span class="w"> </span>0x000055555555598f<span class="w"> </span>&lt;+246&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%r15
+<span class="w"> </span>0x0000555555555993<span class="w"> </span>&lt;+250&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x4,%r14
+<span class="w"> </span>0x0000555555555997<span class="w"> </span>&lt;+254&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%rbp
+<span class="w"> </span>0x000055555555599a<span class="w"> </span>&lt;+257&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="o">(</span>%r14<span class="o">)</span>,%eax
+<span class="w"> </span>0x000055555555599d<span class="w"> </span>&lt;+260&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x1,%eax
+<span class="w"> </span>0x00005555555559a0<span class="w"> </span>&lt;+263&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%eax
+<span class="w"> </span>0x00005555555559a3<span class="w"> </span>&lt;+266&gt;:<span class="w"> </span>ja<span class="w"> </span>0x5555555558d1<span class="w"> </span>&lt;phase_6+56&gt;
+<span class="w"> </span>0x00005555555559a9<span class="w"> </span>&lt;+272&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%r15d
+<span class="w"> </span>0x00005555555559ad<span class="w"> </span>&lt;+276&gt;:<span class="w"> </span>jg<span class="w"> </span>0x5555555558f9<span class="w"> </span>&lt;phase_6+96&gt;
+<span class="w"> </span>0x00005555555559b3<span class="w"> </span>&lt;+282&gt;:<span class="w"> </span>mov<span class="w"> </span>%r15,%rbx
+<span class="w"> </span>0x00005555555559b6<span class="w"> </span>&lt;+285&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555558e8<span class="w"> </span>&lt;phase_6+79&gt;
+<span class="w"> </span>0x00005555555559bb<span class="w"> </span>&lt;+290&gt;:<span class="w"> </span>mov<span class="w"> </span>0x8<span class="o">(</span>%rbx<span class="o">)</span>,%rbx
+<span class="w"> </span>0x00005555555559bf<span class="w"> </span>&lt;+294&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x1,%ebp
+<span class="w"> </span>0x00005555555559c2<span class="w"> </span>&lt;+297&gt;:<span class="w"> </span>je<span class="w"> </span>0x5555555559d5<span class="w"> </span>&lt;phase_6+316&gt;
+<span class="w"> </span>0x00005555555559c4<span class="w"> </span>&lt;+299&gt;:<span class="w"> </span>mov<span class="w"> </span>0x8<span class="o">(</span>%rbx<span class="o">)</span>,%rax
+<span class="w"> </span>0x00005555555559c8<span class="w"> </span>&lt;+303&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="o">(</span>%rax<span class="o">)</span>,%eax
+<span class="w"> </span>0x00005555555559ca<span class="w"> </span>&lt;+305&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,<span class="o">(</span>%rbx<span class="o">)</span>
+--Type<span class="w"> </span>&lt;RET&gt;<span class="w"> </span><span class="k">for</span><span class="w"> </span>more,<span class="w"> </span>q<span class="w"> </span>to<span class="w"> </span>quit,<span class="w"> </span>c<span class="w"> </span>to<span class="w"> </span><span class="k">continue</span><span class="w"> </span>without<span class="w"> </span>paging--
+<span class="w"> </span>0x00005555555559cc<span class="w"> </span>&lt;+307&gt;:<span class="w"> </span>jge<span class="w"> </span>0x5555555559bb<span class="w"> </span>&lt;phase_6+290&gt;
+<span class="w"> </span>0x00005555555559ce<span class="w"> </span>&lt;+309&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555559d3<span class="w"> </span>&lt;+314&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555559bb<span class="w"> </span>&lt;phase_6+290&gt;
+<span class="w"> </span>0x00005555555559d5<span class="w"> </span>&lt;+316&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x68,%rsp
+<span class="w"> </span>0x00005555555559d9<span class="w"> </span>&lt;+320&gt;:<span class="w"> </span>pop<span class="w"> </span>%rbx
+<span class="w"> </span>0x00005555555559da<span class="w"> </span>&lt;+321&gt;:<span class="w"> </span>pop<span class="w"> </span>%rbp
+<span class="w"> </span>0x00005555555559db<span class="w"> </span>&lt;+322&gt;:<span class="w"> </span>pop<span class="w"> </span>%r12
+<span class="w"> </span>0x00005555555559dd<span class="w"> </span>&lt;+324&gt;:<span class="w"> </span>pop<span class="w"> </span>%r13
+<span class="w"> </span>0x00005555555559df<span class="w"> </span>&lt;+326&gt;:<span class="w"> </span>pop<span class="w"> </span>%r14
+<span class="w"> </span>0x00005555555559e1<span class="w"> </span>&lt;+328&gt;:<span class="w"> </span>pop<span class="w"> </span>%r15
+<span class="w"> </span>0x00005555555559e3<span class="w"> </span>&lt;+330&gt;:<span class="w"> </span>ret<span class="w"> </span>
+End<span class="w"> </span>of<span class="w"> </span>assembler<span class="w"> </span>dump.
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<p>Again, we see the familiar <code>read_six_digits</code> function.</p>
-<p>Let us analyse this function in chunks:
- <div class="codehilite">
- <pre><span></span><code>0x00005555555558bb &lt;+34&gt;: call 0x555555555d97 &lt;read<em>six</em>numbers&gt;
- 0x00005555555558c0 &lt;+39&gt;: mov %r14,%r12
- 0x00005555555558c3 &lt;+42&gt;: mov <span class="nv">$0</span>x1,%r15d
- 0x00005555555558c9 &lt;+48&gt;: mov %r14,%r13
- 0x00005555555558cc &lt;+51&gt;: jmp 0x555555555997 &lt;phase_6+254&gt;
- </code></pre>
- </div></p>
+<p>Let us analyse this function in chunks:</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555558bb<span class="w"> </span>&lt;+34&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d97<span class="w"> </span>&lt;read_six_numbers&gt;
+<span class="w"> </span>0x00005555555558c0<span class="w"> </span>&lt;+39&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%r12
+<span class="w"> </span>0x00005555555558c3<span class="w"> </span>&lt;+42&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="nv">$0</span>x1,%r15d
+<span class="w"> </span>0x00005555555558c9<span class="w"> </span>&lt;+48&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%r13
+<span class="w"> </span>0x00005555555558cc<span class="w"> </span>&lt;+51&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x555555555997<span class="w"> </span>&lt;phase_6+254&gt;
+</code></pre>
+</div>
<ol>
<li>Read six numbers</li>
@@ -990,17 +1001,20 @@ End of assembler dump.
2.1. <code>mov %r14,%r12</code>: <code>%r14</code> should be pointing to the location of the stack where the numbers were read into. This address is copied onto <code>%r12</code>
2.2. <code>mov $0x1,%r15d</code>: The value <code>1</code> is moved into <code>%r15</code> register (probably acting like a counter)
2.3. <code>mov %r14,%r13</code>: The value is also copied to <code>%r13</code></li>
-<li><p>Jump to start of loop:</p>
+<li>Jump to start of loop:</li>
+</ol>
<div class="codehilite">
-<pre><span></span><code>0x0000555555555997 &lt;+254&gt;: mov %r14,%rbp
-0x000055555555599a &lt;+257&gt;: mov <span class="o">(</span>%r14<span class="o">)</span>,%eax
-0x000055555555599d &lt;+260&gt;: sub <span class="nv">$0</span>x1,%eax
-0x00005555555559a0 &lt;+263&gt;: cmp <span class="nv">$0</span>x5,%eax
-0x00005555555559a3 &lt;+266&gt;: ja 0x5555555558d1 &lt;phase_6+56&gt;
+<pre><span></span><code><span class="w"> </span>0x0000555555555997<span class="w"> </span>&lt;+254&gt;:<span class="w"> </span>mov<span class="w"> </span>%r14,%rbp
+<span class="w"> </span>0x000055555555599a<span class="w"> </span>&lt;+257&gt;:<span class="w"> </span>mov<span class="w"> </span><span class="o">(</span>%r14<span class="o">)</span>,%eax
+<span class="w"> </span>0x000055555555599d<span class="w"> </span>&lt;+260&gt;:<span class="w"> </span>sub<span class="w"> </span><span class="nv">$0</span>x1,%eax
+<span class="w"> </span>0x00005555555559a0<span class="w"> </span>&lt;+263&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%eax
+<span class="w"> </span>0x00005555555559a3<span class="w"> </span>&lt;+266&gt;:<span class="w"> </span>ja<span class="w"> </span>0x5555555558d1<span class="w"> </span>&lt;phase_6+56&gt;
</code></pre>
-</div></li>
-<li><p>Initialise register and point to first number in sequence</p></li>
+</div>
+
+<ol>
+<li>Initialise register and point to first number in sequence</li>
<li>Adjust number(s):
2.1. <code>mov (%r14),%eax</code> -> load the current number in the sequence
2.2. <code>sub $0x1,%eax</code> -> decrement number by 1</li>
@@ -1009,40 +1023,44 @@ End of assembler dump.
3.2. <code>ja 0x5555555558d1 &lt;phase_6+56&gt;</code>: jump if given value is &gt; 5 or &lt; 0</li>
</ol>
-<p>=&gt; All numbers should be between 1 and 6.
- <div class="codehilite">
- <pre><span></span><code>0x00005555555559a9 &lt;+272&gt;: cmp <span class="nv">$0</span>x5,%r15d
- 0x00005555555559ad &lt;+276&gt;: jg 0x5555555558f9 &lt;phase_6+96&gt;
- </code></pre>
- </div></p>
-
-<p>This checks if the value stored in <code>%r15</code> is &gt; 5, if it is then it jumps somewhere else. This validates our assumption that <code>%r15</code> is acting as a counter.
- <div class="codehilite">
- <pre><span></span><code>0x00005555555559b3 &lt;+282&gt;: mov %r15,%rbx
- 0x00005555555559b6 &lt;+285&gt;: jmp 0x5555555558e8 &lt;phase_6+79&gt;
- </code></pre>
- </div></p>
-
-<p>Let us jump to +79
- <div class="codehilite">
- <pre><span></span><code>0x00005555555558e8 &lt;+79&gt;: mov 0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax
- 0x00005555555558ed &lt;+84&gt;: cmp %eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
- 0x00005555555558f0 &lt;+87&gt;: jne 0x5555555558db &lt;phase<em>6+66&gt;
- 0x00005555555558f2 &lt;+89&gt;: call 0x555555555d4a &lt;explode</em>bomb&gt;
- 0x00005555555558f7 &lt;+94&gt;: jmp 0x5555555558db &lt;phase_6+66&gt;
- </code></pre>
- </div></p>
-
-<p>This section deals with checking if all the numbers in the sequence are unique or not. Thus, we need to ensure out 6 digits are unique
- <div class="codehilite">
- <pre><span></span><code>0x00005555555558db &lt;+66&gt;: add <span class="nv">$0</span>x1,%rbx // Increments by <span class="m">1</span>
- 0x00005555555558df &lt;+70&gt;: cmp <span class="nv">$0</span>x5,%ebx
- 0x00005555555558e2 &lt;+73&gt;: jg 0x55555555598f &lt;phase<em>6+246&gt; // Jump <span class="k">if</span> &gt; <span class="m">5</span> <span class="o">(</span>Loop iterations are <span class="nb">complete</span><span class="o">)</span>
- 0x00005555555558e8 &lt;+79&gt;: mov 0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax
- 0x00005555555558ed &lt;+84&gt;: cmp %eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
- 0x00005555555558f0 &lt;+87&gt;: jne 0x5555555558db &lt;phase</em>6+66&gt; // Again, check <span class="k">if</span> the number being seen is unique
- </code></pre>
- </div></p>
+<p>=&gt; All numbers should be between 1 and 6.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555559a9<span class="w"> </span>&lt;+272&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%r15d
+<span class="w"> </span>0x00005555555559ad<span class="w"> </span>&lt;+276&gt;:<span class="w"> </span>jg<span class="w"> </span>0x5555555558f9<span class="w"> </span>&lt;phase_6+96&gt;
+</code></pre>
+</div>
+
+<p>This checks if the value stored in <code>%r15</code> is &gt; 5, if it is then it jumps somewhere else. This validates our assumption that <code>%r15</code> is acting as a counter.</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555559b3<span class="w"> </span>&lt;+282&gt;:<span class="w"> </span>mov<span class="w"> </span>%r15,%rbx
+<span class="w"> </span>0x00005555555559b6<span class="w"> </span>&lt;+285&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555558e8<span class="w"> </span>&lt;phase_6+79&gt;
+</code></pre>
+</div>
+
+<p>Let us jump to +79</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555558e8<span class="w"> </span>&lt;+79&gt;:<span class="w"> </span>mov<span class="w"> </span>0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax
+<span class="w"> </span>0x00005555555558ed<span class="w"> </span>&lt;+84&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x00005555555558f0<span class="w"> </span>&lt;+87&gt;:<span class="w"> </span>jne<span class="w"> </span>0x5555555558db<span class="w"> </span>&lt;phase_6+66&gt;
+<span class="w"> </span>0x00005555555558f2<span class="w"> </span>&lt;+89&gt;:<span class="w"> </span>call<span class="w"> </span>0x555555555d4a<span class="w"> </span>&lt;explode_bomb&gt;
+<span class="w"> </span>0x00005555555558f7<span class="w"> </span>&lt;+94&gt;:<span class="w"> </span>jmp<span class="w"> </span>0x5555555558db<span class="w"> </span>&lt;phase_6+66&gt;
+</code></pre>
+</div>
+
+<p>This section deals with checking if all the numbers in the sequence are unique or not. Thus, we need to ensure out 6 digits are unique</p>
+
+<div class="codehilite">
+<pre><span></span><code><span class="w"> </span>0x00005555555558db<span class="w"> </span>&lt;+66&gt;:<span class="w"> </span>add<span class="w"> </span><span class="nv">$0</span>x1,%rbx<span class="w"> </span>//<span class="w"> </span>Increments<span class="w"> </span>by<span class="w"> </span><span class="m">1</span>
+<span class="w"> </span>0x00005555555558df<span class="w"> </span>&lt;+70&gt;:<span class="w"> </span>cmp<span class="w"> </span><span class="nv">$0</span>x5,%ebx<span class="w"> </span>
+<span class="w"> </span>0x00005555555558e2<span class="w"> </span>&lt;+73&gt;:<span class="w"> </span>jg<span class="w"> </span>0x55555555598f<span class="w"> </span>&lt;phase_6+246&gt;<span class="w"> </span>//<span class="w"> </span>Jump<span class="w"> </span><span class="k">if</span><span class="w"> </span>&gt;<span class="w"> </span><span class="m">5</span><span class="w"> </span><span class="o">(</span>Loop<span class="w"> </span>iterations<span class="w"> </span>are<span class="w"> </span><span class="nb">complete</span><span class="o">)</span>
+<span class="w"> </span>0x00005555555558e8<span class="w"> </span>&lt;+79&gt;:<span class="w"> </span>mov<span class="w"> </span>0x0<span class="o">(</span>%r13,%rbx,4<span class="o">)</span>,%eax<span class="w"> </span>
+<span class="w"> </span>0x00005555555558ed<span class="w"> </span>&lt;+84&gt;:<span class="w"> </span>cmp<span class="w"> </span>%eax,0x0<span class="o">(</span>%rbp<span class="o">)</span>
+<span class="w"> </span>0x00005555555558f0<span class="w"> </span>&lt;+87&gt;:<span class="w"> </span>jne<span class="w"> </span>0x5555555558db<span class="w"> </span>&lt;phase_6+66&gt;<span class="w"> </span>//<span class="w"> </span>Again,<span class="w"> </span>check<span class="w"> </span><span class="k">if</span><span class="w"> </span>the<span class="w"> </span>number<span class="w"> </span>being<span class="w"> </span>seen<span class="w"> </span>is<span class="w"> </span>unique
+</code></pre>
+</div>
<p>Now we know that the numbers are unique, between 1-6 (inclusive).</p>
@@ -1053,36 +1071,36 @@ End of assembler dump.
<p>Let us try to figure out what <code>0x0000555555555928 &lt;+143&gt;: lea 0x3d01(%rip),%rdx # 0x555555559630 &lt;node1&gt;</code> is:</p>
<div class="codehilite">
-<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span> x/30wx 0x555555559630
-0x555555559630 &lt;node1&gt;: 0x000000d9 0x00000001 0x55559640 0x00005555
-0x555555559640 &lt;node2&gt;: 0x000003ab 0x00000002 0x55559650 0x00005555
-0x555555559650 &lt;node3&gt;: 0x0000014f 0x00000003 0x55559660 0x00005555
-0x555555559660 &lt;node4&gt;: 0x000000a1 0x00000004 0x55559670 0x00005555
-0x555555559670 &lt;node5&gt;: 0x000001b3 0x00000005 0x55559120 0x00005555
-0x555555559680 &lt;host_table&gt;: 0x555573f5 0x00005555 0x5555740f 0x00005555
-0x555555559690 &lt;host_table+16&gt;: 0x55557429 0x00005555 0x00000000 0x00000000
-0x5555555596a0 &lt;host_table+32&gt;: 0x00000000 0x00000000
-<span class="o">(</span>gdb<span class="o">)</span> x/30wx 0x555555559120
-0x555555559120 &lt;node6&gt;: 0x000002da 0x00000006 0x00000000 0x00000000
-0x555555559130: 0x00000000 0x00000000 0x00000000 0x00000000
-0x555555559140 &lt;userid&gt;: 0x61767861 0x38383535 0x00000000 0x00000000
-0x555555559150 &lt;userid+16&gt;: 0x00000000 0x00000000 0x00000000 0x00000000
-0x555555559160 &lt;userid+32&gt;: 0x00000000 0x00000000 0x00000000 0x00000000
-0x555555559170 &lt;userid+48&gt;: 0x00000000 0x00000000 0x00000000 0x00000000
-0x555555559180 &lt;userid+64&gt;: 0x00000000 0x00000000 0x00000000 0x00000000
-0x555555559190 &lt;userid+80&gt;: 0x00000000 0x00000000
-<span class="o">(</span>gdb<span class="o">)</span>
+<pre><span></span><code><span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/30wx<span class="w"> </span>0x555555559630
+0x555555559630<span class="w"> </span>&lt;node1&gt;:<span class="w"> </span>0x000000d9<span class="w"> </span>0x00000001<span class="w"> </span>0x55559640<span class="w"> </span>0x00005555
+0x555555559640<span class="w"> </span>&lt;node2&gt;:<span class="w"> </span>0x000003ab<span class="w"> </span>0x00000002<span class="w"> </span>0x55559650<span class="w"> </span>0x00005555
+0x555555559650<span class="w"> </span>&lt;node3&gt;:<span class="w"> </span>0x0000014f<span class="w"> </span>0x00000003<span class="w"> </span>0x55559660<span class="w"> </span>0x00005555
+0x555555559660<span class="w"> </span>&lt;node4&gt;:<span class="w"> </span>0x000000a1<span class="w"> </span>0x00000004<span class="w"> </span>0x55559670<span class="w"> </span>0x00005555
+0x555555559670<span class="w"> </span>&lt;node5&gt;:<span class="w"> </span>0x000001b3<span class="w"> </span>0x00000005<span class="w"> </span>0x55559120<span class="w"> </span>0x00005555
+0x555555559680<span class="w"> </span>&lt;host_table&gt;:<span class="w"> </span>0x555573f5<span class="w"> </span>0x00005555<span class="w"> </span>0x5555740f<span class="w"> </span>0x00005555
+0x555555559690<span class="w"> </span>&lt;host_table+16&gt;:<span class="w"> </span>0x55557429<span class="w"> </span>0x00005555<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x5555555596a0<span class="w"> </span>&lt;host_table+32&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>x/30wx<span class="w"> </span>0x555555559120
+0x555555559120<span class="w"> </span>&lt;node6&gt;:<span class="w"> </span>0x000002da<span class="w"> </span>0x00000006<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559130:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559140<span class="w"> </span>&lt;userid&gt;:<span class="w"> </span>0x61767861<span class="w"> </span>0x38383535<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559150<span class="w"> </span>&lt;userid+16&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559160<span class="w"> </span>&lt;userid+32&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559170<span class="w"> </span>&lt;userid+48&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559180<span class="w"> </span>&lt;userid+64&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+0x555555559190<span class="w"> </span>&lt;userid+80&gt;:<span class="w"> </span>0x00000000<span class="w"> </span>0x00000000
+<span class="o">(</span>gdb<span class="o">)</span><span class="w"> </span>
</code></pre>
</div>
<p>It appears that this is a linked list. With roughly the following structure:</p>
<div class="codehilite">
-<pre><span></span><code><span class="k">struct</span><span class="w"> </span><span class="nc">node</span><span class="w"> </span><span class="p">{</span><span class="w"></span>
-<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">;</span><span class="w"></span>
-<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">node</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span><span class="w"></span>
-<span class="p">};</span><span class="w"></span>
+<pre><span></span><code><span class="k">struct</span><span class="w"> </span><span class="nc">node</span><span class="w"> </span><span class="p">{</span>
+<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">value</span><span class="p">;</span>
+<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">index</span><span class="p">;</span>
+<span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">node</span><span class="w"> </span><span class="o">*</span><span class="n">next</span><span class="p">;</span>
+<span class="p">};</span>
</code></pre>
</div>