runcell 0.1.17a3__py3-none-any.whl → 0.1.18a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. d5m_ai/_version.py +1 -1
  2. d5m_ai/agent/proxy_handler.py +85 -5
  3. d5m_ai/agent_v2/__init__.py +11 -0
  4. d5m_ai/agent_v2/proxy_handler.py +263 -0
  5. d5m_ai/chat/chat_proxy_handler.py +127 -11
  6. d5m_ai/chat/history.py +89 -7
  7. d5m_ai/extension.py +4 -0
  8. d5m_ai/image_generation/image_generation_handler.py +1 -1
  9. d5m_ai/labextension/package.json +2 -2
  10. d5m_ai/labextension/schemas/runcell/package.json.orig +1 -1
  11. d5m_ai/labextension/static/1038.3d4a95889322af3486c9.js +1 -0
  12. d5m_ai/labextension/static/1103.125b012d0cc21fcd4c17.js +1 -0
  13. d5m_ai/labextension/static/1462.95e60c119ee44dd5ce4d.js +1 -0
  14. d5m_ai/labextension/static/{5009.375c39a105e8068ec0c0.js → 1599.a81345569a22a67e586b.js} +1 -1
  15. d5m_ai/labextension/static/1668.ad21890aa4a84d053fd1.js +1 -0
  16. d5m_ai/labextension/static/1806.a135a1bece20818d019a.js +1 -0
  17. d5m_ai/labextension/static/2082.5f28bb724b308c004a03.js +1 -0
  18. d5m_ai/labextension/static/2287.62675b5f54fb3cdf9dad.js +1 -0
  19. d5m_ai/labextension/static/2331.b764c648e7b3ce99b9bd.js +48 -0
  20. d5m_ai/labextension/static/2439.691a80f552c192dcdd36.js +1 -0
  21. d5m_ai/labextension/static/2543.74f05520feb54f093874.js +1 -0
  22. d5m_ai/labextension/static/2963.24ce4624e5f00aba812e.js +1 -0
  23. d5m_ai/labextension/static/2989.415c278633d30c768280.js +1 -0
  24. d5m_ai/labextension/static/{315.8ca29a2467a66de73060.js → 315.6269dcfbb2b4c1e62103.js} +1 -1
  25. d5m_ai/labextension/static/3272.c14c7efa176ba27377ea.js +1 -0
  26. d5m_ai/labextension/static/3330.5e63016fbb98dce0cac6.js +1 -0
  27. d5m_ai/labextension/static/3939.87077bb549e80bc5709e.js +2 -0
  28. d5m_ai/labextension/static/4301.7b9d249c7d587cf0c423.js +1 -0
  29. d5m_ai/labextension/static/4637.94d9d3415a216176c874.js +1 -0
  30. d5m_ai/labextension/static/4789.5454fd8f02c1a04d9425.js +1 -0
  31. d5m_ai/labextension/static/5271.f866100834b03d222299.js +1 -0
  32. d5m_ai/labextension/static/5787.28fd320820307ce1cbe2.js +1 -0
  33. d5m_ai/labextension/static/5844.944056182693e52fc0ce.js +1 -0
  34. d5m_ai/labextension/static/5959.4c1c904a5c89f4c602a6.js +1 -0
  35. d5m_ai/labextension/static/6161.3968d5733678faff10bd.js +1 -0
  36. d5m_ai/labextension/static/6526.35de595b995332066e34.js +1 -0
  37. d5m_ai/labextension/static/735.77abd67c42730b4d946a.js +1 -0
  38. d5m_ai/labextension/static/7618.31ae485d97c185b7b482.js +1 -0
  39. d5m_ai/labextension/static/7933.5994a870ebd9b0333a75.js +1 -0
  40. d5m_ai/labextension/static/8263.794bec1a8fc1c8cdbccf.js +1 -0
  41. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4255.657770d29f05e3da360c.js → d5m_ai/labextension/static/8340.d7cd127e8e25a8ccccc7.js +1 -1
  42. d5m_ai/labextension/static/8420.2fc62e3dd5b4a52ac598.js +1 -0
  43. d5m_ai/labextension/static/8502.36e560c4ba2789e89fa2.js +1 -0
  44. d5m_ai/labextension/static/8565.df233b0467ad219c7e27.js +1 -0
  45. d5m_ai/labextension/static/{6619.04732600d85fbbc50931.js → 8613.5ccca913a70dc0f33de5.js} +1 -1
  46. d5m_ai/labextension/static/8936.1d6c52d6f461b01371c4.js +1 -0
  47. d5m_ai/labextension/static/9030.133f0e459e9f802be5ad.js +1 -0
  48. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/7023.f00c7a4596b9e4730708.js → d5m_ai/labextension/static/9404.f6ff67c04b5dfb52e3d9.js +1 -1
  49. d5m_ai/labextension/static/9407.72a128229179d870002b.js +1 -0
  50. d5m_ai/labextension/static/9471.33f5a763bc078ea0e425.js +1 -0
  51. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/2774.6c28665d8d562e2eafab.js → d5m_ai/labextension/static/9571.6b68c12d3afaa5cc9b22.js +1 -1
  52. d5m_ai/labextension/static/9673.efe1b35a74fdf47bb401.js +1 -0
  53. d5m_ai/labextension/static/9817.7ccf0d44d8222c7cc19e.js +1 -0
  54. d5m_ai/labextension/static/remoteEntry.691071d577b6013b3be4.js +1 -0
  55. d5m_ai/tools/__init__.py +6 -0
  56. d5m_ai/tools/cell_execute.py +54 -0
  57. d5m_ai/tools/create_notebook.py +53 -0
  58. d5m_ai/tools/frontend_ws.py +170 -0
  59. d5m_ai/tools/registry.py +32 -3
  60. d5m_ai/tools/shell_execute.py +261 -0
  61. d5m_ai/tools/write_file.py +51 -0
  62. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/package.json +2 -2
  63. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/schemas/runcell/package.json.orig +1 -1
  64. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1038.3d4a95889322af3486c9.js +1 -0
  65. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1103.125b012d0cc21fcd4c17.js +1 -0
  66. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1462.95e60c119ee44dd5ce4d.js +1 -0
  67. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5009.375c39a105e8068ec0c0.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1599.a81345569a22a67e586b.js +1 -1
  68. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1668.ad21890aa4a84d053fd1.js +1 -0
  69. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/1806.a135a1bece20818d019a.js +1 -0
  70. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2082.5f28bb724b308c004a03.js +1 -0
  71. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2287.62675b5f54fb3cdf9dad.js +1 -0
  72. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2331.b764c648e7b3ce99b9bd.js +48 -0
  73. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2439.691a80f552c192dcdd36.js +1 -0
  74. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2543.74f05520feb54f093874.js +1 -0
  75. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2963.24ce4624e5f00aba812e.js +1 -0
  76. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2989.415c278633d30c768280.js +1 -0
  77. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/315.8ca29a2467a66de73060.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/315.6269dcfbb2b4c1e62103.js +1 -1
  78. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/3272.c14c7efa176ba27377ea.js +1 -0
  79. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/3330.5e63016fbb98dce0cac6.js +1 -0
  80. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/3939.87077bb549e80bc5709e.js +2 -0
  81. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/4301.7b9d249c7d587cf0c423.js +1 -0
  82. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/4637.94d9d3415a216176c874.js +1 -0
  83. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/4789.5454fd8f02c1a04d9425.js +1 -0
  84. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/5271.f866100834b03d222299.js +1 -0
  85. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/5787.28fd320820307ce1cbe2.js +1 -0
  86. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/5844.944056182693e52fc0ce.js +1 -0
  87. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/5959.4c1c904a5c89f4c602a6.js +1 -0
  88. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/6161.3968d5733678faff10bd.js +1 -0
  89. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/6526.35de595b995332066e34.js +1 -0
  90. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/735.77abd67c42730b4d946a.js +1 -0
  91. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/7618.31ae485d97c185b7b482.js +1 -0
  92. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/7933.5994a870ebd9b0333a75.js +1 -0
  93. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8263.794bec1a8fc1c8cdbccf.js +1 -0
  94. d5m_ai/labextension/static/4255.657770d29f05e3da360c.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8340.d7cd127e8e25a8ccccc7.js +1 -1
  95. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8420.2fc62e3dd5b4a52ac598.js +1 -0
  96. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8502.36e560c4ba2789e89fa2.js +1 -0
  97. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8565.df233b0467ad219c7e27.js +1 -0
  98. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6619.04732600d85fbbc50931.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8613.5ccca913a70dc0f33de5.js +1 -1
  99. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/8936.1d6c52d6f461b01371c4.js +1 -0
  100. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9030.133f0e459e9f802be5ad.js +1 -0
  101. d5m_ai/labextension/static/7023.f00c7a4596b9e4730708.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9404.f6ff67c04b5dfb52e3d9.js +1 -1
  102. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9407.72a128229179d870002b.js +1 -0
  103. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9471.33f5a763bc078ea0e425.js +1 -0
  104. d5m_ai/labextension/static/2774.6c28665d8d562e2eafab.js → runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9571.6b68c12d3afaa5cc9b22.js +1 -1
  105. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9673.efe1b35a74fdf47bb401.js +1 -0
  106. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/9817.7ccf0d44d8222c7cc19e.js +1 -0
  107. runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/remoteEntry.691071d577b6013b3be4.js +1 -0
  108. {runcell-0.1.17a3.dist-info → runcell-0.1.18a0.dist-info}/METADATA +1 -1
  109. {runcell-0.1.17a3.dist-info → runcell-0.1.18a0.dist-info}/RECORD +451 -444
  110. d5m_ai/labextension/static/1866.ab8af952d5f6e2abf015.js +0 -1
  111. d5m_ai/labextension/static/2331.cf0ae406b1f17e5c8518.js +0 -1
  112. d5m_ai/labextension/static/2732.afa510c6b53e86d62ca1.js +0 -1
  113. d5m_ai/labextension/static/3111.ebf975f4bcee6f078398.js +0 -1
  114. d5m_ai/labextension/static/3314.bba33288b1bf072a1159.js +0 -1
  115. d5m_ai/labextension/static/345.b6c86a74cbb739491375.js +0 -1
  116. d5m_ai/labextension/static/3475.4bb63668582c9ee1aa75.js +0 -1
  117. d5m_ai/labextension/static/3550.0f796cddf846567f6eda.js +0 -1
  118. d5m_ai/labextension/static/4163.c5b167ad4c431223b14a.js +0 -1
  119. d5m_ai/labextension/static/4398.20687aa11fadd8caab55.js +0 -1
  120. d5m_ai/labextension/static/4444.8776afd3310ade08de78.js +0 -1
  121. d5m_ai/labextension/static/4573.313f73d47b3e9e7e539a.js +0 -1
  122. d5m_ai/labextension/static/4640.c1c98b7c207045b8429e.js +0 -1
  123. d5m_ai/labextension/static/4712.867600779a30c292ecd7.js +0 -48
  124. d5m_ai/labextension/static/4797.6c1f52ca8940a1daa9ed.js +0 -1
  125. d5m_ai/labextension/static/5225.77ee82ef77687f707c86.js +0 -1
  126. d5m_ai/labextension/static/5307.0cf41cdf5b6c0c01dbe3.js +0 -1
  127. d5m_ai/labextension/static/5388.8b14c718c4703b72635f.js +0 -1
  128. d5m_ai/labextension/static/5481.20ece9f96e241e634f15.js +0 -1
  129. d5m_ai/labextension/static/553.bd198ad217a7dbfcef42.js +0 -1
  130. d5m_ai/labextension/static/5785.c6fc662855351bdde523.js +0 -1
  131. d5m_ai/labextension/static/5953.fb531c692611683ab5f7.js +0 -1
  132. d5m_ai/labextension/static/6047.ed21945649e91106bee2.js +0 -1
  133. d5m_ai/labextension/static/6145.8bfe956b3c3b5a40e58d.js +0 -1
  134. d5m_ai/labextension/static/6286.db1168ea85a057c6f189.js +0 -1
  135. d5m_ai/labextension/static/6734.e5919666c842cdf1276d.js +0 -1
  136. d5m_ai/labextension/static/6789.346356d4f19b92e62321.js +0 -1
  137. d5m_ai/labextension/static/6841.3906e65455bb5575b44b.js +0 -1
  138. d5m_ai/labextension/static/783.63f9d3340979bfb89716.js +0 -1
  139. d5m_ai/labextension/static/790.1c740b9b76f7fd2dc0d6.js +0 -1
  140. d5m_ai/labextension/static/877.e8b79ec87c1325c45f62.js +0 -2
  141. d5m_ai/labextension/static/8823.2fc995c832aa529c3519.js +0 -1
  142. d5m_ai/labextension/static/9064.5349664a3752925acab3.js +0 -1
  143. d5m_ai/labextension/static/9195.d0277553edf7593d967d.js +0 -1
  144. d5m_ai/labextension/static/9338.58debf8972aa5f8b68d7.js +0 -1
  145. d5m_ai/labextension/static/9404.f841eb045fbb87713d5e.js +0 -1
  146. d5m_ai/labextension/static/9575.8848adfb0c89daa1ca6b.js +0 -1
  147. d5m_ai/labextension/static/remoteEntry.efee755649ccf0e6ec23.js +0 -1
  148. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/1866.ab8af952d5f6e2abf015.js +0 -1
  149. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/2331.cf0ae406b1f17e5c8518.js +0 -1
  150. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/2732.afa510c6b53e86d62ca1.js +0 -1
  151. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/3111.ebf975f4bcee6f078398.js +0 -1
  152. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/3314.bba33288b1bf072a1159.js +0 -1
  153. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/345.b6c86a74cbb739491375.js +0 -1
  154. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/3475.4bb63668582c9ee1aa75.js +0 -1
  155. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/3550.0f796cddf846567f6eda.js +0 -1
  156. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4163.c5b167ad4c431223b14a.js +0 -1
  157. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4398.20687aa11fadd8caab55.js +0 -1
  158. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4444.8776afd3310ade08de78.js +0 -1
  159. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4573.313f73d47b3e9e7e539a.js +0 -1
  160. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4640.c1c98b7c207045b8429e.js +0 -1
  161. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4712.867600779a30c292ecd7.js +0 -48
  162. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4797.6c1f52ca8940a1daa9ed.js +0 -1
  163. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5225.77ee82ef77687f707c86.js +0 -1
  164. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5307.0cf41cdf5b6c0c01dbe3.js +0 -1
  165. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5388.8b14c718c4703b72635f.js +0 -1
  166. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5481.20ece9f96e241e634f15.js +0 -1
  167. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/553.bd198ad217a7dbfcef42.js +0 -1
  168. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5785.c6fc662855351bdde523.js +0 -1
  169. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/5953.fb531c692611683ab5f7.js +0 -1
  170. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6047.ed21945649e91106bee2.js +0 -1
  171. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6145.8bfe956b3c3b5a40e58d.js +0 -1
  172. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6286.db1168ea85a057c6f189.js +0 -1
  173. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6734.e5919666c842cdf1276d.js +0 -1
  174. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6789.346356d4f19b92e62321.js +0 -1
  175. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/6841.3906e65455bb5575b44b.js +0 -1
  176. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/783.63f9d3340979bfb89716.js +0 -1
  177. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/790.1c740b9b76f7fd2dc0d6.js +0 -1
  178. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/877.e8b79ec87c1325c45f62.js +0 -2
  179. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/8823.2fc995c832aa529c3519.js +0 -1
  180. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/9064.5349664a3752925acab3.js +0 -1
  181. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/9195.d0277553edf7593d967d.js +0 -1
  182. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/9338.58debf8972aa5f8b68d7.js +0 -1
  183. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/9404.f841eb045fbb87713d5e.js +0 -1
  184. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/9575.8848adfb0c89daa1ca6b.js +0 -1
  185. runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/remoteEntry.efee755649ccf0e6ec23.js +0 -1
  186. /d5m_ai/labextension/static/{4712.867600779a30c292ecd7.js.LICENSE.txt → 2331.b764c648e7b3ce99b9bd.js.LICENSE.txt} +0 -0
  187. /d5m_ai/labextension/static/{877.e8b79ec87c1325c45f62.js.LICENSE.txt → 3939.87077bb549e80bc5709e.js.LICENSE.txt} +0 -0
  188. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/etc/jupyter/jupyter_server_config.d/d5m_ai.json +0 -0
  189. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/etc/jupyter/jupyter_server_config.d/runcell.json +0 -0
  190. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/install.json +0 -0
  191. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/schemas/runcell/file-browser-toggle.json +0 -0
  192. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/schemas/runcell/plugin.json +0 -0
  193. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1045.a76db59a7c20953976f0.js +0 -0
  194. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1055.87aafb19805530488a2c.js +0 -0
  195. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/108.d7dbe40ec7e0ae1a68f8.js +0 -0
  196. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1104.a2b939bacec5e69efd99.js +0 -0
  197. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1171.130d3cc54764cac92856.js +0 -0
  198. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1178.3e25fad4a45450e227c9.js +0 -0
  199. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1203.5deaeee9e57ffc718f19.js +0 -0
  200. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1226.ff48aa5741f77eb739fe.js +0 -0
  201. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1273.4c5992b03f129c9e3025.js +0 -0
  202. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1285.cf3bab9529c47ac9288d.js +0 -0
  203. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1307.d98ceb66a2401e5f4ddd.js +0 -0
  204. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1328.38964f7daa84901e866f.js +0 -0
  205. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1377.edf5c2163aedef75c6a1.js +0 -0
  206. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1391.ab61eb03aed289d9d44c.js +0 -0
  207. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1431.a691b4fa7cf229072fc0.js +0 -0
  208. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1521.9f3807c4a4dd19a6ab8c.js +0 -0
  209. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1524.188ff9d525210d499ff3.js +0 -0
  210. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1534.39ba9b2bf5712b697b63.js +0 -0
  211. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1540.9eba7e882fd8e00a782a.js +0 -0
  212. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1552.5203480dcdda6574ef51.js +0 -0
  213. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1555.686745d50bd19fd9d271.js +0 -0
  214. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1618.9abd2093263741894755.js +0 -0
  215. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1635.84bd383b17e41c9fe103.js +0 -0
  216. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1678.57b141401f73a26257c8.js +0 -0
  217. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1685.842997eb9757846fe690.js +0 -0
  218. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1745.e6bb2c6882da5bf9883a.js +0 -0
  219. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1752.8c4ecff560428215fe75.js +0 -0
  220. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1797.f8ca14c3ec1c0f51f403.js +0 -0
  221. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1897.7cca7a664a9ca9b486ac.js +0 -0
  222. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1902.364fa5e977055fe14150.js +0 -0
  223. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1915.b55b7d52608421a7fc41.js +0 -0
  224. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/1970.dff4fcccbb6cadb04d0c.js +0 -0
  225. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/200.f1d30c245c18bbb03312.js +0 -0
  226. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2031.155ab0916a863c8787a7.js +0 -0
  227. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2031.155ab0916a863c8787a7.js.LICENSE.txt +0 -0
  228. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/207.f5bd6d1b383a6b01ca69.js +0 -0
  229. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2072.a4d04cc98bb118e689a1.js +0 -0
  230. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2075.5d6a026d7308b71b70a1.js +0 -0
  231. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2111.a3c1f620c0a31e54cb9f.js +0 -0
  232. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2152.4db0fcf1f4dccf54b600.js +0 -0
  233. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2173.9fddf72b827a6d629bad.js +0 -0
  234. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2198.e195afcaabb2e4063da9.js +0 -0
  235. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2224.c86b12cf9e2165904033.js +0 -0
  236. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2225.8d31eec53891ca7775b7.js +0 -0
  237. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2271.69d9ea25d4ddd02710f6.js +0 -0
  238. /runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/4712.867600779a30c292ecd7.js.LICENSE.txt → /runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/2331.b764c648e7b3ce99b9bd.js.LICENSE.txt +0 -0
  239. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2349.e7c5b5e507c7a81d1427.js +0 -0
  240. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2353.7b6b36b3164a86427209.js +0 -0
  241. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2382.9e67478cc4b31aede22c.js +0 -0
  242. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2385.cd85a7dd4acb5be739da.js +0 -0
  243. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/248.693fd98760ec6ce42219.js +0 -0
  244. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2555.7168a2616a6071addb97.js +0 -0
  245. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2576.56496d8cba50d3d69eb5.js +0 -0
  246. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2639.eb2553a7be688366d9f3.js +0 -0
  247. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2654.2453f6b5846a4719dba4.js +0 -0
  248. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/267.829ce2ca38940b778c91.js +0 -0
  249. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/270.9409a2f5631a31c79cd9.js +0 -0
  250. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2768.9e5b7c6ed84b2486f835.js +0 -0
  251. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2789.12830cdb21c09111668d.js +0 -0
  252. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2824.d02df014c07b7288e78c.js +0 -0
  253. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2824.d02df014c07b7288e78c.js.LICENSE.txt +0 -0
  254. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2838.2e689afee276e5e21c57.js +0 -0
  255. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2843.65aeb8be3744d20229b8.js +0 -0
  256. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2897.7bc91ca284ea12b863e8.js +0 -0
  257. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2905.0d34ef7a481f9a968f05.js +0 -0
  258. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2922.8cdf00bb7d09c5419d78.js +0 -0
  259. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2922.8cdf00bb7d09c5419d78.js.LICENSE.txt +0 -0
  260. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/2971.60c60668c130ed05d493.js +0 -0
  261. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/299.8600f54b39a11eeff427.js +0 -0
  262. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3027.2226147340da305061f3.js +0 -0
  263. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3028.953cd3b9865063969086.js +0 -0
  264. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3041.4059f9ba4f9eba56672a.js +0 -0
  265. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3045.a457aa1d023ba5f799c2.js +0 -0
  266. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3092.fad665f8cdb1da61b55b.js +0 -0
  267. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3142.7df01050c977ede2b13b.js +0 -0
  268. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3157.bcb9f8ff06fa4af27b6a.js +0 -0
  269. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3214.a986c1896fa590b2da27.js +0 -0
  270. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3239.4562297487744a7cc1d4.js +0 -0
  271. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/325.bd1e5cab3b6e068b25bc.js +0 -0
  272. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3254.9e1aa1fee12644fea2d9.js +0 -0
  273. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3267.ff884bf47b52ac634854.js +0 -0
  274. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3291.156ad2d1520857115575.js +0 -0
  275. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3311.dc97fd544e85acac8477.js +0 -0
  276. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3319.687f07bb2f993c1dc44b.js +0 -0
  277. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3325.c100f45711f539a7f262.js +0 -0
  278. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3386.4c8eebdb8d318c2913ce.js +0 -0
  279. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3386.4c8eebdb8d318c2913ce.js.LICENSE.txt +0 -0
  280. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3407.cbbf99a2ff4805726f3e.js +0 -0
  281. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3424.92b1a820ff2aa6156c36.js +0 -0
  282. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3426.27afd4c41cfad8e1a63d.js +0 -0
  283. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3436.ea677bb3e7f3ce87d7fd.js +0 -0
  284. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3449.5d8818fac081c207ce79.js +0 -0
  285. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3514.c8a1863df3cfd5390617.js +0 -0
  286. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/355.45290b03d6d4be49a58e.js +0 -0
  287. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3551.87e6eb270a212d08b1b5.js +0 -0
  288. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/359.1463d2cf955623ecceae.js +0 -0
  289. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3619.3dfa7c4eaa067a407275.js +0 -0
  290. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3645.5ea37d9f483120f69f4e.js +0 -0
  291. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3659.056fa5e4e39b72bc358b.js +0 -0
  292. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3688.7bd1ba5006b22ed5616e.js +0 -0
  293. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3722.688cdfd335ffeac13492.js +0 -0
  294. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3724.06a5a1b542ff978df3b4.js +0 -0
  295. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/376.f9c52e5bbd650da7b67f.js +0 -0
  296. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3794.c0236d400b2129ac42a9.js +0 -0
  297. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/3930.b142768bad429b3ebb04.js +0 -0
  298. /runcell-0.1.17a3.data/data/share/jupyter/labextensions/runcell/static/877.e8b79ec87c1325c45f62.js.LICENSE.txt → /runcell-0.1.18a0.data/data/share/jupyter/labextensions/runcell/static/3939.87077bb549e80bc5709e.js.LICENSE.txt +0 -0
  299. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4003.95678dd199222938923b.js +0 -0
  300. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4017.d35a7557e5338be92770.js +0 -0
  301. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4050.00a6bfc9f23c6ef07199.js +0 -0
  302. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4087.ea430b62171512019400.js +0 -0
  303. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/410.fd643a255d72a83c1be6.js +0 -0
  304. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4127.0e783d9a497298e9fe18.js +0 -0
  305. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/415.0a1fdc1d9f76c0431d42.js +0 -0
  306. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4175.d23c246efa6921b45150.js +0 -0
  307. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4238.bd4642c4f9256441aea5.js +0 -0
  308. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4246.d8aedd2b15d1a95f1288.js +0 -0
  309. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4272.c92c9a0d98749863c853.js +0 -0
  310. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4296.7f1db6691a4ac120a383.js +0 -0
  311. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4317.1ba9f3c33b7a1484c5df.js +0 -0
  312. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/434.bfe4f51db2eb9644fbe7.js +0 -0
  313. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/434.bfe4f51db2eb9644fbe7.js.LICENSE.txt +0 -0
  314. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4353.6a83dae11a48e9d1b345.js +0 -0
  315. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4358.53a6106c5c93c3fda026.js +0 -0
  316. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4364.e87c307df69aa50a5b2a.js +0 -0
  317. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4365.b2b4496cc260301256b9.js +0 -0
  318. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4371.647bc44642d1ad0e99e4.js +0 -0
  319. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4390.1cafd3d4635b09e0c945.js +0 -0
  320. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4412.23a8cb5fb7377d3c81ab.js +0 -0
  321. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4412.23a8cb5fb7377d3c81ab.js.LICENSE.txt +0 -0
  322. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4425.a34c4f44daa5996eeec4.js +0 -0
  323. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4447.3ad32bafee045d2c0bab.js +0 -0
  324. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4477.d9e871faf650e6ad238a.js +0 -0
  325. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/45.560ee8b955f55e6a7471.js +0 -0
  326. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4503.794c4dd58c6bf2e6a66d.js +0 -0
  327. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4584.c610d4a425b036b86759.js +0 -0
  328. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4613.05840d3fc617590fff51.js +0 -0
  329. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4630.a78300f70b9af36897eb.js +0 -0
  330. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4682.1b69aa450cedd96227c9.js +0 -0
  331. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4713.4e4e598399fd6de85f5d.js +0 -0
  332. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4725.5447994a36dfeda58b9f.js +0 -0
  333. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4755.74d46f71eb4d23e4bca2.js +0 -0
  334. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4838.688e36ea43737e72dbdc.js +0 -0
  335. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/485.d27de91b0124447cf435.js +0 -0
  336. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4872.1404f5d25464532c27c2.js +0 -0
  337. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4886.443bcf6af7b83f72b4b5.js +0 -0
  338. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4913.d226f3c41ebb36489ce3.js +0 -0
  339. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/492.a7f5e972b35c8c877bf1.js +0 -0
  340. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/4928.5c8ad7f80ba081dfdbba.js +0 -0
  341. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5146.45d9b015343e5a7cace1.js +0 -0
  342. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5183.8c5527ebc7a807107471.js +0 -0
  343. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/524.927c6a42244b04ee834f.js +0 -0
  344. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5253.2cea0b927b50c952fe98.js +0 -0
  345. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5331.c971f98ac4fd9e9751a4.js +0 -0
  346. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5391.375b4314cb4b851f0915.js +0 -0
  347. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5391.375b4314cb4b851f0915.js.LICENSE.txt +0 -0
  348. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5408.07fc40e33d3fd1a3f7b6.js +0 -0
  349. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5431.528d309549815d363599.js +0 -0
  350. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5447.1267bc4aa4938bd0f08d.js +0 -0
  351. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5466.e1da4e862af22e314f82.js +0 -0
  352. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5473.7ac9ad0a3e047bfeceb0.js +0 -0
  353. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5509.c8c8ddebaabc3579daba.js +0 -0
  354. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5590.fd188e01caa78afb3ec4.js +0 -0
  355. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5620.cd3cd230d09209b34fb5.js +0 -0
  356. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5636.ca803ffcf0d43c2402c9.js +0 -0
  357. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5672.156ad2d1520857115575.js +0 -0
  358. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5695.0da6228c48571d9386f3.js +0 -0
  359. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5715.66ad4e7324b22a5e27fb.js +0 -0
  360. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5741.edd8fd814866705aad98.js +0 -0
  361. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5748.53eb48f5623074a948ba.js +0 -0
  362. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5765.e957d823cdfe2746a356.js +0 -0
  363. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5788.b9c62804c0698b91ca8a.js +0 -0
  364. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5882.b40b5d690d3f6f67f09a.js +0 -0
  365. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5885.8cd4d3e3008fdb31ce2a.js +0 -0
  366. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5900.6dca06924caef83a5b52.js +0 -0
  367. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5906.870c0d7bb4e022aaca9d.js +0 -0
  368. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5908.e81f83f7a9906d9d7542.js +0 -0
  369. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5973.4e08bf1ee13205326051.js +0 -0
  370. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5973.4e08bf1ee13205326051.js.LICENSE.txt +0 -0
  371. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/5977.d264e9baaebc417e35c0.js +0 -0
  372. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6007.987a9850d5891b1908ae.js +0 -0
  373. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6030.dd5fd07844168dbaa6f6.js +0 -0
  374. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6030.dd5fd07844168dbaa6f6.js.LICENSE.txt +0 -0
  375. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6079.5c80b9de6aabb0be08d2.js +0 -0
  376. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6084.bf8d6b1da6c4cad209bb.js +0 -0
  377. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6094.f96654ca0070f8f391b1.js +0 -0
  378. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/611.5ae7fb260af8629f1528.js +0 -0
  379. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6176.bd441d4d6fe942889bf3.js +0 -0
  380. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6221.457e64a4f06be421eaa4.js +0 -0
  381. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6266.4f2bcc95c2d61cdaacbc.js +0 -0
  382. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/627.84c4aa26f69662abb72d.js +0 -0
  383. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6293.823b9bfe50fdfd62dd42.js +0 -0
  384. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6299.b14c1d46ba4ad9799f63.js +0 -0
  385. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6306.8d22227d6aa1dfc32da5.js +0 -0
  386. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6320.b844d6686eebcb036643.js +0 -0
  387. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6322.997db39a5d4b63e72b21.js +0 -0
  388. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6336.92de365c5fb0f261f799.js +0 -0
  389. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6354.0025efd7872b7d32b46b.js +0 -0
  390. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6354.0025efd7872b7d32b46b.js.LICENSE.txt +0 -0
  391. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6366.5049626e7d5bb38a8574.js +0 -0
  392. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/640.ebfad36f1dde45e9cd05.js +0 -0
  393. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/642.817a48a77e1c16e6e65d.js +0 -0
  394. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6520.ff2a9ec2e50dd45868ac.js +0 -0
  395. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6573.7899a873adb98c3c0190.js +0 -0
  396. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6648.b7ed5e9a732275dc85ac.js +0 -0
  397. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6676.1a71900a6131dbe02aad.js +0 -0
  398. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6678.fe58c12ce33b0f5706f5.js +0 -0
  399. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6772.01fcccfcabd525210aee.js +0 -0
  400. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6774.1e0a751d7079179f8f73.js +0 -0
  401. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6795.1c49fa950817836e3f1e.js +0 -0
  402. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6803.eccda2da06d869b0acda.js +0 -0
  403. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6822.5bf91484ea172f864747.js +0 -0
  404. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6853.48004207e7c689ec55b4.js +0 -0
  405. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6880.c3cfce260b3d25d9ef5e.js +0 -0
  406. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6906.1f65b08daf64af8d1f27.js +0 -0
  407. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/6982.d9f1a29fe7834b53c855.js +0 -0
  408. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7005.9f8920f4e58652fe3ef9.js +0 -0
  409. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/711.5c259d7417620cf8eef8.js +0 -0
  410. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7131.cab088ddb371234f1fd6.js +0 -0
  411. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7161.f03be5c4590ae6db98c1.js +0 -0
  412. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7166.6e64d20ff3d06bb0726a.js +0 -0
  413. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7181.1d3f5611193e734beaf4.js +0 -0
  414. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/72.081fe34e2c76320135d0.js +0 -0
  415. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7232.5969981a73dac6835b93.js +0 -0
  416. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7273.9e6765278092fd30a14f.js +0 -0
  417. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7280.5862e5cf2b594fd45f82.js +0 -0
  418. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7336.b8136533f61cd1b71adc.js +0 -0
  419. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7359.7bc0ef939742600dba39.js +0 -0
  420. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7399.6fa42c5d34d3659f9f68.js +0 -0
  421. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7400.ea48afe8766bd82b3741.js +0 -0
  422. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7441.bce20fb0ea3d8638bc30.js +0 -0
  423. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7488.f63b5ad13eb23dbc3915.js +0 -0
  424. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/751.48ddf412afdd781e868f.js +0 -0
  425. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7572.937d1e5ce68a384389e9.js +0 -0
  426. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7652.cf086dfcd950ff2c4554.js +0 -0
  427. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7672.61e8e5299259407f1ee1.js +0 -0
  428. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7705.962a56002e394e3755aa.js +0 -0
  429. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7719.9dbadc40622a97c6fa90.js +0 -0
  430. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7771.efa5c4cf41907b4c8cfc.js +0 -0
  431. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7772.094d82c7ec81259764f4.js +0 -0
  432. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7772.094d82c7ec81259764f4.js.LICENSE.txt +0 -0
  433. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/779.c50f60eeca2b40bf96db.js +0 -0
  434. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7792.e67368a87fa703a97f25.js +0 -0
  435. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7812.1b53bb1f6cce555d0b70.js +0 -0
  436. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7890.c8c8ddebaabc3579daba.js +0 -0
  437. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7954.b02433d4bd38b648ec0e.js +0 -0
  438. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7959.75734676fe5e861ad899.js +0 -0
  439. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7967.ccc236f921abba961fcb.js +0 -0
  440. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/7981.c14b5974541e98a1b340.js +0 -0
  441. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8053.ebcecafa176e4cb5c439.js +0 -0
  442. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8053.ebcecafa176e4cb5c439.js.LICENSE.txt +0 -0
  443. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8056.06f4e4d87d7ccc1e4662.js +0 -0
  444. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8066.ad6692e614937d4dc480.js +0 -0
  445. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8122.f671cfb05d97b5e220fa.js +0 -0
  446. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8146.fc69595fa9fb4dc989ec.js +0 -0
  447. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8151.e18e503723ffa9d576f7.js +0 -0
  448. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8177.d8e81718e82279286385.js +0 -0
  449. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8179.33453f3165561d33347d.js +0 -0
  450. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8181.0f15741bcd037cfaf528.js +0 -0
  451. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8249.01410b92489460697717.js +0 -0
  452. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8295.39003c08c2539bf22593.js +0 -0
  453. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8304.075c39345f3b817edfb1.js +0 -0
  454. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8321.3ba6a40e5ed74b977afc.js +0 -0
  455. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8343.31e93467f566af5fb10e.js +0 -0
  456. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8354.3044135d1229985d61c6.js +0 -0
  457. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8354.3044135d1229985d61c6.js.LICENSE.txt +0 -0
  458. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8366.55b8257f92b23e6f49ec.js +0 -0
  459. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8369.80293e64ec102044c767.js +0 -0
  460. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/84.3575d43472885d2b7714.js +0 -0
  461. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8400.7d8ed1bca69c56f67486.js +0 -0
  462. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8404.1c1c675dc23d7d9d80de.js +0 -0
  463. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8437.795ac38d87895b50d98e.js +0 -0
  464. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8480.6698a41d2cf895aafe0f.js +0 -0
  465. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8482.85d03122dfec6d4f9307.js +0 -0
  466. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/851.9faa523fb28cedcd6b88.js +0 -0
  467. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8522.dd261948e958bcf4ae64.js +0 -0
  468. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8524.4c79a5ea5e22a1389a1f.js +0 -0
  469. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8649.b722755e4bccf4a39cd5.js +0 -0
  470. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8675.ffadeba0edbfd8d2285d.js +0 -0
  471. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8748.bb9c4496cf4ab7577e74.js +0 -0
  472. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8751.e80b9f51b9cdb544d16b.js +0 -0
  473. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8768.4aba875e6cfb350edfa7.js +0 -0
  474. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/880.0bcd5ab06196cb9533c4.js +0 -0
  475. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8824.4b08a890046be218bb35.js +0 -0
  476. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8829.c51ecb2bf77a1ca2a962.js +0 -0
  477. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8856.6e271445d6d3837302ec.js +0 -0
  478. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8860.c824d17d8869a6dd6207.js +0 -0
  479. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8887.6480b4ee0c5fa187c2d7.js +0 -0
  480. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8929.3329d360058c1764e201.js +0 -0
  481. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/8957.4f33250ba35099dbe048.js +0 -0
  482. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9014.0e67032c3d7119ce3370.js +0 -0
  483. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/904.60333ec0aebf2d092197.js +0 -0
  484. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9040.9376593b8e7caa5ed6a0.js +0 -0
  485. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9055.7b9ab3136d6a82b298a4.js +0 -0
  486. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9071.d8aea526bf53118639a9.js +0 -0
  487. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9113.f9e25015d31ee397e490.js +0 -0
  488. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9115.c30adf6f374eb1bd3b93.js +0 -0
  489. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9125.26a8a929493c19af9f50.js +0 -0
  490. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9165.8b0907227f85ba27306b.js +0 -0
  491. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9180.7d6cded0c9f36ac75093.js +0 -0
  492. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9184.33de87e8d509010a9bdf.js +0 -0
  493. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9193.3666b71cf376fdec58b4.js +0 -0
  494. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9205.a2f5f2a2c0b69582717e.js +0 -0
  495. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9251.822a5aa9397713d54ea2.js +0 -0
  496. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9255.ad693b359f0d12767fe1.js +0 -0
  497. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9262.bebc0ed75d7f86d722f2.js +0 -0
  498. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9277.f3623a34b457ca052d80.js +0 -0
  499. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9285.2d3c4984387ebca606d4.js +0 -0
  500. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9289.9fb56f7beb83d721e654.js +0 -0
  501. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/934.3ce5b696b827323e706e.js +0 -0
  502. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9402.b8868b6860051723bf48.js +0 -0
  503. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9412.fe8cf617636a0df90247.js +0 -0
  504. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9456.2f96fda82d4be6b0448e.js +0 -0
  505. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9494.b4ae8d6a63ec84cc4ec3.js +0 -0
  506. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9513.0db046603be52099c3ec.js +0 -0
  507. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9514.458d7630c50b4b658200.js +0 -0
  508. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9559.07e6563cb0b401ff88a6.js +0 -0
  509. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9576.b2d6c2e9831fda63f41f.js +0 -0
  510. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9607.a4f836281d0337527f6e.js +0 -0
  511. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9621.55ea68ee13d702908a10.js +0 -0
  512. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9640.c489050f3a1342328779.js +0 -0
  513. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9650.b4d4a115ac2fca1dfbe8.js +0 -0
  514. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9704.f4c6d15183531d37b825.js +0 -0
  515. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9734.63cf17414a5103d290bb.js +0 -0
  516. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9754.2f617d267f5167be63ed.js +0 -0
  517. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9885.f84ed1b0565de3b61e99.js +0 -0
  518. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9912.b6643895a628f9ea506c.js +0 -0
  519. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9926.6e52dbb62a19476aae87.js +0 -0
  520. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9939.eab64dfd409dd1df1844.js +0 -0
  521. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9986.e953beace913bfa7ba74.js +0 -0
  522. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/9997.1716894eb29a02d76575.js +0 -0
  523. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/style.js +0 -0
  524. {runcell-0.1.17a3.data → runcell-0.1.18a0.data}/data/share/jupyter/labextensions/runcell/static/third-party-licenses.json +0 -0
  525. {runcell-0.1.17a3.dist-info → runcell-0.1.18a0.dist-info}/WHEEL +0 -0
  526. {runcell-0.1.17a3.dist-info → runcell-0.1.18a0.dist-info}/entry_points.txt +0 -0
  527. {runcell-0.1.17a3.dist-info → runcell-0.1.18a0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,170 @@
1
+ """
2
+ Frontend-interactive tools executed via the local-only WebSocket bridge.
3
+
4
+ These tools are used by the HTTP/SSE agent v2 loop. They send a request to the
5
+ frontend through the proxy WebSocket handler and wait for the corresponding
6
+ `*_result` message.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import Any, Dict
12
+
13
+ from d5m_ai.agent.config import handler_registry
14
+ from d5m_ai.agent.tools.frontend.helpers import (
15
+ request_permission_and_execute,
16
+ send_and_wait,
17
+ )
18
+
19
+
20
+ def _get_handler(args: Dict[str, Any]):
21
+ connection_id = args.get("connection_id")
22
+ if not connection_id:
23
+ raise RuntimeError(
24
+ "Missing connection_id for frontend tool. Ensure local-only WS is connected."
25
+ )
26
+ handler = handler_registry.get(connection_id)
27
+ if not handler:
28
+ raise RuntimeError(
29
+ f"Frontend handler not found for connection_id: {connection_id}"
30
+ )
31
+ return handler
32
+
33
+
34
+ async def execute_edit_cell_tool(args: Dict[str, Any]) -> str:
35
+ handler = _get_handler(args)
36
+ return await send_and_wait(
37
+ handler,
38
+ "edit_cell",
39
+ {
40
+ "cell_index": args.get("cell_index"),
41
+ "code": args.get("code"),
42
+ "file_path": args.get("file_path"),
43
+ "rerun": args.get("rerun", False),
44
+ },
45
+ timeout=120.0,
46
+ error_message="Error: edit_cell timed out waiting for the frontend.",
47
+ )
48
+
49
+
50
+ async def execute_edit_markdown_cell_tool(args: Dict[str, Any]) -> str:
51
+ handler = _get_handler(args)
52
+ return await send_and_wait(
53
+ handler,
54
+ "edit_markdown_cell",
55
+ {
56
+ "cell_index": args.get("cell_index"),
57
+ "content": args.get("content"),
58
+ "file_path": args.get("file_path"),
59
+ "render": args.get("render", True),
60
+ },
61
+ timeout=120.0,
62
+ error_message="Error: edit_markdown_cell timed out waiting for the frontend.",
63
+ )
64
+
65
+
66
+ async def execute_insert_markdown_cell_tool(args: Dict[str, Any]) -> str:
67
+ handler = _get_handler(args)
68
+ return await send_and_wait(
69
+ handler,
70
+ "insert_markdown_cell",
71
+ {
72
+ "content": args.get("content"),
73
+ "file_path": args.get("file_path"),
74
+ "insert_position": args.get("insert_position"),
75
+ "render": args.get("render", True),
76
+ },
77
+ timeout=120.0,
78
+ error_message="Error: insert_markdown_cell timed out waiting for the frontend.",
79
+ )
80
+
81
+
82
+ async def execute_insert_cell_tool(args: Dict[str, Any]) -> str:
83
+ handler = _get_handler(args)
84
+ return await send_and_wait(
85
+ handler,
86
+ "insert_cell",
87
+ {
88
+ "code": args.get("code"),
89
+ "file_path": args.get("file_path"),
90
+ "insert_position": args.get("insert_position"),
91
+ },
92
+ timeout=120.0,
93
+ error_message="Error: insert_cell timed out waiting for the frontend.",
94
+ )
95
+
96
+
97
+ async def execute_run_cell_tool(args: Dict[str, Any]) -> str:
98
+ handler = _get_handler(args)
99
+ return await send_and_wait(
100
+ handler,
101
+ "run_cell",
102
+ {
103
+ "file_path": args.get("file_path"),
104
+ "cell_index": args.get("cell_index"),
105
+ },
106
+ timeout=180.0,
107
+ error_message="Error: run_cell timed out waiting for the frontend.",
108
+ )
109
+
110
+
111
+ async def execute_delete_cell_tool(args: Dict[str, Any]) -> str:
112
+ handler = _get_handler(args)
113
+ return await send_and_wait(
114
+ handler,
115
+ "delete_cell",
116
+ {
117
+ "file_path": args.get("file_path"),
118
+ "cell_index": args.get("cell_index"),
119
+ },
120
+ timeout=120.0,
121
+ error_message="Error: delete_cell timed out waiting for the frontend.",
122
+ )
123
+
124
+
125
+ async def execute_open_tab_tool(args: Dict[str, Any]) -> str:
126
+ handler = _get_handler(args)
127
+ return await send_and_wait(
128
+ handler,
129
+ "open_tab",
130
+ {
131
+ "file_path": args.get("file_path"),
132
+ },
133
+ timeout=90.0,
134
+ error_message="Error: open_tab timed out waiting for the frontend.",
135
+ )
136
+
137
+
138
+ async def execute_run_long_terminal_tool(args: Dict[str, Any]) -> str:
139
+ handler = _get_handler(args)
140
+ return await send_and_wait(
141
+ handler,
142
+ "run_long_terminal",
143
+ {
144
+ "command": args.get("command"),
145
+ "error_detection_window_ms": args.get("error_detection_window_ms"),
146
+ },
147
+ timeout=180.0,
148
+ error_message="Error: run_long_terminal timed out waiting for the frontend.",
149
+ )
150
+
151
+
152
+ async def execute_rerun_all_cells_tool(args: Dict[str, Any]) -> str:
153
+ handler = _get_handler(args)
154
+ return await request_permission_and_execute(
155
+ handler,
156
+ permission_message_type="rerun_all_cells_permission_request",
157
+ permission_message=(
158
+ "The assistant wants to rerun all cells in the current notebook. "
159
+ "This may overwrite outputs. Do you want to continue?"
160
+ ),
161
+ execute_message_type="rerun_all_cells",
162
+ execute_payload={
163
+ "file_path": args.get("file_path"),
164
+ },
165
+ permission_timeout=180.0,
166
+ execute_timeout=300.0,
167
+ cancelled_message="Rerun all cells cancelled by user.",
168
+ permission_timeout_message="Timed out waiting for rerun permission.",
169
+ )
170
+
d5m_ai/tools/registry.py CHANGED
@@ -35,8 +35,23 @@ from typing import Any, Awaitable, Callable, Dict, Optional, Tuple
35
35
  from .read_file import execute_read_file_tool
36
36
  from .list_dir import execute_list_dir_tool
37
37
  from .grep import execute_grep_tool
38
+ from .cell_execute import execute_cell_execute_tool
39
+ from .shell_execute import execute_shell_execute_tool
40
+ from .write_file import execute_write_file_tool
41
+ from .create_notebook import execute_create_notebook_tool
42
+ from .edit import execute_edit_tool
43
+ from .frontend_ws import (
44
+ execute_delete_cell_tool,
45
+ execute_edit_cell_tool,
46
+ execute_edit_markdown_cell_tool,
47
+ execute_insert_cell_tool,
48
+ execute_insert_markdown_cell_tool,
49
+ execute_open_tab_tool,
50
+ execute_rerun_all_cells_tool,
51
+ execute_run_cell_tool,
52
+ execute_run_long_terminal_tool,
53
+ )
38
54
  # TEMPORARILY DISABLED: edit and apply_patch tools - may re-enable in future
39
- # from .edit import execute_edit_tool
40
55
  # from .apply_patch import execute_apply_patch_tool
41
56
  from .glob_search import execute_glob_tool
42
57
 
@@ -85,8 +100,22 @@ ASK_TOOL_REGISTRY: Dict[str, Tuple[ToolExecutor, PostProcessor]] = {
85
100
  "read_file": (execute_read_file_tool, _default_postprocess),
86
101
  "list_dir": (execute_list_dir_tool, _list_dir_postprocess),
87
102
  "grep": (execute_grep_tool, _grep_postprocess),
88
- # TEMPORARILY DISABLED: edit and apply_patch tools - may re-enable in future
89
- # "edit": (execute_edit_tool, _default_postprocess),
103
+ "cell_execute": (execute_cell_execute_tool, _default_postprocess),
104
+ "shell_execute": (execute_shell_execute_tool, _default_postprocess),
105
+ "write_file": (execute_write_file_tool, _default_postprocess),
106
+ "edit": (execute_edit_tool, _default_postprocess),
107
+ "create_notebook": (execute_create_notebook_tool, _default_postprocess),
108
+ # Frontend/Jupyter tools via local-only WS bridge
109
+ "edit_cell": (execute_edit_cell_tool, _default_postprocess),
110
+ "edit_markdown_cell": (execute_edit_markdown_cell_tool, _default_postprocess),
111
+ "insert_markdown_cell": (execute_insert_markdown_cell_tool, _default_postprocess),
112
+ "insert_cell": (execute_insert_cell_tool, _default_postprocess),
113
+ "run_cell": (execute_run_cell_tool, _default_postprocess),
114
+ "delete_cell": (execute_delete_cell_tool, _default_postprocess),
115
+ "open_tab": (execute_open_tab_tool, _default_postprocess),
116
+ "run_long_terminal": (execute_run_long_terminal_tool, _default_postprocess),
117
+ "rerun_all_cells": (execute_rerun_all_cells_tool, _default_postprocess),
118
+ # apply_patch remains disabled for now
90
119
  # "apply_patch": (execute_apply_patch_tool, _default_postprocess),
91
120
  "glob": (execute_glob_tool, _glob_postprocess),
92
121
  }
@@ -0,0 +1,261 @@
1
+ """
2
+ Standalone shell execution tool for HTTP tool loops.
3
+
4
+ This module intentionally does not import the agent package to avoid
5
+ WebSocket/agent-SDK coupling and circular imports.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import os
11
+ import shlex
12
+ import subprocess
13
+ from typing import Any, Dict, Optional
14
+
15
+ # Maintain a per-process working directory without mutating global cwd.
16
+ _CWD = os.getcwd()
17
+
18
+ # Patterns that are too risky to run without an explicit permission flow.
19
+ _DANGEROUS_PATTERNS = [
20
+ "rm -rf",
21
+ "rm -r",
22
+ "rmdir",
23
+ "del ",
24
+ "format",
25
+ "fdisk",
26
+ "mkfs",
27
+ "dd if=",
28
+ "dd of=",
29
+ "> /dev/",
30
+ "shutdown",
31
+ "reboot",
32
+ "halt",
33
+ "poweroff",
34
+ "init 0",
35
+ "init 6",
36
+ "kill -9",
37
+ "killall",
38
+ "chmod 777",
39
+ "chmod -r 777",
40
+ "chown -r",
41
+ "passwd",
42
+ "su -",
43
+ "sudo su",
44
+ "sudo rm",
45
+ "sudo chmod",
46
+ "sudo chown",
47
+ "nc ",
48
+ "netcat",
49
+ "python -c",
50
+ "python3 -c",
51
+ "eval",
52
+ "exec",
53
+ "import os",
54
+ "pip install",
55
+ "pip uninstall",
56
+ "pip download",
57
+ "conda install",
58
+ "conda update",
59
+ "conda remove",
60
+ "npm install",
61
+ "npm i",
62
+ "npm add",
63
+ "yarn add",
64
+ "yarn install",
65
+ "pnpm add",
66
+ "pnpm install",
67
+ "git checkout",
68
+ "git switch",
69
+ "git reset",
70
+ "git clean",
71
+ "git pull",
72
+ "git push",
73
+ "git fetch",
74
+ ]
75
+
76
+ # Allowlisted read-only commands for MVP.
77
+ _SAFE_COMMANDS = [
78
+ "ls",
79
+ "dir",
80
+ "pwd",
81
+ "whoami",
82
+ "id",
83
+ "date",
84
+ "uptime",
85
+ "uname",
86
+ "hostname",
87
+ "sw_vers",
88
+ "df",
89
+ "du",
90
+ "free",
91
+ "ps",
92
+ "top",
93
+ "htop",
94
+ "which",
95
+ "where",
96
+ "cat",
97
+ "head",
98
+ "tail",
99
+ "wc",
100
+ "grep",
101
+ "find",
102
+ "locate",
103
+ "echo",
104
+ "env",
105
+ "printenv",
106
+ "history",
107
+ "file",
108
+ "stat",
109
+ "tree",
110
+ "jq",
111
+ "lsblk",
112
+ "lscpu",
113
+ "lsmem",
114
+ "lsusb",
115
+ "lspci",
116
+ "ifconfig",
117
+ "ip",
118
+ "netstat",
119
+ "ss",
120
+ "ping",
121
+ "traceroute",
122
+ # Git (read-only)
123
+ "git status",
124
+ "git log",
125
+ "git branch",
126
+ "git diff",
127
+ "git show",
128
+ "git rev-parse",
129
+ "git --version",
130
+ # Node/Python package tools (read-only)
131
+ "npm list",
132
+ "npm ls",
133
+ "npm --version",
134
+ "npm -v",
135
+ "pip list",
136
+ "pip show",
137
+ "pip check",
138
+ "pip --version",
139
+ "pip -v",
140
+ "pip -v",
141
+ "conda list",
142
+ "conda info",
143
+ "conda --version",
144
+ # Container / cluster inspection (read-only)
145
+ "docker ps",
146
+ "docker images",
147
+ "docker --version",
148
+ "docker version",
149
+ "kubectl get",
150
+ "kubectl version",
151
+ # Jupyter tooling (read-only)
152
+ "jupyter --version",
153
+ "jupyter nbconvert",
154
+ "jupyter kernelspec",
155
+ # Convenience built-in handled separately
156
+ "cd",
157
+ ]
158
+
159
+
160
+ def _is_dangerous(command_lower: str) -> Optional[str]:
161
+ for pattern in _DANGEROUS_PATTERNS:
162
+ if pattern in command_lower:
163
+ return pattern
164
+ return None
165
+
166
+
167
+ def _is_allowlisted(command_lower: str) -> bool:
168
+ try:
169
+ parts = shlex.split(command_lower)
170
+ if not parts:
171
+ return False
172
+ base = parts[0]
173
+ if base in {"git", "npm", "pip", "conda", "docker", "kubectl", "jupyter"}:
174
+ if len(parts) < 2:
175
+ return False
176
+ full = f"{base} {parts[1]}"
177
+ return any(cmd == full for cmd in _SAFE_COMMANDS)
178
+ return any(cmd.split()[0] == base for cmd in _SAFE_COMMANDS)
179
+ except Exception:
180
+ return False
181
+
182
+
183
+ def _handle_cd(parts: list[str]) -> str:
184
+ global _CWD
185
+ if len(parts) == 1:
186
+ target = os.path.expanduser("~")
187
+ else:
188
+ target = os.path.expanduser(parts[1])
189
+ if not os.path.isabs(target):
190
+ target = os.path.join(_CWD, target)
191
+ target = os.path.realpath(target)
192
+ if not os.path.isdir(target):
193
+ return f"Error: directory does not exist: {target}"
194
+ _CWD = target
195
+ return f"Changed directory to: {_CWD}"
196
+
197
+
198
+ async def execute_shell_execute_tool(args: Dict[str, Any]) -> str:
199
+ """
200
+ Execute a shell command locally with a strict allowlist.
201
+ """
202
+ command = (args.get("command") or "").strip()
203
+ if not command:
204
+ return "Error: command is required"
205
+
206
+ command_lower = command.lower()
207
+ dangerous_pattern = _is_dangerous(command_lower)
208
+ if dangerous_pattern:
209
+ return (
210
+ "Error: command blocked by safety policy "
211
+ f"(matched dangerous pattern: {dangerous_pattern})."
212
+ )
213
+
214
+ if not _is_allowlisted(command_lower):
215
+ try:
216
+ base = shlex.split(command_lower)[0]
217
+ except Exception:
218
+ base = "unknown"
219
+ return (
220
+ "Error: command is not in the allowlist for agent v2 MVP: "
221
+ f"{base}"
222
+ )
223
+
224
+ try:
225
+ parts = shlex.split(command)
226
+ except Exception:
227
+ parts = []
228
+
229
+ if parts and parts[0].lower() == "cd":
230
+ return _handle_cd(parts)
231
+
232
+ try:
233
+ result = subprocess.run(
234
+ command,
235
+ shell=True,
236
+ capture_output=True,
237
+ text=True,
238
+ timeout=90,
239
+ cwd=_CWD,
240
+ )
241
+ except subprocess.TimeoutExpired:
242
+ return "Error: command timed out after 90 seconds"
243
+ except Exception as exc:
244
+ return f"Error executing command: {exc}"
245
+
246
+ output = ""
247
+ if result.stdout:
248
+ output += f"STDOUT:\n{result.stdout}"
249
+ if result.stderr:
250
+ if output:
251
+ output += f"\n\nSTDERR:\n{result.stderr}"
252
+ else:
253
+ output += f"STDERR:\n{result.stderr}"
254
+
255
+ if result.returncode != 0:
256
+ output += f"\n\nReturn code: {result.returncode}"
257
+
258
+ if not output.strip():
259
+ output = "Command executed successfully (no output)"
260
+
261
+ return output
@@ -0,0 +1,51 @@
1
+ """Standalone write_file tool for proxy-local execution."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ from typing import Any, Dict
7
+
8
+
9
+ def _resolve_path(file_path: str) -> str:
10
+ return file_path if os.path.isabs(file_path) else os.path.abspath(file_path)
11
+
12
+
13
+ async def execute_write_file_tool(args: Dict[str, Any]) -> str:
14
+ """Write content to a file, creating parent directories as needed."""
15
+ file_path = args.get("file_path")
16
+ content = args.get("content")
17
+
18
+ if not file_path:
19
+ return "Error: file_path is required"
20
+ if content is None:
21
+ return "Error: content is required"
22
+
23
+ resolved_path = _resolve_path(file_path)
24
+ parent_dir = os.path.dirname(resolved_path)
25
+ if parent_dir and not os.path.exists(parent_dir):
26
+ try:
27
+ os.makedirs(parent_dir, exist_ok=True)
28
+ except Exception as exc:
29
+ return f"Error: failed to create parent directory '{parent_dir}': {exc}"
30
+
31
+ try:
32
+ existed_before = os.path.exists(resolved_path)
33
+ with open(resolved_path, "w", encoding="utf-8") as fh:
34
+ fh.write(str(content))
35
+ except PermissionError:
36
+ return f"Error: permission denied writing to '{resolved_path}'"
37
+ except IsADirectoryError:
38
+ return f"Error: '{resolved_path}' is a directory, not a file"
39
+ except Exception as exc:
40
+ return f"Error writing to '{resolved_path}': {exc}"
41
+
42
+ content_str = str(content)
43
+ lines_count = len(content_str.splitlines())
44
+ bytes_count = len(content_str.encode("utf-8"))
45
+ action = "Updated" if existed_before else "Created"
46
+ return (
47
+ f"{action} file: {resolved_path}\n"
48
+ f"Lines written: {lines_count}\n"
49
+ f"Bytes written: {bytes_count}"
50
+ )
51
+
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runcell",
3
- "version": "0.1.17-alpha.3",
3
+ "version": "0.1.18-alpha.0",
4
4
  "description": "AI Agent for Jupyter",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -158,7 +158,7 @@
158
158
  "schemaDir": "schema",
159
159
  "webpackConfig": "webpack.config.js",
160
160
  "_build": {
161
- "load": "static/remoteEntry.efee755649ccf0e6ec23.js",
161
+ "load": "static/remoteEntry.691071d577b6013b3be4.js",
162
162
  "extension": "./extension",
163
163
  "style": "./style"
164
164
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "runcell",
3
- "version": "0.1.17-alpha.3",
3
+ "version": "0.1.18-alpha.0",
4
4
  "description": "AI Agent for Jupyter",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunkruncell=self.webpackChunkruncell||[]).push([[1038],{1038:(t,e,i)=>{i.d(e,{diagram:()=>L});var n=i(56320),a=i(14053),r=function(){var t=(0,n._)(function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},"o"),e=[1,3],i=[1,4],a=[1,5],r=[1,6],s=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],u=[1,37],d=[1,36],f=[1,38],x=[1,35],g=[1,43],p=[1,41],y=[1,14],m=[1,23],_=[1,18],T=[1,19],q=[1,20],b=[1,21],A=[1,22],v=[1,24],k=[1,25],S=[1,26],F=[1,27],P=[1,28],C=[1,29],w=[1,32],M=[1,33],L=[1,34],E=[1,39],N=[1,40],z=[1,42],D=[1,44],I=[1,62],W=[1,61],H=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],B=[1,65],R=[1,66],$=[1,67],U=[1,68],Q=[1,69],O=[1,70],X=[1,71],Y=[1,72],j=[1,73],V=[1,74],G=[1,75],K=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],tt=[1,91],et=[1,92],it=[1,99],nt=[1,93],at=[1,96],rt=[1,94],st=[1,95],ot=[1,97],lt=[1,98],ht=[1,102],ct=[10,55,56,57],ut=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],dt={trace:(0,n._)(function(){},"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,n._)(function(t,e,i,n,a,r,s){var o=r.length-1;switch(a){case 23:case 68:this.$=r[o];break;case 24:case 69:this.$=r[o-1]+""+r[o];break;case 26:this.$=r[o-1]+r[o];break;case 27:this.$=[r[o].trim()];break;case 28:r[o-2].push(r[o].trim()),this.$=r[o-2];break;case 29:this.$=r[o-4],n.addClass(r[o-2],r[o]);break;case 37:this.$=[];break;case 42:this.$=r[o].trim(),n.setDiagramTitle(this.$);break;case 43:this.$=r[o].trim(),n.setAccTitle(this.$);break;case 44:case 45:this.$=r[o].trim(),n.setAccDescription(this.$);break;case 46:n.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 47:n.addPoint(r[o-3],"",r[o-1],r[o],[]);break;case 48:n.addPoint(r[o-4],r[o-3],r[o-1],r[o],[]);break;case 49:n.addPoint(r[o-4],"",r[o-2],r[o-1],r[o]);break;case 50:n.addPoint(r[o-5],r[o-4],r[o-2],r[o-1],r[o]);break;case 51:n.setXAxisLeftText(r[o-2]),n.setXAxisRightText(r[o]);break;case 52:r[o-1].text+=" ⟶ ",n.setXAxisLeftText(r[o-1]);break;case 53:n.setXAxisLeftText(r[o]);break;case 54:n.setYAxisBottomText(r[o-2]),n.setYAxisTopText(r[o]);break;case 55:r[o-1].text+=" ⟶ ",n.setYAxisBottomText(r[o-1]);break;case 56:n.setYAxisBottomText(r[o]);break;case 57:n.setQuadrant1Text(r[o]);break;case 58:n.setQuadrant2Text(r[o]);break;case 59:n.setQuadrant3Text(r[o]);break;case 60:n.setQuadrant4Text(r[o]);break;case 64:case 66:this.$={text:r[o],type:"text"};break;case 65:this.$={text:r[o-1].text+""+r[o],type:r[o-1].type};break;case 67:this.$={text:r[o],type:"markdown"}}},"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:r,57:s},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:r,57:s},{18:e,26:9,27:2,28:i,55:a,56:r,57:s},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:u,5:d,10:f,12:x,13:g,14:p,18:y,25:m,35:_,37:T,39:q,41:b,42:A,48:v,50:k,51:S,52:F,53:P,54:C,60:w,61:M,63:L,64:E,65:N,66:z,67:D}),t(o,[2,34]),{27:45,55:a,56:r,57:s},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:u,5:d,10:f,12:x,13:g,14:p,18:y,25:m,35:_,37:T,39:q,41:b,42:A,48:v,50:k,51:S,52:F,53:P,54:C,60:w,61:M,63:L,64:E,65:N,66:z,67:D}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(h,[2,45]),t(h,[2,46]),{18:[1,50]},{4:u,5:d,10:f,12:x,13:g,14:p,43:51,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,10:f,12:x,13:g,14:p,43:52,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,10:f,12:x,13:g,14:p,43:53,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,10:f,12:x,13:g,14:p,43:54,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,10:f,12:x,13:g,14:p,43:55,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,10:f,12:x,13:g,14:p,43:56,58:31,60:w,61:M,63:L,64:E,65:N,66:z,67:D},{4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,44:[1,57],47:[1,58],58:60,59:59,63:L,64:E,65:N,66:z,67:D},t(H,[2,64]),t(H,[2,66]),t(H,[2,67]),t(H,[2,70]),t(H,[2,71]),t(H,[2,72]),t(H,[2,73]),t(H,[2,74]),t(H,[2,75]),t(H,[2,76]),t(H,[2,77]),t(H,[2,78]),t(H,[2,79]),t(H,[2,80]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:64,4:B,5:R,6:$,7:U,8:Q,9:O,10:X,11:Y,12:j,13:V,14:G,15:K,21:63},t(h,[2,53],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,49:[1,77],63:L,64:E,65:N,66:z,67:D}),t(h,[2,56],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,49:[1,78],63:L,64:E,65:N,66:z,67:D}),t(h,[2,57],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),t(h,[2,58],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),t(h,[2,59],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),t(h,[2,60],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),{45:[1,79]},{44:[1,80]},t(H,[2,65]),t(H,[2,81]),t(H,[2,82]),t(H,[2,83]),{3:82,4:B,5:R,6:$,7:U,8:Q,9:O,10:X,11:Y,12:j,13:V,14:G,15:K,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(h,[2,52],{58:31,43:83,4:u,5:d,10:f,12:x,13:g,14:p,60:w,61:M,63:L,64:E,65:N,66:z,67:D}),t(h,[2,55],{58:31,43:84,4:u,5:d,10:f,12:x,13:g,14:p,60:w,61:M,63:L,64:E,65:N,66:z,67:D}),{46:[1,85]},{45:[1,86]},{4:J,5:tt,6:et,8:it,11:nt,13:at,16:89,17:rt,18:st,19:ot,20:lt,22:88,23:87},t(Z,[2,24]),t(h,[2,51],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),t(h,[2,54],{59:59,58:60,4:u,5:d,8:I,10:f,12:x,13:g,14:p,18:W,63:L,64:E,65:N,66:z,67:D}),t(h,[2,47],{22:88,16:89,23:100,4:J,5:tt,6:et,8:it,11:nt,13:at,17:rt,18:st,19:ot,20:lt}),{46:[1,101]},t(h,[2,29],{10:ht}),t(ct,[2,27],{16:103,4:J,5:tt,6:et,8:it,11:nt,13:at,17:rt,18:st,19:ot,20:lt}),t(ut,[2,25]),t(ut,[2,13]),t(ut,[2,14]),t(ut,[2,15]),t(ut,[2,16]),t(ut,[2,17]),t(ut,[2,18]),t(ut,[2,19]),t(ut,[2,20]),t(ut,[2,21]),t(ut,[2,22]),t(h,[2,49],{10:ht}),t(h,[2,48],{22:88,16:89,23:104,4:J,5:tt,6:et,8:it,11:nt,13:at,17:rt,18:st,19:ot,20:lt}),{4:J,5:tt,6:et,8:it,11:nt,13:at,16:89,17:rt,18:st,19:ot,20:lt,22:105},t(ut,[2,26]),t(h,[2,50],{10:ht}),t(ct,[2,28],{16:103,4:J,5:tt,6:et,8:it,11:nt,13:at,17:rt,18:st,19:ot,20:lt})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,n._)(function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)},"parseError"),parse:(0,n._)(function(t){var e=this,i=[0],a=[],r=[null],s=[],o=this.table,l="",h=0,c=0,u=s.slice.call(arguments,1),d=Object.create(this.lexer),f={yy:{}};for(var x in this.yy)Object.prototype.hasOwnProperty.call(this.yy,x)&&(f.yy[x]=this.yy[x]);d.setInput(t,f.yy),f.yy.lexer=d,f.yy.parser=this,typeof d.yylloc>"u"&&(d.yylloc={});var g=d.yylloc;s.push(g);var p=d.options&&d.options.ranges;function y(){var t;return"number"!=typeof(t=a.pop()||d.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof f.yy.parseError?this.parseError=f.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n._)(function(t){i.length=i.length-2*t,r.length=r.length-t,s.length=s.length-t},"popStack"),(0,n._)(y,"lex");for(var m,_,T,q,b,A,v,k,S={};;){if(_=i[i.length-1],this.defaultActions[_]?T=this.defaultActions[_]:((null===m||typeof m>"u")&&(m=y()),T=o[_]&&o[_][m]),typeof T>"u"||!T.length||!T[0]){var F;for(b in k=[],o[_])this.terminals_[b]&&b>2&&k.push("'"+this.terminals_[b]+"'");F=d.showPosition?"Parse error on line "+(h+1)+":\n"+d.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(F,{text:d.match,token:this.terminals_[m]||m,line:d.yylineno,loc:g,expected:k})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+m);switch(T[0]){case 1:i.push(m),r.push(d.yytext),s.push(d.yylloc),i.push(T[1]),m=null,c=d.yyleng,l=d.yytext,h=d.yylineno,g=d.yylloc;break;case 2:if(A=this.productions_[T[1]][1],S.$=r[r.length-A],S._$={first_line:s[s.length-(A||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(A||1)].first_column,last_column:s[s.length-1].last_column},p&&(S._$.range=[s[s.length-(A||1)].range[0],s[s.length-1].range[1]]),typeof(q=this.performAction.apply(S,[l,c,h,f.yy,T[1],r,s].concat(u)))<"u")return q;A&&(i=i.slice(0,-1*A*2),r=r.slice(0,-1*A),s=s.slice(0,-1*A)),i.push(this.productions_[T[1]][0]),r.push(S.$),s.push(S._$),v=o[i[i.length-2]][i[i.length-1]],i.push(v);break;case 3:return!0}}return!0},"parse")},ft=function(){return{EOF:1,parseError:(0,n._)(function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},"parseError"),setInput:(0,n._)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,n._)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,n._)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var a=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,n._)(function(){return this._more=!0,this},"more"),reject:(0,n._)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,n._)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,n._)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,n._)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,n._)(function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,n._)(function(t,e){var i,n,a;if(this.options.backtrack_lexer&&(a={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(a.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var r in a)this[r]=a[r];return!1}return!1},"test_match"),next:(0,n._)(function(){if(this.done)return this.EOF;var t,e,i,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),r=0;r<a.length;r++)if((i=this._input.match(this.rules[a[r]]))&&(!e||i[0].length>e[0].length)){if(e=i,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,a[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,a[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,n._)(function(){return this.next()||this.lex()},"lex"),begin:(0,n._)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,n._)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,n._)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,n._)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,n._)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,n._)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n._)(function(t,e,i,n){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}},"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}}}();function xt(){this.yy={}}return dt.lexer=ft,(0,n._)(xt,"Parser"),xt.prototype=dt,dt.Parser=xt,new xt}();r.parser=r;var s,o,l=r,h=(0,n.a1)(),c=(s=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){var t,e,i,a,r,s,o,l,h,c,u,d,f,x,g,p,y,m;return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:(null==(t=n.H.quadrantChart)?void 0:t.chartWidth)||500,chartWidth:(null==(e=n.H.quadrantChart)?void 0:e.chartHeight)||500,titlePadding:(null==(i=n.H.quadrantChart)?void 0:i.titlePadding)||10,titleFontSize:(null==(a=n.H.quadrantChart)?void 0:a.titleFontSize)||20,quadrantPadding:(null==(r=n.H.quadrantChart)?void 0:r.quadrantPadding)||5,xAxisLabelPadding:(null==(s=n.H.quadrantChart)?void 0:s.xAxisLabelPadding)||5,yAxisLabelPadding:(null==(o=n.H.quadrantChart)?void 0:o.yAxisLabelPadding)||5,xAxisLabelFontSize:(null==(l=n.H.quadrantChart)?void 0:l.xAxisLabelFontSize)||16,yAxisLabelFontSize:(null==(h=n.H.quadrantChart)?void 0:h.yAxisLabelFontSize)||16,quadrantLabelFontSize:(null==(c=n.H.quadrantChart)?void 0:c.quadrantLabelFontSize)||16,quadrantTextTopPadding:(null==(u=n.H.quadrantChart)?void 0:u.quadrantTextTopPadding)||5,pointTextPadding:(null==(d=n.H.quadrantChart)?void 0:d.pointTextPadding)||5,pointLabelFontSize:(null==(f=n.H.quadrantChart)?void 0:f.pointLabelFontSize)||12,pointRadius:(null==(x=n.H.quadrantChart)?void 0:x.pointRadius)||5,xAxisPosition:(null==(g=n.H.quadrantChart)?void 0:g.xAxisPosition)||"top",yAxisPosition:(null==(p=n.H.quadrantChart)?void 0:p.yAxisPosition)||"left",quadrantInternalBorderStrokeWidth:(null==(y=n.H.quadrantChart)?void 0:y.quadrantInternalBorderStrokeWidth)||1,quadrantExternalBorderStrokeWidth:(null==(m=n.H.quadrantChart)?void 0:m.quadrantExternalBorderStrokeWidth)||2}}getDefaultThemeConfig(){return{quadrant1Fill:h.quadrant1Fill,quadrant2Fill:h.quadrant2Fill,quadrant3Fill:h.quadrant3Fill,quadrant4Fill:h.quadrant4Fill,quadrant1TextFill:h.quadrant1TextFill,quadrant2TextFill:h.quadrant2TextFill,quadrant3TextFill:h.quadrant3TextFill,quadrant4TextFill:h.quadrant4TextFill,quadrantPointFill:h.quadrantPointFill,quadrantPointTextFill:h.quadrantPointTextFill,quadrantXAxisTextFill:h.quadrantXAxisTextFill,quadrantYAxisTextFill:h.quadrantYAxisTextFill,quadrantTitleFill:h.quadrantTitleFill,quadrantInternalBorderStrokeFill:h.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:h.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.l.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.l.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.l.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,n){const a=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,r={top:"top"===t&&e?a:0,bottom:"bottom"===t&&e?a:0},s=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?s:0,right:"right"===this.config.yAxisPosition&&i?s:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:n?l:0},c=this.config.quadrantPadding+o.left,u=this.config.quadrantPadding+r.top+h.top,d=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,f=this.config.chartHeight-2*this.config.quadrantPadding-r.top-r.bottom-h.top;return{xAxisSpace:r,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:u,quadrantWidth:d,quadrantHalfWidth:d/2,quadrantHeight:f,quadrantHalfHeight:f/2}}}getAxisLabels(t,e,i,n){const{quadrantSpace:a,titleSpace:r}=n,{quadrantHalfHeight:s,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:u}=a,d=!!this.data.xAxisRightText,f=!!this.data.yAxisTopText,x=[];return this.data.xAxisLeftText&&e&&x.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(d?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+r.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:d?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&x.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(d?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+r.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:d?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&x.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+u+this.config.quadrantPadding,y:c+o-(f?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&x.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+u+this.config.quadrantPadding,y:c+s-(f?s/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:f?"center":"left",horizontalPos:"top",rotation:-90}),x}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:n,quadrantHalfWidth:a,quadrantTop:r}=e,s=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+a,y:r,width:a,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:r,width:a,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n,y:r+i,width:a,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:n+a,y:r+i,width:a,height:i,fill:this.themeConfig.quadrant4Fill}];for(const t of s)t.text.x=t.x+t.width/2,0===this.data.points.length?(t.text.y=t.y+t.height/2,t.text.horizontalPos="middle"):(t.text.y=t.y+this.config.quadrantTextTopPadding,t.text.horizontalPos="top");return s}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:n,quadrantTop:r,quadrantWidth:s}=e,o=(0,a.l)().domain([0,1]).range([n,s+n]),l=(0,a.l)().domain([0,1]).range([i+r,r]);return this.data.points.map(t=>{const e=this.classes.get(t.className);return e&&(t={...e,...t}),{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}})}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:n,quadrantHeight:a,quadrantLeft:r,quadrantHalfWidth:s,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r-e,y1:o,x2:r+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r+l,y1:o+e,x2:r+l,y2:o+a-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r-e,y1:o+a,x2:r+l+e,y2:o+a},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:r,y1:o+e,x2:r,y2:o+a-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:r+s,y1:o+e,x2:r+s,y2:o+a-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:r+e,y1:o+n,x2:r+l-e,y2:o+n}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,n=this.data.points.length>0?"bottom":this.config.xAxisPosition,a=this.calculateSpace(n,t,e,i);return{points:this.getQuadrantPoints(a),quadrants:this.getQuadrants(a),axisLabels:this.getAxisLabels(n,t,e,a),borderLines:this.getBorders(a),title:this.getTitle(i)}}},(0,n._)(s,"QuadrantBuilder"),s),u=(o=class extends Error{constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}},(0,n._)(o,"InvalidStyleError"),o);function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function f(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}(0,n._)(d,"validateHexCode"),(0,n._)(f,"validateNumber"),(0,n._)(x,"validateSizeInPixels");var g=(0,n.c)();function p(t){return(0,n.i)(t.trim(),g)}(0,n._)(p,"textSanitizer");var y=new c;function m(t){y.setData({quadrant1Text:p(t.text)})}function _(t){y.setData({quadrant2Text:p(t.text)})}function T(t){y.setData({quadrant3Text:p(t.text)})}function q(t){y.setData({quadrant4Text:p(t.text)})}function b(t){y.setData({xAxisLeftText:p(t.text)})}function A(t){y.setData({xAxisRightText:p(t.text)})}function v(t){y.setData({yAxisTopText:p(t.text)})}function k(t){y.setData({yAxisBottomText:p(t.text)})}function S(t){const e={};for(const i of t){const[t,n]=i.trim().split(/\s*:\s*/);if("radius"===t){if(f(n))throw new u(t,n,"number");e.radius=parseInt(n)}else if("color"===t){if(d(n))throw new u(t,n,"hex code");e.color=n}else if("stroke-color"===t){if(d(n))throw new u(t,n,"hex code");e.strokeColor=n}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(x(n))throw new u(t,n,"number of pixels (eg. 10px)");e.strokeWidth=n}}return e}function F(t,e,i,n,a){const r=S(a);y.addPoints([{x:i,y:n,text:p(t.text),className:e,...r}])}function P(t,e){y.addClass(t,S(e))}function C(t){y.setConfig({chartWidth:t})}function w(t){y.setConfig({chartHeight:t})}function M(){const t=(0,n.c)(),{themeVariables:e,quadrantChart:i}=t;return i&&y.setConfig(i),y.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),y.setData({titleText:(0,n.t)()}),y.build()}(0,n._)(m,"setQuadrant1Text"),(0,n._)(_,"setQuadrant2Text"),(0,n._)(T,"setQuadrant3Text"),(0,n._)(q,"setQuadrant4Text"),(0,n._)(b,"setXAxisLeftText"),(0,n._)(A,"setXAxisRightText"),(0,n._)(v,"setYAxisTopText"),(0,n._)(k,"setYAxisBottomText"),(0,n._)(S,"parseStyles"),(0,n._)(F,"addPoint"),(0,n._)(P,"addClass"),(0,n._)(C,"setWidth"),(0,n._)(w,"setHeight"),(0,n._)(M,"getQuadrantData");var L={parser:l,db:{setWidth:C,setHeight:w,setQuadrant1Text:m,setQuadrant2Text:_,setQuadrant3Text:T,setQuadrant4Text:q,setXAxisLeftText:b,setXAxisRightText:A,setYAxisTopText:v,setYAxisBottomText:k,parseStyles:S,addPoint:F,addClass:P,getQuadrantData:M,clear:(0,n._)(function(){y.clear(),(0,n.z)()},"clear"),setAccTitle:n.b,getAccTitle:n.a,setDiagramTitle:n.q,getDiagramTitle:n.t,getAccDescription:n.g,setAccDescription:n.s},renderer:{draw:(0,n._)((t,e,i,a)=>{var r,s,o;function l(t){return"top"===t?"hanging":"middle"}function h(t){return"left"===t?"start":"middle"}function c(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,n._)(l,"getDominantBaseLine"),(0,n._)(h,"getTextAnchor"),(0,n._)(c,"getTransformation");const u=(0,n.c)();n.l.debug("Rendering quadrant chart\n"+t);const d=u.securityLevel;let f;"sandbox"===d&&(f=(0,n.d)("#i"+e));const x=("sandbox"===d?(0,n.d)(f.nodes()[0].contentDocument.body):(0,n.d)("body")).select(`[id="${e}"]`),g=x.append("g").attr("class","main"),p=(null==(r=u.quadrantChart)?void 0:r.chartWidth)??500,y=(null==(s=u.quadrantChart)?void 0:s.chartHeight)??500;(0,n.e)(x,y,p,(null==(o=u.quadrantChart)?void 0:o.useMaxWidth)??!0),x.attr("viewBox","0 0 "+p+" "+y),a.db.setHeight(y),a.db.setWidth(p);const m=a.db.getQuadrantData(),_=g.append("g").attr("class","quadrants"),T=g.append("g").attr("class","border"),q=g.append("g").attr("class","data-points"),b=g.append("g").attr("class","labels"),A=g.append("g").attr("class","title");m.title&&A.append("text").attr("x",0).attr("y",0).attr("fill",m.title.fill).attr("font-size",m.title.fontSize).attr("dominant-baseline",l(m.title.horizontalPos)).attr("text-anchor",h(m.title.verticalPos)).attr("transform",c(m.title)).text(m.title.text),m.borderLines&&T.selectAll("line").data(m.borderLines).enter().append("line").attr("x1",t=>t.x1).attr("y1",t=>t.y1).attr("x2",t=>t.x2).attr("y2",t=>t.y2).style("stroke",t=>t.strokeFill).style("stroke-width",t=>t.strokeWidth);const v=_.selectAll("g.quadrant").data(m.quadrants).enter().append("g").attr("class","quadrant");v.append("rect").attr("x",t=>t.x).attr("y",t=>t.y).attr("width",t=>t.width).attr("height",t=>t.height).attr("fill",t=>t.fill),v.append("text").attr("x",0).attr("y",0).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>l(t.text.horizontalPos)).attr("text-anchor",t=>h(t.text.verticalPos)).attr("transform",t=>c(t.text)).text(t=>t.text.text),b.selectAll("g.label").data(m.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text(t=>t.text).attr("fill",t=>t.fill).attr("font-size",t=>t.fontSize).attr("dominant-baseline",t=>l(t.horizontalPos)).attr("text-anchor",t=>h(t.verticalPos)).attr("transform",t=>c(t));const k=q.selectAll("g.data-point").data(m.points).enter().append("g").attr("class","data-point");k.append("circle").attr("cx",t=>t.x).attr("cy",t=>t.y).attr("r",t=>t.radius).attr("fill",t=>t.fill).attr("stroke",t=>t.strokeColor).attr("stroke-width",t=>t.strokeWidth),k.append("text").attr("x",0).attr("y",0).text(t=>t.text.text).attr("fill",t=>t.text.fill).attr("font-size",t=>t.text.fontSize).attr("dominant-baseline",t=>l(t.text.horizontalPos)).attr("text-anchor",t=>h(t.text.verticalPos)).attr("transform",t=>c(t.text))},"draw")},styles:(0,n._)(()=>"","styles")}},14053:(t,e,i)=>{i.d(e,{a:()=>C,b:()=>l,c:()=>w,l:()=>L,t:()=>p});var n=i(56320),a=i(44620),r=i(44032);function s(t,e){return null==t||null==e?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function o(t,e){return null==t||null==e?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function l(t){let e,i,n;function a(t,n,a=0,r=t.length){if(a<r){if(0!==e(n,n))return r;do{const e=a+r>>>1;i(t[e],n)<0?a=e+1:r=e}while(a<r)}return a}return 2!==t.length?(e=s,i=(e,i)=>s(t(e),i),n=(e,i)=>t(e)-i):(e=t===s||t===o?t:h,i=t,n=t),{left:a,center:function(t,e,i=0,r=t.length){const s=a(t,e,i,r-1);return s>i&&n(t[s-1],e)>-n(t[s],e)?s-1:s},right:function(t,n,a=0,r=t.length){if(a<r){if(0!==e(n,n))return r;do{const e=a+r>>>1;i(t[e],n)<=0?a=e+1:r=e}while(a<r)}return a}}}function h(){return 0}const c=l(s).right;l(function(t){return null===t?NaN:+t}).center;const u=Math.sqrt(50),d=Math.sqrt(10),f=Math.sqrt(2);function x(t,e,i){const n=(e-t)/Math.max(0,i),a=Math.floor(Math.log10(n)),r=n/Math.pow(10,a),s=r>=u?10:r>=d?5:r>=f?2:1;let o,l,h;return a<0?(h=Math.pow(10,-a)/s,o=Math.round(t*h),l=Math.round(e*h),o/h<t&&++o,l/h>e&&--l,h=-h):(h=Math.pow(10,a)*s,o=Math.round(t/h),l=Math.round(e/h),o*h<t&&++o,l*h>e&&--l),l<o&&.5<=i&&i<2?x(t,e,2*i):[o,l,h]}function g(t,e,i){return x(t=+t,e=+e,i=+i)[2]}function p(t,e,i){i=+i;const n=(e=+e)<(t=+t),a=n?g(e,t,i):g(t,e,i);return(n?-1:1)*(a<0?1/-a:a)}function y(t,e){e||(e=[]);var i,n=t?Math.min(e.length,t.length):0,a=e.slice();return function(r){for(i=0;i<n;++i)a[i]=t[i]*(1-r)+e[i]*r;return a}}function m(t,e){var i,n=e?e.length:0,a=t?Math.min(n,t.length):0,r=new Array(a),s=new Array(n);for(i=0;i<a;++i)r[i]=q(t[i],e[i]);for(;i<n;++i)s[i]=e[i];return function(t){for(i=0;i<a;++i)s[i]=r[i](t);return s}}function _(t,e){var i=new Date;return t=+t,e=+e,function(n){return i.setTime(t*(1-n)+e*n),i}}function T(t,e){var i,n={},a={};for(i in(null===t||"object"!=typeof t)&&(t={}),(null===e||"object"!=typeof e)&&(e={}),e)i in t?n[i]=q(t[i],e[i]):a[i]=e[i];return function(t){for(i in n)a[i]=n[i](t);return a}}function q(t,e){var i,a=typeof e;return null==e||"boolean"===a?(0,n.aU)(e):("number"===a?n.aV:"string"===a?(i=(0,n.aY)(e))?(e=i,n.aW):n.aX:e instanceof n.aY?n.aW:e instanceof Date?_:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}(e)?y:Array.isArray(e)?m:"function"!=typeof e.valueOf&&"function"!=typeof e.toString||isNaN(e)?T:n.aV)(t,e)}function b(t,e){return t=+t,e=+e,function(i){return Math.round(t*(1-i)+e*i)}}function A(t){return+t}var v=[0,1];function k(t){return t}function S(t,e){return(e-=t=+t)?function(i){return(i-t)/e}:function(t){return function(){return t}}(isNaN(e)?NaN:.5)}function F(t,e,i){var n=t[0],a=t[1],r=e[0],s=e[1];return a<n?(n=S(a,n),r=i(s,r)):(n=S(n,a),r=i(r,s)),function(t){return r(n(t))}}function P(t,e,i){var n=Math.min(t.length,e.length)-1,a=new Array(n),r=new Array(n),s=-1;for(t[n]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++s<n;)a[s]=S(t[s],t[s+1]),r[s]=i(e[s],e[s+1]);return function(e){var i=c(t,e,1,n)-1;return r[i](a[i](e))}}function C(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function w(){return function(){var t,e,i,a,r,s,o=v,l=v,h=q,c=k;function u(){var t=Math.min(o.length,l.length);return c!==k&&(c=function(t,e){var i;return t>e&&(i=t,t=e,e=i),function(i){return Math.max(t,Math.min(e,i))}}(o[0],o[t-1])),a=t>2?P:F,r=s=null,d}function d(e){return null==e||isNaN(e=+e)?i:(r||(r=a(o.map(t),l,h)))(t(c(e)))}return d.invert=function(i){return c(e((s||(s=a(l,o.map(t),n.aV)))(i)))},d.domain=function(t){return arguments.length?(o=Array.from(t,A),u()):o.slice()},d.range=function(t){return arguments.length?(l=Array.from(t),u()):l.slice()},d.rangeRound=function(t){return l=Array.from(t),h=b,u()},d.clamp=function(t){return arguments.length?(c=!!t||k,u()):c!==k},d.interpolate=function(t){return arguments.length?(h=t,u()):h},d.unknown=function(t){return arguments.length?(i=t,d):i},function(i,n){return t=i,e=n,u()}}()(k,k)}function M(t){var e=t.domain;return t.ticks=function(t){var i=e();return function(t,e,i){if(!((i=+i)>0))return[];if((t=+t)===(e=+e))return[t];const n=e<t,[a,r,s]=n?x(e,t,i):x(t,e,i);if(!(r>=a))return[];const o=r-a+1,l=new Array(o);if(n)if(s<0)for(let t=0;t<o;++t)l[t]=(r-t)/-s;else for(let t=0;t<o;++t)l[t]=(r-t)*s;else if(s<0)for(let t=0;t<o;++t)l[t]=(a+t)/-s;else for(let t=0;t<o;++t)l[t]=(a+t)*s;return l}(i[0],i[i.length-1],t??10)},t.tickFormat=function(t,i){var n=e();return function(t,e,i,n){var a,s=p(t,e,i);switch((n=(0,r.f)(n??",f")).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null==n.precision&&!isNaN(a=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor((0,r.e)(e)/3)))-(0,r.e)(Math.abs(t)))}(s,o))&&(n.precision=a),(0,r.a)(n,o);case"":case"e":case"g":case"p":case"r":null==n.precision&&!isNaN(a=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,(0,r.e)(e)-(0,r.e)(t))+1}(s,Math.max(Math.abs(t),Math.abs(e))))&&(n.precision=a-("e"===n.type));break;case"f":case"%":null==n.precision&&!isNaN(a=function(t){return Math.max(0,-(0,r.e)(Math.abs(t)))}(s))&&(n.precision=a-2*("%"===n.type))}return(0,r.b)(n)}(n[0],n[n.length-1],t??10,i)},t.nice=function(i){null==i&&(i=10);var n,a,r=e(),s=0,o=r.length-1,l=r[s],h=r[o],c=10;for(h<l&&(a=l,l=h,h=a,a=s,s=o,o=a);c-- >0;){if((a=g(l,h,i))===n)return r[s]=l,r[o]=h,e(r);if(a>0)l=Math.floor(l/a)*a,h=Math.ceil(h/a)*a;else{if(!(a<0))break;l=Math.ceil(l*a)/a,h=Math.floor(h*a)/a}n=a}return t},t}function L(){var t=w();return t.copy=function(){return C(t,L())},a.i.apply(t,arguments),M(t)}},44032:(t,e,i)=>{function n(t,e){if((i=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var i,n=t.slice(0,i);return[n.length>1?n[0]+n.slice(2):n,+t.slice(i+1)]}function a(t){return(t=n(Math.abs(t)))?t[1]:NaN}i.d(e,{a:()=>x,b:()=>f,e:()=>a,f:()=>o});var r,s=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function o(t){if(!(e=s.exec(t)))throw new Error("invalid format: "+t);var e;return new l({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function l(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function h(t,e){var i=n(t,e);if(!i)return t+"";var a=i[0],r=i[1];return r<0?"0."+new Array(-r).join("0")+a:a.length>r+1?a.slice(0,r+1)+"."+a.slice(r+1):a+new Array(r-a.length+2).join("0")}o.prototype=l.prototype,l.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const c={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>h(100*t,e),r:h,s:function(t,e){var i=n(t,e);if(!i)return t+"";var a=i[0],s=i[1],o=s-(r=3*Math.max(-8,Math.min(8,Math.floor(s/3))))+1,l=a.length;return o===l?a:o>l?a+new Array(o-l+1).join("0"):o>0?a.slice(0,o)+"."+a.slice(o):"0."+new Array(1-o).join("0")+n(t,Math.max(0,e+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function u(t){return t}var d,f,x,g=Array.prototype.map,p=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];d=function(t){var e=void 0===t.grouping||void 0===t.thousands?u:function(t,e){return function(i,n){for(var a=i.length,r=[],s=0,o=t[0],l=0;a>0&&o>0&&(l+o+1>n&&(o=Math.max(1,n-l)),r.push(i.substring(a-=o,a+o)),!((l+=o+1)>n));)o=t[s=(s+1)%t.length];return r.reverse().join(e)}}(g.call(t.grouping,Number),t.thousands+""),i=void 0===t.currency?"":t.currency[0]+"",n=void 0===t.currency?"":t.currency[1]+"",s=void 0===t.decimal?".":t.decimal+"",l=void 0===t.numerals?u:function(t){return function(e){return e.replace(/[0-9]/g,function(e){return t[+e]})}}(g.call(t.numerals,String)),h=void 0===t.percent?"%":t.percent+"",d=void 0===t.minus?"−":t.minus+"",f=void 0===t.nan?"NaN":t.nan+"";function x(t){var a=(t=o(t)).fill,u=t.align,x=t.sign,g=t.symbol,y=t.zero,m=t.width,_=t.comma,T=t.precision,q=t.trim,b=t.type;"n"===b?(_=!0,b="g"):c[b]||(void 0===T&&(T=12),q=!0,b="g"),(y||"0"===a&&"="===u)&&(y=!0,a="0",u="=");var A="$"===g?i:"#"===g&&/[boxX]/.test(b)?"0"+b.toLowerCase():"",v="$"===g?n:/[%p]/.test(b)?h:"",k=c[b],S=/[defgprs%]/.test(b);function F(t){var i,n,o,h=A,c=v;if("c"===b)c=k(t)+c,t="";else{var g=(t=+t)<0||1/t<0;if(t=isNaN(t)?f:k(Math.abs(t),T),q&&(t=function(t){t:for(var e,i=t.length,n=1,a=-1;n<i;++n)switch(t[n]){case".":a=e=n;break;case"0":0===a&&(a=n),e=n;break;default:if(!+t[n])break t;a>0&&(a=0)}return a>0?t.slice(0,a)+t.slice(e+1):t}(t)),g&&0==+t&&"+"!==x&&(g=!1),h=(g?"("===x?x:d:"-"===x||"("===x?"":x)+h,c=("s"===b?p[8+r/3]:"")+c+(g&&"("===x?")":""),S)for(i=-1,n=t.length;++i<n;)if(48>(o=t.charCodeAt(i))||o>57){c=(46===o?s+t.slice(i+1):t.slice(i))+c,t=t.slice(0,i);break}}_&&!y&&(t=e(t,1/0));var F=h.length+t.length+c.length,P=F<m?new Array(m-F+1).join(a):"";switch(_&&y&&(t=e(P+t,P.length?m-c.length:1/0),P=""),u){case"<":t=h+t+c+P;break;case"=":t=h+P+t+c;break;case"^":t=P.slice(0,F=P.length>>1)+h+t+c+P.slice(F);break;default:t=P+h+t+c}return l(t)}return T=void 0===T?6:/[gprs]/.test(b)?Math.max(1,Math.min(21,T)):Math.max(0,Math.min(20,T)),F.toString=function(){return t+""},F}return{format:x,formatPrefix:function(t,e){var i=x(((t=o(t)).type="f",t)),n=3*Math.max(-8,Math.min(8,Math.floor(a(e)/3))),r=Math.pow(10,-n),s=p[8+n/3];return function(t){return i(r*t)+s}}}}({thousands:",",grouping:[3],currency:["$",""]}),f=d.format,x=d.formatPrefix},44620:(t,e,i)=>{function n(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}i.d(e,{i:()=>n})}}]);