Flowfile 0.5.1__py3-none-any.whl → 0.5.4__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 (346) hide show
  1. build_backends/main.py +25 -22
  2. build_backends/main_prd.py +10 -19
  3. flowfile/__init__.py +194 -74
  4. flowfile/__main__.py +10 -7
  5. flowfile/api.py +51 -57
  6. flowfile/web/__init__.py +14 -9
  7. flowfile/web/static/assets/AdminView-f53bad23.css +129 -0
  8. flowfile/web/static/assets/AdminView-f9847d67.js +713 -0
  9. flowfile/web/static/assets/CloudConnectionView-cf85f943.css +72 -0
  10. flowfile/web/static/assets/{CloudConnectionManager-0dfba9f2.js → CloudConnectionView-faace55b.js} +11 -11
  11. flowfile/web/static/assets/{CloudStorageReader-29d14fcc.css → CloudStorageReader-24c54524.css} +27 -27
  12. flowfile/web/static/assets/{CloudStorageReader-d5b1b6c9.js → CloudStorageReader-d86ecaa7.js} +10 -8
  13. flowfile/web/static/assets/{CloudStorageWriter-00d87aad.js → CloudStorageWriter-0f4d9a44.js} +10 -8
  14. flowfile/web/static/assets/{CloudStorageWriter-b0ee067f.css → CloudStorageWriter-60547855.css} +26 -26
  15. flowfile/web/static/assets/ColumnActionInput-c44b7aee.css +159 -0
  16. flowfile/web/static/assets/ColumnActionInput-f4189ae0.js +330 -0
  17. flowfile/web/static/assets/{ColumnSelector-47996a16.css → ColumnSelector-371637fb.css} +2 -2
  18. flowfile/web/static/assets/{ColumnSelector-4685e75d.js → ColumnSelector-e66b33da.js} +3 -5
  19. flowfile/web/static/assets/ContextMenu-49463352.js +9 -0
  20. flowfile/web/static/assets/ContextMenu-dd5f3f25.js +9 -0
  21. flowfile/web/static/assets/ContextMenu-f709b884.js +9 -0
  22. flowfile/web/static/assets/ContextMenu.vue_vue_type_script_setup_true_lang-a1bd6314.js +59 -0
  23. flowfile/web/static/assets/{CrossJoin-702a3edd.js → CrossJoin-24694b8f.js} +12 -10
  24. flowfile/web/static/assets/{CrossJoin-1119d18e.css → CrossJoin-71b4cc10.css} +20 -20
  25. flowfile/web/static/assets/{CustomNode-b1519993.js → CustomNode-569d45ff.js} +43 -24
  26. flowfile/web/static/assets/CustomNode-edb9b939.css +42 -0
  27. flowfile/web/static/assets/{DatabaseConnectionSettings-0c04b2e5.css → DatabaseConnectionSettings-c20a1e16.css} +23 -21
  28. flowfile/web/static/assets/{DatabaseConnectionSettings-6f3e4ea5.js → DatabaseConnectionSettings-cfc08938.js} +5 -4
  29. flowfile/web/static/assets/{DatabaseReader-ae61773c.css → DatabaseReader-5bf8c75b.css} +41 -46
  30. flowfile/web/static/assets/{DatabaseReader-d38c7295.js → DatabaseReader-701feabb.js} +25 -15
  31. flowfile/web/static/assets/{DatabaseManager-cf5ef661.js → DatabaseView-0482e5b5.js} +11 -11
  32. flowfile/web/static/assets/DatabaseView-6655afd6.css +57 -0
  33. flowfile/web/static/assets/{DatabaseWriter-b04ef46a.js → DatabaseWriter-16721989.js} +17 -10
  34. flowfile/web/static/assets/{DatabaseWriter-2f570e53.css → DatabaseWriter-bdcf2c8b.css} +29 -27
  35. flowfile/web/static/assets/{designer-8da3ba3a.css → DesignerView-49abb835.css} +783 -663
  36. flowfile/web/static/assets/{designer-9633482a.js → DesignerView-f64749fb.js} +1292 -3253
  37. flowfile/web/static/assets/{documentation-ca400224.js → DocumentationView-61bd2990.js} +5 -5
  38. flowfile/web/static/assets/{documentation-12216a74.css → DocumentationView-9ea6e871.css} +9 -9
  39. flowfile/web/static/assets/{ExploreData-2d0cf4db.css → ExploreData-10c5acc8.css} +13 -12
  40. flowfile/web/static/assets/{ExploreData-5fa10ed8.js → ExploreData-e2735b13.js} +18 -9
  41. flowfile/web/static/assets/{ExternalSource-d39af878.js → ExternalSource-2535c3b2.js} +9 -7
  42. flowfile/web/static/assets/{ExternalSource-e37b6275.css → ExternalSource-7ac7373f.css} +20 -20
  43. flowfile/web/static/assets/Filter-2cdbc93c.js +287 -0
  44. flowfile/web/static/assets/Filter-7494ea97.css +48 -0
  45. flowfile/web/static/assets/{Formula-bb96803d.css → Formula-53d58c43.css} +7 -7
  46. flowfile/web/static/assets/{Formula-6b04fb1d.js → Formula-fcda3c2c.js} +13 -11
  47. flowfile/web/static/assets/{FuzzyMatch-1010f966.css → FuzzyMatch-ad6361d6.css} +68 -69
  48. flowfile/web/static/assets/{FuzzyMatch-999521f4.js → FuzzyMatch-f8d3b7d3.js} +12 -10
  49. flowfile/web/static/assets/{Pivot-cf333e3d.css → GraphSolver-4b4d7db9.css} +5 -5
  50. flowfile/web/static/assets/{GraphSolver-17dd2198.js → GraphSolver-72eaa695.js} +14 -12
  51. flowfile/web/static/assets/GroupBy-5792782d.css +9 -0
  52. flowfile/web/static/assets/{GroupBy-6b039e18.js → GroupBy-8aa0598b.js} +9 -7
  53. flowfile/web/static/assets/{Join-fd79b451.css → Join-28b5e18f.css} +22 -22
  54. flowfile/web/static/assets/{Join-24d0f113.js → Join-e40f0ffa.js} +13 -11
  55. flowfile/web/static/assets/LoginView-5111c9ae.js +134 -0
  56. flowfile/web/static/assets/LoginView-d325d632.css +172 -0
  57. flowfile/web/static/assets/ManualInput-3702e677.css +293 -0
  58. flowfile/web/static/assets/{ManualInput-34639209.js → ManualInput-9b6f3224.js} +170 -116
  59. flowfile/web/static/assets/{MultiSelect-0e8724a3.js → MultiSelect-ef28e19e.js} +2 -2
  60. flowfile/web/static/assets/{MultiSelect.vue_vue_type_script_setup_true_lang-b0e538c2.js → MultiSelect.vue_vue_type_script_setup_true_lang-83b3bbfd.js} +1 -1
  61. flowfile/web/static/assets/NodeDesigner-94cd4dd3.css +1429 -0
  62. flowfile/web/static/assets/NodeDesigner-d2b7ee2b.js +2712 -0
  63. flowfile/web/static/assets/{NumericInput-3d63a470.js → NumericInput-1d789794.js} +2 -2
  64. flowfile/web/static/assets/{NumericInput.vue_vue_type_script_setup_true_lang-e0edeccc.js → NumericInput.vue_vue_type_script_setup_true_lang-7775f83e.js} +5 -2
  65. flowfile/web/static/assets/Output-692dd25d.css +37 -0
  66. flowfile/web/static/assets/{Output-edea9802.js → Output-cefef801.js} +14 -10
  67. flowfile/web/static/assets/{GraphSolver-f0cb7bfb.css → Pivot-0eda81b4.css} +5 -5
  68. flowfile/web/static/assets/{Pivot-61d19301.js → Pivot-bab1b75b.js} +12 -10
  69. flowfile/web/static/assets/PivotValidation-0e905b1a.css +13 -0
  70. flowfile/web/static/assets/PivotValidation-41b57ad6.css +13 -0
  71. flowfile/web/static/assets/{PivotValidation-f97fec5b.js → PivotValidation-e7941f91.js} +3 -3
  72. flowfile/web/static/assets/{PivotValidation-de9f43fe.js → PivotValidation-fba09336.js} +3 -3
  73. flowfile/web/static/assets/{PolarsCode-650322d1.css → PolarsCode-2b1f1f23.css} +4 -4
  74. flowfile/web/static/assets/{PolarsCode-bc3c9984.js → PolarsCode-740e40fa.js} +18 -9
  75. flowfile/web/static/assets/PopOver-862d7e28.js +939 -0
  76. flowfile/web/static/assets/PopOver-d96599db.css +33 -0
  77. flowfile/web/static/assets/{Read-64a3f259.js → Read-225cc63f.js} +16 -12
  78. flowfile/web/static/assets/{Read-e808b239.css → Read-90f366bc.css} +15 -15
  79. flowfile/web/static/assets/{RecordCount-3d5039be.js → RecordCount-ffc71eca.js} +6 -4
  80. flowfile/web/static/assets/{RecordId-597510e0.js → RecordId-a70bb8df.js} +9 -7
  81. flowfile/web/static/assets/{SQLQueryComponent-df51adbe.js → SQLQueryComponent-15a421f5.js} +3 -3
  82. flowfile/web/static/assets/SQLQueryComponent-edb90b98.css +29 -0
  83. flowfile/web/static/assets/{Sample-4be0a507.js → Sample-6c26afc7.js} +6 -4
  84. flowfile/web/static/assets/SecretSelector-6329f743.css +43 -0
  85. flowfile/web/static/assets/SecretSelector-ceed9496.js +113 -0
  86. flowfile/web/static/assets/{SecretManager-4839be57.js → SecretsView-214d255a.js} +35 -36
  87. flowfile/web/static/assets/SecretsView-aa291340.css +38 -0
  88. flowfile/web/static/assets/{Select-9b72f201.js → Select-8fc29999.js} +9 -7
  89. flowfile/web/static/assets/{SettingsSection-71e6b7e3.css → SettingsSection-07fbbc39.css} +4 -4
  90. flowfile/web/static/assets/{SettingsSection-5c696bee.css → SettingsSection-26fe48d4.css} +4 -4
  91. flowfile/web/static/assets/{SettingsSection-7ded385d.js → SettingsSection-3f70e4c3.js} +3 -3
  92. flowfile/web/static/assets/{SettingsSection-f0f75a42.js → SettingsSection-83090218.js} +3 -3
  93. flowfile/web/static/assets/{SettingsSection-2e4d03c4.css → SettingsSection-8f980839.css} +4 -4
  94. flowfile/web/static/assets/{SettingsSection-e1e9c953.js → SettingsSection-9f0d1725.js} +3 -3
  95. flowfile/web/static/assets/SetupView-3fa0aa03.js +160 -0
  96. flowfile/web/static/assets/SetupView-e2da3442.css +230 -0
  97. flowfile/web/static/assets/{SingleSelect-6c777aac.js → SingleSelect-a4a568cb.js} +2 -2
  98. flowfile/web/static/assets/{SingleSelect.vue_vue_type_script_setup_true_lang-33e3ff9b.js → SingleSelect.vue_vue_type_script_setup_true_lang-c8ebdd33.js} +1 -1
  99. flowfile/web/static/assets/{SliderInput-7cb93e62.js → SliderInput-be533e71.js} +7 -4
  100. flowfile/web/static/assets/SliderInput-f2e4f23c.css +4 -0
  101. flowfile/web/static/assets/{Sort-6cbde21a.js → Sort-154dad81.js} +9 -7
  102. flowfile/web/static/assets/Sort-4abb7fae.css +9 -0
  103. flowfile/web/static/assets/{TextInput-d9a40c11.js → TextInput-454e2bda.js} +2 -2
  104. flowfile/web/static/assets/{TextInput.vue_vue_type_script_setup_true_lang-5896c375.js → TextInput.vue_vue_type_script_setup_true_lang-e86510d0.js} +5 -2
  105. flowfile/web/static/assets/{TextToRows-5d2c1190.css → TextToRows-12afb4f4.css} +10 -10
  106. flowfile/web/static/assets/{TextToRows-c4fcbf4d.js → TextToRows-ea73433d.js} +11 -10
  107. flowfile/web/static/assets/{ToggleSwitch-4ef91d19.js → ToggleSwitch-9d7b30f1.js} +2 -2
  108. flowfile/web/static/assets/{ToggleSwitch.vue_vue_type_script_setup_true_lang-38478c20.js → ToggleSwitch.vue_vue_type_script_setup_true_lang-00f2580e.js} +1 -1
  109. flowfile/web/static/assets/{UnavailableFields-5edd5322.css → UnavailableFields-394a1f78.css} +14 -14
  110. flowfile/web/static/assets/{UnavailableFields-a03f512c.js → UnavailableFields-b72a2c72.js} +4 -4
  111. flowfile/web/static/assets/{Union-bfe9b996.js → Union-1e44f263.js} +8 -6
  112. flowfile/web/static/assets/{Union-af6c3d9b.css → Union-d6a8d7d5.css} +7 -7
  113. flowfile/web/static/assets/Unique-2b705521.css +3 -0
  114. flowfile/web/static/assets/{Unique-5d023a27.js → Unique-a3bc6d0a.js} +13 -10
  115. flowfile/web/static/assets/{Unpivot-1e422df3.css → Unpivot-b6ad6427.css} +7 -7
  116. flowfile/web/static/assets/{Unpivot-91cc5354.js → Unpivot-e27935fc.js} +11 -9
  117. flowfile/web/static/assets/{UnpivotValidation-7ee2de44.js → UnpivotValidation-72497680.js} +3 -3
  118. flowfile/web/static/assets/UnpivotValidation-d5ca3b7b.css +13 -0
  119. flowfile/web/static/assets/{VueGraphicWalker-ed5ab88b.css → VueGraphicWalker-430f0b86.css} +1 -1
  120. flowfile/web/static/assets/{VueGraphicWalker-e51b9924.js → VueGraphicWalker-d9ab70a3.js} +4 -4
  121. flowfile/web/static/assets/{api-cf1221f0.js → api-a2102880.js} +1 -1
  122. flowfile/web/static/assets/{api-c1bad5ca.js → api-f75042b0.js} +1 -1
  123. flowfile/web/static/assets/{dropDown-35135ba8.css → dropDown-1d6acbd9.css} +41 -41
  124. flowfile/web/static/assets/{dropDown-614b998d.js → dropDown-2798a109.js} +3 -3
  125. flowfile/web/static/assets/{fullEditor-f7971590.js → fullEditor-cf7d7d93.js} +11 -10
  126. flowfile/web/static/assets/{fullEditor-178376bb.css → fullEditor-fe9f7e18.css} +77 -65
  127. flowfile/web/static/assets/{genericNodeSettings-4fe5f36b.js → genericNodeSettings-14eac1c3.js} +5 -5
  128. flowfile/web/static/assets/{genericNodeSettings-924759c7.css → genericNodeSettings-3b2507ea.css} +10 -10
  129. flowfile/web/static/assets/{index-5429bbf8.js → index-387a6f18.js} +41806 -40958
  130. flowfile/web/static/assets/index-6b367bb5.js +38 -0
  131. flowfile/web/static/assets/{index-50508d4d.css → index-e96ab018.css} +2184 -569
  132. flowfile/web/static/assets/index-f0a6e5a5.js +2696 -0
  133. flowfile/web/static/assets/node.types-2c15bb7e.js +82 -0
  134. flowfile/web/static/assets/nodeInput-ed2ae8d7.js +2 -0
  135. flowfile/web/static/assets/{outputCsv-076b85ab.js → outputCsv-3c1757e8.js} +3 -3
  136. flowfile/web/static/assets/outputCsv-b9a072af.css +2499 -0
  137. flowfile/web/static/assets/{outputExcel-0fd17dbe.js → outputExcel-686e1f48.js} +3 -3
  138. flowfile/web/static/assets/{outputExcel-b41305c0.css → outputExcel-f5d272b2.css} +26 -26
  139. flowfile/web/static/assets/outputParquet-54597c3c.css +4 -0
  140. flowfile/web/static/assets/{outputParquet-b61e0847.js → outputParquet-df28faa7.js} +4 -4
  141. flowfile/web/static/assets/{readCsv-c767cb37.css → readCsv-3bfac4c3.css} +15 -15
  142. flowfile/web/static/assets/{readCsv-a8bb8b61.js → readCsv-e37eee21.js} +3 -3
  143. flowfile/web/static/assets/{readExcel-806d2826.css → readExcel-3db6b763.css} +13 -13
  144. flowfile/web/static/assets/{readExcel-67b4aee0.js → readExcel-a13f14bb.js} +5 -5
  145. flowfile/web/static/assets/{readParquet-92ce1dbc.js → readParquet-344cf746.js} +3 -3
  146. flowfile/web/static/assets/{readParquet-48c81530.css → readParquet-c5244ad5.css} +4 -4
  147. flowfile/web/static/assets/secrets.api-ae198c5c.js +65 -0
  148. flowfile/web/static/assets/{selectDynamic-92e25ee3.js → selectDynamic-6b4b0767.js} +5 -5
  149. flowfile/web/static/assets/{selectDynamic-aa913ff4.css → selectDynamic-f2fb394f.css} +21 -20
  150. flowfile/web/static/assets/{vue-codemirror.esm-41b0e0d7.js → vue-codemirror.esm-31ba0e0b.js} +31 -640
  151. flowfile/web/static/assets/{vue-content-loader.es-2c8e608f.js → vue-content-loader.es-4469c8ff.js} +1 -1
  152. flowfile/web/static/index.html +2 -2
  153. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/METADATA +3 -4
  154. flowfile-0.5.4.dist-info/RECORD +407 -0
  155. flowfile_core/__init__.py +13 -6
  156. flowfile_core/auth/jwt.py +51 -16
  157. flowfile_core/auth/models.py +32 -7
  158. flowfile_core/auth/password.py +89 -0
  159. flowfile_core/auth/secrets.py +64 -19
  160. flowfile_core/configs/__init__.py +9 -7
  161. flowfile_core/configs/flow_logger.py +15 -14
  162. flowfile_core/configs/node_store/__init__.py +72 -4
  163. flowfile_core/configs/node_store/nodes.py +155 -172
  164. flowfile_core/configs/node_store/user_defined_node_registry.py +108 -27
  165. flowfile_core/configs/settings.py +28 -15
  166. flowfile_core/database/connection.py +7 -6
  167. flowfile_core/database/init_db.py +96 -2
  168. flowfile_core/database/models.py +3 -1
  169. flowfile_core/fileExplorer/__init__.py +17 -0
  170. flowfile_core/fileExplorer/funcs.py +145 -57
  171. flowfile_core/fileExplorer/utils.py +10 -11
  172. flowfile_core/flowfile/_extensions/real_time_interface.py +10 -8
  173. flowfile_core/flowfile/analytics/analytics_processor.py +26 -24
  174. flowfile_core/flowfile/analytics/graphic_walker.py +11 -12
  175. flowfile_core/flowfile/analytics/utils.py +1 -1
  176. flowfile_core/flowfile/code_generator/__init__.py +11 -0
  177. flowfile_core/flowfile/code_generator/code_generator.py +706 -247
  178. flowfile_core/flowfile/connection_manager/_connection_manager.py +6 -5
  179. flowfile_core/flowfile/connection_manager/models.py +1 -1
  180. flowfile_core/flowfile/database_connection_manager/db_connections.py +60 -44
  181. flowfile_core/flowfile/database_connection_manager/models.py +1 -1
  182. flowfile_core/flowfile/extensions.py +17 -12
  183. flowfile_core/flowfile/flow_data_engine/cloud_storage_reader.py +34 -32
  184. flowfile_core/flowfile/flow_data_engine/create/funcs.py +115 -83
  185. flowfile_core/flowfile/flow_data_engine/flow_data_engine.py +493 -423
  186. flowfile_core/flowfile/flow_data_engine/flow_file_column/interface.py +2 -2
  187. flowfile_core/flowfile/flow_data_engine/flow_file_column/main.py +92 -52
  188. flowfile_core/flowfile/flow_data_engine/flow_file_column/polars_type.py +12 -11
  189. flowfile_core/flowfile/flow_data_engine/flow_file_column/type_registry.py +6 -6
  190. flowfile_core/flowfile/flow_data_engine/flow_file_column/utils.py +26 -30
  191. flowfile_core/flowfile/flow_data_engine/fuzzy_matching/prepare_for_fuzzy_match.py +31 -20
  192. flowfile_core/flowfile/flow_data_engine/join/__init__.py +1 -1
  193. flowfile_core/flowfile/flow_data_engine/join/utils.py +11 -9
  194. flowfile_core/flowfile/flow_data_engine/join/verify_integrity.py +14 -15
  195. flowfile_core/flowfile/flow_data_engine/pivot_table.py +5 -7
  196. flowfile_core/flowfile/flow_data_engine/polars_code_parser.py +95 -82
  197. flowfile_core/flowfile/flow_data_engine/read_excel_tables.py +66 -65
  198. flowfile_core/flowfile/flow_data_engine/sample_data.py +27 -21
  199. flowfile_core/flowfile/flow_data_engine/subprocess_operations/__init__.py +1 -1
  200. flowfile_core/flowfile/flow_data_engine/subprocess_operations/models.py +13 -11
  201. flowfile_core/flowfile/flow_data_engine/subprocess_operations/subprocess_operations.py +190 -127
  202. flowfile_core/flowfile/flow_data_engine/threaded_processes.py +8 -8
  203. flowfile_core/flowfile/flow_data_engine/utils.py +99 -67
  204. flowfile_core/flowfile/flow_graph.py +920 -571
  205. flowfile_core/flowfile/flow_graph_utils.py +31 -49
  206. flowfile_core/flowfile/flow_node/flow_node.py +379 -258
  207. flowfile_core/flowfile/flow_node/models.py +53 -41
  208. flowfile_core/flowfile/flow_node/schema_callback.py +14 -19
  209. flowfile_core/flowfile/graph_tree/graph_tree.py +41 -41
  210. flowfile_core/flowfile/handler.py +80 -30
  211. flowfile_core/flowfile/manage/compatibility_enhancements.py +209 -126
  212. flowfile_core/flowfile/manage/io_flowfile.py +54 -57
  213. flowfile_core/flowfile/node_designer/__init__.py +19 -13
  214. flowfile_core/flowfile/node_designer/_type_registry.py +34 -37
  215. flowfile_core/flowfile/node_designer/custom_node.py +162 -36
  216. flowfile_core/flowfile/node_designer/ui_components.py +278 -34
  217. flowfile_core/flowfile/schema_callbacks.py +71 -51
  218. flowfile_core/flowfile/setting_generator/__init__.py +0 -1
  219. flowfile_core/flowfile/setting_generator/setting_generator.py +6 -5
  220. flowfile_core/flowfile/setting_generator/settings.py +64 -53
  221. flowfile_core/flowfile/sources/external_sources/base_class.py +12 -10
  222. flowfile_core/flowfile/sources/external_sources/custom_external_sources/external_source.py +27 -17
  223. flowfile_core/flowfile/sources/external_sources/custom_external_sources/sample_users.py +9 -9
  224. flowfile_core/flowfile/sources/external_sources/factory.py +0 -1
  225. flowfile_core/flowfile/sources/external_sources/sql_source/models.py +45 -31
  226. flowfile_core/flowfile/sources/external_sources/sql_source/sql_source.py +198 -73
  227. flowfile_core/flowfile/sources/external_sources/sql_source/utils.py +250 -196
  228. flowfile_core/flowfile/util/calculate_layout.py +9 -13
  229. flowfile_core/flowfile/util/execution_orderer.py +25 -17
  230. flowfile_core/flowfile/util/node_skipper.py +4 -4
  231. flowfile_core/flowfile/utils.py +19 -21
  232. flowfile_core/main.py +26 -19
  233. flowfile_core/routes/auth.py +284 -11
  234. flowfile_core/routes/cloud_connections.py +25 -25
  235. flowfile_core/routes/logs.py +21 -29
  236. flowfile_core/routes/public.py +46 -4
  237. flowfile_core/routes/routes.py +70 -34
  238. flowfile_core/routes/secrets.py +25 -27
  239. flowfile_core/routes/user_defined_components.py +483 -4
  240. flowfile_core/run_lock.py +0 -1
  241. flowfile_core/schemas/__init__.py +4 -6
  242. flowfile_core/schemas/analysis_schemas/graphic_walker_schemas.py +55 -55
  243. flowfile_core/schemas/cloud_storage_schemas.py +96 -66
  244. flowfile_core/schemas/input_schema.py +231 -144
  245. flowfile_core/schemas/output_model.py +49 -34
  246. flowfile_core/schemas/schemas.py +116 -89
  247. flowfile_core/schemas/transform_schema.py +518 -263
  248. flowfile_core/schemas/yaml_types.py +21 -7
  249. flowfile_core/secret_manager/secret_manager.py +123 -18
  250. flowfile_core/types.py +29 -9
  251. flowfile_core/utils/arrow_reader.py +7 -6
  252. flowfile_core/utils/excel_file_manager.py +3 -3
  253. flowfile_core/utils/fileManager.py +7 -7
  254. flowfile_core/utils/fl_executor.py +8 -10
  255. flowfile_core/utils/utils.py +4 -4
  256. flowfile_core/utils/validate_setup.py +5 -4
  257. flowfile_frame/__init__.py +117 -51
  258. flowfile_frame/adapters.py +2 -9
  259. flowfile_frame/adding_expr.py +73 -32
  260. flowfile_frame/cloud_storage/frame_helpers.py +27 -23
  261. flowfile_frame/cloud_storage/secret_manager.py +12 -26
  262. flowfile_frame/config.py +2 -5
  263. flowfile_frame/database/__init__.py +36 -0
  264. flowfile_frame/database/connection_manager.py +205 -0
  265. flowfile_frame/database/frame_helpers.py +249 -0
  266. flowfile_frame/expr.py +311 -218
  267. flowfile_frame/expr.pyi +160 -159
  268. flowfile_frame/expr_name.py +23 -23
  269. flowfile_frame/flow_frame.py +571 -476
  270. flowfile_frame/flow_frame.pyi +123 -104
  271. flowfile_frame/flow_frame_methods.py +227 -246
  272. flowfile_frame/group_frame.py +50 -20
  273. flowfile_frame/join.py +2 -2
  274. flowfile_frame/lazy.py +129 -87
  275. flowfile_frame/lazy_methods.py +83 -30
  276. flowfile_frame/list_name_space.py +55 -50
  277. flowfile_frame/selectors.py +148 -68
  278. flowfile_frame/series.py +9 -7
  279. flowfile_frame/utils.py +19 -21
  280. flowfile_worker/__init__.py +12 -7
  281. flowfile_worker/configs.py +41 -33
  282. flowfile_worker/create/__init__.py +14 -9
  283. flowfile_worker/create/funcs.py +114 -77
  284. flowfile_worker/create/models.py +46 -43
  285. flowfile_worker/create/pl_types.py +14 -15
  286. flowfile_worker/create/read_excel_tables.py +34 -41
  287. flowfile_worker/create/utils.py +22 -19
  288. flowfile_worker/external_sources/s3_source/main.py +18 -51
  289. flowfile_worker/external_sources/s3_source/models.py +34 -27
  290. flowfile_worker/external_sources/sql_source/main.py +8 -5
  291. flowfile_worker/external_sources/sql_source/models.py +13 -9
  292. flowfile_worker/flow_logger.py +10 -8
  293. flowfile_worker/funcs.py +214 -155
  294. flowfile_worker/main.py +11 -17
  295. flowfile_worker/models.py +35 -28
  296. flowfile_worker/process_manager.py +2 -3
  297. flowfile_worker/routes.py +121 -90
  298. flowfile_worker/secrets.py +114 -21
  299. flowfile_worker/spawner.py +89 -54
  300. flowfile_worker/utils.py +3 -2
  301. shared/__init__.py +2 -7
  302. shared/storage_config.py +25 -13
  303. test_utils/postgres/commands.py +3 -2
  304. test_utils/postgres/fixtures.py +9 -9
  305. test_utils/s3/commands.py +1 -1
  306. test_utils/s3/data_generator.py +3 -4
  307. test_utils/s3/demo_data_generator.py +4 -7
  308. test_utils/s3/fixtures.py +7 -5
  309. tools/migrate/__init__.py +1 -1
  310. tools/migrate/__main__.py +16 -29
  311. tools/migrate/legacy_schemas.py +251 -190
  312. tools/migrate/migrate.py +193 -181
  313. tools/migrate/tests/conftest.py +1 -3
  314. tools/migrate/tests/test_migrate.py +36 -41
  315. tools/migrate/tests/test_migration_e2e.py +28 -29
  316. tools/migrate/tests/test_node_migrations.py +50 -20
  317. flowfile/web/static/assets/CloudConnectionManager-2dfdce2f.css +0 -86
  318. flowfile/web/static/assets/ContextMenu-23e909da.js +0 -41
  319. flowfile/web/static/assets/ContextMenu-4c74eef1.css +0 -26
  320. flowfile/web/static/assets/ContextMenu-63cfa99b.css +0 -26
  321. flowfile/web/static/assets/ContextMenu-70ae0c79.js +0 -41
  322. flowfile/web/static/assets/ContextMenu-c13f91d0.css +0 -26
  323. flowfile/web/static/assets/ContextMenu-f149cf7c.js +0 -41
  324. flowfile/web/static/assets/CustomNode-74a37f74.css +0 -32
  325. flowfile/web/static/assets/DatabaseManager-30fa27e5.css +0 -64
  326. flowfile/web/static/assets/Filter-9b6d08db.js +0 -164
  327. flowfile/web/static/assets/Filter-f62091b3.css +0 -20
  328. flowfile/web/static/assets/GroupBy-b9505323.css +0 -51
  329. flowfile/web/static/assets/ManualInput-3246a08d.css +0 -96
  330. flowfile/web/static/assets/Output-283fe388.css +0 -37
  331. flowfile/web/static/assets/PivotValidation-891ddfb0.css +0 -13
  332. flowfile/web/static/assets/PivotValidation-c46cd420.css +0 -13
  333. flowfile/web/static/assets/SQLQueryComponent-36cef432.css +0 -27
  334. flowfile/web/static/assets/SliderInput-b8fb6a8c.css +0 -4
  335. flowfile/web/static/assets/Sort-3643d625.css +0 -51
  336. flowfile/web/static/assets/Unique-f9fb0809.css +0 -51
  337. flowfile/web/static/assets/UnpivotValidation-0d240eeb.css +0 -13
  338. flowfile/web/static/assets/nodeInput-5d0d6b79.js +0 -41
  339. flowfile/web/static/assets/outputCsv-9cc59e0b.css +0 -2499
  340. flowfile/web/static/assets/outputParquet-cf8cf3f2.css +0 -4
  341. flowfile/web/static/assets/secretApi-68435402.js +0 -46
  342. flowfile/web/static/assets/vue-codemirror-bccfde04.css +0 -32
  343. flowfile-0.5.1.dist-info/RECORD +0 -388
  344. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/WHEEL +0 -0
  345. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/entry_points.txt +0 -0
  346. {flowfile-0.5.1.dist-info → flowfile-0.5.4.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,2696 @@
1
+ import { am as flowfileCorebaseURL, k as axios } from "./index-387a6f18.js";
2
+ import { e as Parser, N as NodeSet, f as NodeType, D as DefaultBufferLength, g as NodeProp, h as Tree, I as IterMode, s as styleTags, t as tags, L as LanguageSupport, j as syntaxTree, l as ifNotIn, m as LRLanguage, n as indentNodeProp, o as delimitedIndent, p as foldNodeProp, q as foldInside, r as completeFromList, u as NodeWeakMap, v as snippetCompletion, H as HighlightStyle, w as syntaxHighlighting, E as EditorView } from "./vue-codemirror.esm-31ba0e0b.js";
3
+ const __vite_glob_0_0 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAApCAYAAACoYAD2AAACO0lEQVR4nN2Yz0vbYBjHv29NbZUy0B43QUG9zNPEHUT05NCTiu6o0NbDLk5a/RMERaonkSrO8zw4alFQtBsMBG96kJ5EUTcRh78QRGvsu4O8MSk1fdMmaeLnlL7p++ST53kfkjeADSCKX5GI4Ci+XQCl3uwzKXUkyYD4ZWjXKDnpUuxA+BbeBEij9hD0SgwMl+kplY5McoLmHEVMNYi06E/eNs4iEQf/zjEyonDRR9IAxMCQ5OYopIgawlz4gR1bVhKECJgPvwOsLAlAoIgAFpdMgXgAQFD704M/ZI4NAOf85IvnLJ1Jhi0kVcvNUCtFvvAsKVtk0haSXOU2s8sz8XoyqWfjsKpMJ3bQUVmNt6WerHNMzSQT/ByPYXDrJyq/z+Li/i7rPK5M6gET7NqIYvloXxovd7mzzjW1cdrXFrHx91BzXNPKnS6Y1HDjhjYOy1TnelQp6Aum7QDVMSyTTLAnHsPK8fMaTPqCIESLokGScsGlwz1pPBdBgLPciR4fd8CaN0+72871qDKD/pCmEsvhkmQX5qVtdRHxE2WT5CoI6Ng4/to6zDR9wlRiWymosUkyoduaHG1oBgAEt35JY7muwXR0eeJ4BCfKXW78Pn36iDH+sQXBuno9QgPglIy1dqme97pLAAA752eGvNZxSbZXVHEF+/r+Q14yL2GL90lbSKqW28hdohYsnUkCeglYXPKx2NkHyCQpJT8Kp5MJmkTv4A0gk3zsD3WnQMYKJyWHXouBYVehLV4f/wHit6c8llKODwAAAABJRU5ErkJggg==";
4
+ const __vite_glob_0_1 = "/assets/airbyte-292aa232.png";
5
+ const __vite_glob_0_2 = "/assets/cloud_storage_reader-aa1415d6.png";
6
+ const __vite_glob_0_3 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAeFBMVEVHcEz////////////////////L8/D////////W6un////1+/rk9PPD6OWe1dJ108xqv7o90sc9ubATx7oTxLcTwbQ7racTvLATuKwUtagTsaUzop0SrqMRqp8Qo5oPnJQhjIsMlY4KkIsKjYgJiYUJhYIIgX8Gf37b7Js+AAAACnRSTlMABAoXKGNiwt3osdvRlAAABj5JREFUeNrtm9ty2zgMhrfb3bZLECSlOEqsg+Vj8v5vuKB5iiWLpGS70wt/oESYAoFfoNuZztR/PfmD+Pbj3+v8WMpkwm9XBXz/xUYARymLxUiJCGzEz7/zBAAXxcvNFBJhmQCUL/ehKBDmC+C3l18FV+JMAYDF6g7lV85fvQiYIwAk7Vnl1MhH8nwBXFJqPcw1wC+tCD1p3OeI2oLnCuDF6yoBFRsSdEzwWvA8ASBXJOARFDwhwNc/YycSo72BKFqy88TrDoINEjIEiNcEpGUxMi2Ar95eH8bqBVMCQFL9B0qQkBCAVJ54dUbomYab3IMQ8TYyu+0aGBcA8lz9AkoVoIdpxim8vRUQFYCvdrOezc0w9Oih/TAcjsGKX8SoAPn+9mhkTAAUPu5RStYFjwhAW1tbkPJuFzXn2QU5QuRoIcTSZbZgRIB4H0O7HV5EwJQYPPYLtrImfBQRAfL9NyCnBYBcP77+uoBpAQUJeDhlREC5JkyYn42zJse6AVoIrlux/ijafXor+aQAbgWs56CjJ7b5FavHTHEBi6jr+nzPi369l4B6baqWUgpCqqzd6Q7UZyOs695vVJ+gbBL5l3/GlbTm9/tdei1TQJ0PlWlLYat7DTKd4i0lIB/J2QiUbVtHiXagrTOhKqUAdgUQdXtvAe01AWtkE4i11kfXIENr3LgAoibsbF2iNjdHpD6BLtDvJsfNaQEBCp+gXgsWQbYTiWju4gJidB0VpvZ25EsWA1Q7zTomoJsorYuvlUDkiEKW1EYWBdftBIkOdETbaWy0u3W1RGAWQGQJJGUwprGuztrFBfjy3SWtuigJwBJg200RP4IJJLB5gLJv0ZJdUs0XsKH6cxH37IACNhted46bO1ByNh9ebrqrtPMFCLYAUMuOYENGbPSwFzVgCRxR6nyDlPEjqGwomZnpthFsMYCqdhldyoQAjVHgRos3CGAMS5NSD+NFBbjSndviTmA5IHWikDUhgDDFfbyCGwWA6ExautJHELDxvWK3AlKn8qQEdF+PrCslspsBZZLlCLikEsDuwUXiOl+A4uwuABObQH4HJLB7wcv5AjoF7H7IGQL6s+k//3cEu42l7+ICehu2wbzEyLKAihLrEe8ARdmwPu8AQFFcXmC/sblTAnoyumc2oMnsFJO9O90uLkAbjYpnNiCvBcCETdwnjsBAJ5DZAKSRJVX0mvQROGRmAyD3WyDNixFNjoCdyGyAvaVRvSYtwCEyG6DvJWTElvME7CRLgxW6KQlvMgXsqLg2ldkAAMZyWiD6nbFkB0xQn5ETG+SiqgTP+RaonX61dAd2ln6D6QY0qukJmkpIiqX3ssQEmLCeLH0GuOkrpV9KUd8wJda8lraEAE/DUzkVAmqpAlApyPkGGBICfFwiJ3CdmOL2ghwOiQNw5Hcg668CdVbKErivVl4HAk1KAbByR1TAomCo3+cICPQikZri9dliVKWgoEUd2JMpZDHQBEaCANVuwD4qYG+hOLqRWoWRLojdOVBMVedC9fudM4KmfVyAD6fyNPRVKSkmUDqOIiaeVg091LjJeDkdsPWteyDorj0zrNkISkvPDSGCliZId4DwyckmCaGxiN0wto8JGOVLldj5K70p3QGoDvuHc4gLONhD33spwUll/hqruXgU/AomBTB1PKSwqcdLfp7ECNtWbFqAOCxlny37qCICkEIezVZEBPDmeBYZws1nsntx7HlEAFNHU+3oLFI9KAtuWuxJsZgA3B/zOXjnENbsfQJSIKICoAoJaCIL3mG45J0h4wwhqOFRAUxQ5COhBsQFQHU6PpBTwxMCGG4pTDPYSWYZL52uVHLXqAEpAUza+mSuTHC9NjOZy66GJ+6xX3dqTwrSAqD6OHmOREgxzTG2Eqg4SwtgvCEFj+CzQZYWQGBzeghbZCkBXsHH/Zvw0SDLFcB4RQo+9C5rwfXe2IjgDOM/Kpz1n9vVlrbq4XphZu/R5Z7R7Jfcyslj9RwVZzkCAlidPj8MYaYxG9rzeWrE/B84gGhOn4aQy0/50PZGwLKfeAi1JQ0LOJc17mlbCc7YIgEEF6pqtotpKhWqpwX8/HWd/xZzPR8YAWP++V18n/6t07fRILsFn8dfz1+UPXny5MmTJ0+e/Gn8D1jTqp1bBNAQAAAAAElFTkSuQmCC";
7
+ const __vite_glob_0_4 = "/assets/cross_join-d30c0290.png";
8
+ const __vite_glob_0_5 = "/assets/database_reader-ce1e55f3.svg";
9
+ const __vite_glob_0_6 = "/assets/database_writer-b4ad0753.svg";
10
+ const __vite_glob_0_7 = "/assets/explore_data-8a0a2861.png";
11
+ const __vite_glob_0_8 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABZCAYAAADIBoEnAAAKM0lEQVR4nO2cf2xV1R3AP+fe+15HWoRRYIGH7dRYVnEDlAZKHNgwW5xiRWsn29BuAWEII2YmjEUtnZgt/GonJhVDpgkSt9csaCRWCKG04iKhdP4hzgQZWJpO0zqElkLLvffsj3sP7/Gk0L629Dy9n+SE19J3e+75vHPO95ye74XUQQCG/3oy8GfgQ6BTCGGPGjXKnjp1aufq1as/fPfddze0tbX9AEBKaUgpxfBU+ZtLfIP+HvgSkFcqlmXJmTNnym3btn3Z1NS0FkAIkXiNgAGgeoYJ/JVY49uAG/e1FEJI/3t2RkaGfPnll+UHH3zwKmAGPWXwUMNUBV7DXyRBRGIxTVMCbnp6es+uXbtkfX19BUB5ebmRePGA/qEacCrQzRV6RW9FSZkzZ47d0NDQXVNT8yPw5pTrewv9Q+vKERv3lwBhvMbu07DjOA5CCHHw4EF56tSp8Pjx45cA1NTUaD1s6S7EAULA3XgyzP68WQiB67rG4cOHZTgcvvvOO+8MlZaWOkNQz0FDZyHqkzwOyCKJKElFVydOnBDd3d1ZZWVl4wB0ntx1FqIYgTdcJc2FCxcA0kaOHDliUGo0hKSCEDlYFwqFQoN2raEiFYR8qwiEaEYgRDMCIZoRCNGMQIhmBEI0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0IxCiGYEQzQiEaEYgRDMCIZoRCNGMQIhmBEI0IxCiGYEQzehNiPCLUV5erhJdtD0PmwJcak/AkFKK3s4XJwpRmUoqz8KtqKhw/cwkGY1GTZ0PKmuIIKE9AVcIIYUQ8pFHHjET81WsuNcm3vF/gHRgAmCtXr1aVFVVdQKtQggHvKQXIYQ7xDeT6hh4Ahz/9UQgY/bs2fKVV15xpkyZ8oUQokMIcVl7WnFvdoAfAr8F5uEJEa+99po4dOhQz3333fdJU1PTrtbW1mohxOloNGrqnmsxjCgZGcByoAS4DUhrbGyUJSUl5Ofnf15bW3sgEom8JIRojJeikmBWAB30kiIWDofl448/Luvr64/W1dVNgyHP2VND483AeWJd/prpbCSktRUVFckDBw6c37lz580w5Pkhqk1ygX9drX4zZsyQO3fuvPDee+/9zq/XpfYsi/tBlVR5qRiGobrexdLSUnnw4MH/vvHGGzlCiIFIEQnFSCim/++tDFBIYWGh3Ldv3/nq6upbAWPu3LmWf/2vFX+eHOg9ZQGfEWtPh7j2FEKoNr0YiUTc2tpauX///hXqIjfh5X2rRr/izQkh1A32bN68WTY0NOzBj8KSqLgJXoZTbyWOCUAXAxCyYMEC2djY2CWl/J4QAtM0MQzja8WyYlNqkr1ItcU//Dr0XK1+lmVJwLnnnnuc+vr6jmg0epsANgJP48m4ag6fYRhIKZk2bZpbWVkp2tvbf1xSUvJ+P+YT4VdmDLDZsqzxcYGC47rupWjEdV3VO9Nd172XywOQPuFPmDIrK0tMmTLFbmpqevvcuXOdhmEIP3JESikBwuGwbG9vdxctWuQuW7as49ixY88vXbr0f3F1vhZq3pgOHObyJ0/0Wj//X2fHjh3mxIkTt1nAvfQxu1VKiZSSjz/+2D19+rR1ww03/AR4f9y4cX39NEm/kqeBN23bfvNab/C8JIff1qK5uZnm5mYLWHilnzNNk7Nnz5KTk8Njjz1GT0/PqlGjRp0pLy83Kioq+loBJaSAyyPWq9bPMAxc1zWOHDkis7OziwxgEn2wGXeDdHd3c+bMGdLS0rIA2tra+pMq5vq/7y3gZ37Fe/By0J1eyoBQw9SVrm0YhuM4jh2JRHq2bNnC6NGjVxQWFr509OhR2Q8ZEOtF30/4+pp1A0Rra6twHCdikcRQAJfywJN6L54UE4gCEWALfRgyk0VKieM4JF7f/3SSmZnpvPjii+ExY8aU5+fnV0spTTWUJkFSbWLbNlLK0HDuZSkBlcCf/Nf29frlfg476enpTmVlpTlp0qSq2bNn/zEajQ5ExoAZ7s1F1VP+gPdgGYvrIEVNpqZp2hs2bDBzc3N3zJw58yk/OBnWHYhkh5zBQoWyBvAbvBD3XjwpQ1I3FVa7rmuvX7/emjFjRu2iRYuW+msPFVYPG8PdQyDWABeBXwBH8GQMybDhzxv2mjVrrIKCgkPvvPPOz48fP969bt06VCg8nOggBGKR12m80PQ43lA2qMOHaZo4juMsX77cWrhw4ScfffTRQxUVFV8999xz/Qlvh5ThHrLiUfPJKaAY2A+MJzakDQhfhvvoo4+aZWVlzc3NzQuWLFnSqtsmqS49ROHgfUiO4q1Ruuj7SrlXlIz58+cbq1at+rK9vb24tLT0U91kgH5CIDahHwB+7X8v6cnWlyFnzZol1qxZ09XZ2Vl6//33f1hXV2fpJgP0FAIxKX8HnqKPWxGJKBm5ubluRUWFdF23rKioaH9dXZ1VUFBw3dY8/UFXIeBJMYG/AC/QzzWKYRg4jiNvvPFGd+PGjeaIESNWzps3r0ZnGaC3EIhN9M8A2+mjFLUlMnbsWLeqqsocPXr0M3PmzKnWXQboLyR+4bgC2M01pKgtkYyMDKeqqsqMRCKb77rrrhei0aipuwzQK+ztDTWZ28BiYC+QxxU2I9WWSCgUsjdt2mRNnjz51by8vKf9zUIt1hnXQvceolB/r/kKeAj4lISJXm2JSCnt9evXW9OnT387Ly9vmS5bIn0lVYRAbD5pAR4AviBuNa+2RNauXWvNnTv3n6+//vovpZQ2sSdepwSpJARiC8d/A6XAOUAIIWzHcewnn3zSKi4uPtrY2Pjw1q1bz65bt06kkgxIjTkkEbVGaQB+JYT4mxDCKisrY/HixSdbWloeWLly5ec6rsL7QioKgZiUGilldkZGxqwnnngira2t7fmSkpL/pKoMSF0h4EkxgE0dHR3k5+cD3uG9VJUBqS0EYtv2gPe381QJb3sj1YVAXDibcMAuJUm1KOsbTyBEMwIhmhEI0YxAiGYkHWVJKXFdVwDGvn37DFJk824IUW0woFAvaSFpaWlkZGTYgLt9+/aUjv0HCdUGFwdykWSFiJaWFs6fP/9dIDczMzPc1dX1rZYipTRM07zQ2dk5VqVBJHOdZIWYzz77LFLKB4Cftre3p/6KbHBwpZQh/3VSJ/mTHrJs2wZv3AyrvJGAgTMYWyeBjcsZnkl9sCoQcDnBOkQzVE54gCYYwHeGuxIBMdQRmYBhJhwOA/QYwAliTxcIuM74SwaZnZ0tQ6HQSQMvX1wQ9JTrjn+wj3A47N5xxx2iu7v7LQPvdLk6dJayhwNSEdM0kVI6Dz74oDlhwoQvTp48uVX938PEhi2bfj7kJSj9K/4T5VzAvv322+XevXvlnj17Si6JipNycrgr+20poVBIFhYWyt27d3/W0NBQAhCNRk21ylbRVgTv2H8xcKsQIpyWloYQwnX8Z1MEJIfjOKbjOMbIkSO55ZZbLsyfP/9YcXHx25mZmdU5OTkt6oly/wc3vQgr7Up0TAAAAABJRU5ErkJggg==";
12
+ const __vite_glob_0_9 = "/assets/filter-d7708bda.png";
13
+ const __vite_glob_0_10 = "/assets/formula-eeeb1611.png";
14
+ const __vite_glob_0_11 = "/assets/fuzzy_match-40c161b2.png";
15
+ const __vite_glob_0_12 = "data:image/png;base64,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";
16
+ const __vite_glob_0_13 = "/assets/graph_solver-8b7888b8.png";
17
+ const __vite_glob_0_14 = "/assets/group_by-80561fc3.png";
18
+ const __vite_glob_0_15 = "/assets/input_data-ab2eb678.png";
19
+ const __vite_glob_0_16 = "/assets/join-349043ae.png";
20
+ const __vite_glob_0_17 = "/assets/manual_input-ae98f31d.png";
21
+ const __vite_glob_0_18 = "/assets/old_join-5d0eb604.png";
22
+ const __vite_glob_0_19 = "/assets/output-06ec0371.png";
23
+ const __vite_glob_0_20 = "/assets/pivot-9660df51.png";
24
+ const __vite_glob_0_21 = "/assets/polars_code-05ce5dc6.png";
25
+ const __vite_glob_0_22 = "/assets/record_count-dab44eb5.png";
26
+ const __vite_glob_0_23 = "/assets/record_id-0b15856b.png";
27
+ const __vite_glob_0_24 = "/assets/sample-693a88b5.png";
28
+ const __vite_glob_0_25 = "/assets/select-b0d0437a.png";
29
+ const __vite_glob_0_26 = "/assets/sort-2aa579f0.png";
30
+ const __vite_glob_0_27 = "/assets/summarize-2a099231.png";
31
+ const __vite_glob_0_28 = "/assets/text_to_rows-859b29ea.png";
32
+ const __vite_glob_0_29 = "/assets/union-2d8609f4.png";
33
+ const __vite_glob_0_30 = "/assets/unique-1958b98a.png";
34
+ const __vite_glob_0_31 = "/assets/unpivot-d3cb4b5b.png";
35
+ const __vite_glob_0_32 = "/assets/user-defined-icon-0ae16c90.png";
36
+ const __vite_glob_0_33 = "/assets/view-7a0f0be1.png";
37
+ const BUILTIN_ICONS = /* @__PURE__ */ new Set([
38
+ "Output2.png",
39
+ "airbyte.png",
40
+ "cloud_storage_reader.png",
41
+ "cloud_storage_writer.png",
42
+ "cross_join.png",
43
+ "database_reader.svg",
44
+ "database_writer.svg",
45
+ "explore_data.png",
46
+ "external_source.png",
47
+ "filter.png",
48
+ "formula.png",
49
+ "fuzzy_match.png",
50
+ "google_sheet.png",
51
+ "graph_solver.png",
52
+ "group_by.png",
53
+ "input_data.png",
54
+ "join.png",
55
+ "manual_input.png",
56
+ "old_join.png",
57
+ "output.png",
58
+ "pivot.png",
59
+ "polars_code.png",
60
+ "record_count.png",
61
+ "record_id.png",
62
+ "sample.png",
63
+ "select.png",
64
+ "sort.png",
65
+ "summarize.png",
66
+ "text_to_rows.png",
67
+ "union.png",
68
+ "unique.png",
69
+ "unpivot.png",
70
+ "user-defined-icon.png",
71
+ "view.png"
72
+ ]);
73
+ const DEFAULT_ICON = "user-defined-icon.png";
74
+ const isBuiltinIcon = (name) => {
75
+ return BUILTIN_ICONS.has(name);
76
+ };
77
+ const getImageUrl = (name) => {
78
+ if (!name) {
79
+ return new URL((/* @__PURE__ */ Object.assign({ "./assets/icons/Output2.png": __vite_glob_0_0, "./assets/icons/airbyte.png": __vite_glob_0_1, "./assets/icons/cloud_storage_reader.png": __vite_glob_0_2, "./assets/icons/cloud_storage_writer.png": __vite_glob_0_3, "./assets/icons/cross_join.png": __vite_glob_0_4, "./assets/icons/database_reader.svg": __vite_glob_0_5, "./assets/icons/database_writer.svg": __vite_glob_0_6, "./assets/icons/explore_data.png": __vite_glob_0_7, "./assets/icons/external_source.png": __vite_glob_0_8, "./assets/icons/filter.png": __vite_glob_0_9, "./assets/icons/formula.png": __vite_glob_0_10, "./assets/icons/fuzzy_match.png": __vite_glob_0_11, "./assets/icons/google_sheet.png": __vite_glob_0_12, "./assets/icons/graph_solver.png": __vite_glob_0_13, "./assets/icons/group_by.png": __vite_glob_0_14, "./assets/icons/input_data.png": __vite_glob_0_15, "./assets/icons/join.png": __vite_glob_0_16, "./assets/icons/manual_input.png": __vite_glob_0_17, "./assets/icons/old_join.png": __vite_glob_0_18, "./assets/icons/output.png": __vite_glob_0_19, "./assets/icons/pivot.png": __vite_glob_0_20, "./assets/icons/polars_code.png": __vite_glob_0_21, "./assets/icons/record_count.png": __vite_glob_0_22, "./assets/icons/record_id.png": __vite_glob_0_23, "./assets/icons/sample.png": __vite_glob_0_24, "./assets/icons/select.png": __vite_glob_0_25, "./assets/icons/sort.png": __vite_glob_0_26, "./assets/icons/summarize.png": __vite_glob_0_27, "./assets/icons/text_to_rows.png": __vite_glob_0_28, "./assets/icons/union.png": __vite_glob_0_29, "./assets/icons/unique.png": __vite_glob_0_30, "./assets/icons/unpivot.png": __vite_glob_0_31, "./assets/icons/user-defined-icon.png": __vite_glob_0_32, "./assets/icons/view.png": __vite_glob_0_33 }))[`./assets/icons/${DEFAULT_ICON}`], self.location).href;
80
+ }
81
+ if (isBuiltinIcon(name)) {
82
+ return new URL((/* @__PURE__ */ Object.assign({ "./assets/icons/Output2.png": __vite_glob_0_0, "./assets/icons/airbyte.png": __vite_glob_0_1, "./assets/icons/cloud_storage_reader.png": __vite_glob_0_2, "./assets/icons/cloud_storage_writer.png": __vite_glob_0_3, "./assets/icons/cross_join.png": __vite_glob_0_4, "./assets/icons/database_reader.svg": __vite_glob_0_5, "./assets/icons/database_writer.svg": __vite_glob_0_6, "./assets/icons/explore_data.png": __vite_glob_0_7, "./assets/icons/external_source.png": __vite_glob_0_8, "./assets/icons/filter.png": __vite_glob_0_9, "./assets/icons/formula.png": __vite_glob_0_10, "./assets/icons/fuzzy_match.png": __vite_glob_0_11, "./assets/icons/google_sheet.png": __vite_glob_0_12, "./assets/icons/graph_solver.png": __vite_glob_0_13, "./assets/icons/group_by.png": __vite_glob_0_14, "./assets/icons/input_data.png": __vite_glob_0_15, "./assets/icons/join.png": __vite_glob_0_16, "./assets/icons/manual_input.png": __vite_glob_0_17, "./assets/icons/old_join.png": __vite_glob_0_18, "./assets/icons/output.png": __vite_glob_0_19, "./assets/icons/pivot.png": __vite_glob_0_20, "./assets/icons/polars_code.png": __vite_glob_0_21, "./assets/icons/record_count.png": __vite_glob_0_22, "./assets/icons/record_id.png": __vite_glob_0_23, "./assets/icons/sample.png": __vite_glob_0_24, "./assets/icons/select.png": __vite_glob_0_25, "./assets/icons/sort.png": __vite_glob_0_26, "./assets/icons/summarize.png": __vite_glob_0_27, "./assets/icons/text_to_rows.png": __vite_glob_0_28, "./assets/icons/union.png": __vite_glob_0_29, "./assets/icons/unique.png": __vite_glob_0_30, "./assets/icons/unpivot.png": __vite_glob_0_31, "./assets/icons/user-defined-icon.png": __vite_glob_0_32, "./assets/icons/view.png": __vite_glob_0_33 }))[`./assets/icons/${name}`], self.location).href;
83
+ }
84
+ return `${flowfileCorebaseURL}user_defined_components/icon/${name}`;
85
+ };
86
+ const getDefaultIconUrl = () => {
87
+ return new URL((/* @__PURE__ */ Object.assign({ "./assets/icons/Output2.png": __vite_glob_0_0, "./assets/icons/airbyte.png": __vite_glob_0_1, "./assets/icons/cloud_storage_reader.png": __vite_glob_0_2, "./assets/icons/cloud_storage_writer.png": __vite_glob_0_3, "./assets/icons/cross_join.png": __vite_glob_0_4, "./assets/icons/database_reader.svg": __vite_glob_0_5, "./assets/icons/database_writer.svg": __vite_glob_0_6, "./assets/icons/explore_data.png": __vite_glob_0_7, "./assets/icons/external_source.png": __vite_glob_0_8, "./assets/icons/filter.png": __vite_glob_0_9, "./assets/icons/formula.png": __vite_glob_0_10, "./assets/icons/fuzzy_match.png": __vite_glob_0_11, "./assets/icons/google_sheet.png": __vite_glob_0_12, "./assets/icons/graph_solver.png": __vite_glob_0_13, "./assets/icons/group_by.png": __vite_glob_0_14, "./assets/icons/input_data.png": __vite_glob_0_15, "./assets/icons/join.png": __vite_glob_0_16, "./assets/icons/manual_input.png": __vite_glob_0_17, "./assets/icons/old_join.png": __vite_glob_0_18, "./assets/icons/output.png": __vite_glob_0_19, "./assets/icons/pivot.png": __vite_glob_0_20, "./assets/icons/polars_code.png": __vite_glob_0_21, "./assets/icons/record_count.png": __vite_glob_0_22, "./assets/icons/record_id.png": __vite_glob_0_23, "./assets/icons/sample.png": __vite_glob_0_24, "./assets/icons/select.png": __vite_glob_0_25, "./assets/icons/sort.png": __vite_glob_0_26, "./assets/icons/summarize.png": __vite_glob_0_27, "./assets/icons/text_to_rows.png": __vite_glob_0_28, "./assets/icons/union.png": __vite_glob_0_29, "./assets/icons/unique.png": __vite_glob_0_30, "./assets/icons/unpivot.png": __vite_glob_0_31, "./assets/icons/user-defined-icon.png": __vite_glob_0_32, "./assets/icons/view.png": __vite_glob_0_33 }))[`./assets/icons/${DEFAULT_ICON}`], self.location).href;
88
+ };
89
+ const getCustomIconUrl = (name) => {
90
+ return `${flowfileCorebaseURL}user_defined_components/icon/${name}`;
91
+ };
92
+ const fetchNodes = async () => {
93
+ const response = await axios.get("/node_list");
94
+ const listNodes = response.data;
95
+ return listNodes;
96
+ };
97
+ class Stack {
98
+ /**
99
+ @internal
100
+ */
101
+ constructor(p, stack, state, reducePos, pos, score, buffer, bufferBase, curContext, lookAhead = 0, parent) {
102
+ this.p = p;
103
+ this.stack = stack;
104
+ this.state = state;
105
+ this.reducePos = reducePos;
106
+ this.pos = pos;
107
+ this.score = score;
108
+ this.buffer = buffer;
109
+ this.bufferBase = bufferBase;
110
+ this.curContext = curContext;
111
+ this.lookAhead = lookAhead;
112
+ this.parent = parent;
113
+ }
114
+ /**
115
+ @internal
116
+ */
117
+ toString() {
118
+ return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? "!" + this.score : ""}`;
119
+ }
120
+ // Start an empty stack
121
+ /**
122
+ @internal
123
+ */
124
+ static start(p, state, pos = 0) {
125
+ let cx = p.parser.context;
126
+ return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);
127
+ }
128
+ /**
129
+ The stack's current [context](#lr.ContextTracker) value, if
130
+ any. Its type will depend on the context tracker's type
131
+ parameter, or it will be `null` if there is no context
132
+ tracker.
133
+ */
134
+ get context() {
135
+ return this.curContext ? this.curContext.context : null;
136
+ }
137
+ // Push a state onto the stack, tracking its start position as well
138
+ // as the buffer base at that point.
139
+ /**
140
+ @internal
141
+ */
142
+ pushState(state, start) {
143
+ this.stack.push(this.state, start, this.bufferBase + this.buffer.length);
144
+ this.state = state;
145
+ }
146
+ // Apply a reduce action
147
+ /**
148
+ @internal
149
+ */
150
+ reduce(action) {
151
+ var _a;
152
+ let depth = action >> 19, type = action & 65535;
153
+ let { parser: parser2 } = this.p;
154
+ let lookaheadRecord = this.reducePos < this.pos - 25;
155
+ if (lookaheadRecord)
156
+ this.setLookAhead(this.pos);
157
+ let dPrec = parser2.dynamicPrecedence(type);
158
+ if (dPrec)
159
+ this.score += dPrec;
160
+ if (depth == 0) {
161
+ this.pushState(parser2.getGoto(this.state, type, true), this.reducePos);
162
+ if (type < parser2.minRepeatTerm)
163
+ this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);
164
+ this.reduceContext(type, this.reducePos);
165
+ return;
166
+ }
167
+ let base = this.stack.length - (depth - 1) * 3 - (action & 262144 ? 6 : 0);
168
+ let start = base ? this.stack[base - 2] : this.p.ranges[0].from, size = this.reducePos - start;
169
+ if (size >= 2e3 && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {
170
+ if (start == this.p.lastBigReductionStart) {
171
+ this.p.bigReductionCount++;
172
+ this.p.lastBigReductionSize = size;
173
+ } else if (this.p.lastBigReductionSize < size) {
174
+ this.p.bigReductionCount = 1;
175
+ this.p.lastBigReductionStart = start;
176
+ this.p.lastBigReductionSize = size;
177
+ }
178
+ }
179
+ let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;
180
+ if (type < parser2.minRepeatTerm || action & 131072) {
181
+ let pos = parser2.stateFlag(
182
+ this.state,
183
+ 1
184
+ /* StateFlag.Skipped */
185
+ ) ? this.pos : this.reducePos;
186
+ this.storeNode(type, start, pos, count + 4, true);
187
+ }
188
+ if (action & 262144) {
189
+ this.state = this.stack[base];
190
+ } else {
191
+ let baseStateID = this.stack[base - 3];
192
+ this.state = parser2.getGoto(baseStateID, type, true);
193
+ }
194
+ while (this.stack.length > base)
195
+ this.stack.pop();
196
+ this.reduceContext(type, start);
197
+ }
198
+ // Shift a value into the buffer
199
+ /**
200
+ @internal
201
+ */
202
+ storeNode(term, start, end, size = 4, mustSink = false) {
203
+ if (term == 0 && (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {
204
+ let cur = this, top = this.buffer.length;
205
+ if (top == 0 && cur.parent) {
206
+ top = cur.bufferBase - cur.parent.bufferBase;
207
+ cur = cur.parent;
208
+ }
209
+ if (top > 0 && cur.buffer[top - 4] == 0 && cur.buffer[top - 1] > -1) {
210
+ if (start == end)
211
+ return;
212
+ if (cur.buffer[top - 2] >= start) {
213
+ cur.buffer[top - 2] = end;
214
+ return;
215
+ }
216
+ }
217
+ }
218
+ if (!mustSink || this.pos == end) {
219
+ this.buffer.push(term, start, end, size);
220
+ } else {
221
+ let index = this.buffer.length;
222
+ if (index > 0 && this.buffer[index - 4] != 0) {
223
+ let mustMove = false;
224
+ for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {
225
+ if (this.buffer[scan - 1] >= 0) {
226
+ mustMove = true;
227
+ break;
228
+ }
229
+ }
230
+ if (mustMove)
231
+ while (index > 0 && this.buffer[index - 2] > end) {
232
+ this.buffer[index] = this.buffer[index - 4];
233
+ this.buffer[index + 1] = this.buffer[index - 3];
234
+ this.buffer[index + 2] = this.buffer[index - 2];
235
+ this.buffer[index + 3] = this.buffer[index - 1];
236
+ index -= 4;
237
+ if (size > 4)
238
+ size -= 4;
239
+ }
240
+ }
241
+ this.buffer[index] = term;
242
+ this.buffer[index + 1] = start;
243
+ this.buffer[index + 2] = end;
244
+ this.buffer[index + 3] = size;
245
+ }
246
+ }
247
+ // Apply a shift action
248
+ /**
249
+ @internal
250
+ */
251
+ shift(action, type, start, end) {
252
+ if (action & 131072) {
253
+ this.pushState(action & 65535, this.pos);
254
+ } else if ((action & 262144) == 0) {
255
+ let nextState = action, { parser: parser2 } = this.p;
256
+ if (end > this.pos || type <= parser2.maxNode) {
257
+ this.pos = end;
258
+ if (!parser2.stateFlag(
259
+ nextState,
260
+ 1
261
+ /* StateFlag.Skipped */
262
+ ))
263
+ this.reducePos = end;
264
+ }
265
+ this.pushState(nextState, start);
266
+ this.shiftContext(type, start);
267
+ if (type <= parser2.maxNode)
268
+ this.buffer.push(type, start, end, 4);
269
+ } else {
270
+ this.pos = end;
271
+ this.shiftContext(type, start);
272
+ if (type <= this.p.parser.maxNode)
273
+ this.buffer.push(type, start, end, 4);
274
+ }
275
+ }
276
+ // Apply an action
277
+ /**
278
+ @internal
279
+ */
280
+ apply(action, next, nextStart, nextEnd) {
281
+ if (action & 65536)
282
+ this.reduce(action);
283
+ else
284
+ this.shift(action, next, nextStart, nextEnd);
285
+ }
286
+ // Add a prebuilt (reused) node into the buffer.
287
+ /**
288
+ @internal
289
+ */
290
+ useNode(value, next) {
291
+ let index = this.p.reused.length - 1;
292
+ if (index < 0 || this.p.reused[index] != value) {
293
+ this.p.reused.push(value);
294
+ index++;
295
+ }
296
+ let start = this.pos;
297
+ this.reducePos = this.pos = start + value.length;
298
+ this.pushState(next, start);
299
+ this.buffer.push(
300
+ index,
301
+ start,
302
+ this.reducePos,
303
+ -1
304
+ /* size == -1 means this is a reused value */
305
+ );
306
+ if (this.curContext)
307
+ this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));
308
+ }
309
+ // Split the stack. Due to the buffer sharing and the fact
310
+ // that `this.stack` tends to stay quite shallow, this isn't very
311
+ // expensive.
312
+ /**
313
+ @internal
314
+ */
315
+ split() {
316
+ let parent = this;
317
+ let off = parent.buffer.length;
318
+ while (off > 0 && parent.buffer[off - 2] > parent.reducePos)
319
+ off -= 4;
320
+ let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;
321
+ while (parent && base == parent.bufferBase)
322
+ parent = parent.parent;
323
+ return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);
324
+ }
325
+ // Try to recover from an error by 'deleting' (ignoring) one token.
326
+ /**
327
+ @internal
328
+ */
329
+ recoverByDelete(next, nextEnd) {
330
+ let isNode = next <= this.p.parser.maxNode;
331
+ if (isNode)
332
+ this.storeNode(next, this.pos, nextEnd, 4);
333
+ this.storeNode(0, this.pos, nextEnd, isNode ? 8 : 4);
334
+ this.pos = this.reducePos = nextEnd;
335
+ this.score -= 190;
336
+ }
337
+ /**
338
+ Check if the given term would be able to be shifted (optionally
339
+ after some reductions) on this stack. This can be useful for
340
+ external tokenizers that want to make sure they only provide a
341
+ given token when it applies.
342
+ */
343
+ canShift(term) {
344
+ for (let sim = new SimulatedStack(this); ; ) {
345
+ let action = this.p.parser.stateSlot(
346
+ sim.state,
347
+ 4
348
+ /* ParseState.DefaultReduce */
349
+ ) || this.p.parser.hasAction(sim.state, term);
350
+ if (action == 0)
351
+ return false;
352
+ if ((action & 65536) == 0)
353
+ return true;
354
+ sim.reduce(action);
355
+ }
356
+ }
357
+ // Apply up to Recover.MaxNext recovery actions that conceptually
358
+ // inserts some missing token or rule.
359
+ /**
360
+ @internal
361
+ */
362
+ recoverByInsert(next) {
363
+ if (this.stack.length >= 300)
364
+ return [];
365
+ let nextStates = this.p.parser.nextStates(this.state);
366
+ if (nextStates.length > 4 << 1 || this.stack.length >= 120) {
367
+ let best = [];
368
+ for (let i = 0, s; i < nextStates.length; i += 2) {
369
+ if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))
370
+ best.push(nextStates[i], s);
371
+ }
372
+ if (this.stack.length < 120)
373
+ for (let i = 0; best.length < 4 << 1 && i < nextStates.length; i += 2) {
374
+ let s = nextStates[i + 1];
375
+ if (!best.some((v, i2) => i2 & 1 && v == s))
376
+ best.push(nextStates[i], s);
377
+ }
378
+ nextStates = best;
379
+ }
380
+ let result = [];
381
+ for (let i = 0; i < nextStates.length && result.length < 4; i += 2) {
382
+ let s = nextStates[i + 1];
383
+ if (s == this.state)
384
+ continue;
385
+ let stack = this.split();
386
+ stack.pushState(s, this.pos);
387
+ stack.storeNode(0, stack.pos, stack.pos, 4, true);
388
+ stack.shiftContext(nextStates[i], this.pos);
389
+ stack.reducePos = this.pos;
390
+ stack.score -= 200;
391
+ result.push(stack);
392
+ }
393
+ return result;
394
+ }
395
+ // Force a reduce, if possible. Return false if that can't
396
+ // be done.
397
+ /**
398
+ @internal
399
+ */
400
+ forceReduce() {
401
+ let { parser: parser2 } = this.p;
402
+ let reduce = parser2.stateSlot(
403
+ this.state,
404
+ 5
405
+ /* ParseState.ForcedReduce */
406
+ );
407
+ if ((reduce & 65536) == 0)
408
+ return false;
409
+ if (!parser2.validAction(this.state, reduce)) {
410
+ let depth = reduce >> 19, term = reduce & 65535;
411
+ let target = this.stack.length - depth * 3;
412
+ if (target < 0 || parser2.getGoto(this.stack[target], term, false) < 0) {
413
+ let backup = this.findForcedReduction();
414
+ if (backup == null)
415
+ return false;
416
+ reduce = backup;
417
+ }
418
+ this.storeNode(0, this.pos, this.pos, 4, true);
419
+ this.score -= 100;
420
+ }
421
+ this.reducePos = this.pos;
422
+ this.reduce(reduce);
423
+ return true;
424
+ }
425
+ /**
426
+ Try to scan through the automaton to find some kind of reduction
427
+ that can be applied. Used when the regular ForcedReduce field
428
+ isn't a valid action. @internal
429
+ */
430
+ findForcedReduction() {
431
+ let { parser: parser2 } = this.p, seen = [];
432
+ let explore = (state, depth) => {
433
+ if (seen.includes(state))
434
+ return;
435
+ seen.push(state);
436
+ return parser2.allActions(state, (action) => {
437
+ if (action & (262144 | 131072))
438
+ ;
439
+ else if (action & 65536) {
440
+ let rDepth = (action >> 19) - depth;
441
+ if (rDepth > 1) {
442
+ let term = action & 65535, target = this.stack.length - rDepth * 3;
443
+ if (target >= 0 && parser2.getGoto(this.stack[target], term, false) >= 0)
444
+ return rDepth << 19 | 65536 | term;
445
+ }
446
+ } else {
447
+ let found = explore(action, depth + 1);
448
+ if (found != null)
449
+ return found;
450
+ }
451
+ });
452
+ };
453
+ return explore(this.state, 0);
454
+ }
455
+ /**
456
+ @internal
457
+ */
458
+ forceAll() {
459
+ while (!this.p.parser.stateFlag(
460
+ this.state,
461
+ 2
462
+ /* StateFlag.Accepting */
463
+ )) {
464
+ if (!this.forceReduce()) {
465
+ this.storeNode(0, this.pos, this.pos, 4, true);
466
+ break;
467
+ }
468
+ }
469
+ return this;
470
+ }
471
+ /**
472
+ Check whether this state has no further actions (assumed to be a direct descendant of the
473
+ top state, since any other states must be able to continue
474
+ somehow). @internal
475
+ */
476
+ get deadEnd() {
477
+ if (this.stack.length != 3)
478
+ return false;
479
+ let { parser: parser2 } = this.p;
480
+ return parser2.data[parser2.stateSlot(
481
+ this.state,
482
+ 1
483
+ /* ParseState.Actions */
484
+ )] == 65535 && !parser2.stateSlot(
485
+ this.state,
486
+ 4
487
+ /* ParseState.DefaultReduce */
488
+ );
489
+ }
490
+ /**
491
+ Restart the stack (put it back in its start state). Only safe
492
+ when this.stack.length == 3 (state is directly below the top
493
+ state). @internal
494
+ */
495
+ restart() {
496
+ this.storeNode(0, this.pos, this.pos, 4, true);
497
+ this.state = this.stack[0];
498
+ this.stack.length = 0;
499
+ }
500
+ /**
501
+ @internal
502
+ */
503
+ sameState(other) {
504
+ if (this.state != other.state || this.stack.length != other.stack.length)
505
+ return false;
506
+ for (let i = 0; i < this.stack.length; i += 3)
507
+ if (this.stack[i] != other.stack[i])
508
+ return false;
509
+ return true;
510
+ }
511
+ /**
512
+ Get the parser used by this stack.
513
+ */
514
+ get parser() {
515
+ return this.p.parser;
516
+ }
517
+ /**
518
+ Test whether a given dialect (by numeric ID, as exported from
519
+ the terms file) is enabled.
520
+ */
521
+ dialectEnabled(dialectID) {
522
+ return this.p.parser.dialect.flags[dialectID];
523
+ }
524
+ shiftContext(term, start) {
525
+ if (this.curContext)
526
+ this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));
527
+ }
528
+ reduceContext(term, start) {
529
+ if (this.curContext)
530
+ this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));
531
+ }
532
+ /**
533
+ @internal
534
+ */
535
+ emitContext() {
536
+ let last = this.buffer.length - 1;
537
+ if (last < 0 || this.buffer[last] != -3)
538
+ this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);
539
+ }
540
+ /**
541
+ @internal
542
+ */
543
+ emitLookAhead() {
544
+ let last = this.buffer.length - 1;
545
+ if (last < 0 || this.buffer[last] != -4)
546
+ this.buffer.push(this.lookAhead, this.pos, this.pos, -4);
547
+ }
548
+ updateContext(context) {
549
+ if (context != this.curContext.context) {
550
+ let newCx = new StackContext(this.curContext.tracker, context);
551
+ if (newCx.hash != this.curContext.hash)
552
+ this.emitContext();
553
+ this.curContext = newCx;
554
+ }
555
+ }
556
+ /**
557
+ @internal
558
+ */
559
+ setLookAhead(lookAhead) {
560
+ if (lookAhead > this.lookAhead) {
561
+ this.emitLookAhead();
562
+ this.lookAhead = lookAhead;
563
+ }
564
+ }
565
+ /**
566
+ @internal
567
+ */
568
+ close() {
569
+ if (this.curContext && this.curContext.tracker.strict)
570
+ this.emitContext();
571
+ if (this.lookAhead > 0)
572
+ this.emitLookAhead();
573
+ }
574
+ }
575
+ class StackContext {
576
+ constructor(tracker, context) {
577
+ this.tracker = tracker;
578
+ this.context = context;
579
+ this.hash = tracker.strict ? tracker.hash(context) : 0;
580
+ }
581
+ }
582
+ class SimulatedStack {
583
+ constructor(start) {
584
+ this.start = start;
585
+ this.state = start.state;
586
+ this.stack = start.stack;
587
+ this.base = this.stack.length;
588
+ }
589
+ reduce(action) {
590
+ let term = action & 65535, depth = action >> 19;
591
+ if (depth == 0) {
592
+ if (this.stack == this.start.stack)
593
+ this.stack = this.stack.slice();
594
+ this.stack.push(this.state, 0, 0);
595
+ this.base += 3;
596
+ } else {
597
+ this.base -= (depth - 1) * 3;
598
+ }
599
+ let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);
600
+ this.state = goto;
601
+ }
602
+ }
603
+ class StackBufferCursor {
604
+ constructor(stack, pos, index) {
605
+ this.stack = stack;
606
+ this.pos = pos;
607
+ this.index = index;
608
+ this.buffer = stack.buffer;
609
+ if (this.index == 0)
610
+ this.maybeNext();
611
+ }
612
+ static create(stack, pos = stack.bufferBase + stack.buffer.length) {
613
+ return new StackBufferCursor(stack, pos, pos - stack.bufferBase);
614
+ }
615
+ maybeNext() {
616
+ let next = this.stack.parent;
617
+ if (next != null) {
618
+ this.index = this.stack.bufferBase - next.bufferBase;
619
+ this.stack = next;
620
+ this.buffer = next.buffer;
621
+ }
622
+ }
623
+ get id() {
624
+ return this.buffer[this.index - 4];
625
+ }
626
+ get start() {
627
+ return this.buffer[this.index - 3];
628
+ }
629
+ get end() {
630
+ return this.buffer[this.index - 2];
631
+ }
632
+ get size() {
633
+ return this.buffer[this.index - 1];
634
+ }
635
+ next() {
636
+ this.index -= 4;
637
+ this.pos -= 4;
638
+ if (this.index == 0)
639
+ this.maybeNext();
640
+ }
641
+ fork() {
642
+ return new StackBufferCursor(this.stack, this.pos, this.index);
643
+ }
644
+ }
645
+ function decodeArray(input, Type = Uint16Array) {
646
+ if (typeof input != "string")
647
+ return input;
648
+ let array = null;
649
+ for (let pos = 0, out = 0; pos < input.length; ) {
650
+ let value = 0;
651
+ for (; ; ) {
652
+ let next = input.charCodeAt(pos++), stop = false;
653
+ if (next == 126) {
654
+ value = 65535;
655
+ break;
656
+ }
657
+ if (next >= 92)
658
+ next--;
659
+ if (next >= 34)
660
+ next--;
661
+ let digit = next - 32;
662
+ if (digit >= 46) {
663
+ digit -= 46;
664
+ stop = true;
665
+ }
666
+ value += digit;
667
+ if (stop)
668
+ break;
669
+ value *= 46;
670
+ }
671
+ if (array)
672
+ array[out++] = value;
673
+ else
674
+ array = new Type(value);
675
+ }
676
+ return array;
677
+ }
678
+ class CachedToken {
679
+ constructor() {
680
+ this.start = -1;
681
+ this.value = -1;
682
+ this.end = -1;
683
+ this.extended = -1;
684
+ this.lookAhead = 0;
685
+ this.mask = 0;
686
+ this.context = 0;
687
+ }
688
+ }
689
+ const nullToken = new CachedToken();
690
+ class InputStream {
691
+ /**
692
+ @internal
693
+ */
694
+ constructor(input, ranges) {
695
+ this.input = input;
696
+ this.ranges = ranges;
697
+ this.chunk = "";
698
+ this.chunkOff = 0;
699
+ this.chunk2 = "";
700
+ this.chunk2Pos = 0;
701
+ this.next = -1;
702
+ this.token = nullToken;
703
+ this.rangeIndex = 0;
704
+ this.pos = this.chunkPos = ranges[0].from;
705
+ this.range = ranges[0];
706
+ this.end = ranges[ranges.length - 1].to;
707
+ this.readNext();
708
+ }
709
+ /**
710
+ @internal
711
+ */
712
+ resolveOffset(offset, assoc) {
713
+ let range = this.range, index = this.rangeIndex;
714
+ let pos = this.pos + offset;
715
+ while (pos < range.from) {
716
+ if (!index)
717
+ return null;
718
+ let next = this.ranges[--index];
719
+ pos -= range.from - next.to;
720
+ range = next;
721
+ }
722
+ while (assoc < 0 ? pos > range.to : pos >= range.to) {
723
+ if (index == this.ranges.length - 1)
724
+ return null;
725
+ let next = this.ranges[++index];
726
+ pos += next.from - range.to;
727
+ range = next;
728
+ }
729
+ return pos;
730
+ }
731
+ /**
732
+ @internal
733
+ */
734
+ clipPos(pos) {
735
+ if (pos >= this.range.from && pos < this.range.to)
736
+ return pos;
737
+ for (let range of this.ranges)
738
+ if (range.to > pos)
739
+ return Math.max(pos, range.from);
740
+ return this.end;
741
+ }
742
+ /**
743
+ Look at a code unit near the stream position. `.peek(0)` equals
744
+ `.next`, `.peek(-1)` gives you the previous character, and so
745
+ on.
746
+
747
+ Note that looking around during tokenizing creates dependencies
748
+ on potentially far-away content, which may reduce the
749
+ effectiveness incremental parsing—when looking forward—or even
750
+ cause invalid reparses when looking backward more than 25 code
751
+ units, since the library does not track lookbehind.
752
+ */
753
+ peek(offset) {
754
+ let idx = this.chunkOff + offset, pos, result;
755
+ if (idx >= 0 && idx < this.chunk.length) {
756
+ pos = this.pos + offset;
757
+ result = this.chunk.charCodeAt(idx);
758
+ } else {
759
+ let resolved = this.resolveOffset(offset, 1);
760
+ if (resolved == null)
761
+ return -1;
762
+ pos = resolved;
763
+ if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {
764
+ result = this.chunk2.charCodeAt(pos - this.chunk2Pos);
765
+ } else {
766
+ let i = this.rangeIndex, range = this.range;
767
+ while (range.to <= pos)
768
+ range = this.ranges[++i];
769
+ this.chunk2 = this.input.chunk(this.chunk2Pos = pos);
770
+ if (pos + this.chunk2.length > range.to)
771
+ this.chunk2 = this.chunk2.slice(0, range.to - pos);
772
+ result = this.chunk2.charCodeAt(0);
773
+ }
774
+ }
775
+ if (pos >= this.token.lookAhead)
776
+ this.token.lookAhead = pos + 1;
777
+ return result;
778
+ }
779
+ /**
780
+ Accept a token. By default, the end of the token is set to the
781
+ current stream position, but you can pass an offset (relative to
782
+ the stream position) to change that.
783
+ */
784
+ acceptToken(token, endOffset = 0) {
785
+ let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;
786
+ if (end == null || end < this.token.start)
787
+ throw new RangeError("Token end out of bounds");
788
+ this.token.value = token;
789
+ this.token.end = end;
790
+ }
791
+ /**
792
+ Accept a token ending at a specific given position.
793
+ */
794
+ acceptTokenTo(token, endPos) {
795
+ this.token.value = token;
796
+ this.token.end = endPos;
797
+ }
798
+ getChunk() {
799
+ if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {
800
+ let { chunk, chunkPos } = this;
801
+ this.chunk = this.chunk2;
802
+ this.chunkPos = this.chunk2Pos;
803
+ this.chunk2 = chunk;
804
+ this.chunk2Pos = chunkPos;
805
+ this.chunkOff = this.pos - this.chunkPos;
806
+ } else {
807
+ this.chunk2 = this.chunk;
808
+ this.chunk2Pos = this.chunkPos;
809
+ let nextChunk = this.input.chunk(this.pos);
810
+ let end = this.pos + nextChunk.length;
811
+ this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;
812
+ this.chunkPos = this.pos;
813
+ this.chunkOff = 0;
814
+ }
815
+ }
816
+ readNext() {
817
+ if (this.chunkOff >= this.chunk.length) {
818
+ this.getChunk();
819
+ if (this.chunkOff == this.chunk.length)
820
+ return this.next = -1;
821
+ }
822
+ return this.next = this.chunk.charCodeAt(this.chunkOff);
823
+ }
824
+ /**
825
+ Move the stream forward N (defaults to 1) code units. Returns
826
+ the new value of [`next`](#lr.InputStream.next).
827
+ */
828
+ advance(n = 1) {
829
+ this.chunkOff += n;
830
+ while (this.pos + n >= this.range.to) {
831
+ if (this.rangeIndex == this.ranges.length - 1)
832
+ return this.setDone();
833
+ n -= this.range.to - this.pos;
834
+ this.range = this.ranges[++this.rangeIndex];
835
+ this.pos = this.range.from;
836
+ }
837
+ this.pos += n;
838
+ if (this.pos >= this.token.lookAhead)
839
+ this.token.lookAhead = this.pos + 1;
840
+ return this.readNext();
841
+ }
842
+ setDone() {
843
+ this.pos = this.chunkPos = this.end;
844
+ this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];
845
+ this.chunk = "";
846
+ return this.next = -1;
847
+ }
848
+ /**
849
+ @internal
850
+ */
851
+ reset(pos, token) {
852
+ if (token) {
853
+ this.token = token;
854
+ token.start = pos;
855
+ token.lookAhead = pos + 1;
856
+ token.value = token.extended = -1;
857
+ } else {
858
+ this.token = nullToken;
859
+ }
860
+ if (this.pos != pos) {
861
+ this.pos = pos;
862
+ if (pos == this.end) {
863
+ this.setDone();
864
+ return this;
865
+ }
866
+ while (pos < this.range.from)
867
+ this.range = this.ranges[--this.rangeIndex];
868
+ while (pos >= this.range.to)
869
+ this.range = this.ranges[++this.rangeIndex];
870
+ if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {
871
+ this.chunkOff = pos - this.chunkPos;
872
+ } else {
873
+ this.chunk = "";
874
+ this.chunkOff = 0;
875
+ }
876
+ this.readNext();
877
+ }
878
+ return this;
879
+ }
880
+ /**
881
+ @internal
882
+ */
883
+ read(from, to) {
884
+ if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)
885
+ return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);
886
+ if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)
887
+ return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);
888
+ if (from >= this.range.from && to <= this.range.to)
889
+ return this.input.read(from, to);
890
+ let result = "";
891
+ for (let r of this.ranges) {
892
+ if (r.from >= to)
893
+ break;
894
+ if (r.to > from)
895
+ result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));
896
+ }
897
+ return result;
898
+ }
899
+ }
900
+ class TokenGroup {
901
+ constructor(data, id2) {
902
+ this.data = data;
903
+ this.id = id2;
904
+ }
905
+ token(input, stack) {
906
+ let { parser: parser2 } = stack.p;
907
+ readToken(this.data, input, stack, this.id, parser2.data, parser2.tokenPrecTable);
908
+ }
909
+ }
910
+ TokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;
911
+ TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;
912
+ class ExternalTokenizer {
913
+ /**
914
+ Create a tokenizer. The first argument is the function that,
915
+ given an input stream, scans for the types of tokens it
916
+ recognizes at the stream's position, and calls
917
+ [`acceptToken`](#lr.InputStream.acceptToken) when it finds
918
+ one.
919
+ */
920
+ constructor(token, options = {}) {
921
+ this.token = token;
922
+ this.contextual = !!options.contextual;
923
+ this.fallback = !!options.fallback;
924
+ this.extend = !!options.extend;
925
+ }
926
+ }
927
+ function readToken(data, input, stack, group, precTable, precOffset) {
928
+ let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;
929
+ scan:
930
+ for (; ; ) {
931
+ if ((groupMask & data[state]) == 0)
932
+ break;
933
+ let accEnd = data[state + 1];
934
+ for (let i = state + 3; i < accEnd; i += 2)
935
+ if ((data[i + 1] & groupMask) > 0) {
936
+ let term = data[i];
937
+ if (dialect.allows(term) && (input.token.value == -1 || input.token.value == term || overrides(term, input.token.value, precTable, precOffset))) {
938
+ input.acceptToken(term);
939
+ break;
940
+ }
941
+ }
942
+ let next = input.next, low = 0, high = data[state + 2];
943
+ if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535) {
944
+ state = data[accEnd + high * 3 - 1];
945
+ continue scan;
946
+ }
947
+ for (; low < high; ) {
948
+ let mid = low + high >> 1;
949
+ let index = accEnd + mid + (mid << 1);
950
+ let from = data[index], to = data[index + 1] || 65536;
951
+ if (next < from)
952
+ high = mid;
953
+ else if (next >= to)
954
+ low = mid + 1;
955
+ else {
956
+ state = data[index + 2];
957
+ input.advance();
958
+ continue scan;
959
+ }
960
+ }
961
+ break;
962
+ }
963
+ }
964
+ function findOffset(data, start, term) {
965
+ for (let i = start, next; (next = data[i]) != 65535; i++)
966
+ if (next == term)
967
+ return i - start;
968
+ return -1;
969
+ }
970
+ function overrides(token, prev, tableData, tableOffset) {
971
+ let iPrev = findOffset(tableData, tableOffset, prev);
972
+ return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;
973
+ }
974
+ const verbose = typeof process != "undefined" && process.env && /\bparse\b/.test({}.LOG);
975
+ let stackIDs = null;
976
+ function cutAt(tree, pos, side) {
977
+ let cursor2 = tree.cursor(IterMode.IncludeAnonymous);
978
+ cursor2.moveTo(pos);
979
+ for (; ; ) {
980
+ if (!(side < 0 ? cursor2.childBefore(pos) : cursor2.childAfter(pos)))
981
+ for (; ; ) {
982
+ if ((side < 0 ? cursor2.to < pos : cursor2.from > pos) && !cursor2.type.isError)
983
+ return side < 0 ? Math.max(0, Math.min(
984
+ cursor2.to - 1,
985
+ pos - 25
986
+ /* Lookahead.Margin */
987
+ )) : Math.min(tree.length, Math.max(
988
+ cursor2.from + 1,
989
+ pos + 25
990
+ /* Lookahead.Margin */
991
+ ));
992
+ if (side < 0 ? cursor2.prevSibling() : cursor2.nextSibling())
993
+ break;
994
+ if (!cursor2.parent())
995
+ return side < 0 ? 0 : tree.length;
996
+ }
997
+ }
998
+ }
999
+ class FragmentCursor {
1000
+ constructor(fragments, nodeSet) {
1001
+ this.fragments = fragments;
1002
+ this.nodeSet = nodeSet;
1003
+ this.i = 0;
1004
+ this.fragment = null;
1005
+ this.safeFrom = -1;
1006
+ this.safeTo = -1;
1007
+ this.trees = [];
1008
+ this.start = [];
1009
+ this.index = [];
1010
+ this.nextFragment();
1011
+ }
1012
+ nextFragment() {
1013
+ let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];
1014
+ if (fr) {
1015
+ this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;
1016
+ this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;
1017
+ while (this.trees.length) {
1018
+ this.trees.pop();
1019
+ this.start.pop();
1020
+ this.index.pop();
1021
+ }
1022
+ this.trees.push(fr.tree);
1023
+ this.start.push(-fr.offset);
1024
+ this.index.push(0);
1025
+ this.nextStart = this.safeFrom;
1026
+ } else {
1027
+ this.nextStart = 1e9;
1028
+ }
1029
+ }
1030
+ // `pos` must be >= any previously given `pos` for this cursor
1031
+ nodeAt(pos) {
1032
+ if (pos < this.nextStart)
1033
+ return null;
1034
+ while (this.fragment && this.safeTo <= pos)
1035
+ this.nextFragment();
1036
+ if (!this.fragment)
1037
+ return null;
1038
+ for (; ; ) {
1039
+ let last = this.trees.length - 1;
1040
+ if (last < 0) {
1041
+ this.nextFragment();
1042
+ return null;
1043
+ }
1044
+ let top = this.trees[last], index = this.index[last];
1045
+ if (index == top.children.length) {
1046
+ this.trees.pop();
1047
+ this.start.pop();
1048
+ this.index.pop();
1049
+ continue;
1050
+ }
1051
+ let next = top.children[index];
1052
+ let start = this.start[last] + top.positions[index];
1053
+ if (start > pos) {
1054
+ this.nextStart = start;
1055
+ return null;
1056
+ }
1057
+ if (next instanceof Tree) {
1058
+ if (start == pos) {
1059
+ if (start < this.safeFrom)
1060
+ return null;
1061
+ let end = start + next.length;
1062
+ if (end <= this.safeTo) {
1063
+ let lookAhead = next.prop(NodeProp.lookAhead);
1064
+ if (!lookAhead || end + lookAhead < this.fragment.to)
1065
+ return next;
1066
+ }
1067
+ }
1068
+ this.index[last]++;
1069
+ if (start + next.length >= Math.max(this.safeFrom, pos)) {
1070
+ this.trees.push(next);
1071
+ this.start.push(start);
1072
+ this.index.push(0);
1073
+ }
1074
+ } else {
1075
+ this.index[last]++;
1076
+ this.nextStart = start + next.length;
1077
+ }
1078
+ }
1079
+ }
1080
+ }
1081
+ class TokenCache {
1082
+ constructor(parser2, stream) {
1083
+ this.stream = stream;
1084
+ this.tokens = [];
1085
+ this.mainToken = null;
1086
+ this.actions = [];
1087
+ this.tokens = parser2.tokenizers.map((_) => new CachedToken());
1088
+ }
1089
+ getActions(stack) {
1090
+ let actionIndex = 0;
1091
+ let main = null;
1092
+ let { parser: parser2 } = stack.p, { tokenizers } = parser2;
1093
+ let mask = parser2.stateSlot(
1094
+ stack.state,
1095
+ 3
1096
+ /* ParseState.TokenizerMask */
1097
+ );
1098
+ let context = stack.curContext ? stack.curContext.hash : 0;
1099
+ let lookAhead = 0;
1100
+ for (let i = 0; i < tokenizers.length; i++) {
1101
+ if ((1 << i & mask) == 0)
1102
+ continue;
1103
+ let tokenizer = tokenizers[i], token = this.tokens[i];
1104
+ if (main && !tokenizer.fallback)
1105
+ continue;
1106
+ if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {
1107
+ this.updateCachedToken(token, tokenizer, stack);
1108
+ token.mask = mask;
1109
+ token.context = context;
1110
+ }
1111
+ if (token.lookAhead > token.end + 25)
1112
+ lookAhead = Math.max(token.lookAhead, lookAhead);
1113
+ if (token.value != 0) {
1114
+ let startIndex = actionIndex;
1115
+ if (token.extended > -1)
1116
+ actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);
1117
+ actionIndex = this.addActions(stack, token.value, token.end, actionIndex);
1118
+ if (!tokenizer.extend) {
1119
+ main = token;
1120
+ if (actionIndex > startIndex)
1121
+ break;
1122
+ }
1123
+ }
1124
+ }
1125
+ while (this.actions.length > actionIndex)
1126
+ this.actions.pop();
1127
+ if (lookAhead)
1128
+ stack.setLookAhead(lookAhead);
1129
+ if (!main && stack.pos == this.stream.end) {
1130
+ main = new CachedToken();
1131
+ main.value = stack.p.parser.eofTerm;
1132
+ main.start = main.end = stack.pos;
1133
+ actionIndex = this.addActions(stack, main.value, main.end, actionIndex);
1134
+ }
1135
+ this.mainToken = main;
1136
+ return this.actions;
1137
+ }
1138
+ getMainToken(stack) {
1139
+ if (this.mainToken)
1140
+ return this.mainToken;
1141
+ let main = new CachedToken(), { pos, p } = stack;
1142
+ main.start = pos;
1143
+ main.end = Math.min(pos + 1, p.stream.end);
1144
+ main.value = pos == p.stream.end ? p.parser.eofTerm : 0;
1145
+ return main;
1146
+ }
1147
+ updateCachedToken(token, tokenizer, stack) {
1148
+ let start = this.stream.clipPos(stack.pos);
1149
+ tokenizer.token(this.stream.reset(start, token), stack);
1150
+ if (token.value > -1) {
1151
+ let { parser: parser2 } = stack.p;
1152
+ for (let i = 0; i < parser2.specialized.length; i++)
1153
+ if (parser2.specialized[i] == token.value) {
1154
+ let result = parser2.specializers[i](this.stream.read(token.start, token.end), stack);
1155
+ if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {
1156
+ if ((result & 1) == 0)
1157
+ token.value = result >> 1;
1158
+ else
1159
+ token.extended = result >> 1;
1160
+ break;
1161
+ }
1162
+ }
1163
+ } else {
1164
+ token.value = 0;
1165
+ token.end = this.stream.clipPos(start + 1);
1166
+ }
1167
+ }
1168
+ putAction(action, token, end, index) {
1169
+ for (let i = 0; i < index; i += 3)
1170
+ if (this.actions[i] == action)
1171
+ return index;
1172
+ this.actions[index++] = action;
1173
+ this.actions[index++] = token;
1174
+ this.actions[index++] = end;
1175
+ return index;
1176
+ }
1177
+ addActions(stack, token, end, index) {
1178
+ let { state } = stack, { parser: parser2 } = stack.p, { data } = parser2;
1179
+ for (let set = 0; set < 2; set++) {
1180
+ for (let i = parser2.stateSlot(
1181
+ state,
1182
+ set ? 2 : 1
1183
+ /* ParseState.Actions */
1184
+ ); ; i += 3) {
1185
+ if (data[i] == 65535) {
1186
+ if (data[i + 1] == 1) {
1187
+ i = pair(data, i + 2);
1188
+ } else {
1189
+ if (index == 0 && data[i + 1] == 2)
1190
+ index = this.putAction(pair(data, i + 2), token, end, index);
1191
+ break;
1192
+ }
1193
+ }
1194
+ if (data[i] == token)
1195
+ index = this.putAction(pair(data, i + 1), token, end, index);
1196
+ }
1197
+ }
1198
+ return index;
1199
+ }
1200
+ }
1201
+ class Parse {
1202
+ constructor(parser2, input, fragments, ranges) {
1203
+ this.parser = parser2;
1204
+ this.input = input;
1205
+ this.ranges = ranges;
1206
+ this.recovering = 0;
1207
+ this.nextStackID = 9812;
1208
+ this.minStackPos = 0;
1209
+ this.reused = [];
1210
+ this.stoppedAt = null;
1211
+ this.lastBigReductionStart = -1;
1212
+ this.lastBigReductionSize = 0;
1213
+ this.bigReductionCount = 0;
1214
+ this.stream = new InputStream(input, ranges);
1215
+ this.tokens = new TokenCache(parser2, this.stream);
1216
+ this.topTerm = parser2.top[1];
1217
+ let { from } = ranges[0];
1218
+ this.stacks = [Stack.start(this, parser2.top[0], from)];
1219
+ this.fragments = fragments.length && this.stream.end - from > parser2.bufferLength * 4 ? new FragmentCursor(fragments, parser2.nodeSet) : null;
1220
+ }
1221
+ get parsedPos() {
1222
+ return this.minStackPos;
1223
+ }
1224
+ // Move the parser forward. This will process all parse stacks at
1225
+ // `this.pos` and try to advance them to a further position. If no
1226
+ // stack for such a position is found, it'll start error-recovery.
1227
+ //
1228
+ // When the parse is finished, this will return a syntax tree. When
1229
+ // not, it returns `null`.
1230
+ advance() {
1231
+ let stacks = this.stacks, pos = this.minStackPos;
1232
+ let newStacks = this.stacks = [];
1233
+ let stopped, stoppedTokens;
1234
+ if (this.bigReductionCount > 300 && stacks.length == 1) {
1235
+ let [s] = stacks;
1236
+ while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) {
1237
+ }
1238
+ this.bigReductionCount = this.lastBigReductionSize = 0;
1239
+ }
1240
+ for (let i = 0; i < stacks.length; i++) {
1241
+ let stack = stacks[i];
1242
+ for (; ; ) {
1243
+ this.tokens.mainToken = null;
1244
+ if (stack.pos > pos) {
1245
+ newStacks.push(stack);
1246
+ } else if (this.advanceStack(stack, newStacks, stacks)) {
1247
+ continue;
1248
+ } else {
1249
+ if (!stopped) {
1250
+ stopped = [];
1251
+ stoppedTokens = [];
1252
+ }
1253
+ stopped.push(stack);
1254
+ let tok = this.tokens.getMainToken(stack);
1255
+ stoppedTokens.push(tok.value, tok.end);
1256
+ }
1257
+ break;
1258
+ }
1259
+ }
1260
+ if (!newStacks.length) {
1261
+ let finished = stopped && findFinished(stopped);
1262
+ if (finished) {
1263
+ if (verbose)
1264
+ console.log("Finish with " + this.stackID(finished));
1265
+ return this.stackToTree(finished);
1266
+ }
1267
+ if (this.parser.strict) {
1268
+ if (verbose && stopped)
1269
+ console.log("Stuck with token " + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : "none"));
1270
+ throw new SyntaxError("No parse at " + pos);
1271
+ }
1272
+ if (!this.recovering)
1273
+ this.recovering = 5;
1274
+ }
1275
+ if (this.recovering && stopped) {
1276
+ let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0] : this.runRecovery(stopped, stoppedTokens, newStacks);
1277
+ if (finished) {
1278
+ if (verbose)
1279
+ console.log("Force-finish " + this.stackID(finished));
1280
+ return this.stackToTree(finished.forceAll());
1281
+ }
1282
+ }
1283
+ if (this.recovering) {
1284
+ let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3;
1285
+ if (newStacks.length > maxRemaining) {
1286
+ newStacks.sort((a, b) => b.score - a.score);
1287
+ while (newStacks.length > maxRemaining)
1288
+ newStacks.pop();
1289
+ }
1290
+ if (newStacks.some((s) => s.reducePos > pos))
1291
+ this.recovering--;
1292
+ } else if (newStacks.length > 1) {
1293
+ outer:
1294
+ for (let i = 0; i < newStacks.length - 1; i++) {
1295
+ let stack = newStacks[i];
1296
+ for (let j = i + 1; j < newStacks.length; j++) {
1297
+ let other = newStacks[j];
1298
+ if (stack.sameState(other) || stack.buffer.length > 500 && other.buffer.length > 500) {
1299
+ if ((stack.score - other.score || stack.buffer.length - other.buffer.length) > 0) {
1300
+ newStacks.splice(j--, 1);
1301
+ } else {
1302
+ newStacks.splice(i--, 1);
1303
+ continue outer;
1304
+ }
1305
+ }
1306
+ }
1307
+ }
1308
+ if (newStacks.length > 12)
1309
+ newStacks.splice(
1310
+ 12,
1311
+ newStacks.length - 12
1312
+ /* Rec.MaxStackCount */
1313
+ );
1314
+ }
1315
+ this.minStackPos = newStacks[0].pos;
1316
+ for (let i = 1; i < newStacks.length; i++)
1317
+ if (newStacks[i].pos < this.minStackPos)
1318
+ this.minStackPos = newStacks[i].pos;
1319
+ return null;
1320
+ }
1321
+ stopAt(pos) {
1322
+ if (this.stoppedAt != null && this.stoppedAt < pos)
1323
+ throw new RangeError("Can't move stoppedAt forward");
1324
+ this.stoppedAt = pos;
1325
+ }
1326
+ // Returns an updated version of the given stack, or null if the
1327
+ // stack can't advance normally. When `split` and `stacks` are
1328
+ // given, stacks split off by ambiguous operations will be pushed to
1329
+ // `split`, or added to `stacks` if they move `pos` forward.
1330
+ advanceStack(stack, stacks, split) {
1331
+ let start = stack.pos, { parser: parser2 } = this;
1332
+ let base = verbose ? this.stackID(stack) + " -> " : "";
1333
+ if (this.stoppedAt != null && start > this.stoppedAt)
1334
+ return stack.forceReduce() ? stack : null;
1335
+ if (this.fragments) {
1336
+ let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;
1337
+ for (let cached = this.fragments.nodeAt(start); cached; ) {
1338
+ let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser2.getGoto(stack.state, cached.type.id) : -1;
1339
+ if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {
1340
+ stack.useNode(cached, match);
1341
+ if (verbose)
1342
+ console.log(base + this.stackID(stack) + ` (via reuse of ${parser2.getName(cached.type.id)})`);
1343
+ return true;
1344
+ }
1345
+ if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)
1346
+ break;
1347
+ let inner = cached.children[0];
1348
+ if (inner instanceof Tree && cached.positions[0] == 0)
1349
+ cached = inner;
1350
+ else
1351
+ break;
1352
+ }
1353
+ }
1354
+ let defaultReduce = parser2.stateSlot(
1355
+ stack.state,
1356
+ 4
1357
+ /* ParseState.DefaultReduce */
1358
+ );
1359
+ if (defaultReduce > 0) {
1360
+ stack.reduce(defaultReduce);
1361
+ if (verbose)
1362
+ console.log(base + this.stackID(stack) + ` (via always-reduce ${parser2.getName(
1363
+ defaultReduce & 65535
1364
+ /* Action.ValueMask */
1365
+ )})`);
1366
+ return true;
1367
+ }
1368
+ if (stack.stack.length >= 8400) {
1369
+ while (stack.stack.length > 6e3 && stack.forceReduce()) {
1370
+ }
1371
+ }
1372
+ let actions = this.tokens.getActions(stack);
1373
+ for (let i = 0; i < actions.length; ) {
1374
+ let action = actions[i++], term = actions[i++], end = actions[i++];
1375
+ let last = i == actions.length || !split;
1376
+ let localStack = last ? stack : stack.split();
1377
+ let main = this.tokens.mainToken;
1378
+ localStack.apply(action, term, main ? main.start : localStack.pos, end);
1379
+ if (verbose)
1380
+ console.log(base + this.stackID(localStack) + ` (via ${(action & 65536) == 0 ? "shift" : `reduce of ${parser2.getName(
1381
+ action & 65535
1382
+ /* Action.ValueMask */
1383
+ )}`} for ${parser2.getName(term)} @ ${start}${localStack == stack ? "" : ", split"})`);
1384
+ if (last)
1385
+ return true;
1386
+ else if (localStack.pos > start)
1387
+ stacks.push(localStack);
1388
+ else
1389
+ split.push(localStack);
1390
+ }
1391
+ return false;
1392
+ }
1393
+ // Advance a given stack forward as far as it will go. Returns the
1394
+ // (possibly updated) stack if it got stuck, or null if it moved
1395
+ // forward and was given to `pushStackDedup`.
1396
+ advanceFully(stack, newStacks) {
1397
+ let pos = stack.pos;
1398
+ for (; ; ) {
1399
+ if (!this.advanceStack(stack, null, null))
1400
+ return false;
1401
+ if (stack.pos > pos) {
1402
+ pushStackDedup(stack, newStacks);
1403
+ return true;
1404
+ }
1405
+ }
1406
+ }
1407
+ runRecovery(stacks, tokens, newStacks) {
1408
+ let finished = null, restarted = false;
1409
+ for (let i = 0; i < stacks.length; i++) {
1410
+ let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];
1411
+ let base = verbose ? this.stackID(stack) + " -> " : "";
1412
+ if (stack.deadEnd) {
1413
+ if (restarted)
1414
+ continue;
1415
+ restarted = true;
1416
+ stack.restart();
1417
+ if (verbose)
1418
+ console.log(base + this.stackID(stack) + " (restarted)");
1419
+ let done = this.advanceFully(stack, newStacks);
1420
+ if (done)
1421
+ continue;
1422
+ }
1423
+ let force = stack.split(), forceBase = base;
1424
+ for (let j = 0; force.forceReduce() && j < 10; j++) {
1425
+ if (verbose)
1426
+ console.log(forceBase + this.stackID(force) + " (via force-reduce)");
1427
+ let done = this.advanceFully(force, newStacks);
1428
+ if (done)
1429
+ break;
1430
+ if (verbose)
1431
+ forceBase = this.stackID(force) + " -> ";
1432
+ }
1433
+ for (let insert of stack.recoverByInsert(token)) {
1434
+ if (verbose)
1435
+ console.log(base + this.stackID(insert) + " (via recover-insert)");
1436
+ this.advanceFully(insert, newStacks);
1437
+ }
1438
+ if (this.stream.end > stack.pos) {
1439
+ if (tokenEnd == stack.pos) {
1440
+ tokenEnd++;
1441
+ token = 0;
1442
+ }
1443
+ stack.recoverByDelete(token, tokenEnd);
1444
+ if (verbose)
1445
+ console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);
1446
+ pushStackDedup(stack, newStacks);
1447
+ } else if (!finished || finished.score < stack.score) {
1448
+ finished = stack;
1449
+ }
1450
+ }
1451
+ return finished;
1452
+ }
1453
+ // Convert the stack's buffer to a syntax tree.
1454
+ stackToTree(stack) {
1455
+ stack.close();
1456
+ return Tree.build({
1457
+ buffer: StackBufferCursor.create(stack),
1458
+ nodeSet: this.parser.nodeSet,
1459
+ topID: this.topTerm,
1460
+ maxBufferLength: this.parser.bufferLength,
1461
+ reused: this.reused,
1462
+ start: this.ranges[0].from,
1463
+ length: stack.pos - this.ranges[0].from,
1464
+ minRepeatType: this.parser.minRepeatTerm
1465
+ });
1466
+ }
1467
+ stackID(stack) {
1468
+ let id2 = (stackIDs || (stackIDs = /* @__PURE__ */ new WeakMap())).get(stack);
1469
+ if (!id2)
1470
+ stackIDs.set(stack, id2 = String.fromCodePoint(this.nextStackID++));
1471
+ return id2 + stack;
1472
+ }
1473
+ }
1474
+ function pushStackDedup(stack, newStacks) {
1475
+ for (let i = 0; i < newStacks.length; i++) {
1476
+ let other = newStacks[i];
1477
+ if (other.pos == stack.pos && other.sameState(stack)) {
1478
+ if (newStacks[i].score < stack.score)
1479
+ newStacks[i] = stack;
1480
+ return;
1481
+ }
1482
+ }
1483
+ newStacks.push(stack);
1484
+ }
1485
+ class Dialect {
1486
+ constructor(source, flags, disabled) {
1487
+ this.source = source;
1488
+ this.flags = flags;
1489
+ this.disabled = disabled;
1490
+ }
1491
+ allows(term) {
1492
+ return !this.disabled || this.disabled[term] == 0;
1493
+ }
1494
+ }
1495
+ const id = (x) => x;
1496
+ class ContextTracker {
1497
+ /**
1498
+ Define a context tracker.
1499
+ */
1500
+ constructor(spec) {
1501
+ this.start = spec.start;
1502
+ this.shift = spec.shift || id;
1503
+ this.reduce = spec.reduce || id;
1504
+ this.reuse = spec.reuse || id;
1505
+ this.hash = spec.hash || (() => 0);
1506
+ this.strict = spec.strict !== false;
1507
+ }
1508
+ }
1509
+ class LRParser extends Parser {
1510
+ /**
1511
+ @internal
1512
+ */
1513
+ constructor(spec) {
1514
+ super();
1515
+ this.wrappers = [];
1516
+ if (spec.version != 14)
1517
+ throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14})`);
1518
+ let nodeNames = spec.nodeNames.split(" ");
1519
+ this.minRepeatTerm = nodeNames.length;
1520
+ for (let i = 0; i < spec.repeatNodeCount; i++)
1521
+ nodeNames.push("");
1522
+ let topTerms = Object.keys(spec.topRules).map((r) => spec.topRules[r][1]);
1523
+ let nodeProps = [];
1524
+ for (let i = 0; i < nodeNames.length; i++)
1525
+ nodeProps.push([]);
1526
+ function setProp(nodeID, prop, value) {
1527
+ nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);
1528
+ }
1529
+ if (spec.nodeProps)
1530
+ for (let propSpec of spec.nodeProps) {
1531
+ let prop = propSpec[0];
1532
+ if (typeof prop == "string")
1533
+ prop = NodeProp[prop];
1534
+ for (let i = 1; i < propSpec.length; ) {
1535
+ let next = propSpec[i++];
1536
+ if (next >= 0) {
1537
+ setProp(next, prop, propSpec[i++]);
1538
+ } else {
1539
+ let value = propSpec[i + -next];
1540
+ for (let j = -next; j > 0; j--)
1541
+ setProp(propSpec[i++], prop, value);
1542
+ i++;
1543
+ }
1544
+ }
1545
+ }
1546
+ this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({
1547
+ name: i >= this.minRepeatTerm ? void 0 : name,
1548
+ id: i,
1549
+ props: nodeProps[i],
1550
+ top: topTerms.indexOf(i) > -1,
1551
+ error: i == 0,
1552
+ skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1
1553
+ })));
1554
+ if (spec.propSources)
1555
+ this.nodeSet = this.nodeSet.extend(...spec.propSources);
1556
+ this.strict = false;
1557
+ this.bufferLength = DefaultBufferLength;
1558
+ let tokenArray = decodeArray(spec.tokenData);
1559
+ this.context = spec.context;
1560
+ this.specializerSpecs = spec.specialized || [];
1561
+ this.specialized = new Uint16Array(this.specializerSpecs.length);
1562
+ for (let i = 0; i < this.specializerSpecs.length; i++)
1563
+ this.specialized[i] = this.specializerSpecs[i].term;
1564
+ this.specializers = this.specializerSpecs.map(getSpecializer);
1565
+ this.states = decodeArray(spec.states, Uint32Array);
1566
+ this.data = decodeArray(spec.stateData);
1567
+ this.goto = decodeArray(spec.goto);
1568
+ this.maxTerm = spec.maxTerm;
1569
+ this.tokenizers = spec.tokenizers.map((value) => typeof value == "number" ? new TokenGroup(tokenArray, value) : value);
1570
+ this.topRules = spec.topRules;
1571
+ this.dialects = spec.dialects || {};
1572
+ this.dynamicPrecedences = spec.dynamicPrecedences || null;
1573
+ this.tokenPrecTable = spec.tokenPrec;
1574
+ this.termNames = spec.termNames || null;
1575
+ this.maxNode = this.nodeSet.types.length - 1;
1576
+ this.dialect = this.parseDialect();
1577
+ this.top = this.topRules[Object.keys(this.topRules)[0]];
1578
+ }
1579
+ createParse(input, fragments, ranges) {
1580
+ let parse = new Parse(this, input, fragments, ranges);
1581
+ for (let w of this.wrappers)
1582
+ parse = w(parse, input, fragments, ranges);
1583
+ return parse;
1584
+ }
1585
+ /**
1586
+ Get a goto table entry @internal
1587
+ */
1588
+ getGoto(state, term, loose = false) {
1589
+ let table = this.goto;
1590
+ if (term >= table[0])
1591
+ return -1;
1592
+ for (let pos = table[term + 1]; ; ) {
1593
+ let groupTag = table[pos++], last = groupTag & 1;
1594
+ let target = table[pos++];
1595
+ if (last && loose)
1596
+ return target;
1597
+ for (let end = pos + (groupTag >> 1); pos < end; pos++)
1598
+ if (table[pos] == state)
1599
+ return target;
1600
+ if (last)
1601
+ return -1;
1602
+ }
1603
+ }
1604
+ /**
1605
+ Check if this state has an action for a given terminal @internal
1606
+ */
1607
+ hasAction(state, terminal) {
1608
+ let data = this.data;
1609
+ for (let set = 0; set < 2; set++) {
1610
+ for (let i = this.stateSlot(
1611
+ state,
1612
+ set ? 2 : 1
1613
+ /* ParseState.Actions */
1614
+ ), next; ; i += 3) {
1615
+ if ((next = data[i]) == 65535) {
1616
+ if (data[i + 1] == 1)
1617
+ next = data[i = pair(data, i + 2)];
1618
+ else if (data[i + 1] == 2)
1619
+ return pair(data, i + 2);
1620
+ else
1621
+ break;
1622
+ }
1623
+ if (next == terminal || next == 0)
1624
+ return pair(data, i + 1);
1625
+ }
1626
+ }
1627
+ return 0;
1628
+ }
1629
+ /**
1630
+ @internal
1631
+ */
1632
+ stateSlot(state, slot) {
1633
+ return this.states[state * 6 + slot];
1634
+ }
1635
+ /**
1636
+ @internal
1637
+ */
1638
+ stateFlag(state, flag) {
1639
+ return (this.stateSlot(
1640
+ state,
1641
+ 0
1642
+ /* ParseState.Flags */
1643
+ ) & flag) > 0;
1644
+ }
1645
+ /**
1646
+ @internal
1647
+ */
1648
+ validAction(state, action) {
1649
+ return !!this.allActions(state, (a) => a == action ? true : null);
1650
+ }
1651
+ /**
1652
+ @internal
1653
+ */
1654
+ allActions(state, action) {
1655
+ let deflt = this.stateSlot(
1656
+ state,
1657
+ 4
1658
+ /* ParseState.DefaultReduce */
1659
+ );
1660
+ let result = deflt ? action(deflt) : void 0;
1661
+ for (let i = this.stateSlot(
1662
+ state,
1663
+ 1
1664
+ /* ParseState.Actions */
1665
+ ); result == null; i += 3) {
1666
+ if (this.data[i] == 65535) {
1667
+ if (this.data[i + 1] == 1)
1668
+ i = pair(this.data, i + 2);
1669
+ else
1670
+ break;
1671
+ }
1672
+ result = action(pair(this.data, i + 1));
1673
+ }
1674
+ return result;
1675
+ }
1676
+ /**
1677
+ Get the states that can follow this one through shift actions or
1678
+ goto jumps. @internal
1679
+ */
1680
+ nextStates(state) {
1681
+ let result = [];
1682
+ for (let i = this.stateSlot(
1683
+ state,
1684
+ 1
1685
+ /* ParseState.Actions */
1686
+ ); ; i += 3) {
1687
+ if (this.data[i] == 65535) {
1688
+ if (this.data[i + 1] == 1)
1689
+ i = pair(this.data, i + 2);
1690
+ else
1691
+ break;
1692
+ }
1693
+ if ((this.data[i + 2] & 65536 >> 16) == 0) {
1694
+ let value = this.data[i + 1];
1695
+ if (!result.some((v, i2) => i2 & 1 && v == value))
1696
+ result.push(this.data[i], value);
1697
+ }
1698
+ }
1699
+ return result;
1700
+ }
1701
+ /**
1702
+ Configure the parser. Returns a new parser instance that has the
1703
+ given settings modified. Settings not provided in `config` are
1704
+ kept from the original parser.
1705
+ */
1706
+ configure(config) {
1707
+ let copy = Object.assign(Object.create(LRParser.prototype), this);
1708
+ if (config.props)
1709
+ copy.nodeSet = this.nodeSet.extend(...config.props);
1710
+ if (config.top) {
1711
+ let info = this.topRules[config.top];
1712
+ if (!info)
1713
+ throw new RangeError(`Invalid top rule name ${config.top}`);
1714
+ copy.top = info;
1715
+ }
1716
+ if (config.tokenizers)
1717
+ copy.tokenizers = this.tokenizers.map((t) => {
1718
+ let found = config.tokenizers.find((r) => r.from == t);
1719
+ return found ? found.to : t;
1720
+ });
1721
+ if (config.specializers) {
1722
+ copy.specializers = this.specializers.slice();
1723
+ copy.specializerSpecs = this.specializerSpecs.map((s, i) => {
1724
+ let found = config.specializers.find((r) => r.from == s.external);
1725
+ if (!found)
1726
+ return s;
1727
+ let spec = Object.assign(Object.assign({}, s), { external: found.to });
1728
+ copy.specializers[i] = getSpecializer(spec);
1729
+ return spec;
1730
+ });
1731
+ }
1732
+ if (config.contextTracker)
1733
+ copy.context = config.contextTracker;
1734
+ if (config.dialect)
1735
+ copy.dialect = this.parseDialect(config.dialect);
1736
+ if (config.strict != null)
1737
+ copy.strict = config.strict;
1738
+ if (config.wrap)
1739
+ copy.wrappers = copy.wrappers.concat(config.wrap);
1740
+ if (config.bufferLength != null)
1741
+ copy.bufferLength = config.bufferLength;
1742
+ return copy;
1743
+ }
1744
+ /**
1745
+ Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)
1746
+ are registered for this parser.
1747
+ */
1748
+ hasWrappers() {
1749
+ return this.wrappers.length > 0;
1750
+ }
1751
+ /**
1752
+ Returns the name associated with a given term. This will only
1753
+ work for all terms when the parser was generated with the
1754
+ `--names` option. By default, only the names of tagged terms are
1755
+ stored.
1756
+ */
1757
+ getName(term) {
1758
+ return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);
1759
+ }
1760
+ /**
1761
+ The eof term id is always allocated directly after the node
1762
+ types. @internal
1763
+ */
1764
+ get eofTerm() {
1765
+ return this.maxNode + 1;
1766
+ }
1767
+ /**
1768
+ The type of top node produced by the parser.
1769
+ */
1770
+ get topNode() {
1771
+ return this.nodeSet.types[this.top[1]];
1772
+ }
1773
+ /**
1774
+ @internal
1775
+ */
1776
+ dynamicPrecedence(term) {
1777
+ let prec = this.dynamicPrecedences;
1778
+ return prec == null ? 0 : prec[term] || 0;
1779
+ }
1780
+ /**
1781
+ @internal
1782
+ */
1783
+ parseDialect(dialect) {
1784
+ let values = Object.keys(this.dialects), flags = values.map(() => false);
1785
+ if (dialect)
1786
+ for (let part of dialect.split(" ")) {
1787
+ let id2 = values.indexOf(part);
1788
+ if (id2 >= 0)
1789
+ flags[id2] = true;
1790
+ }
1791
+ let disabled = null;
1792
+ for (let i = 0; i < values.length; i++)
1793
+ if (!flags[i]) {
1794
+ for (let j = this.dialects[values[i]], id2; (id2 = this.data[j++]) != 65535; )
1795
+ (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id2] = 1;
1796
+ }
1797
+ return new Dialect(dialect, flags, disabled);
1798
+ }
1799
+ /**
1800
+ Used by the output of the parser generator. Not available to
1801
+ user code. @hide
1802
+ */
1803
+ static deserialize(spec) {
1804
+ return new LRParser(spec);
1805
+ }
1806
+ }
1807
+ function pair(data, off) {
1808
+ return data[off] | data[off + 1] << 16;
1809
+ }
1810
+ function findFinished(stacks) {
1811
+ let best = null;
1812
+ for (let stack of stacks) {
1813
+ let stopped = stack.p.stoppedAt;
1814
+ if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) && stack.p.parser.stateFlag(
1815
+ stack.state,
1816
+ 2
1817
+ /* StateFlag.Accepting */
1818
+ ) && (!best || best.score < stack.score))
1819
+ best = stack;
1820
+ }
1821
+ return best;
1822
+ }
1823
+ function getSpecializer(spec) {
1824
+ if (spec.external) {
1825
+ let mask = spec.extend ? 1 : 0;
1826
+ return (value, stack) => spec.external(value, stack) << 1 | mask;
1827
+ }
1828
+ return spec.get;
1829
+ }
1830
+ const printKeyword = 1, indent = 194, dedent = 195, newline$1 = 196, blankLineStart = 197, newlineBracketed = 198, eof = 199, stringContent = 200, Escape = 2, replacementStart = 3, stringEnd = 201, ParenL = 24, ParenthesizedExpression = 25, TupleExpression = 49, ComprehensionExpression = 50, BracketL = 55, ArrayExpression = 56, ArrayComprehensionExpression = 57, BraceL = 59, DictionaryExpression = 60, DictionaryComprehensionExpression = 61, SetExpression = 62, SetComprehensionExpression = 63, ArgList = 65, subscript = 238, String$1 = 71, stringStart = 241, stringStartD = 242, stringStartL = 243, stringStartLD = 244, stringStartR = 245, stringStartRD = 246, stringStartRL = 247, stringStartRLD = 248, FormatString = 72, stringStartF = 249, stringStartFD = 250, stringStartFL = 251, stringStartFLD = 252, stringStartFR = 253, stringStartFRD = 254, stringStartFRL = 255, stringStartFRLD = 256, FormatReplacement = 73, nestedFormatReplacement = 77, importList = 263, TypeParamList = 112, ParamList = 130, SequencePattern = 151, MappingPattern = 152, PatternArgList = 155;
1831
+ const newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46, braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92, letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;
1832
+ const bracketed = /* @__PURE__ */ new Set([
1833
+ ParenthesizedExpression,
1834
+ TupleExpression,
1835
+ ComprehensionExpression,
1836
+ importList,
1837
+ ArgList,
1838
+ ParamList,
1839
+ ArrayExpression,
1840
+ ArrayComprehensionExpression,
1841
+ subscript,
1842
+ SetExpression,
1843
+ SetComprehensionExpression,
1844
+ FormatString,
1845
+ FormatReplacement,
1846
+ nestedFormatReplacement,
1847
+ DictionaryExpression,
1848
+ DictionaryComprehensionExpression,
1849
+ SequencePattern,
1850
+ MappingPattern,
1851
+ PatternArgList,
1852
+ TypeParamList
1853
+ ]);
1854
+ function isLineBreak(ch) {
1855
+ return ch == newline || ch == carriageReturn;
1856
+ }
1857
+ function isHex(ch) {
1858
+ return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
1859
+ }
1860
+ const newlines = new ExternalTokenizer((input, stack) => {
1861
+ let prev;
1862
+ if (input.next < 0) {
1863
+ input.acceptToken(eof);
1864
+ } else if (stack.context.flags & cx_Bracketed) {
1865
+ if (isLineBreak(input.next))
1866
+ input.acceptToken(newlineBracketed, 1);
1867
+ } else if (((prev = input.peek(-1)) < 0 || isLineBreak(prev)) && stack.canShift(blankLineStart)) {
1868
+ let spaces = 0;
1869
+ while (input.next == space || input.next == tab) {
1870
+ input.advance();
1871
+ spaces++;
1872
+ }
1873
+ if (input.next == newline || input.next == carriageReturn || input.next == hash)
1874
+ input.acceptToken(blankLineStart, -spaces);
1875
+ } else if (isLineBreak(input.next)) {
1876
+ input.acceptToken(newline$1, 1);
1877
+ }
1878
+ }, { contextual: true });
1879
+ const indentation = new ExternalTokenizer((input, stack) => {
1880
+ let context = stack.context;
1881
+ if (context.flags)
1882
+ return;
1883
+ let prev = input.peek(-1);
1884
+ if (prev == newline || prev == carriageReturn) {
1885
+ let depth = 0, chars = 0;
1886
+ for (; ; ) {
1887
+ if (input.next == space)
1888
+ depth++;
1889
+ else if (input.next == tab)
1890
+ depth += 8 - depth % 8;
1891
+ else
1892
+ break;
1893
+ input.advance();
1894
+ chars++;
1895
+ }
1896
+ if (depth != context.indent && input.next != newline && input.next != carriageReturn && input.next != hash) {
1897
+ if (depth < context.indent)
1898
+ input.acceptToken(dedent, -chars);
1899
+ else
1900
+ input.acceptToken(indent);
1901
+ }
1902
+ }
1903
+ });
1904
+ const cx_Bracketed = 1, cx_String = 2, cx_DoubleQuote = 4, cx_Long = 8, cx_Raw = 16, cx_Format = 32;
1905
+ function Context(parent, indent2, flags) {
1906
+ this.parent = parent;
1907
+ this.indent = indent2;
1908
+ this.flags = flags;
1909
+ this.hash = (parent ? parent.hash + parent.hash << 8 : 0) + indent2 + (indent2 << 4) + flags + (flags << 6);
1910
+ }
1911
+ const topIndent = new Context(null, 0, 0);
1912
+ function countIndent(space2) {
1913
+ let depth = 0;
1914
+ for (let i = 0; i < space2.length; i++)
1915
+ depth += space2.charCodeAt(i) == tab ? 8 - depth % 8 : 1;
1916
+ return depth;
1917
+ }
1918
+ const stringFlags = new Map([
1919
+ [stringStart, 0],
1920
+ [stringStartD, cx_DoubleQuote],
1921
+ [stringStartL, cx_Long],
1922
+ [stringStartLD, cx_Long | cx_DoubleQuote],
1923
+ [stringStartR, cx_Raw],
1924
+ [stringStartRD, cx_Raw | cx_DoubleQuote],
1925
+ [stringStartRL, cx_Raw | cx_Long],
1926
+ [stringStartRLD, cx_Raw | cx_Long | cx_DoubleQuote],
1927
+ [stringStartF, cx_Format],
1928
+ [stringStartFD, cx_Format | cx_DoubleQuote],
1929
+ [stringStartFL, cx_Format | cx_Long],
1930
+ [stringStartFLD, cx_Format | cx_Long | cx_DoubleQuote],
1931
+ [stringStartFR, cx_Format | cx_Raw],
1932
+ [stringStartFRD, cx_Format | cx_Raw | cx_DoubleQuote],
1933
+ [stringStartFRL, cx_Format | cx_Raw | cx_Long],
1934
+ [stringStartFRLD, cx_Format | cx_Raw | cx_Long | cx_DoubleQuote]
1935
+ ].map(([term, flags]) => [term, flags | cx_String]));
1936
+ const trackIndent = new ContextTracker({
1937
+ start: topIndent,
1938
+ reduce(context, term, _, input) {
1939
+ if (context.flags & cx_Bracketed && bracketed.has(term) || (term == String$1 || term == FormatString) && context.flags & cx_String)
1940
+ return context.parent;
1941
+ return context;
1942
+ },
1943
+ shift(context, term, stack, input) {
1944
+ if (term == indent)
1945
+ return new Context(context, countIndent(input.read(input.pos, stack.pos)), 0);
1946
+ if (term == dedent)
1947
+ return context.parent;
1948
+ if (term == ParenL || term == BracketL || term == BraceL || term == replacementStart)
1949
+ return new Context(context, 0, cx_Bracketed);
1950
+ if (stringFlags.has(term))
1951
+ return new Context(context, 0, stringFlags.get(term) | context.flags & cx_Bracketed);
1952
+ return context;
1953
+ },
1954
+ hash(context) {
1955
+ return context.hash;
1956
+ }
1957
+ });
1958
+ const legacyPrint = new ExternalTokenizer((input) => {
1959
+ for (let i = 0; i < 5; i++) {
1960
+ if (input.next != "print".charCodeAt(i))
1961
+ return;
1962
+ input.advance();
1963
+ }
1964
+ if (/\w/.test(String.fromCharCode(input.next)))
1965
+ return;
1966
+ for (let off = 0; ; off++) {
1967
+ let next = input.peek(off);
1968
+ if (next == space || next == tab)
1969
+ continue;
1970
+ if (next != parenOpen && next != dot && next != newline && next != carriageReturn && next != hash)
1971
+ input.acceptToken(printKeyword);
1972
+ return;
1973
+ }
1974
+ });
1975
+ const strings = new ExternalTokenizer((input, stack) => {
1976
+ let { flags } = stack.context;
1977
+ let quote = flags & cx_DoubleQuote ? doubleQuote : singleQuote;
1978
+ let long = (flags & cx_Long) > 0;
1979
+ let escapes = !(flags & cx_Raw);
1980
+ let format = (flags & cx_Format) > 0;
1981
+ let start = input.pos;
1982
+ for (; ; ) {
1983
+ if (input.next < 0) {
1984
+ break;
1985
+ } else if (format && input.next == braceOpen) {
1986
+ if (input.peek(1) == braceOpen) {
1987
+ input.advance(2);
1988
+ } else {
1989
+ if (input.pos == start) {
1990
+ input.acceptToken(replacementStart, 1);
1991
+ return;
1992
+ }
1993
+ break;
1994
+ }
1995
+ } else if (escapes && input.next == backslash) {
1996
+ if (input.pos == start) {
1997
+ input.advance();
1998
+ let escaped = input.next;
1999
+ if (escaped >= 0) {
2000
+ input.advance();
2001
+ skipEscape(input, escaped);
2002
+ }
2003
+ input.acceptToken(Escape);
2004
+ return;
2005
+ }
2006
+ break;
2007
+ } else if (input.next == backslash && !escapes && input.peek(1) > -1) {
2008
+ input.advance(2);
2009
+ } else if (input.next == quote && (!long || input.peek(1) == quote && input.peek(2) == quote)) {
2010
+ if (input.pos == start) {
2011
+ input.acceptToken(stringEnd, long ? 3 : 1);
2012
+ return;
2013
+ }
2014
+ break;
2015
+ } else if (input.next == newline) {
2016
+ if (long) {
2017
+ input.advance();
2018
+ } else if (input.pos == start) {
2019
+ input.acceptToken(stringEnd);
2020
+ return;
2021
+ }
2022
+ break;
2023
+ } else {
2024
+ input.advance();
2025
+ }
2026
+ }
2027
+ if (input.pos > start)
2028
+ input.acceptToken(stringContent);
2029
+ });
2030
+ function skipEscape(input, ch) {
2031
+ if (ch == letter_o) {
2032
+ for (let i = 0; i < 2 && input.next >= 48 && input.next <= 55; i++)
2033
+ input.advance();
2034
+ } else if (ch == letter_x) {
2035
+ for (let i = 0; i < 2 && isHex(input.next); i++)
2036
+ input.advance();
2037
+ } else if (ch == letter_u) {
2038
+ for (let i = 0; i < 4 && isHex(input.next); i++)
2039
+ input.advance();
2040
+ } else if (ch == letter_U) {
2041
+ for (let i = 0; i < 8 && isHex(input.next); i++)
2042
+ input.advance();
2043
+ } else if (ch == letter_N) {
2044
+ if (input.next == braceOpen) {
2045
+ input.advance();
2046
+ while (input.next >= 0 && input.next != braceClose && input.next != singleQuote && input.next != doubleQuote && input.next != newline)
2047
+ input.advance();
2048
+ if (input.next == braceClose)
2049
+ input.advance();
2050
+ }
2051
+ }
2052
+ }
2053
+ const pythonHighlighting = styleTags({
2054
+ 'async "*" "**" FormatConversion FormatSpec': tags.modifier,
2055
+ "for while if elif else try except finally return raise break continue with pass assert await yield match case": tags.controlKeyword,
2056
+ "in not and or is del": tags.operatorKeyword,
2057
+ "from def class global nonlocal lambda": tags.definitionKeyword,
2058
+ import: tags.moduleKeyword,
2059
+ "with as print": tags.keyword,
2060
+ Boolean: tags.bool,
2061
+ None: tags.null,
2062
+ VariableName: tags.variableName,
2063
+ "CallExpression/VariableName": tags.function(tags.variableName),
2064
+ "FunctionDefinition/VariableName": tags.function(tags.definition(tags.variableName)),
2065
+ "ClassDefinition/VariableName": tags.definition(tags.className),
2066
+ PropertyName: tags.propertyName,
2067
+ "CallExpression/MemberExpression/PropertyName": tags.function(tags.propertyName),
2068
+ Comment: tags.lineComment,
2069
+ Number: tags.number,
2070
+ String: tags.string,
2071
+ FormatString: tags.special(tags.string),
2072
+ Escape: tags.escape,
2073
+ UpdateOp: tags.updateOperator,
2074
+ "ArithOp!": tags.arithmeticOperator,
2075
+ BitOp: tags.bitwiseOperator,
2076
+ CompareOp: tags.compareOperator,
2077
+ AssignOp: tags.definitionOperator,
2078
+ Ellipsis: tags.punctuation,
2079
+ At: tags.meta,
2080
+ "( )": tags.paren,
2081
+ "[ ]": tags.squareBracket,
2082
+ "{ }": tags.brace,
2083
+ ".": tags.derefOperator,
2084
+ ", ;": tags.separator
2085
+ });
2086
+ const spec_identifier = { __proto__: null, await: 44, or: 54, and: 56, in: 60, not: 62, is: 64, if: 70, else: 72, lambda: 76, yield: 94, from: 96, async: 102, for: 104, None: 162, True: 164, False: 164, del: 178, pass: 182, break: 186, continue: 190, return: 194, raise: 202, import: 206, as: 208, global: 212, nonlocal: 214, assert: 218, type: 223, elif: 236, while: 240, try: 246, except: 248, finally: 250, with: 254, def: 258, class: 268, match: 279, case: 285 };
2087
+ const parser = LRParser.deserialize({
2088
+ version: 14,
2089
+ states: "##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyO<POWO,5:aOOQS,5:a,5:aO<[QdO'#HwOOOW'#Dw'#DwOOOW'#Fz'#FzO<lOWO,5:bOOQS,5:b,5:bOOQS'#F}'#F}O<zQtO,5:iO?lQtO,5=`O@VQ#xO,5=`O@vQtO,5=`OOQS,5:},5:}OA_QeO'#GWOBqQdO,5;^OOQV,5=^,5=^OB|QtO'#IPOCkQdO,5;tOOQS-E:[-E:[OOQV,5;s,5;sO4dQdO'#FQOOQV-E9o-E9oOCsQtO,59]OEzQtO,59iOFeQdO'#HVOFpQdO'#HVO1XQdO'#HVOF{QdO'#DTOGTQdO,59mOGYQdO'#HZO'vQdO'#HZO0rQdO,5=tOOQS,5=t,5=tO0rQdO'#EROOQS'#ES'#ESOGwQdO'#GPOHXQdO,58|OHXQdO,58|O*xQdO,5:oOHgQtO'#H]OOQS,5:r,5:rOOQS,5:z,5:zOHzQdO,5;OOI]QdO'#IOO1XQdO'#H}OOQS,5;Q,5;QOOQS'#GT'#GTOIqQtO,5;QOJPQdO,5;QOJUQdO'#IQOOQS,5;T,5;TOJdQdO'#H|OOQS,5;W,5;WOJuQdO,5;YO4iQdO,5;`O4iQdO,5;cOJ}QtO'#ITO'vQdO'#ITOKXQdO,5;eO4VQdO,5;eO0rQdO,5;jO1XQdO,5;lOK^QeO'#EuOLjQgO,5;fO!!kQdO'#IUO4iQdO,5;jO!!vQdO,5;lO!#OQdO,5;qO!#ZQtO,5;vO'vQdO,5;vPOOO,5=[,5=[P!#bOSO,5=[P!#jOdO,5=[O!&bQtO1G.jO!&iQtO1G.jO!)YQtO1G.jO!)dQtO1G.jO!+}QtO1G.jO!,bQtO1G.jO!,uQdO'#HcO!-TQtO'#GuO0rQdO'#HcO!-_QdO'#HbOOQS,5:Z,5:ZO!-gQdO,5:ZO!-lQdO'#HeO!-wQdO'#HeO!.[QdO,5>OOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5<jOOQS,5<j,5<jOOQS-E9|-E9|OOQS,5<r,5<rOOQS-E:U-E:UOOQV1G0x1G0xO1XQdO'#GRO!7dQtO,5>kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5<k,5<kOOQS-E9}-E9}O!9wQdO1G.hOOQS1G0Z1G0ZO!:VQdO,5=wO!:gQdO,5=wO0rQdO1G0jO0rQdO1G0jO!:xQdO,5>jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!<RQdO,5>lO!<aQdO,5>lO!<oQdO,5>hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5<m,5<mOOQS-E:P-E:POOQS7+&z7+&zOOQS1G3]1G3]OOQS,5<^,5<^OOQS-E9p-E9pOOQS7+$s7+$sO#)bQdO,5=`O#){QdO,5=`O#*^QtO,5<aO#*qQdO1G3cOOQS-E9s-E9sOOQS7+&U7+&UO#+RQdO7+&UO#+aQdO,5<nO#+uQdO1G4UOOQS-E:Q-E:QO#,WQdO1G4UOOQS1G4T1G4TOOQS7+&W7+&WO#,iQdO7+&WOOQS,5<p,5<pO#,tQdO1G4WOOQS-E:S-E:SOOQS,5<l,5<lO#-SQdO1G4SOOQS-E:O-E:OO1XQdO'#EqO#-jQdO'#EqO#-uQdO'#IRO#-}QdO,5;[OOQS7+&`7+&`O0rQdO7+&`O#.SQgO7+&fO!JmQdO'#GXO4iQdO7+&fO4iQdO7+&iO#2QQtO,5<tO'vQdO,5<tO#2[QdO1G4ZOOQS-E:W-E:WO#2fQdO1G4ZO4iQdO7+&kO0rQdO7+&kOOQV7+&p7+&pO!KrQ!fO7+&rO!KzQdO7+&rO`QeO1G0{OOQV-E:X-E:XO4iQdO7+&lO4iQdO7+&lOOQV,5<u,5<uO#2nQdO,5<uO!JmQdO,5<uOOQV7+&l7+&lO#2yQgO7+&lO#6tQdO,5<vO#7PQdO1G4[OOQS-E:Y-E:YO#7^QdO1G4[O#7fQdO'#IWO#7tQdO'#IWO1XQdO'#IWOOQS'#IW'#IWO#8PQdO'#IVOOQS,5;n,5;nO#8XQdO,5;nO0rQdO'#FUOOQV7+&r7+&rO4iQdO7+&rOOQV7+&w7+&wO4iQdO7+&wO#8^QfO,5;xOOQV7+&|7+&|POOO7+(b7+(bO#8cQdO1G3iOOQS,5<c,5<cO#8qQdO1G3hOOQS-E9u-E9uO#9UQdO,5<dO#9aQdO,5<dO#9tQdO1G3kOOQS-E9v-E9vO#:UQdO1G3kO#:^QdO1G3kO#:nQdO1G3kO#:UQdO1G3kOOQS<<H[<<H[O#:yQtO1G1zOOQS<<Hk<<HkP#;WQdO'#FtO8vQdO1G3bO#;eQdO1G3bO#;jQdO<<HkOOQS<<Hl<<HlO#;zQdO7+)QOOQS<<Hs<<HsO#<[QtO1G1yP#<{QdO'#FsO#=YQdO7+)RO#=jQdO7+)RO#=rQdO<<HwO#=wQdO7+({OOQS<<Hy<<HyO#>nQdO,5<bO'vQdO,5<bOOQS-E9t-E9tOOQS<<Hw<<HwOOQS,5<g,5<gO0rQdO,5<gO#>sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<<IpO1XQdO1G2YP1XQdO'#GSO#AOQdO7+)pO#AaQdO7+)pOOQS<<Ir<<IrP1XQdO'#GUP0rQdO'#GQOOQS,5;],5;]O#ArQdO,5>mO#BQQdO,5>mOOQS1G0v1G0vOOQS<<Iz<<IzOOQV-E:V-E:VO4iQdO<<JQOOQV,5<s,5<sO4iQdO,5<sOOQV<<JQ<<JQOOQV<<JT<<JTO#BYQtO1G2`P#BdQdO'#GYO#BkQdO7+)uO#BuQgO<<JVO4iQdO<<JVOOQV<<J^<<J^O4iQdO<<J^O!KrQ!fO<<J^O#FpQgO7+&gOOQV<<JW<<JWO#FzQgO<<JWOOQV1G2a1G2aO1XQdO1G2aO#JuQdO1G2aO4iQdO<<JWO1XQdO1G2bP0rQdO'#G[O#KQQdO7+)vO#K_QdO7+)vOOQS'#FT'#FTO0rQdO,5>rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<<Jc<<JcO#LhQdO1G1dOOQS7+)T7+)TP#LmQdO'#FwO#L}QdO1G2OO#MbQdO1G2OO#MrQdO1G2OP#M}QdO'#FxO#N[QdO7+)VO#NlQdO7+)VO#NlQdO7+)VO#NtQdO7+)VO$ UQdO7+(|O8vQdO7+(|OOQSAN>VAN>VO$ oQdO<<LmOOQSAN>cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<<MT<<MTO$#nQdO7+(fOOQSAN?[AN?[OOQS7+'t7+'tO$$XQdO<<M[OOQS,5<q,5<qO$$jQdO1G4XOOQS-E:T-E:TOOQVAN?lAN?lOOQV1G2_1G2_O4iQdOAN?qO$$xQgOAN?qOOQVAN?xAN?xO4iQdOAN?xOOQV<<JR<<JRO4iQdOAN?rO4iQdO7+'{OOQV7+'{7+'{O1XQdO7+'{OOQVAN?rAN?rOOQS7+'|7+'|O$(sQdO<<MbOOQS1G4^1G4^O0rQdO1G4^OOQS,5<w,5<wO$)QQdO1G4]OOQS-E:Z-E:ZOOQU'#G_'#G_O$)cQfO7+'OO$)nQdO'#F_O$*uQdO7+'jO$+VQdO7+'jOOQS7+'j7+'jO$+bQdO<<LqO$+rQdO<<LqO$+rQdO<<LqO$+zQdO'#H^OOQS<<Lh<<LhO$,UQdO<<LhOOQS7+'h7+'hOOQS'#D|'#D|OOOO1G4R1G4RO$,oQdO1G4RO$,wQdO1G4RP!=hQdO'#GVOOQVG25]G25]O4iQdOG25]OOQVG25dG25dOOQVG25^G25^OOQV<<Kg<<KgO4iQdO<<KgOOQS7+)x7+)xP$-SQdO'#G]OOQU-E:]-E:]OOQV<<Jj<<JjO$-vQtO'#FaOOQS'#Fc'#FcO$.WQdO'#FbO$.xQdO'#FbOOQS'#Fb'#FbO$.}QdO'#IYO$)nQdO'#FiO$)nQdO'#FiO$/fQdO'#FjO$)nQdO'#FkO$/mQdO'#IZOOQS'#IZ'#IZO$0[QdO,5;yOOQS<<KU<<KUO$0dQdO<<KUO$0tQdOANB]O$1UQdOANB]O$1^QdO'#H_OOQS'#H_'#H_O1sQdO'#DcO$1wQdO,5=xOOQSANBSANBSOOOO7+)m7+)mO$2`QdO7+)mOOQVLD*wLD*wOOQVANARANARO5uQ!fO'#GaO$2hQtO,5<SO$)nQdO'#FmOOQS,5<W,5<WOOQS'#Fd'#FdO$3YQdO,5;|O$3_QdO,5;|OOQS'#Fg'#FgO$)nQdO'#G`O$4PQdO,5<QO$4kQdO,5>tO$4{QdO,5>tO1XQdO,5<PO$5^QdO,5<TO$5cQdO,5<TO$)nQdO'#I[O$5hQdO'#I[O$5mQdO,5<UOOQS,5<V,5<VO0rQdO'#FpOOQU1G1e1G1eO4iQdO1G1eOOQSAN@pAN@pO$5rQdOG27wO$6SQdO,59}OOQS1G3d1G3dOOOO<<MX<<MXOOQS,5<{,5<{OOQS-E:_-E:_O$6XQtO'#FaO$6`QdO'#I]O$6nQdO'#I]O$6vQdO,5<XOOQS1G1h1G1hO$6{QdO1G1hO$7QQdO,5<zOOQS-E:^-E:^O$7lQdO,5=OO$8TQdO1G4`OOQS-E:b-E:bOOQS1G1k1G1kOOQS1G1o1G1oO$8eQdO,5>vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5<YO$8sQdO,5>wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5<ZP$)nQdO'#GcO$;XQdO1G2hO$)nQdO1G2hP$;gQdO'#GbO$;nQdO<<MhO$;xQdO1G1uO$<WQdO7+(SO8vQdO'#C}O8vQdO,59bO8vQdO,59bO8vQdO,59bO$<fQtO,5=`O8vQdO1G.|O0rQdO1G/XO0rQdO7+$pP$<yQdO'#GOO'vQdO'#GtO$=WQdO,59bO$=]QdO,59bO$=dQdO,59mO$=iQdO1G/UO1sQdO'#DRO8vQdO,59j",
2090
+ stateData: "$>S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",
2091
+ goto: "!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!<S!<VP!<_!<h!=d!=g]eOn#g$j)t,P'}`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r{!cQ#c#p$R$d$p%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g}!dQ#c#p$R$d$p$u%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!P!eQ#c#p$R$d$p$u$v%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!R!fQ#c#p$R$d$p$u$v$w%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!T!gQ#c#p$R$d$p$u$v$w$x%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!V!hQ#c#p$R$d$p$u$v$w$x$y%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g!Z!hQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0g'}TOTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0r&eVOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0r%oXOYZ[dnrxy}!P!Q!U!i!k#[#d#g#y#{#}$Q$h$j$}%S%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#vqQ/[.kR0o0q't`OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rh#jhz{$W$Z&l&q)S)X+f+g-RW#rq&].k0qQ$]|Q$a!OQ$n!VQ$o!WW$|!i'm*d,gS&[#s#tQ'S$iQ(s&UQ)U&nU)Y&s)Z+jW)a&w+m-T-{Q*Q']W*R'_,`-h.TQ+l)`S,_*S*TQ-Q+eQ-_,TQ-c,WQ.R-al.W-l.^._.a.z.|/R/j/o/t/y0U0Z0^Q/S.`Q/a.tQ/l/OU0P/u0S0[X0V/z0W0_0`R&Z#r!_!wYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZR%^!vQ!{YQ%x#[Q&d#}Q&g$QR,{+YT.j-s/s!Y!jQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gQ&X#kQ'c$oR*^'dR'l$|Q%V!mR/_.r'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rS#a_#b!P.[-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`'|_OTYZ[adnoprtxy}!P!Q!R!U!X!c!d!e!f!g!h!i!k!o!p!q!s!t!z#O#S#T#[#d#g#x#y#{#}$Q$e$g$h$j$q$}%S%Z%^%`%c%g%l%n%w%|&O&Z&_&h&j&k&u&x&|'P'W'Z'l'm'p'r's'w'|(O(S(W(](^(d(g(p(r(z(})^)e)g)k)l)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+Q+U+V+Y+a+c+d+k+x+y,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0l0n0rT#a_#bT#^^#_R(o%xa(l%x(n(o+`,{-y-z.oT+[(k+]R-z,{Q$PsQ+l)aQ,^*RR-e,_X#}s$O$P&fQ&y$aQ'a$nQ'd$oR)s'SQ)b&wV-S+m-T-{ZgOn$j)t,PXkOn)t,PQ$k!TQ&z$bQ&{$cQ'^$mQ'b$oQ)q'RQ)x'WQ){'XQ)|'YQ*Z'`S*]'c'dQ+s)gQ+u)hQ+v)iQ+z)oS+|)r*[Q,Q)vQ,R)wS,S)y)zQ,d*^Q-V+rQ-W+tQ-Y+{S-Z+},OQ-`,UQ-b,VQ-|-XQ.O-[Q.P-^Q.Q-_Q.p-}Q.q.RQ/W.dR/r/XWkOn)t,PR#mjQ'`$nS)r'S'aR,O)sQ,]*RR-f,^Q*['`Q+})rR-[,OZiOjn)t,PQ'f$pR*`'gT-j,e-ku.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^t.c-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^Q/S.`X0V/z0W0_0`!P.Z-l.^._.`.a.t.z.|/R/j/o/t/u/y/z0S0U0W0Z0[0^0_0`Q.w.YR/f.xg.z.].{/b/i/n/|0O0Q0]0a0bu.b-l.^._.a.t.z.|/R/j/o/t/u/y0S0U0Z0[0^X.u.W.b/a0PR/c.tV0R/u0S0[R/X.dQnOS#on,PR,P)tQ&^#uR(x&^S%m#R#wS(_%m(bT(b%p&`Q%a!yQ%h!}W(P%a%h(U(YQ(U%eR(Y%jQ&i$RR)O&iQ(e%qQ*{(`T+R(e*{Q'n%OR*e'nS'q%R%SY*i'q*j,m-q.hU*j'r's'tU,m*k*l*mS-q,n,oR.h-rQ#Y]R%t#YQ#_^R%y#_Q(h%vS+W(h+XR+X(iQ+](kR,|+]Q#b_R%{#bQ#ebQ%}#cW&Q#e%}({+bQ({&cR+b0gQ$OsS&e$O&fR&f$PQ&v$_R)_&vQ&V#jR(t&VQ&m$VS)T&m+hR+h)UQ$Z{R&p$ZQ&t$]R)[&tQ+n)bR-U+nQ#hfR&S#hQ)f&zR+q)fQ&}$dS)m&})nR)n'OQ'V$kR)u'VQ'[$lS*P'[,ZR,Z*QQ,a*VR-i,aWjOn)t,PR#ljQ-k,eR.U-kd.{.]/b/i/n/|0O0Q0]0a0bR/h.{U.s.W/a0PR/`.sQ/{/nS0X/{0YR0Y/|S/v/b/cR0T/vQ.}.]R/k.}R!ZPXmOn)t,PWlOn)t,PR'T$jYfOn$j)t,PR&R#g[sOn#g$j)t,PR&d#}&dQOYZ[dnprxy}!P!Q!U!i!k!o!p!q!s!t#[#d#g#y#{#}$Q$h$j$}%S%Z%^%`%g%l%n%w%|&Z&_&j&k&u&x'P'W'Z'l'm'p'r's'w(O(W(^(d(g(p(r(z)^)e)g)p)t)z*O*Y*d*g*h*k*q*r*t*v*y*z*}+U+V+Y+a+d+k,P,X,Y,],g,h,i,k,l,o,q,s,u,w,y,z-O-d-f-m-p-s.f.g/V/Z/s0c0d0e0f0h0i0j0k0n0rQ!nTQ#caQ#poU$Rt%c(SS$d!R$gQ$p!XQ$u!cQ$v!dQ$w!eQ$x!fQ$y!gQ$z!hQ%e!zQ%j#OQ%p#SQ%q#TQ&`#xQ'O$eQ'g$qQ(q&OU(|&h(}+cW)j&|)l+x+yQ*o'|Q*x(]Q+w)kQ,v+QR0g0lQ!yYQ!}ZQ$b!PQ$c!QQ%R!kQ't%S^'{%`%g(O(W*q*t*v^*f'p*h,k,l-p.g/ZQ*l'rQ*m'sQ+t)gQ,j*gQ,n*kQ-n,hQ-o,iQ-r,oQ.e-mR/Y.f[bOn#g$j)t,P!^!vYZ!P!Q!k%S%`%g'p'r's(O(W)g*g*h*k*q*t*v,h,i,k,l,o-m-p.f.g/ZQ#R[Q#fdS#wrxQ$UyW$_}$Q'P)pS$l!U$hW${!i'm*d,gS%v#[+Y`&P#d%|(p(r(z+a-O0kQ&a#yQ&b#{Q&c#}Q'j$}Q'z%^W([%l(^*y*}Q(`%nQ(i%wQ(v&ZS(y&_0iQ)P&jQ)Q&kU)]&u)^+kQ)d&xQ)y'WY)}'Z*O,X,Y-dQ*b'lS*n'w0jW+P(d*z,s,wW+T(g+V,y,zQ+p)eQ,U)zQ,c*YQ,x+UQ-P+dQ-e,]Q-v,uQ.S-fR/q/VhUOn#d#g$j%|&_'w(p(r)t,P%U!uYZ[drxy}!P!Q!U!i!k#[#y#{#}$Q$h$}%S%^%`%g%l%n%w&Z&j&k&u&x'P'W'Z'l'm'p'r's(O(W(^(d(g(z)^)e)g)p)z*O*Y*d*g*h*k*q*t*v*y*z*}+U+V+Y+a+d+k,X,Y,],g,h,i,k,l,o,s,u,w,y,z-O-d-f-m-p.f.g/V/Z0i0j0kQ#qpW%W!o!s0d0nQ%X!pQ%Y!qQ%[!tQ%f0cS'v%Z0hQ'x0eQ'y0fQ,p*rQ-u,qS.i-s/sR0p0rU#uq.k0qR(w&][cOn#g$j)t,PZ!xY#[#}$Q+YQ#W[Q#zrR$TxQ%b!yQ%i!}Q%o#RQ'j${Q(V%eQ(Z%jQ(c%pQ(f%qQ*|(`Q,f*bQ-t,pQ.m-uR/].lQ$StQ(R%cR*s(SQ.l-sR/}/sR#QZR#V[R%Q!iQ%O!iV*c'm*d,g!Z!lQ!n#c#p$R$d$p$u$v$w$x$y$z%e%j%p%q&`'O'g(q(|)j*o*x+w,v0gR%T!kT#]^#_Q%x#[R,{+YQ(m%xS+_(n(oQ,}+`Q-x,{S.n-y-zR/^.oT+Z(k+]Q$`}Q&g$QQ)o'PR+{)pQ$XzQ)W&qR+i)XQ$XzQ&o$WQ)W&qR+i)XQ#khW$Vz$W&q)XQ$[{Q&r$ZZ)R&l)S+f+g-RR$^|R)c&wXlOn)t,PQ$f!RR'Q$gQ$m!UR'R$hR*X'_Q*V'_V-g,`-h.TQ.d-lQ/P.^R/Q._U.]-l.^._Q/U.aQ/b.tQ/g.zU/i.|/j/yQ/n/RQ/|/oQ0O/tU0Q/u0S0[Q0]0UQ0a0ZR0b0^R/T.`R/d.t",
2092
+ nodeNames: "⚠ print Escape { Comment Script AssignStatement * BinaryExpression BitOp BitOp BitOp BitOp ArithOp ArithOp @ ArithOp ** UnaryExpression ArithOp BitOp AwaitExpression await ) ( ParenthesizedExpression BinaryExpression or and CompareOp in not is UnaryExpression ConditionalExpression if else LambdaExpression lambda ParamList VariableName AssignOp , : NamedExpression AssignOp YieldExpression yield from TupleExpression ComprehensionExpression async for LambdaExpression ] [ ArrayExpression ArrayComprehensionExpression } { DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression CallExpression ArgList AssignOp MemberExpression . PropertyName Number String FormatString FormatReplacement FormatSelfDoc FormatConversion FormatSpec FormatReplacement FormatSelfDoc ContinuedString Ellipsis None Boolean TypeDef AssignOp UpdateStatement UpdateOp ExpressionStatement DeleteStatement del PassStatement pass BreakStatement break ContinueStatement continue ReturnStatement return YieldStatement PrintStatement RaiseStatement raise ImportStatement import as ScopeStatement global nonlocal AssertStatement assert TypeDefinition type TypeParamList TypeParam StatementGroup ; IfStatement Body elif WhileStatement while ForStatement TryStatement try except finally WithStatement with FunctionDefinition def ParamList AssignOp TypeDef ClassDefinition class DecoratedStatement Decorator At MatchStatement match MatchBody MatchClause case CapturePattern LiteralPattern ArithOp ArithOp AsPattern OrPattern LogicOp AttributePattern SequencePattern MappingPattern StarPattern ClassPattern PatternArgList KeywordPattern KeywordPattern Guard",
2093
+ maxTerm: 277,
2094
+ context: trackIndent,
2095
+ nodeProps: [
2096
+ ["isolate", -5, 4, 71, 72, 73, 77, ""],
2097
+ ["group", -15, 6, 85, 87, 88, 90, 92, 94, 96, 98, 99, 100, 102, 105, 108, 110, "Statement Statement", -22, 8, 18, 21, 25, 40, 49, 50, 56, 57, 60, 61, 62, 63, 64, 67, 70, 71, 72, 79, 80, 81, 82, "Expression", -10, 114, 116, 119, 121, 122, 126, 128, 133, 135, 138, "Statement", -9, 143, 144, 147, 148, 150, 151, 152, 153, 154, "Pattern"],
2098
+ ["openedBy", 23, "(", 54, "[", 58, "{"],
2099
+ ["closedBy", 24, ")", 55, "]", 59, "}"]
2100
+ ],
2101
+ propSources: [pythonHighlighting],
2102
+ skippedNodes: [0, 4],
2103
+ repeatNodeCount: 34,
2104
+ tokenData: "!2|~R!`OX%TXY%oY[%T[]%o]p%Tpq%oqr'ars)Yst*xtu%Tuv,dvw-hwx.Uxy/tyz0[z{0r{|2S|}2p}!O3W!O!P4_!P!Q:Z!Q!R;k!R![>_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",
2105
+ tokenizers: [legacyPrint, indentation, newlines, strings, 0, 1, 2, 3, 4],
2106
+ topRules: { "Script": [0, 5] },
2107
+ specialized: [{ term: 221, get: (value) => spec_identifier[value] || -1 }],
2108
+ tokenPrec: 7668
2109
+ });
2110
+ const cache = /* @__PURE__ */ new NodeWeakMap();
2111
+ const ScopeNodes = /* @__PURE__ */ new Set([
2112
+ "Script",
2113
+ "Body",
2114
+ "FunctionDefinition",
2115
+ "ClassDefinition",
2116
+ "LambdaExpression",
2117
+ "ForStatement",
2118
+ "MatchClause"
2119
+ ]);
2120
+ function defID(type) {
2121
+ return (node, def, outer) => {
2122
+ if (outer)
2123
+ return false;
2124
+ let id2 = node.node.getChild("VariableName");
2125
+ if (id2)
2126
+ def(id2, type);
2127
+ return true;
2128
+ };
2129
+ }
2130
+ const gatherCompletions = {
2131
+ FunctionDefinition: /* @__PURE__ */ defID("function"),
2132
+ ClassDefinition: /* @__PURE__ */ defID("class"),
2133
+ ForStatement(node, def, outer) {
2134
+ if (outer)
2135
+ for (let child = node.node.firstChild; child; child = child.nextSibling) {
2136
+ if (child.name == "VariableName")
2137
+ def(child, "variable");
2138
+ else if (child.name == "in")
2139
+ break;
2140
+ }
2141
+ },
2142
+ ImportStatement(_node, def) {
2143
+ var _a, _b;
2144
+ let { node } = _node;
2145
+ let isFrom = ((_a = node.firstChild) === null || _a === void 0 ? void 0 : _a.name) == "from";
2146
+ for (let ch = node.getChild("import"); ch; ch = ch.nextSibling) {
2147
+ if (ch.name == "VariableName" && ((_b = ch.nextSibling) === null || _b === void 0 ? void 0 : _b.name) != "as")
2148
+ def(ch, isFrom ? "variable" : "namespace");
2149
+ }
2150
+ },
2151
+ AssignStatement(node, def) {
2152
+ for (let child = node.node.firstChild; child; child = child.nextSibling) {
2153
+ if (child.name == "VariableName")
2154
+ def(child, "variable");
2155
+ else if (child.name == ":" || child.name == "AssignOp")
2156
+ break;
2157
+ }
2158
+ },
2159
+ ParamList(node, def) {
2160
+ for (let prev = null, child = node.node.firstChild; child; child = child.nextSibling) {
2161
+ if (child.name == "VariableName" && (!prev || !/\*|AssignOp/.test(prev.name)))
2162
+ def(child, "variable");
2163
+ prev = child;
2164
+ }
2165
+ },
2166
+ CapturePattern: /* @__PURE__ */ defID("variable"),
2167
+ AsPattern: /* @__PURE__ */ defID("variable"),
2168
+ __proto__: null
2169
+ };
2170
+ function getScope(doc, node) {
2171
+ let cached = cache.get(node);
2172
+ if (cached)
2173
+ return cached;
2174
+ let completions = [], top = true;
2175
+ function def(node2, type) {
2176
+ let name = doc.sliceString(node2.from, node2.to);
2177
+ completions.push({ label: name, type });
2178
+ }
2179
+ node.cursor(IterMode.IncludeAnonymous).iterate((node2) => {
2180
+ if (node2.name) {
2181
+ let gather = gatherCompletions[node2.name];
2182
+ if (gather && gather(node2, def, top) || !top && ScopeNodes.has(node2.name))
2183
+ return false;
2184
+ top = false;
2185
+ } else if (node2.to - node2.from > 8192) {
2186
+ for (let c of getScope(doc, node2.node))
2187
+ completions.push(c);
2188
+ return false;
2189
+ }
2190
+ });
2191
+ cache.set(node, completions);
2192
+ return completions;
2193
+ }
2194
+ const Identifier = /^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/;
2195
+ const dontComplete = ["String", "FormatString", "Comment", "PropertyName"];
2196
+ function localCompletionSource(context) {
2197
+ let inner = syntaxTree(context.state).resolveInner(context.pos, -1);
2198
+ if (dontComplete.indexOf(inner.name) > -1)
2199
+ return null;
2200
+ let isWord = inner.name == "VariableName" || inner.to - inner.from < 20 && Identifier.test(context.state.sliceDoc(inner.from, inner.to));
2201
+ if (!isWord && !context.explicit)
2202
+ return null;
2203
+ let options = [];
2204
+ for (let pos = inner; pos; pos = pos.parent) {
2205
+ if (ScopeNodes.has(pos.name))
2206
+ options = options.concat(getScope(context.state.doc, pos));
2207
+ }
2208
+ return {
2209
+ options,
2210
+ from: isWord ? inner.from : context.pos,
2211
+ validFor: Identifier
2212
+ };
2213
+ }
2214
+ const globals = /* @__PURE__ */ [
2215
+ "__annotations__",
2216
+ "__builtins__",
2217
+ "__debug__",
2218
+ "__doc__",
2219
+ "__import__",
2220
+ "__name__",
2221
+ "__loader__",
2222
+ "__package__",
2223
+ "__spec__",
2224
+ "False",
2225
+ "None",
2226
+ "True"
2227
+ ].map((n) => ({ label: n, type: "constant" })).concat(/* @__PURE__ */ [
2228
+ "ArithmeticError",
2229
+ "AssertionError",
2230
+ "AttributeError",
2231
+ "BaseException",
2232
+ "BlockingIOError",
2233
+ "BrokenPipeError",
2234
+ "BufferError",
2235
+ "BytesWarning",
2236
+ "ChildProcessError",
2237
+ "ConnectionAbortedError",
2238
+ "ConnectionError",
2239
+ "ConnectionRefusedError",
2240
+ "ConnectionResetError",
2241
+ "DeprecationWarning",
2242
+ "EOFError",
2243
+ "Ellipsis",
2244
+ "EncodingWarning",
2245
+ "EnvironmentError",
2246
+ "Exception",
2247
+ "FileExistsError",
2248
+ "FileNotFoundError",
2249
+ "FloatingPointError",
2250
+ "FutureWarning",
2251
+ "GeneratorExit",
2252
+ "IOError",
2253
+ "ImportError",
2254
+ "ImportWarning",
2255
+ "IndentationError",
2256
+ "IndexError",
2257
+ "InterruptedError",
2258
+ "IsADirectoryError",
2259
+ "KeyError",
2260
+ "KeyboardInterrupt",
2261
+ "LookupError",
2262
+ "MemoryError",
2263
+ "ModuleNotFoundError",
2264
+ "NameError",
2265
+ "NotADirectoryError",
2266
+ "NotImplemented",
2267
+ "NotImplementedError",
2268
+ "OSError",
2269
+ "OverflowError",
2270
+ "PendingDeprecationWarning",
2271
+ "PermissionError",
2272
+ "ProcessLookupError",
2273
+ "RecursionError",
2274
+ "ReferenceError",
2275
+ "ResourceWarning",
2276
+ "RuntimeError",
2277
+ "RuntimeWarning",
2278
+ "StopAsyncIteration",
2279
+ "StopIteration",
2280
+ "SyntaxError",
2281
+ "SyntaxWarning",
2282
+ "SystemError",
2283
+ "SystemExit",
2284
+ "TabError",
2285
+ "TimeoutError",
2286
+ "TypeError",
2287
+ "UnboundLocalError",
2288
+ "UnicodeDecodeError",
2289
+ "UnicodeEncodeError",
2290
+ "UnicodeError",
2291
+ "UnicodeTranslateError",
2292
+ "UnicodeWarning",
2293
+ "UserWarning",
2294
+ "ValueError",
2295
+ "Warning",
2296
+ "ZeroDivisionError"
2297
+ ].map((n) => ({ label: n, type: "type" }))).concat(/* @__PURE__ */ [
2298
+ "bool",
2299
+ "bytearray",
2300
+ "bytes",
2301
+ "classmethod",
2302
+ "complex",
2303
+ "float",
2304
+ "frozenset",
2305
+ "int",
2306
+ "list",
2307
+ "map",
2308
+ "memoryview",
2309
+ "object",
2310
+ "range",
2311
+ "set",
2312
+ "staticmethod",
2313
+ "str",
2314
+ "super",
2315
+ "tuple",
2316
+ "type"
2317
+ ].map((n) => ({ label: n, type: "class" }))).concat(/* @__PURE__ */ [
2318
+ "abs",
2319
+ "aiter",
2320
+ "all",
2321
+ "anext",
2322
+ "any",
2323
+ "ascii",
2324
+ "bin",
2325
+ "breakpoint",
2326
+ "callable",
2327
+ "chr",
2328
+ "compile",
2329
+ "delattr",
2330
+ "dict",
2331
+ "dir",
2332
+ "divmod",
2333
+ "enumerate",
2334
+ "eval",
2335
+ "exec",
2336
+ "exit",
2337
+ "filter",
2338
+ "format",
2339
+ "getattr",
2340
+ "globals",
2341
+ "hasattr",
2342
+ "hash",
2343
+ "help",
2344
+ "hex",
2345
+ "id",
2346
+ "input",
2347
+ "isinstance",
2348
+ "issubclass",
2349
+ "iter",
2350
+ "len",
2351
+ "license",
2352
+ "locals",
2353
+ "max",
2354
+ "min",
2355
+ "next",
2356
+ "oct",
2357
+ "open",
2358
+ "ord",
2359
+ "pow",
2360
+ "print",
2361
+ "property",
2362
+ "quit",
2363
+ "repr",
2364
+ "reversed",
2365
+ "round",
2366
+ "setattr",
2367
+ "slice",
2368
+ "sorted",
2369
+ "sum",
2370
+ "vars",
2371
+ "zip"
2372
+ ].map((n) => ({ label: n, type: "function" })));
2373
+ const snippets = [
2374
+ /* @__PURE__ */ snippetCompletion("def ${name}(${params}):\n ${}", {
2375
+ label: "def",
2376
+ detail: "function",
2377
+ type: "keyword"
2378
+ }),
2379
+ /* @__PURE__ */ snippetCompletion("for ${name} in ${collection}:\n ${}", {
2380
+ label: "for",
2381
+ detail: "loop",
2382
+ type: "keyword"
2383
+ }),
2384
+ /* @__PURE__ */ snippetCompletion("while ${}:\n ${}", {
2385
+ label: "while",
2386
+ detail: "loop",
2387
+ type: "keyword"
2388
+ }),
2389
+ /* @__PURE__ */ snippetCompletion("try:\n ${}\nexcept ${error}:\n ${}", {
2390
+ label: "try",
2391
+ detail: "/ except block",
2392
+ type: "keyword"
2393
+ }),
2394
+ /* @__PURE__ */ snippetCompletion("if ${}:\n \n", {
2395
+ label: "if",
2396
+ detail: "block",
2397
+ type: "keyword"
2398
+ }),
2399
+ /* @__PURE__ */ snippetCompletion("if ${}:\n ${}\nelse:\n ${}", {
2400
+ label: "if",
2401
+ detail: "/ else block",
2402
+ type: "keyword"
2403
+ }),
2404
+ /* @__PURE__ */ snippetCompletion("class ${name}:\n def __init__(self, ${params}):\n ${}", {
2405
+ label: "class",
2406
+ detail: "definition",
2407
+ type: "keyword"
2408
+ }),
2409
+ /* @__PURE__ */ snippetCompletion("import ${module}", {
2410
+ label: "import",
2411
+ detail: "statement",
2412
+ type: "keyword"
2413
+ }),
2414
+ /* @__PURE__ */ snippetCompletion("from ${module} import ${names}", {
2415
+ label: "from",
2416
+ detail: "import",
2417
+ type: "keyword"
2418
+ })
2419
+ ];
2420
+ const globalCompletion = /* @__PURE__ */ ifNotIn(dontComplete, /* @__PURE__ */ completeFromList(/* @__PURE__ */ globals.concat(snippets)));
2421
+ function innerBody(context) {
2422
+ let { node, pos } = context;
2423
+ let lineIndent = context.lineIndent(pos, -1);
2424
+ let found = null;
2425
+ for (; ; ) {
2426
+ let before = node.childBefore(pos);
2427
+ if (!before) {
2428
+ break;
2429
+ } else if (before.name == "Comment") {
2430
+ pos = before.from;
2431
+ } else if (before.name == "Body" || before.name == "MatchBody") {
2432
+ if (context.baseIndentFor(before) + context.unit <= lineIndent)
2433
+ found = before;
2434
+ node = before;
2435
+ } else if (before.name == "MatchClause") {
2436
+ node = before;
2437
+ } else if (before.type.is("Statement")) {
2438
+ node = before;
2439
+ } else {
2440
+ break;
2441
+ }
2442
+ }
2443
+ return found;
2444
+ }
2445
+ function indentBody(context, node) {
2446
+ let base = context.baseIndentFor(node);
2447
+ let line = context.lineAt(context.pos, -1), to = line.from + line.text.length;
2448
+ if (/^\s*($|#)/.test(line.text) && context.node.to < to + 100 && !/\S/.test(context.state.sliceDoc(to, context.node.to)) && context.lineIndent(context.pos, -1) <= base)
2449
+ return null;
2450
+ if (/^\s*(else:|elif |except |finally:|case\s+[^=:]+:)/.test(context.textAfter) && context.lineIndent(context.pos, -1) > base)
2451
+ return null;
2452
+ return base + context.unit;
2453
+ }
2454
+ const pythonLanguage = /* @__PURE__ */ LRLanguage.define({
2455
+ name: "python",
2456
+ parser: /* @__PURE__ */ parser.configure({
2457
+ props: [
2458
+ /* @__PURE__ */ indentNodeProp.add({
2459
+ Body: (context) => {
2460
+ var _a;
2461
+ let body = /^\s*(#|$)/.test(context.textAfter) && innerBody(context) || context.node;
2462
+ return (_a = indentBody(context, body)) !== null && _a !== void 0 ? _a : context.continue();
2463
+ },
2464
+ MatchBody: (context) => {
2465
+ var _a;
2466
+ let inner = innerBody(context);
2467
+ return (_a = indentBody(context, inner || context.node)) !== null && _a !== void 0 ? _a : context.continue();
2468
+ },
2469
+ IfStatement: (cx) => /^\s*(else:|elif )/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),
2470
+ "ForStatement WhileStatement": (cx) => /^\s*else:/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),
2471
+ TryStatement: (cx) => /^\s*(except[ :]|finally:|else:)/.test(cx.textAfter) ? cx.baseIndent : cx.continue(),
2472
+ MatchStatement: (cx) => {
2473
+ if (/^\s*case /.test(cx.textAfter))
2474
+ return cx.baseIndent + cx.unit;
2475
+ return cx.continue();
2476
+ },
2477
+ "TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression": /* @__PURE__ */ delimitedIndent({ closing: ")" }),
2478
+ "DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression": /* @__PURE__ */ delimitedIndent({ closing: "}" }),
2479
+ "ArrayExpression ArrayComprehensionExpression": /* @__PURE__ */ delimitedIndent({ closing: "]" }),
2480
+ MemberExpression: (cx) => cx.baseIndent + cx.unit,
2481
+ "String FormatString": () => null,
2482
+ Script: (context) => {
2483
+ var _a;
2484
+ let inner = innerBody(context);
2485
+ return (_a = inner && indentBody(context, inner)) !== null && _a !== void 0 ? _a : context.continue();
2486
+ }
2487
+ }),
2488
+ /* @__PURE__ */ foldNodeProp.add({
2489
+ "ArrayExpression DictionaryExpression SetExpression TupleExpression": foldInside,
2490
+ Body: (node, state) => ({ from: node.from + 1, to: node.to - (node.to == state.doc.length ? 0 : 1) }),
2491
+ "String FormatString": (node, state) => ({ from: state.doc.lineAt(node.from).to, to: node.to })
2492
+ })
2493
+ ]
2494
+ }),
2495
+ languageData: {
2496
+ closeBrackets: {
2497
+ brackets: ["(", "[", "{", "'", '"', "'''", '"""'],
2498
+ stringPrefixes: [
2499
+ "f",
2500
+ "fr",
2501
+ "rf",
2502
+ "r",
2503
+ "u",
2504
+ "b",
2505
+ "br",
2506
+ "rb",
2507
+ "F",
2508
+ "FR",
2509
+ "RF",
2510
+ "R",
2511
+ "U",
2512
+ "B",
2513
+ "BR",
2514
+ "RB"
2515
+ ]
2516
+ },
2517
+ commentTokens: { line: "#" },
2518
+ // Indent logic logic are triggered upon below input patterns
2519
+ indentOnInput: /^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/
2520
+ }
2521
+ });
2522
+ function python() {
2523
+ return new LanguageSupport(pythonLanguage, [
2524
+ pythonLanguage.data.of({ autocomplete: localCompletionSource }),
2525
+ pythonLanguage.data.of({ autocomplete: globalCompletion })
2526
+ ]);
2527
+ }
2528
+ const chalky = "#e5c07b", coral = "#e06c75", cyan = "#56b6c2", invalid = "#ffffff", ivory = "#abb2bf", stone = "#7d8799", malibu = "#61afef", sage = "#98c379", whiskey = "#d19a66", violet = "#c678dd", darkBackground = "#21252b", highlightBackground = "#2c313a", background = "#282c34", tooltipBackground = "#353a42", selection = "#3E4451", cursor = "#528bff";
2529
+ const oneDarkTheme = /* @__PURE__ */ EditorView.theme({
2530
+ "&": {
2531
+ color: ivory,
2532
+ backgroundColor: background
2533
+ },
2534
+ ".cm-content": {
2535
+ caretColor: cursor
2536
+ },
2537
+ ".cm-cursor, .cm-dropCursor": { borderLeftColor: cursor },
2538
+ "&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection": { backgroundColor: selection },
2539
+ ".cm-panels": { backgroundColor: darkBackground, color: ivory },
2540
+ ".cm-panels.cm-panels-top": { borderBottom: "2px solid black" },
2541
+ ".cm-panels.cm-panels-bottom": { borderTop: "2px solid black" },
2542
+ ".cm-searchMatch": {
2543
+ backgroundColor: "#72a1ff59",
2544
+ outline: "1px solid #457dff"
2545
+ },
2546
+ ".cm-searchMatch.cm-searchMatch-selected": {
2547
+ backgroundColor: "#6199ff2f"
2548
+ },
2549
+ ".cm-activeLine": { backgroundColor: "#6699ff0b" },
2550
+ ".cm-selectionMatch": { backgroundColor: "#aafe661a" },
2551
+ "&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket": {
2552
+ backgroundColor: "#bad0f847"
2553
+ },
2554
+ ".cm-gutters": {
2555
+ backgroundColor: background,
2556
+ color: stone,
2557
+ border: "none"
2558
+ },
2559
+ ".cm-activeLineGutter": {
2560
+ backgroundColor: highlightBackground
2561
+ },
2562
+ ".cm-foldPlaceholder": {
2563
+ backgroundColor: "transparent",
2564
+ border: "none",
2565
+ color: "#ddd"
2566
+ },
2567
+ ".cm-tooltip": {
2568
+ border: "none",
2569
+ backgroundColor: tooltipBackground
2570
+ },
2571
+ ".cm-tooltip .cm-tooltip-arrow:before": {
2572
+ borderTopColor: "transparent",
2573
+ borderBottomColor: "transparent"
2574
+ },
2575
+ ".cm-tooltip .cm-tooltip-arrow:after": {
2576
+ borderTopColor: tooltipBackground,
2577
+ borderBottomColor: tooltipBackground
2578
+ },
2579
+ ".cm-tooltip-autocomplete": {
2580
+ "& > ul > li[aria-selected]": {
2581
+ backgroundColor: highlightBackground,
2582
+ color: ivory
2583
+ }
2584
+ }
2585
+ }, { dark: true });
2586
+ const oneDarkHighlightStyle = /* @__PURE__ */ HighlightStyle.define([
2587
+ {
2588
+ tag: tags.keyword,
2589
+ color: violet
2590
+ },
2591
+ {
2592
+ tag: [tags.name, tags.deleted, tags.character, tags.propertyName, tags.macroName],
2593
+ color: coral
2594
+ },
2595
+ {
2596
+ tag: [/* @__PURE__ */ tags.function(tags.variableName), tags.labelName],
2597
+ color: malibu
2598
+ },
2599
+ {
2600
+ tag: [tags.color, /* @__PURE__ */ tags.constant(tags.name), /* @__PURE__ */ tags.standard(tags.name)],
2601
+ color: whiskey
2602
+ },
2603
+ {
2604
+ tag: [/* @__PURE__ */ tags.definition(tags.name), tags.separator],
2605
+ color: ivory
2606
+ },
2607
+ {
2608
+ tag: [tags.typeName, tags.className, tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace],
2609
+ color: chalky
2610
+ },
2611
+ {
2612
+ tag: [tags.operator, tags.operatorKeyword, tags.url, tags.escape, tags.regexp, tags.link, /* @__PURE__ */ tags.special(tags.string)],
2613
+ color: cyan
2614
+ },
2615
+ {
2616
+ tag: [tags.meta, tags.comment],
2617
+ color: stone
2618
+ },
2619
+ {
2620
+ tag: tags.strong,
2621
+ fontWeight: "bold"
2622
+ },
2623
+ {
2624
+ tag: tags.emphasis,
2625
+ fontStyle: "italic"
2626
+ },
2627
+ {
2628
+ tag: tags.strikethrough,
2629
+ textDecoration: "line-through"
2630
+ },
2631
+ {
2632
+ tag: tags.link,
2633
+ color: stone,
2634
+ textDecoration: "underline"
2635
+ },
2636
+ {
2637
+ tag: tags.heading,
2638
+ fontWeight: "bold",
2639
+ color: coral
2640
+ },
2641
+ {
2642
+ tag: [tags.atom, tags.bool, /* @__PURE__ */ tags.special(tags.variableName)],
2643
+ color: whiskey
2644
+ },
2645
+ {
2646
+ tag: [tags.processingInstruction, tags.string, tags.inserted],
2647
+ color: sage
2648
+ },
2649
+ {
2650
+ tag: tags.invalid,
2651
+ color: invalid
2652
+ }
2653
+ ]);
2654
+ const oneDark = [oneDarkTheme, /* @__PURE__ */ syntaxHighlighting(oneDarkHighlightStyle)];
2655
+ export {
2656
+ __vite_glob_0_23 as A,
2657
+ __vite_glob_0_24 as B,
2658
+ __vite_glob_0_25 as C,
2659
+ __vite_glob_0_26 as D,
2660
+ __vite_glob_0_27 as E,
2661
+ __vite_glob_0_28 as F,
2662
+ __vite_glob_0_29 as G,
2663
+ __vite_glob_0_30 as H,
2664
+ __vite_glob_0_31 as I,
2665
+ __vite_glob_0_32 as J,
2666
+ __vite_glob_0_33 as K,
2667
+ getDefaultIconUrl as L,
2668
+ getCustomIconUrl as M,
2669
+ __vite_glob_0_0 as _,
2670
+ __vite_glob_0_1 as a,
2671
+ __vite_glob_0_2 as b,
2672
+ __vite_glob_0_3 as c,
2673
+ __vite_glob_0_4 as d,
2674
+ __vite_glob_0_5 as e,
2675
+ fetchNodes as f,
2676
+ getImageUrl as g,
2677
+ __vite_glob_0_6 as h,
2678
+ __vite_glob_0_7 as i,
2679
+ __vite_glob_0_8 as j,
2680
+ __vite_glob_0_9 as k,
2681
+ __vite_glob_0_10 as l,
2682
+ __vite_glob_0_11 as m,
2683
+ __vite_glob_0_12 as n,
2684
+ oneDark as o,
2685
+ python as p,
2686
+ __vite_glob_0_13 as q,
2687
+ __vite_glob_0_14 as r,
2688
+ __vite_glob_0_15 as s,
2689
+ __vite_glob_0_16 as t,
2690
+ __vite_glob_0_17 as u,
2691
+ __vite_glob_0_18 as v,
2692
+ __vite_glob_0_19 as w,
2693
+ __vite_glob_0_20 as x,
2694
+ __vite_glob_0_21 as y,
2695
+ __vite_glob_0_22 as z
2696
+ };