diff --git a/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/QAPZ.ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS.ZPAQ b/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/QAPZ.ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS.ZPAQ
new file mode 100644
index 00000000..0bff1864
Binary files /dev/null and b/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/QAPZ.ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS.ZPAQ differ
diff --git a/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS b/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS
new file mode 100644
index 00000000..4d29246f
--- /dev/null
+++ b/◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯ⵙ◯ᗩIᗝI⚭◯⚪◯⚭IᗝIᗩ◯/◯✤ᴥᗩ◯ⵙ◯ᗩᴥ✤◯/◯ᗱᗴᴥᗩᗯ✤⏀Ⓞᔓᔕ◯ⵙ◯ᔓᔕⓄ⏀✤ᗯᗩᴥᗱᗴ◯/◯ᗝ∶◯⚪◯∶ᗝ◯ⵙ◯ᗝ∶◯⚪◯∶ᗝ◯/◯ᗱᗴᕤᕦᗩᑎᕤᕦИNᗩᙁ◯ߦᑎ✻ᴥᗩᙏ◯✤ꕤᗱᗴ✤ᴥᗱᗴߦ人옷◯ⵙ◯옷人ߦᗱᗴᴥ✤ᗱᗴꕤ✤◯ᙏᗩᴥ✻ᑎߦ◯ᙁᗩИNᕤᕦᑎᗩᕤᕦᗱᗴ◯/◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯ⵙ◯✤ߦꖴᴥᑐᑕᔓᔕᗩΛᗩᒍᒐ◯⚪◯ᒍᒐᗩΛᗩᔓᔕᑐᑕᴥꖴߦ✤◯/⚪ᔓᔕ⚪ᒍᒐ⚪◌⚪ⵈ⚪ᗝ⚪◌⚪◌⚪◌⚪◌⚪◌⚪◌⚪ᗝ⚪ⵈ⚪◌⚪ᒍᒐ⚪ᔓᔕ⚪/ƧJ.ԐD.⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪.D3.JS
@@ -0,0 +1,462 @@
+function _1(md){return(
+md`# 
⠀⠀⠀⠀⠀⠀⠀⠀⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪⠀⠀⠀⠀⠀⠀⠀⠀
+# ⠀⠀⠀⠀⠀⠀⠀⠀⚪H⚪✤⚪ᕊᕍ⚪NИ⚪ᗱᗴ⚪ᙀ⚪ᗱᗴ⚪ᗰ⚪ᗨ⚪ᗰ⚪◯⚪ᗱᗴ⚪ᑌ⚪¤⚪ꖴ⚪NИ⚪ᑌ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑌ⚪NИ⚪ꖴ⚪¤⚪ᑌ⚪ᗱᗴ⚪◯⚪ᗰ⚪ᗨ⚪ᗰ⚪ᗱᗴ⚪ᙀ⚪ᗱᗴ⚪NИ⚪ᕊᕍ⚪✤⚪H⚪⠀⠀⠀⠀⠀⠀⠀⠀`
+)}
+
+function _2(htl){return(
+htl.html``
+)}
+
+function _ᑎ(md){return(
+md``
+)}
+
+function _4(htl){return(
+htl.html``
+)}
+
+function _5(htl){return(
+htl.html``
+)}
+
+function _6(ᑎᑎ){return(
+ᑎᑎ
+(
+(t)=>
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,13))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,12))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,11))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,10))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,9))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,8))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,7))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,6))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,5))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,4))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,3))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,2))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,1))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,0))
+,
+84.406022589954030768899117092091000289089388918088900852079/Math.pow(3,0)
+)
+)}
+
+function _ᑎᑎ(ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ){return(
+function ᑎᑎ(genFn, duration = 1) {
+  return new ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ(genFn, duration).gui();
+}
+)}
+
+function _ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ(ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ,DOM,html,width){return(
+class ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ {
+  constructor(genFn, duration = 1) {
+    this.duration = duration;
+    // Create an audio buffer.
+    this.audioBuffer = ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.createBuffer(1, ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate * this.duration, ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate);
+    this.buffer = this.audioBuffer.getChannelData(0);
+    let max = 0;
+    for (let i = 0; i < this.audioBuffer.length; i++) {
+      const value = genFn(i / ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate);
+      this.buffer[i] = value;
+      if (Math.abs(value) > max) max = Math.abs(value);
+    }
+    for (let i = 0; i < this.audioBuffer.length; i++) {
+      this.buffer[i] = this.buffer[i] / max;
+    }
+  }
+  play(maxVol = 1/3) {
+    this.stop();
+    this.source = ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.createBufferSource();
+    this.source.buffer = this.audioBuffer;
+    const gain = ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.createGain();
+    gain.gain.value = maxVol;
+    this.source.connect(gain);
+gain.connect(ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ.destination);
+    this.source.start();    
+  }
+  stop() {
+    if (this.source) this.source.stop();
+  }
+  draw(height = 50, width = width, color = '#CACACA') {
+    const drawingCtx = DOM.context2d(width, height);
+    // Draw the middle line.
+    drawingCtx.strokeStyle = 'gainsboro';
+    drawingCtx.beginPath();
+    drawingCtx.moveTo(0, height / 2);
+    drawingCtx.lineTo(width, height / 2);
+    drawingCtx.stroke();
+    // Draw the waveform.
+    drawingCtx.strokeStyle = color;
+    drawingCtx.beginPath();
+    for (let i = 0; i < width; i++) {
+      const value = this.buffer[Math.floor(i / width * this.audioBuffer.length)];
+      const y = height - Math.floor((value / 2 + 0.5) * height * .9 + height * 0.05);
+      if (i == 0) {
+        drawingCtx.moveTo(i, y);
+      } else {
+        drawingCtx.lineTo(i, y);
+      }
+    }
+    drawingCtx.stroke();
+    return drawingCtx.canvas;
+  }
+  gui() {
+    const ui = html`
+    
+      
+◯
+${this.duration}
+⚪
+      
+      
+        
+	  
+      
+⚪
+${this.duration}
+◯
+      
+    
 `;
+    const cursor = ui.querySelector('.cursor');
+    let interval = null;
+    const resetInterval = () => {
+      if (interval != null) {
+        clearInterval(interval);
+        interval = null;
+      }
+    };
+    const soundPlayer = ui.querySelector('.sound-player');
+    ui.querySelector('.sound-pane').appendChild(this.draw(46, width - 20));
+    ui.querySelector('.play-button').onclick = () => {
+      cursor.style.left = '0';
+      this.play();
+      cursor.style.display = 'block';
+      const playTime = Date.now();
+      resetInterval();
+      interval = setInterval(() => {
+        if (!document.contains(soundPlayer)) {
+          resetInterval();
+          this.stop();
+        }
+        let progress = (Date.now() - playTime) / this.duration / 1000;
+        if (progress < 0) progress = 0;
+        if (progress > 1) {
+          progress = 1;
+          resetInterval();
+          this.stop();
+          cursor.style.display = 'none';
+        }
+        cursor.style.left = `${Math.floor(progress * (width - 20))}px`;
+      }, 20);
+    };
+    ui.querySelector('.stop-button').onclick = () => {
+      resetInterval();
+      this.stop();
+      cursor.style.display = 'none';
+    };
+    return ui;
+  }
+}
+)}
+
+function _ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ(){return(
+new (window.AudioContext || window.webkitAudioContext)()
+)}
+
+function _10(htl){return(
+htl.html`
`
+)}
+
+function _11(htl){return(
+htl.html`
`
+)}
+
+function _ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ(){return(
+new (window.AudioContext || window.webkitAudioContext)()
+)}
+
+function _ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ(ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ,DOM,html,width){return(
+class ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ {
+  constructor(genFn, duration = 1) {
+    this.duration = duration;
+    // Create an audio buffer.
+    this.audioBuffer = ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.createBuffer(1, ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate * this.duration, ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate);
+    this.buffer = this.audioBuffer.getChannelData(0);
+    let max = 0;
+    for (let i = 0; i < this.audioBuffer.length; i++) {
+      const value = genFn(i / ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.sampleRate);
+      this.buffer[i] = value;
+      if (Math.abs(value) > max) max = Math.abs(value);
+    }
+    for (let i = 0; i < this.audioBuffer.length; i++) {
+      this.buffer[i] = this.buffer[i] / max;
+    }
+  }
+  play(maxVol = 1/3) {
+    this.stop();
+    this.source = ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.createBufferSource();
+    this.source.buffer = this.audioBuffer;
+    const gain = ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.createGain();
+    gain.gain.value = maxVol;
+    this.source.connect(gain);
+gain.connect(ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ.destination);
+    this.source.start();    
+  }
+  stop() {
+    if (this.source) this.source.stop();
+  }
+  draw(height = 50, width = width, color = '#CACACA') {
+    const drawingCtx = DOM.context2d(width, height);
+    // Draw the middle line.
+    drawingCtx.strokeStyle = 'gainsboro';
+    drawingCtx.beginPath();
+    drawingCtx.moveTo(0, height / 2);
+    drawingCtx.lineTo(width, height / 2);
+    drawingCtx.stroke();
+    // Draw the waveform.
+    drawingCtx.strokeStyle = color;
+    drawingCtx.beginPath();
+    for (let i = 0; i < width; i++) {
+      const value = this.buffer[Math.floor(i / width * this.audioBuffer.length)];
+      const y = height - Math.floor((value / 2 + 0.5) * height * .9 + height * 0.05);
+      if (i == 0) {
+        drawingCtx.moveTo(i, y);
+      } else {
+        drawingCtx.lineTo(i, y);
+      }
+    }
+    drawingCtx.stroke();
+    return drawingCtx.canvas;
+  }
+  gui() {
+    const ui = html`
+    
+      
+◯
+${this.duration}
+⚪
+      
+      
+        
+	  
+      
+⚪
+${this.duration}
+◯
+      
+    
 `;
+    const cursor = ui.querySelector('.cursor');
+    let interval = null;
+    const resetInterval = () => {
+      if (interval != null) {
+        clearInterval(interval);
+        interval = null;
+      }
+    };
+    const soundPlayer = ui.querySelector('.sound-player');
+    ui.querySelector('.sound-pane').appendChild(this.draw(46, width - 20));
+    ui.querySelector('.play-button').onclick = () => {
+      cursor.style.left = '0';
+      this.play();
+      cursor.style.display = 'block';
+      const playTime = Date.now();
+      resetInterval();
+      interval = setInterval(() => {
+        if (!document.contains(soundPlayer)) {
+          resetInterval();
+          this.stop();
+        }
+        let progress = (Date.now() - playTime) / this.duration / 1000;
+        if (progress < 0) progress = 0;
+        if (progress > 1) {
+          progress = 1;
+          resetInterval();
+          this.stop();
+          cursor.style.display = 'none';
+        }
+        cursor.style.left = `${Math.floor(progress * (width - 20))}px`;
+      }, 20);
+    };
+    ui.querySelector('.stop-button').onclick = () => {
+      resetInterval();
+      this.stop();
+      cursor.style.display = 'none';
+    };
+    return ui;
+  }
+}
+)}
+
+function _ᑌᑌ(ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ){return(
+function ᑌᑌ(genFn, duration = 1) {
+  return new ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ(genFn, duration).gui();
+}
+)}
+
+function _15(ᑌᑌ){return(
+ᑌᑌ
+(
+(t)=>
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,13))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,12))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,11))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,10))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,9))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,8))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,7))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,6))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,5))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,4))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,3))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,2))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,1))
++
+Math.sin(t*8*Math.atan(1)*1/84.406022589954030768899117092091000289089388918088900852079*Math.pow(3,0))
+,
+84.406022589954030768899117092091000289089388918088900852079/Math.pow(3,0)
+)
+)}
+
+function _16(htl){return(
+htl.html``
+)}
+
+function _17(htl){return(
+htl.html``
+)}
+
+function _ᑌ(md){return(
+md``
+)}
+
+function _19(htl){return(
+htl.html``
+)}
+
+function _20(md){return(
+md`# ⠀⠀⠀⠀⠀⠀⠀⠀⚪H⚪✤⚪ᕈᕋ⚪ИN⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ᗯ⚪ᗩ⚪ᗯ⚪◯⚪ᗱᗴ⚪ᑎ⚪¤⚪ꖴ⚪ИN⚪ᑎ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑎ⚪ИN⚪ꖴ⚪¤⚪ᑎ⚪ᗱᗴ⚪◯⚪ᗯ⚪ᗩ⚪ᗯ⚪ᗱᗴ⚪ᙁ⚪ᗱᗴ⚪ИN⚪ᕈᕋ⚪✤⚪H⚪⠀⠀⠀⠀⠀⠀⠀⠀
+# ⠀⠀⠀⠀⠀⠀⠀⠀⚪H⚪✤⚪ᕊᕍ⚪NИ⚪ᗱᗴ⚪ᙀ⚪ᗱᗴ⚪ᗰ⚪ᗨ⚪ᗰ⚪◯⚪ᗱᗴ⚪ᑌ⚪¤⚪ꖴ⚪NИ⚪ᑌ⚪◌⚪◌⚪◌⚪✺⚪✺⚪◌⚪◌⚪◌⚪ᑌ⚪NИ⚪ꖴ⚪¤⚪ᑌ⚪ᗱᗴ⚪◯⚪ᗰ⚪ᗨ⚪ᗰ⚪ᗱᗴ⚪ᙀ⚪ᗱᗴ⚪NИ⚪ᕊᕍ⚪✤⚪H⚪⠀⠀⠀⠀⠀⠀⠀⠀`
+)}
+
+export default function define(runtime, observer) {
+  const main = runtime.module();
+  main.variable(observer()).define(["md"], _1);
+  main.variable(observer()).define(["htl"], _2);
+  main.variable(observer("ᑎ")).define("ᑎ", ["md"], _ᑎ);
+  main.variable(observer()).define(["htl"], _4);
+  main.variable(observer()).define(["htl"], _5);
+  main.variable(observer()).define(["ᑎᑎ"], _6);
+  main.variable(observer("ᑎᑎ")).define("ᑎᑎ", ["ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ"], _ᑎᑎ);
+  main.variable(observer("ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ")).define("ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ", ["ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ","DOM","html","width"], _ⵙᖆᖇⵙᗱᗴⵙꗳⵙᑎⵙ8ⵙᗝⵙИNⵙᑎⵙⵔⵙᔓᔕⵙᔓᔕⵙⵔⵙᑎⵙИNⵙᗝⵙ8ⵙᑎⵙꗳⵙᗱᗴⵙᖆᖇⵙ);
+  main.variable(observer("ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ")).define("ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ", _ⵙTⵙꕤⵙᗱᗴⵙTⵙИNⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗝⵙᑎⵙᗩⵙᗩⵙᑎⵙᗝⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙИNⵙTⵙᗱᗴⵙꕤⵙTⵙ);
+  main.variable(observer()).define(["htl"], _10);
+  main.variable(observer()).define(["htl"], _11);
+  main.variable(observer("ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ")).define("ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ", _ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ);
+  main.variable(observer("ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ")).define("ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ", ["ⵙTⵙꕤⵙᗱᗴⵙTⵙNИⵙⵔⵙᑐᑕⵙⵔⵙꖴⵙᗜⵙᑌⵙᗨⵙᗨⵙᑌⵙᗜⵙꖴⵙⵔⵙᑐᑕⵙⵔⵙNИⵙTⵙᗱᗴⵙꕤⵙTⵙ","DOM","html","width"], _ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ);
+  main.variable(observer("ᑌᑌ")).define("ᑌᑌ", ["ⵙᖈᖉⵙᗱᗴⵙꗳⵙᑌⵙ8ⵙᗜⵙNИⵙᑌⵙⵔⵙᔕᔓⵙᔕᔓⵙⵔⵙᑌⵙNИⵙᗜⵙ8ⵙᑌⵙꗳⵙᗱᗴⵙᖈᖉⵙ"], _ᑌᑌ);
+  main.variable(observer()).define(["ᑌᑌ"], _15);
+  main.variable(observer()).define(["htl"], _16);
+  main.variable(observer()).define(["htl"], _17);
+  main.variable(observer("ᑌ")).define("ᑌ", ["md"], _ᑌ);
+  main.variable(observer()).define(["htl"], _19);
+  main.variable(observer()).define(["md"], _20);
+  return main;
+}