semantifold 0.1.1 → 0.3.0

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 (399) hide show
  1. package/README.md +42 -10
  2. package/build/index.d.ts +32 -3
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +99 -4
  5. package/build/src/acceptance.d.ts +32 -0
  6. package/build/src/acceptance.d.ts.map +1 -0
  7. package/build/src/acceptance.js +358 -0
  8. package/build/src/array.d.ts +7 -0
  9. package/build/src/array.d.ts.map +1 -0
  10. package/build/src/array.js +18 -0
  11. package/build/src/artifact-path.d.ts +13 -0
  12. package/build/src/artifact-path.d.ts.map +1 -0
  13. package/build/src/artifact-path.js +30 -0
  14. package/build/src/artifacts.d.ts +7 -0
  15. package/build/src/artifacts.d.ts.map +1 -0
  16. package/build/src/artifacts.js +389 -0
  17. package/build/src/backends/c-runtime.d.ts +3 -0
  18. package/build/src/backends/c-runtime.d.ts.map +1 -0
  19. package/build/src/backends/c-runtime.js +151 -0
  20. package/build/src/backends/c-validation.d.ts +12 -0
  21. package/build/src/backends/c-validation.d.ts.map +1 -0
  22. package/build/src/backends/c-validation.js +85 -0
  23. package/build/src/backends/c.d.ts +31 -0
  24. package/build/src/backends/c.d.ts.map +1 -0
  25. package/build/src/backends/c.js +308 -0
  26. package/build/src/backends/cpp-runtime.d.ts +3 -0
  27. package/build/src/backends/cpp-runtime.d.ts.map +1 -0
  28. package/build/src/backends/cpp-runtime.js +99 -0
  29. package/build/src/backends/cpp-validation.d.ts +9 -0
  30. package/build/src/backends/cpp-validation.d.ts.map +1 -0
  31. package/build/src/backends/cpp-validation.js +74 -0
  32. package/build/src/backends/cpp.d.ts +16 -0
  33. package/build/src/backends/cpp.d.ts.map +1 -0
  34. package/build/src/backends/cpp.js +285 -0
  35. package/build/src/backends/csharp.d.ts +20 -0
  36. package/build/src/backends/csharp.d.ts.map +1 -0
  37. package/build/src/backends/csharp.js +259 -0
  38. package/build/src/backends/go.d.ts +20 -0
  39. package/build/src/backends/go.d.ts.map +1 -0
  40. package/build/src/backends/go.js +374 -0
  41. package/build/src/backends/identifiers.d.ts +12 -0
  42. package/build/src/backends/identifiers.d.ts.map +1 -1
  43. package/build/src/backends/identifiers.js +79 -2
  44. package/build/src/backends/index.d.ts.map +1 -1
  45. package/build/src/backends/index.js +27 -37
  46. package/build/src/backends/native-validation.d.ts +9 -0
  47. package/build/src/backends/native-validation.d.ts.map +1 -0
  48. package/build/src/backends/native-validation.js +59 -0
  49. package/build/src/backends/ordered-expressions.d.ts +74 -0
  50. package/build/src/backends/ordered-expressions.d.ts.map +1 -0
  51. package/build/src/backends/ordered-expressions.js +159 -0
  52. package/build/src/backends/python.d.ts +8 -0
  53. package/build/src/backends/python.d.ts.map +1 -0
  54. package/build/src/backends/python.js +162 -0
  55. package/build/src/backends/scalars.d.ts.map +1 -1
  56. package/build/src/backends/scalars.js +8 -2
  57. package/build/src/backends/shared.d.ts.map +1 -1
  58. package/build/src/backends/shared.js +67 -19
  59. package/build/src/binary-mapping.d.ts +32 -0
  60. package/build/src/binary-mapping.d.ts.map +1 -0
  61. package/build/src/binary-mapping.js +285 -0
  62. package/build/src/diagnostic.d.ts +36 -4
  63. package/build/src/diagnostic.d.ts.map +1 -1
  64. package/build/src/diagnostic.js +42 -3
  65. package/build/src/frontends/c-parser.d.ts +20 -0
  66. package/build/src/frontends/c-parser.d.ts.map +1 -0
  67. package/build/src/frontends/c-parser.js +14 -0
  68. package/build/src/frontends/c.d.ts +220 -0
  69. package/build/src/frontends/c.d.ts.map +1 -0
  70. package/build/src/frontends/c.js +750 -0
  71. package/build/src/frontends/cpp-parser.d.ts +11 -0
  72. package/build/src/frontends/cpp-parser.d.ts.map +1 -0
  73. package/build/src/frontends/cpp-parser.js +15 -0
  74. package/build/src/frontends/cpp.d.ts +227 -0
  75. package/build/src/frontends/cpp.d.ts.map +1 -0
  76. package/build/src/frontends/cpp.js +784 -0
  77. package/build/src/frontends/csharp.d.ts +14 -0
  78. package/build/src/frontends/csharp.d.ts.map +1 -0
  79. package/build/src/frontends/csharp.js +708 -0
  80. package/build/src/frontends/go.d.ts +15 -0
  81. package/build/src/frontends/go.d.ts.map +1 -0
  82. package/build/src/frontends/go.js +712 -0
  83. package/build/src/frontends/index.d.ts.map +1 -1
  84. package/build/src/frontends/index.js +5 -23
  85. package/build/src/frontends/python.d.ts +14 -0
  86. package/build/src/frontends/python.d.ts.map +1 -0
  87. package/build/src/frontends/python.js +615 -0
  88. package/build/src/frontends/scalars.d.ts.map +1 -1
  89. package/build/src/frontends/scalars.js +21 -1
  90. package/build/src/language-registry.d.ts +113 -0
  91. package/build/src/language-registry.d.ts.map +1 -0
  92. package/build/src/language-registry.js +421 -0
  93. package/build/src/mapping.js +3 -2
  94. package/build/src/semantic/location.d.ts +7 -0
  95. package/build/src/semantic/location.d.ts.map +1 -1
  96. package/build/src/semantic/location.js +10 -1
  97. package/build/src/semantic/provenance.js +3 -3
  98. package/build/src/semantic/types.d.ts +399 -2
  99. package/build/src/semantic/types.d.ts.map +1 -1
  100. package/build/src/semantic/types.js +110 -2
  101. package/build/src/subprocess.d.ts +38 -0
  102. package/build/src/subprocess.d.ts.map +1 -0
  103. package/build/src/subprocess.js +233 -0
  104. package/build/src/timeout.d.ts +8 -0
  105. package/build/src/timeout.d.ts.map +1 -0
  106. package/build/src/timeout.js +11 -0
  107. package/build/src/toolchains.d.ts +107 -0
  108. package/build/src/toolchains.d.ts.map +1 -0
  109. package/build/src/toolchains.js +417 -0
  110. package/docs/architecture.md +23 -5
  111. package/docs/c.md +60 -0
  112. package/docs/cpp.md +61 -0
  113. package/docs/goals.md +4 -2
  114. package/docs/language-support.md +46 -6
  115. package/docs/parser-qualification.md +219 -0
  116. package/docs/plans/2026-09-05-standard-library-portability.md +46 -0
  117. package/docs/source-maps.md +38 -5
  118. package/docs/standard-library-portability.md +190 -0
  119. package/docs/testing.md +131 -3
  120. package/index.js +109 -4
  121. package/node_modules/node-addon-api/LICENSE.md +9 -0
  122. package/node_modules/node-addon-api/README.md +95 -0
  123. package/node_modules/node-addon-api/common.gypi +21 -0
  124. package/node_modules/node-addon-api/except.gypi +25 -0
  125. package/node_modules/node-addon-api/index.js +14 -0
  126. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  127. package/node_modules/node-addon-api/napi-inl.h +7250 -0
  128. package/node_modules/node-addon-api/napi.h +3463 -0
  129. package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  130. package/node_modules/node-addon-api/node_api.gyp +9 -0
  131. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  132. package/node_modules/node-addon-api/nothing.c +0 -0
  133. package/node_modules/node-addon-api/package-support.json +21 -0
  134. package/node_modules/node-addon-api/package.json +481 -0
  135. package/node_modules/node-addon-api/tools/README.md +73 -0
  136. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  137. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  138. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  139. package/node_modules/node-gyp-build/LICENSE +21 -0
  140. package/node_modules/node-gyp-build/README.md +58 -0
  141. package/node_modules/node-gyp-build/SECURITY.md +5 -0
  142. package/node_modules/node-gyp-build/bin.js +84 -0
  143. package/node_modules/node-gyp-build/build-test.js +19 -0
  144. package/node_modules/node-gyp-build/index.js +6 -0
  145. package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  146. package/node_modules/node-gyp-build/optional.js +7 -0
  147. package/node_modules/node-gyp-build/package.json +43 -0
  148. package/node_modules/semantifold-tree-sitter-legacy-internal/LICENSE +15 -0
  149. package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +7 -0
  150. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/LICENSE +21 -0
  151. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/README.md +90 -0
  152. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/binding.gyp +79 -0
  153. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/index.js +895 -0
  154. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/package.json +62 -0
  155. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  156. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  157. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  158. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  159. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  160. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  161. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  162. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  163. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.cc +106 -0
  164. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.h +17 -0
  165. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  166. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.h +19 -0
  167. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  168. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  169. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.cc +1056 -0
  170. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.h +30 -0
  171. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.cc +298 -0
  172. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.h +35 -0
  173. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.cc +383 -0
  174. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.h +39 -0
  175. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.cc +307 -0
  176. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.h +45 -0
  177. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  178. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  179. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/tree-sitter.d.ts +211 -0
  180. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1266 -0
  181. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  182. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  183. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +290 -0
  184. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  185. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  186. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  187. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  188. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  189. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  190. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +221 -0
  191. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +299 -0
  192. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  193. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +419 -0
  194. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  195. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +14 -0
  196. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +774 -0
  197. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2151 -0
  198. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +230 -0
  199. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  200. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4134 -0
  201. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  202. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  203. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  204. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  205. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1060 -0
  206. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +382 -0
  207. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +165 -0
  208. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  209. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +714 -0
  210. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  211. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  212. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  213. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  214. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  215. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  216. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  217. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  218. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  219. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  220. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +50 -0
  221. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +23 -0
  222. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  223. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1294 -0
  224. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1823 -0
  225. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  226. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/LICENSE +21 -0
  227. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/README.md +18 -0
  228. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/binding.gyp +29 -0
  229. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding.cc +20 -0
  230. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding_test.js +9 -0
  231. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.d.ts +28 -0
  232. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.js +11 -0
  233. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/grammar.js +1470 -0
  234. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/package.json +60 -0
  235. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-arm64/tree-sitter-c.node +0 -0
  236. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-x64/tree-sitter-c.node +0 -0
  237. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-arm64/tree-sitter-c.node +0 -0
  238. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-x64/tree-sitter-c.node +0 -0
  239. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-arm64/tree-sitter-c.node +0 -0
  240. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-x64/tree-sitter-c.node +0 -0
  241. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/highlights.scm +81 -0
  242. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/tags.scm +9 -0
  243. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/grammar.json +9735 -0
  244. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/node-types.json +4614 -0
  245. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/parser.c +119615 -0
  246. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/alloc.h +54 -0
  247. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/array.h +290 -0
  248. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/parser.h +266 -0
  249. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter-c.wasm +0 -0
  250. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter.json +43 -0
  251. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/LICENSE +21 -0
  252. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/README.md +22 -0
  253. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/binding.gyp +30 -0
  254. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding.cc +20 -0
  255. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding_test.js +9 -0
  256. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.d.ts +28 -0
  257. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.js +11 -0
  258. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/grammar.js +1436 -0
  259. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/package.json +61 -0
  260. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-arm64/tree-sitter-cpp.node +0 -0
  261. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-x64/tree-sitter-cpp.node +0 -0
  262. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-arm64/tree-sitter-cpp.node +0 -0
  263. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-x64/tree-sitter-cpp.node +0 -0
  264. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-arm64/tree-sitter-cpp.node +0 -0
  265. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-x64/tree-sitter-cpp.node +0 -0
  266. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/highlights.scm +70 -0
  267. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/injections.scm +3 -0
  268. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/tags.scm +15 -0
  269. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/grammar.json +17084 -0
  270. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/node-types.json +7997 -0
  271. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/parser.c +530368 -0
  272. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/scanner.c +148 -0
  273. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/alloc.h +54 -0
  274. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/array.h +290 -0
  275. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/parser.h +266 -0
  276. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter-cpp.wasm +0 -0
  277. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter.json +55 -0
  278. package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +22 -0
  279. package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +152 -0
  280. package/node_modules/tree-sitter/LICENSE +21 -0
  281. package/node_modules/tree-sitter/README.md +128 -0
  282. package/node_modules/tree-sitter/binding.gyp +88 -0
  283. package/node_modules/tree-sitter/index.js +950 -0
  284. package/node_modules/tree-sitter/package.json +76 -0
  285. package/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  286. package/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  287. package/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  288. package/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  289. package/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  290. package/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  291. package/node_modules/tree-sitter/src/addon_data.h +47 -0
  292. package/node_modules/tree-sitter/src/binding.cc +35 -0
  293. package/node_modules/tree-sitter/src/conversions.cc +140 -0
  294. package/node_modules/tree-sitter/src/conversions.h +22 -0
  295. package/node_modules/tree-sitter/src/language.cc +105 -0
  296. package/node_modules/tree-sitter/src/language.h +17 -0
  297. package/node_modules/tree-sitter/src/logger.cc +70 -0
  298. package/node_modules/tree-sitter/src/logger.h +19 -0
  299. package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  300. package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  301. package/node_modules/tree-sitter/src/node.cc +1088 -0
  302. package/node_modules/tree-sitter/src/node.h +30 -0
  303. package/node_modules/tree-sitter/src/parser.cc +332 -0
  304. package/node_modules/tree-sitter/src/parser.h +35 -0
  305. package/node_modules/tree-sitter/src/query.cc +425 -0
  306. package/node_modules/tree-sitter/src/query.h +40 -0
  307. package/node_modules/tree-sitter/src/tree.cc +316 -0
  308. package/node_modules/tree-sitter/src/tree.h +45 -0
  309. package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  310. package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  311. package/node_modules/tree-sitter/tree-sitter.d.ts +1083 -0
  312. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
  313. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  314. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  315. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  316. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  317. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  318. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  319. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
  320. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  321. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  322. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
  323. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
  324. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  325. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
  326. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
  327. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  328. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
  329. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2297 -0
  330. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
  331. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
  332. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +241 -0
  333. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4347 -0
  334. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  335. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  336. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +912 -0
  337. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  338. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
  339. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  340. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  341. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  342. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +716 -0
  343. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  344. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  345. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  346. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  347. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  348. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  349. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  350. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  351. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  352. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  353. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  354. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
  355. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  356. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +137 -0
  357. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
  358. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1937 -0
  359. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  360. package/package.json +24 -6
  361. package/src/acceptance.js +380 -0
  362. package/src/array.js +19 -0
  363. package/src/artifact-path.js +34 -0
  364. package/src/artifacts.js +420 -0
  365. package/src/backends/c-runtime.js +151 -0
  366. package/src/backends/c-validation.js +83 -0
  367. package/src/backends/c.js +308 -0
  368. package/src/backends/cpp-runtime.js +99 -0
  369. package/src/backends/cpp-validation.js +70 -0
  370. package/src/backends/cpp.js +285 -0
  371. package/src/backends/csharp.js +270 -0
  372. package/src/backends/go.js +383 -0
  373. package/src/backends/identifiers.js +80 -1
  374. package/src/backends/index.js +23 -32
  375. package/src/backends/native-validation.js +64 -0
  376. package/src/backends/ordered-expressions.js +161 -0
  377. package/src/backends/python.js +175 -0
  378. package/src/backends/scalars.js +8 -1
  379. package/src/backends/shared.js +64 -17
  380. package/src/binary-mapping.js +305 -0
  381. package/src/diagnostic.js +34 -2
  382. package/src/frontends/c-parser.js +17 -0
  383. package/src/frontends/c.js +780 -0
  384. package/src/frontends/cpp-parser.js +18 -0
  385. package/src/frontends/cpp.js +816 -0
  386. package/src/frontends/csharp.js +759 -0
  387. package/src/frontends/go.js +770 -0
  388. package/src/frontends/index.js +5 -20
  389. package/src/frontends/python.js +689 -0
  390. package/src/frontends/scalars.js +20 -0
  391. package/src/language-registry.js +454 -0
  392. package/src/mapping.js +2 -1
  393. package/src/semantic/location.js +10 -0
  394. package/src/semantic/provenance.js +2 -2
  395. package/src/semantic/types.js +124 -1
  396. package/src/subprocess.js +232 -0
  397. package/src/timeout.js +12 -0
  398. package/src/toolchains.js +448 -0
  399. package/tsconfig.json +1 -0
@@ -0,0 +1,16 @@
1
+ import { SourceWriter } from "./writer.js";
2
+ export type SemanticModule = import("../semantic/types.js").SemanticModule;
3
+ export type SemanticNode = import("../semantic/types.js").SemanticNode;
4
+ export type Statement = import("../semantic/types.js").Statement;
5
+ export type Block = import("../semantic/types.js").Block;
6
+ export type PlannedValue = import("./ordered-expressions.js").PlannedValue;
7
+ export type PlannedStep = import("./ordered-expressions.js").PlannedStep;
8
+ export type StatementPlan = import("./ordered-expressions.js").StatementPlan;
9
+ /**
10
+ * Emits the one fully validated C++20 translation unit with owned by-value strings.
11
+ * @param {SemanticModule} module - Shared validated semantics.
12
+ * @param {SourceWriter} [writer] - Optional caller-owned provenance writer.
13
+ * @returns {string} Deterministic source for public generation or same-language CST validation.
14
+ */
15
+ export declare function generateCpp(module: SemanticModule, writer?: SourceWriter): string;
16
+ //# sourceMappingURL=cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../src/backends/cpp.js"],"names":[],"mappings":"AAOA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAA;AAEpC,YAAyD,cAAc,GAA7D,OAAO,sBAAsB,EAAE,cAAc,CAAgB;AACvE,YAAuD,YAAY,GAAzD,OAAO,sBAAsB,EAAE,YAAY,CAAc;AACnE,YAAoD,SAAS,GAAnD,OAAO,sBAAsB,EAAE,SAAS,CAAW;AAC7D,YAAgD,KAAK,GAA3C,OAAO,sBAAsB,EAAE,KAAK,CAAO;AACrD,YAA2D,YAAY,GAA7D,OAAO,0BAA0B,EAAE,YAAY,CAAc;AACvE,YAA0D,WAAW,GAA3D,OAAO,0BAA0B,EAAE,WAAW,CAAa;AACrE,YAA4D,aAAa,GAA/D,OAAO,0BAA0B,EAAE,aAAa,CAAe;AAW7E;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAJvB,cAIuB,EAAE,MAAM,AAHvC,CACA,EADQ,YAG+B,GAF7B,MAAM,CAWlB"}
@@ -0,0 +1,285 @@
1
+ // @ts-check
2
+ import { unsupportedCapability } from "../diagnostic.js";
3
+ import { statementSignature, planNativeModule } from "./ordered-expressions.js";
4
+ import { cppRuntime } from "./cpp-runtime.js";
5
+ import { maximumCppSourceLength, validateCppValues } from "./cpp-validation.js";
6
+ import { emitScalarType } from "./scalars.js";
7
+ import { SourceWriter } from "./writer.js";
8
+ /** @typedef {import("../semantic/types.js").SemanticModule} SemanticModule */
9
+ /** @typedef {import("../semantic/types.js").SemanticNode} SemanticNode */
10
+ /** @typedef {import("../semantic/types.js").Statement} Statement */
11
+ /** @typedef {import("../semantic/types.js").Block} Block */
12
+ /** @typedef {import("./ordered-expressions.js").PlannedValue} PlannedValue */
13
+ /** @typedef {import("./ordered-expressions.js").PlannedStep} PlannedStep */
14
+ /** @typedef {import("./ordered-expressions.js").StatementPlan} StatementPlan */
15
+ const binaryTokens = new Map([
16
+ ["IntegerAdd", "semantifold_integer_add"], ["IntegerSubtract", "semantifold_integer_subtract"],
17
+ ["IntegerMultiply", "semantifold_integer_multiply"], ["StringConcat", "semantifold_string_concat"],
18
+ ["StringEqual", "semantifold_string_equal"], ["StringNotEqual", "semantifold_string_not_equal"],
19
+ ["IntegerEqual", "=="], ["IntegerNotEqual", "!="], ["BooleanEqual", "=="], ["BooleanNotEqual", "!="],
20
+ ["IntegerLessThan", "<"], ["IntegerLessThanOrEqual", "<="],
21
+ ["IntegerGreaterThan", ">"], ["IntegerGreaterThanOrEqual", ">="]
22
+ ]);
23
+ /**
24
+ * Emits the one fully validated C++20 translation unit with owned by-value strings.
25
+ * @param {SemanticModule} module - Shared validated semantics.
26
+ * @param {SourceWriter} [writer] - Optional caller-owned provenance writer.
27
+ * @returns {string} Deterministic source for public generation or same-language CST validation.
28
+ */
29
+ export function generateCpp(module, writer) {
30
+ validateCppValues(module);
31
+ const plans = planNativeModule(module, "cpp");
32
+ new CppEmitter(undefined, plans, module.location).program(module);
33
+ const output = writer ?? new SourceWriter({ filename: "program.cpp", language: "cpp", module });
34
+ new CppEmitter(output, plans, module.location).program(module);
35
+ return output.finish().generated.content;
36
+ }
37
+ /** Writes only target syntax from validated semantic occurrences and private plans. */
38
+ class CppEmitter {
39
+ /**
40
+ * Binds the writer and complete plan.
41
+ * @param {SourceWriter | undefined} writer - Provenance writer; omitted for exact size preflight.
42
+ * @param {Map<string, StatementPlan>} plans - Validated occurrence plans.
43
+ * @param {import("../semantic/types.js").SourceLocation} location - Root diagnostic location.
44
+ */
45
+ constructor(writer, plans, location) {
46
+ this.writer = writer;
47
+ this.plans = plans;
48
+ this.location = location;
49
+ this.length = 0;
50
+ }
51
+ /**
52
+ * Writes generated scaffold with a related semantic origin.
53
+ * @param {string} text - C++ syntax.
54
+ * @param {SemanticNode} node - Related node.
55
+ * @param {string} path - Occurrence path.
56
+ * @returns {void}
57
+ */
58
+ synthetic(text, node, path) {
59
+ this.checkSize(text, node);
60
+ this.writer?.synthetic(text, "C++20 ordered-expression and lifetime scaffold", [node], [path]);
61
+ }
62
+ /**
63
+ * Writes an original semantic token or anchor.
64
+ * @param {string} text - Target token.
65
+ * @param {SemanticNode} node - Original node.
66
+ * @param {string} path - Occurrence path.
67
+ * @param {string} [role] - Parser token role.
68
+ * @returns {void}
69
+ */
70
+ mapped(text, node, path, role) {
71
+ this.checkSize(text, node);
72
+ this.writer?.mapped(text, { mappingKind: role ? "exact" : "anchor", node, path, ...(role ? { role } : {}) });
73
+ }
74
+ /**
75
+ * Bounds private emission before any artifact can escape the parser's proven input profile.
76
+ * @param {string} text - Next exact output chunk.
77
+ * @param {SemanticNode} node - Related semantic occurrence.
78
+ * @returns {void}
79
+ */
80
+ checkSize(text, node) {
81
+ this.length += text.length;
82
+ if (this.length > maximumCppSourceLength)
83
+ unsupportedCapability("cpp", "generated program exceeds the frozen CPP parser's 32767 UTF-16 input limit", "location" in node ? node.location : this.location);
84
+ }
85
+ /**
86
+ * Emits canonical prototypes, definitions, and the parameterless main.
87
+ * @param {SemanticModule} module - Semantic module.
88
+ * @returns {void}
89
+ */
90
+ program(module) {
91
+ this.synthetic("/* semantifold:program:cpp:v1 */\n" + cppRuntime + "\n", module, "");
92
+ module.functions.forEach((declaration, index) => {
93
+ const parameters = declaration.parameters.map((parameter) => `${emitScalarType("cpp", parameter.type)} ${parameter.name}`).join(", ");
94
+ this.synthetic(`${emitScalarType("cpp", declaration.returnType)} ${declaration.name}(${parameters});\n`, declaration, `/functions/${index}`);
95
+ });
96
+ module.functions.forEach((declaration, index) => {
97
+ const path = `/functions/${index}`;
98
+ this.synthetic("\n", declaration, path);
99
+ this.mapped(emitScalarType("cpp", declaration.returnType), declaration.returnType, `${path}/returnType`, "type");
100
+ this.synthetic(" ", declaration, path);
101
+ this.mapped(declaration.name, declaration, path, "name");
102
+ this.synthetic("(", declaration, path);
103
+ declaration.parameters.forEach((parameter, parameterIndex) => {
104
+ const parameterPath = `${path}/parameters/${parameterIndex}`;
105
+ if (parameterIndex)
106
+ this.synthetic(", ", parameter, parameterPath);
107
+ this.mapped(emitScalarType("cpp", parameter.type), parameter.type, `${parameterPath}/type`, "type");
108
+ this.synthetic(" ", parameter, parameterPath);
109
+ this.mapped(parameter.name, parameter, parameterPath, "name");
110
+ });
111
+ this.synthetic(") {\n", declaration, path);
112
+ declaration.parameters.forEach((parameter, parameterIndex) => this.synthetic(` (void)${parameter.name};\n`, parameter, `${path}/parameters/${parameterIndex}`));
113
+ this.block(declaration.body, `${path}/body`, " ");
114
+ this.synthetic("}\n", declaration, path);
115
+ });
116
+ this.synthetic("\nint main() {\n", module.entryPoint, "/entryPoint");
117
+ this.block(module.entryPoint.body, "/entryPoint/body", " ");
118
+ this.synthetic(" return 0;\n}\n", module.entryPoint, "/entryPoint");
119
+ }
120
+ /**
121
+ * Emits statements in semantic source order.
122
+ * @param {Block} block - Semantic block.
123
+ * @param {string} path - Occurrence path.
124
+ * @param {string} indent - Current indentation.
125
+ * @returns {void}
126
+ */
127
+ block(block, path, indent) {
128
+ block.statements.forEach((statement, index) => this.statement(statement, `${path}/statements/${index}`, indent));
129
+ }
130
+ /**
131
+ * Emits one paired region with a pure final consumer.
132
+ * @param {Statement} statement - Original statement.
133
+ * @param {string} path - Occurrence path.
134
+ * @param {string} indent - Current indentation.
135
+ * @returns {void}
136
+ */
137
+ statement(statement, path, indent) {
138
+ const plan = this.plans.get(path);
139
+ if (!plan)
140
+ throw new Error("Missing validated C++ statement plan.");
141
+ const marker = `semantifold:ordered-expression:cpp:v1`;
142
+ const signature = statementSignature(statement);
143
+ this.synthetic(`${indent}/* ${marker} begin ${plan.id} ${signature} */\n`, statement, path);
144
+ this.steps(plan.steps, indent);
145
+ this.synthetic(indent, statement, path);
146
+ if (statement.kind == "LocalDeclaration") {
147
+ if (!statement.mutable)
148
+ this.synthetic("const ", statement, path);
149
+ this.mapped(emitScalarType("cpp", statement.type), statement.type, `${path}/type`, "type");
150
+ this.synthetic(" ", statement, path);
151
+ this.mapped(statement.name, statement, path, "name");
152
+ this.synthetic(" ", statement, path);
153
+ this.mapped("=", statement, path, "operator");
154
+ this.synthetic(" ", statement, path);
155
+ }
156
+ else if (statement.kind == "AssignmentStatement") {
157
+ this.mapped(statement.target.name, statement.target, `${path}/target`, "name");
158
+ this.synthetic(" ", statement, path);
159
+ this.mapped("=", statement, path, "operator");
160
+ this.synthetic(" ", statement, path);
161
+ }
162
+ else if (statement.kind == "ReturnStatement")
163
+ this.mapped("return ", statement, path);
164
+ else if (statement.kind == "PrintStatement")
165
+ this.mapped(`semantifold_print_${plan.value.type}(`, statement, path);
166
+ else
167
+ this.mapped("if (", statement, path);
168
+ this.value(plan.value);
169
+ if (statement.kind == "IfStatement") {
170
+ this.synthetic(") {\n", statement, path);
171
+ this.block(statement.consequent, `${path}/consequent`, `${indent} `);
172
+ this.synthetic(`${indent}}`, statement, path);
173
+ if (statement.alternate) {
174
+ this.mapped(" else ", statement, path);
175
+ this.synthetic("{\n", statement, path);
176
+ this.block(statement.alternate, `${path}/alternate`, `${indent} `);
177
+ this.synthetic(`${indent}}`, statement, path);
178
+ }
179
+ this.synthetic("\n", statement, path);
180
+ }
181
+ else {
182
+ this.synthetic(`${statement.kind == "PrintStatement" ? ")" : ""};\n`, statement, path);
183
+ if (statement.kind == "LocalDeclaration")
184
+ this.synthetic(`${indent}(void)${statement.name};\n`, statement, path);
185
+ }
186
+ this.synthetic(`${indent}/* ${marker} end ${plan.id} ${signature} */\n`, statement, path);
187
+ }
188
+ /**
189
+ * Emits each eager step or conditional RHS at its planned location.
190
+ * @param {PlannedStep[]} steps - Ordered private steps.
191
+ * @param {string} indent - Current indentation.
192
+ * @returns {void}
193
+ */
194
+ steps(steps, indent) {
195
+ for (const step of steps) {
196
+ const { result, operands, rightSteps } = step;
197
+ const { expression, path, name } = result;
198
+ const type = emitScalarType("cpp", { kind: "TypeReference", name: result.type });
199
+ this.synthetic(`${indent}${type} ${name} = `, expression, path);
200
+ if (rightSteps) {
201
+ this.value(operands[0]);
202
+ this.synthetic(`;\n${indent}if (`, expression, path);
203
+ if (expression.kind != "BinaryExpression")
204
+ throw new Error("Invalid conditional C++ plan.");
205
+ this.synthetic(`${expression.operation == "BooleanOr" ? "!" : ""}${name}) {\n`, expression, path);
206
+ this.steps(rightSteps, `${indent} `);
207
+ this.synthetic(`${indent} ${name} = (${name} `, expression, path);
208
+ this.mapped(expression.operation == "BooleanOr" ? "||" : "&&", expression, path, "operator");
209
+ this.synthetic(" ", expression, path);
210
+ this.value(operands[1]);
211
+ this.synthetic(`);\n${indent}}\n`, expression, path);
212
+ }
213
+ else {
214
+ this.operation(step);
215
+ this.synthetic(";\n", expression, path);
216
+ }
217
+ }
218
+ }
219
+ /**
220
+ * Emits one nontrivial operation with pure operands.
221
+ * @param {PlannedStep} step - Eager step.
222
+ * @returns {void}
223
+ */
224
+ operation({ result: { expression, path }, operands }) {
225
+ if (expression.kind == "CallExpression") {
226
+ this.mapped(expression.callee, expression, path, "callee");
227
+ this.synthetic("(", expression, path);
228
+ operands.forEach((operand, index) => {
229
+ if (index)
230
+ this.synthetic(", ", expression, path);
231
+ this.value(operand);
232
+ });
233
+ this.synthetic(")", expression, path);
234
+ }
235
+ else if (expression.kind == "UnaryExpression") {
236
+ this.mapped(expression.operation == "IntegerNegate" ? "semantifold_integer_negate" : "!", expression, path, "operator");
237
+ this.synthetic("(", expression, path);
238
+ this.value(operands[0]);
239
+ this.synthetic(")", expression, path);
240
+ }
241
+ else if (expression.kind == "BinaryExpression") {
242
+ const token = binaryTokens.get(expression.operation);
243
+ if (!token)
244
+ throw new Error("Unsupported operation passed C++ planning.");
245
+ const helper = token.startsWith("semantifold_");
246
+ if (helper)
247
+ this.mapped(token, expression, path, "operator");
248
+ this.synthetic("(", expression, path);
249
+ this.value(operands[0]);
250
+ if (helper)
251
+ this.synthetic(", ", expression, path);
252
+ else {
253
+ this.synthetic(" ", expression, path);
254
+ this.mapped(token, expression, path, "operator");
255
+ this.synthetic(" ", expression, path);
256
+ }
257
+ this.value(operands[1]);
258
+ this.synthetic(")", expression, path);
259
+ }
260
+ else
261
+ throw new Error("Pure expression was scheduled as a CPP operation.");
262
+ }
263
+ /**
264
+ * Emits a pure operand with original token provenance or a synthetic temporary use.
265
+ * @param {PlannedValue} value - Planned pure operand.
266
+ * @returns {void}
267
+ */
268
+ value({ expression, path, name }) {
269
+ if (name)
270
+ return this.synthetic(name, expression, path);
271
+ if (expression.kind == "IdentifierExpression")
272
+ return this.mapped(expression.name, expression, path, "name");
273
+ if (expression.kind == "BooleanLiteral")
274
+ return this.mapped(String(expression.value), expression, path, "literal");
275
+ if (expression.kind == "IntegerLiteral")
276
+ return this.mapped(`std::int64_t(${expression.value})`, expression, path, "literal");
277
+ if (expression.kind == "StringLiteral") {
278
+ const bytes = new TextEncoder().encode(expression.value);
279
+ const literal = Array.from(bytes, (byte) => `\\${byte.toString(8).padStart(3, "0")}`).join("");
280
+ return this.mapped(`std::string("${literal}", ${bytes.length})`, expression, path, "literal");
281
+ }
282
+ throw new Error("Unsequenced expression passed C++ planning.");
283
+ }
284
+ }
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3BwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JhY2tlbmRzL2NwcC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sMEJBQTBCLENBQUE7QUFDN0UsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtCQUFrQixDQUFBO0FBQzNDLE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLHFCQUFxQixDQUFBO0FBQzdFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGFBQWEsQ0FBQTtBQUV4Qyw4RUFBOEU7QUFDOUUsMEVBQTBFO0FBQzFFLG9FQUFvRTtBQUNwRSw0REFBNEQ7QUFDNUQsOEVBQThFO0FBQzlFLDRFQUE0RTtBQUM1RSxnRkFBZ0Y7QUFFaEYsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDM0IsQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLDhCQUE4QixDQUFDO0lBQzlGLENBQUMsaUJBQWlCLEVBQUUsOEJBQThCLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSwyQkFBMkIsQ0FBQztJQUNsRyxDQUFDLGFBQWEsRUFBRSwwQkFBMEIsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsOEJBQThCLENBQUM7SUFDL0YsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQztJQUNwRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QUFTLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzlDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUVySSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksSUFBSSxVQUFVLE1BQU0sRUFBRSxXQUFXLEVBQUUsY0FBYyxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQzlJLENBQUMsQ0FBQyxDQUFBO1FBQ0YsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxJQUFJLEdBQUcsY0FBYyxLQUFLLEVBQUUsQ0FBQTtZQUVsQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsSUFBSSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUE7WUFDaEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN0QyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxhQUFhLEdBQUcsR0FBRyxJQUFJLGVBQWUsY0FBYyxFQUFFLENBQUE7Z0JBRTVELElBQUksY0FBYztvQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0JBQ2xFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLGFBQWEsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO2dCQUNuRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7Z0JBQzdDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQy9ELENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQzFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLFNBQVMsQ0FBQyxJQUFJLEtBQUssRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLGVBQWUsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO1lBQ2xLLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUMxQyxDQUFDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQTtJQUN4RSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTTtRQUN2QixLQUFLLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxlQUFlLEtBQUssRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDbEgsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU07UUFDL0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFakMsSUFBSSxDQUFDLElBQUk7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDbkUsTUFBTSxNQUFNLEdBQUcsdUNBQXVDLENBQUE7UUFDdEQsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFL0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sTUFBTSxNQUFNLFVBQVUsSUFBSSxDQUFDLEVBQUUsSUFBSSxTQUFTLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDM0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzlCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU87Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzFGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQTtZQUNwRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdEMsQ0FBQzthQUFNLElBQUksU0FBUyxDQUFDLElBQUksSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1lBQzlFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN0QyxDQUFDO2FBQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTthQUNsRixJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksZ0JBQWdCO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7O1lBQzdHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixJQUFJLFNBQVMsQ0FBQyxJQUFJLElBQUksYUFBYSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLElBQUksYUFBYSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQTtZQUN2RSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQzdDLElBQUksU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEdBQUcsSUFBSSxZQUFZLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFBO2dCQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQy9DLENBQUM7WUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDdEYsSUFBSSxTQUFTLENBQUMsSUFBSSxJQUFJLGtCQUFrQjtnQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDbEgsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLE1BQU0sTUFBTSxRQUFRLElBQUksQ0FBQyxFQUFFLElBQUksU0FBUyxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzNGLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUNqQixLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sRUFBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBQyxHQUFHLElBQUksQ0FBQTtZQUMzQyxNQUFNLEVBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUMsR0FBRyxNQUFNLENBQUE7WUFDdkMsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFBO1lBRTlFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUMvRCxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxNQUFNLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3BELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxrQkFBa0I7b0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO2dCQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDakcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxDQUFBO2dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxPQUFPLElBQUksT0FBTyxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7Z0JBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7Z0JBQzVGLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUN0RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtnQkFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3pDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsRUFBQyxNQUFNLEVBQUUsRUFBQyxVQUFVLEVBQUUsSUFBSSxFQUFDLEVBQUUsUUFBUSxFQUFDO1FBQzlDLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzFELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtZQUNyQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNsQyxJQUFJLEtBQUs7b0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO2dCQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ3JCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUE7WUFDdkgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZDLENBQUM7YUFBTSxJQUFJLFVBQVUsQ0FBQyxJQUFJLElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUNqRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUVwRCxJQUFJLENBQUMsS0FBSztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUE7WUFDekUsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUUvQyxJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtZQUM1RCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUN2QixJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO2lCQUM3QyxDQUFDO2dCQUNKLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtnQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQTtnQkFDaEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3ZDLENBQUM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUN2QyxDQUFDOztZQUFNLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQTtJQUM3RSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxFQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDO1FBQzVCLElBQUksSUFBSTtZQUFFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQ3ZELElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxzQkFBc0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzVHLElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQ2xILElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBQzdILElBQUksVUFBVSxDQUFDLElBQUksSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDeEQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUE7WUFFOUYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGdCQUFnQixPQUFPLE1BQU0sS0FBSyxDQUFDLE1BQU0sR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFDL0YsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IHt1bnN1cHBvcnRlZENhcGFiaWxpdHl9IGZyb20gXCIuLi9kaWFnbm9zdGljLmpzXCJcbmltcG9ydCB7c3RhdGVtZW50U2lnbmF0dXJlLCBwbGFuTmF0aXZlTW9kdWxlfSBmcm9tIFwiLi9vcmRlcmVkLWV4cHJlc3Npb25zLmpzXCJcbmltcG9ydCB7Y3BwUnVudGltZX0gZnJvbSBcIi4vY3BwLXJ1bnRpbWUuanNcIlxuaW1wb3J0IHttYXhpbXVtQ3BwU291cmNlTGVuZ3RoLCB2YWxpZGF0ZUNwcFZhbHVlc30gZnJvbSBcIi4vY3BwLXZhbGlkYXRpb24uanNcIlxuaW1wb3J0IHtlbWl0U2NhbGFyVHlwZX0gZnJvbSBcIi4vc2NhbGFycy5qc1wiXG5pbXBvcnQge1NvdXJjZVdyaXRlcn0gZnJvbSBcIi4vd3JpdGVyLmpzXCJcblxuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuLi9zZW1hbnRpYy90eXBlcy5qc1wiKS5TZW1hbnRpY01vZHVsZX0gU2VtYW50aWNNb2R1bGUgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU2VtYW50aWNOb2RlfSBTZW1hbnRpY05vZGUgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU3RhdGVtZW50fSBTdGF0ZW1lbnQgKi9cbi8qKiBAdHlwZWRlZiB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuQmxvY2t9IEJsb2NrICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vb3JkZXJlZC1leHByZXNzaW9ucy5qc1wiKS5QbGFubmVkVmFsdWV9IFBsYW5uZWRWYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHtpbXBvcnQoXCIuL29yZGVyZWQtZXhwcmVzc2lvbnMuanNcIikuUGxhbm5lZFN0ZXB9IFBsYW5uZWRTdGVwICovXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vb3JkZXJlZC1leHByZXNzaW9ucy5qc1wiKS5TdGF0ZW1lbnRQbGFufSBTdGF0ZW1lbnRQbGFuICovXG5cbmNvbnN0IGJpbmFyeVRva2VucyA9IG5ldyBNYXAoW1xuICBbXCJJbnRlZ2VyQWRkXCIsIFwic2VtYW50aWZvbGRfaW50ZWdlcl9hZGRcIl0sIFtcIkludGVnZXJTdWJ0cmFjdFwiLCBcInNlbWFudGlmb2xkX2ludGVnZXJfc3VidHJhY3RcIl0sXG4gIFtcIkludGVnZXJNdWx0aXBseVwiLCBcInNlbWFudGlmb2xkX2ludGVnZXJfbXVsdGlwbHlcIl0sIFtcIlN0cmluZ0NvbmNhdFwiLCBcInNlbWFudGlmb2xkX3N0cmluZ19jb25jYXRcIl0sXG4gIFtcIlN0cmluZ0VxdWFsXCIsIFwic2VtYW50aWZvbGRfc3RyaW5nX2VxdWFsXCJdLCBbXCJTdHJpbmdOb3RFcXVhbFwiLCBcInNlbWFudGlmb2xkX3N0cmluZ19ub3RfZXF1YWxcIl0sXG4gIFtcIkludGVnZXJFcXVhbFwiLCBcIj09XCJdLCBbXCJJbnRlZ2VyTm90RXF1YWxcIiwgXCIhPVwiXSwgW1wiQm9vbGVhbkVxdWFsXCIsIFwiPT1cIl0sIFtcIkJvb2xlYW5Ob3RFcXVhbFwiLCBcIiE9XCJdLFxuICBbXCJJbnRlZ2VyTGVzc1RoYW5cIiwgXCI8XCJdLCBbXCJJbnRlZ2VyTGVzc1RoYW5PckVxdWFsXCIsIFwiPD1cIl0sXG4gIFtcIkludGVnZXJHcmVhdGVyVGhhblwiLCBcIj5cIl0sIFtcIkludGVnZXJHcmVhdGVyVGhhbk9yRXF1YWxcIiwgXCI+PVwiXVxuXSlcblxuLyoqXG4gKiBFbWl0cyB0aGUgb25lIGZ1bGx5IHZhbGlkYXRlZCBDKysyMCB0cmFuc2xhdGlvbiB1bml0IHdpdGggb3duZWQgYnktdmFsdWUgc3RyaW5ncy5cbiAqIEBwYXJhbSB7U2VtYW50aWNNb2R1bGV9IG1vZHVsZSAtIFNoYXJlZCB2YWxpZGF0ZWQgc2VtYW50aWNzLlxuICogQHBhcmFtIHtTb3VyY2VXcml0ZXJ9IFt3cml0ZXJdIC0gT3B0aW9uYWwgY2FsbGVyLW93bmVkIHByb3ZlbmFuY2Ugd3JpdGVyLlxuICogQHJldHVybnMge3N0cmluZ30gRGV0ZXJtaW5pc3RpYyBzb3VyY2UgZm9yIHB1YmxpYyBnZW5lcmF0aW9uIG9yIHNhbWUtbGFuZ3VhZ2UgQ1NUIHZhbGlkYXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUNwcChtb2R1bGUsIHdyaXRlcikge1xuICB2YWxpZGF0ZUNwcFZhbHVlcyhtb2R1bGUpXG4gIGNvbnN0IHBsYW5zID0gcGxhbk5hdGl2ZU1vZHVsZShtb2R1bGUsIFwiY3BwXCIpXG5cbiAgbmV3IENwcEVtaXR0ZXIodW5kZWZpbmVkLCBwbGFucywgbW9kdWxlLmxvY2F0aW9uKS5wcm9ncmFtKG1vZHVsZSlcbiAgY29uc3Qgb3V0cHV0ID0gd3JpdGVyID8/IG5ldyBTb3VyY2VXcml0ZXIoe2ZpbGVuYW1lOiBcInByb2dyYW0uY3BwXCIsIGxhbmd1YWdlOiBcImNwcFwiLCBtb2R1bGV9KVxuXG4gIG5ldyBDcHBFbWl0dGVyKG91dHB1dCwgcGxhbnMsIG1vZHVsZS5sb2NhdGlvbikucHJvZ3JhbShtb2R1bGUpXG4gIHJldHVybiBvdXRwdXQuZmluaXNoKCkuZ2VuZXJhdGVkLmNvbnRlbnRcbn1cblxuLyoqIFdyaXRlcyBvbmx5IHRhcmdldCBzeW50YXggZnJvbSB2YWxpZGF0ZWQgc2VtYW50aWMgb2NjdXJyZW5jZXMgYW5kIHByaXZhdGUgcGxhbnMuICovXG5jbGFzcyBDcHBFbWl0dGVyIHtcbiAgLyoqXG4gICAqIEJpbmRzIHRoZSB3cml0ZXIgYW5kIGNvbXBsZXRlIHBsYW4uXG4gICAqIEBwYXJhbSB7U291cmNlV3JpdGVyIHwgdW5kZWZpbmVkfSB3cml0ZXIgLSBQcm92ZW5hbmNlIHdyaXRlcjsgb21pdHRlZCBmb3IgZXhhY3Qgc2l6ZSBwcmVmbGlnaHQuXG4gICAqIEBwYXJhbSB7TWFwPHN0cmluZywgU3RhdGVtZW50UGxhbj59IHBsYW5zIC0gVmFsaWRhdGVkIG9jY3VycmVuY2UgcGxhbnMuXG4gICAqIEBwYXJhbSB7aW1wb3J0KFwiLi4vc2VtYW50aWMvdHlwZXMuanNcIikuU291cmNlTG9jYXRpb259IGxvY2F0aW9uIC0gUm9vdCBkaWFnbm9zdGljIGxvY2F0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3Iod3JpdGVyLCBwbGFucywgbG9jYXRpb24pIHtcbiAgICB0aGlzLndyaXRlciA9IHdyaXRlclxuICAgIHRoaXMucGxhbnMgPSBwbGFuc1xuICAgIHRoaXMubG9jYXRpb24gPSBsb2NhdGlvblxuICAgIHRoaXMubGVuZ3RoID0gMFxuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBnZW5lcmF0ZWQgc2NhZmZvbGQgd2l0aCBhIHJlbGF0ZWQgc2VtYW50aWMgb3JpZ2luLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIEMrKyBzeW50YXguXG4gICAqIEBwYXJhbSB7U2VtYW50aWNOb2RlfSBub2RlIC0gUmVsYXRlZCBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIE9jY3VycmVuY2UgcGF0aC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzeW50aGV0aWModGV4dCwgbm9kZSwgcGF0aCkge1xuICAgIHRoaXMuY2hlY2tTaXplKHRleHQsIG5vZGUpXG4gICAgdGhpcy53cml0ZXI/LnN5bnRoZXRpYyh0ZXh0LCBcIkMrKzIwIG9yZGVyZWQtZXhwcmVzc2lvbiBhbmQgbGlmZXRpbWUgc2NhZmZvbGRcIiwgW25vZGVdLCBbcGF0aF0pXG4gIH1cblxuICAvKipcbiAgICogV3JpdGVzIGFuIG9yaWdpbmFsIHNlbWFudGljIHRva2VuIG9yIGFuY2hvci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUYXJnZXQgdG9rZW4uXG4gICAqIEBwYXJhbSB7U2VtYW50aWNOb2RlfSBub2RlIC0gT3JpZ2luYWwgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggLSBPY2N1cnJlbmNlIHBhdGguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbcm9sZV0gLSBQYXJzZXIgdG9rZW4gcm9sZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBtYXBwZWQodGV4dCwgbm9kZSwgcGF0aCwgcm9sZSkge1xuICAgIHRoaXMuY2hlY2tTaXplKHRleHQsIG5vZGUpXG4gICAgdGhpcy53cml0ZXI/Lm1hcHBlZCh0ZXh0LCB7bWFwcGluZ0tpbmQ6IHJvbGUgPyBcImV4YWN0XCIgOiBcImFuY2hvclwiLCBub2RlLCBwYXRoLCAuLi4ocm9sZSA/IHtyb2xlfSA6IHt9KX0pXG4gIH1cblxuICAvKipcbiAgICogQm91bmRzIHByaXZhdGUgZW1pc3Npb24gYmVmb3JlIGFueSBhcnRpZmFjdCBjYW4gZXNjYXBlIHRoZSBwYXJzZXIncyBwcm92ZW4gaW5wdXQgcHJvZmlsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBOZXh0IGV4YWN0IG91dHB1dCBjaHVuay5cbiAgICogQHBhcmFtIHtTZW1hbnRpY05vZGV9IG5vZGUgLSBSZWxhdGVkIHNlbWFudGljIG9jY3VycmVuY2UuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgY2hlY2tTaXplKHRleHQsIG5vZGUpIHtcbiAgICB0aGlzLmxlbmd0aCArPSB0ZXh0Lmxlbmd0aFxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heGltdW1DcHBTb3VyY2VMZW5ndGgpIHVuc3VwcG9ydGVkQ2FwYWJpbGl0eShcImNwcFwiLCBcImdlbmVyYXRlZCBwcm9ncmFtIGV4Y2VlZHMgdGhlIGZyb3plbiBDUFAgcGFyc2VyJ3MgMzI3NjcgVVRGLTE2IGlucHV0IGxpbWl0XCIsXG4gICAgICBcImxvY2F0aW9uXCIgaW4gbm9kZSA/IG5vZGUubG9jYXRpb24gOiB0aGlzLmxvY2F0aW9uKVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIGNhbm9uaWNhbCBwcm90b3R5cGVzLCBkZWZpbml0aW9ucywgYW5kIHRoZSBwYXJhbWV0ZXJsZXNzIG1haW4uXG4gICAqIEBwYXJhbSB7U2VtYW50aWNNb2R1bGV9IG1vZHVsZSAtIFNlbWFudGljIG1vZHVsZS5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBwcm9ncmFtKG1vZHVsZSkge1xuICAgIHRoaXMuc3ludGhldGljKFwiLyogc2VtYW50aWZvbGQ6cHJvZ3JhbTpjcHA6djEgKi9cXG5cIiArIGNwcFJ1bnRpbWUgKyBcIlxcblwiLCBtb2R1bGUsIFwiXCIpXG4gICAgbW9kdWxlLmZ1bmN0aW9ucy5mb3JFYWNoKChkZWNsYXJhdGlvbiwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlcnMgPSBkZWNsYXJhdGlvbi5wYXJhbWV0ZXJzLm1hcCgocGFyYW1ldGVyKSA9PiBgJHtlbWl0U2NhbGFyVHlwZShcImNwcFwiLCBwYXJhbWV0ZXIudHlwZSl9ICR7cGFyYW1ldGVyLm5hbWV9YCkuam9pbihcIiwgXCIpXG5cbiAgICAgIHRoaXMuc3ludGhldGljKGAke2VtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIGRlY2xhcmF0aW9uLnJldHVyblR5cGUpfSAke2RlY2xhcmF0aW9uLm5hbWV9KCR7cGFyYW1ldGVyc30pO1xcbmAsIGRlY2xhcmF0aW9uLCBgL2Z1bmN0aW9ucy8ke2luZGV4fWApXG4gICAgfSlcbiAgICBtb2R1bGUuZnVuY3Rpb25zLmZvckVhY2goKGRlY2xhcmF0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IGAvZnVuY3Rpb25zLyR7aW5kZXh9YFxuXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIlxcblwiLCBkZWNsYXJhdGlvbiwgcGF0aClcbiAgICAgIHRoaXMubWFwcGVkKGVtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIGRlY2xhcmF0aW9uLnJldHVyblR5cGUpLCBkZWNsYXJhdGlvbi5yZXR1cm5UeXBlLCBgJHtwYXRofS9yZXR1cm5UeXBlYCwgXCJ0eXBlXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgZGVjbGFyYXRpb24sIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChkZWNsYXJhdGlvbi5uYW1lLCBkZWNsYXJhdGlvbiwgcGF0aCwgXCJuYW1lXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIihcIiwgZGVjbGFyYXRpb24sIHBhdGgpXG4gICAgICBkZWNsYXJhdGlvbi5wYXJhbWV0ZXJzLmZvckVhY2goKHBhcmFtZXRlciwgcGFyYW1ldGVySW5kZXgpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1ldGVyUGF0aCA9IGAke3BhdGh9L3BhcmFtZXRlcnMvJHtwYXJhbWV0ZXJJbmRleH1gXG5cbiAgICAgICAgaWYgKHBhcmFtZXRlckluZGV4KSB0aGlzLnN5bnRoZXRpYyhcIiwgXCIsIHBhcmFtZXRlciwgcGFyYW1ldGVyUGF0aClcbiAgICAgICAgdGhpcy5tYXBwZWQoZW1pdFNjYWxhclR5cGUoXCJjcHBcIiwgcGFyYW1ldGVyLnR5cGUpLCBwYXJhbWV0ZXIudHlwZSwgYCR7cGFyYW1ldGVyUGF0aH0vdHlwZWAsIFwidHlwZVwiKVxuICAgICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgcGFyYW1ldGVyLCBwYXJhbWV0ZXJQYXRoKVxuICAgICAgICB0aGlzLm1hcHBlZChwYXJhbWV0ZXIubmFtZSwgcGFyYW1ldGVyLCBwYXJhbWV0ZXJQYXRoLCBcIm5hbWVcIilcbiAgICAgIH0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIikge1xcblwiLCBkZWNsYXJhdGlvbiwgcGF0aClcbiAgICAgIGRlY2xhcmF0aW9uLnBhcmFtZXRlcnMuZm9yRWFjaCgocGFyYW1ldGVyLCBwYXJhbWV0ZXJJbmRleCkgPT4gdGhpcy5zeW50aGV0aWMoYCAgICAodm9pZCkke3BhcmFtZXRlci5uYW1lfTtcXG5gLCBwYXJhbWV0ZXIsIGAke3BhdGh9L3BhcmFtZXRlcnMvJHtwYXJhbWV0ZXJJbmRleH1gKSlcbiAgICAgIHRoaXMuYmxvY2soZGVjbGFyYXRpb24uYm9keSwgYCR7cGF0aH0vYm9keWAsIFwiICAgIFwiKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCJ9XFxuXCIsIGRlY2xhcmF0aW9uLCBwYXRoKVxuICAgIH0pXG4gICAgdGhpcy5zeW50aGV0aWMoXCJcXG5pbnQgbWFpbigpIHtcXG5cIiwgbW9kdWxlLmVudHJ5UG9pbnQsIFwiL2VudHJ5UG9pbnRcIilcbiAgICB0aGlzLmJsb2NrKG1vZHVsZS5lbnRyeVBvaW50LmJvZHksIFwiL2VudHJ5UG9pbnQvYm9keVwiLCBcIiAgICBcIilcbiAgICB0aGlzLnN5bnRoZXRpYyhcIiAgICByZXR1cm4gMDtcXG59XFxuXCIsIG1vZHVsZS5lbnRyeVBvaW50LCBcIi9lbnRyeVBvaW50XCIpXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgc3RhdGVtZW50cyBpbiBzZW1hbnRpYyBzb3VyY2Ugb3JkZXIuXG4gICAqIEBwYXJhbSB7QmxvY2t9IGJsb2NrIC0gU2VtYW50aWMgYmxvY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIC0gT2NjdXJyZW5jZSBwYXRoLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5kZW50IC0gQ3VycmVudCBpbmRlbnRhdGlvbi5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBibG9jayhibG9jaywgcGF0aCwgaW5kZW50KSB7XG4gICAgYmxvY2suc3RhdGVtZW50cy5mb3JFYWNoKChzdGF0ZW1lbnQsIGluZGV4KSA9PiB0aGlzLnN0YXRlbWVudChzdGF0ZW1lbnQsIGAke3BhdGh9L3N0YXRlbWVudHMvJHtpbmRleH1gLCBpbmRlbnQpKVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uZSBwYWlyZWQgcmVnaW9uIHdpdGggYSBwdXJlIGZpbmFsIGNvbnN1bWVyLlxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50IC0gT3JpZ2luYWwgc3RhdGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCAtIE9jY3VycmVuY2UgcGF0aC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGVudCAtIEN1cnJlbnQgaW5kZW50YXRpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RhdGVtZW50KHN0YXRlbWVudCwgcGF0aCwgaW5kZW50KSB7XG4gICAgY29uc3QgcGxhbiA9IHRoaXMucGxhbnMuZ2V0KHBhdGgpXG5cbiAgICBpZiAoIXBsYW4pIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgdmFsaWRhdGVkIEMrKyBzdGF0ZW1lbnQgcGxhbi5cIilcbiAgICBjb25zdCBtYXJrZXIgPSBgc2VtYW50aWZvbGQ6b3JkZXJlZC1leHByZXNzaW9uOmNwcDp2MWBcbiAgICBjb25zdCBzaWduYXR1cmUgPSBzdGF0ZW1lbnRTaWduYXR1cmUoc3RhdGVtZW50KVxuXG4gICAgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fS8qICR7bWFya2VyfSBiZWdpbiAke3BsYW4uaWR9ICR7c2lnbmF0dXJlfSAqL1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICB0aGlzLnN0ZXBzKHBsYW4uc3RlcHMsIGluZGVudClcbiAgICB0aGlzLnN5bnRoZXRpYyhpbmRlbnQsIHN0YXRlbWVudCwgcGF0aClcbiAgICBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJMb2NhbERlY2xhcmF0aW9uXCIpIHtcbiAgICAgIGlmICghc3RhdGVtZW50Lm11dGFibGUpIHRoaXMuc3ludGhldGljKFwiY29uc3QgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIHRoaXMubWFwcGVkKGVtaXRTY2FsYXJUeXBlKFwiY3BwXCIsIHN0YXRlbWVudC50eXBlKSwgc3RhdGVtZW50LnR5cGUsIGAke3BhdGh9L3R5cGVgLCBcInR5cGVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChzdGF0ZW1lbnQubmFtZSwgc3RhdGVtZW50LCBwYXRoLCBcIm5hbWVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgICB0aGlzLm1hcHBlZChcIj1cIiwgc3RhdGVtZW50LCBwYXRoLCBcIm9wZXJhdG9yXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgIH0gZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJBc3NpZ25tZW50U3RhdGVtZW50XCIpIHtcbiAgICAgIHRoaXMubWFwcGVkKHN0YXRlbWVudC50YXJnZXQubmFtZSwgc3RhdGVtZW50LnRhcmdldCwgYCR7cGF0aH0vdGFyZ2V0YCwgXCJuYW1lXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgICAgdGhpcy5tYXBwZWQoXCI9XCIsIHN0YXRlbWVudCwgcGF0aCwgXCJvcGVyYXRvclwiKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICB9IGVsc2UgaWYgKHN0YXRlbWVudC5raW5kID09IFwiUmV0dXJuU3RhdGVtZW50XCIpIHRoaXMubWFwcGVkKFwicmV0dXJuIFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgZWxzZSBpZiAoc3RhdGVtZW50LmtpbmQgPT0gXCJQcmludFN0YXRlbWVudFwiKSB0aGlzLm1hcHBlZChgc2VtYW50aWZvbGRfcHJpbnRfJHtwbGFuLnZhbHVlLnR5cGV9KGAsIHN0YXRlbWVudCwgcGF0aClcbiAgICBlbHNlIHRoaXMubWFwcGVkKFwiaWYgKFwiLCBzdGF0ZW1lbnQsIHBhdGgpXG4gICAgdGhpcy52YWx1ZShwbGFuLnZhbHVlKVxuICAgIGlmIChzdGF0ZW1lbnQua2luZCA9PSBcIklmU3RhdGVtZW50XCIpIHtcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKSB7XFxuXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIHRoaXMuYmxvY2soc3RhdGVtZW50LmNvbnNlcXVlbnQsIGAke3BhdGh9L2NvbnNlcXVlbnRgLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICB0aGlzLnN5bnRoZXRpYyhgJHtpbmRlbnR9fWAsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIGlmIChzdGF0ZW1lbnQuYWx0ZXJuYXRlKSB7XG4gICAgICAgIHRoaXMubWFwcGVkKFwiIGVsc2UgXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCJ7XFxuXCIsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgICAgdGhpcy5ibG9jayhzdGF0ZW1lbnQuYWx0ZXJuYXRlLCBgJHtwYXRofS9hbHRlcm5hdGVgLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH19YCwgc3RhdGVtZW50LCBwYXRoKVxuICAgICAgfVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCJcXG5cIiwgc3RhdGVtZW50LCBwYXRoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN5bnRoZXRpYyhgJHtzdGF0ZW1lbnQua2luZCA9PSBcIlByaW50U3RhdGVtZW50XCIgPyBcIilcIiA6IFwiXCJ9O1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICAgIGlmIChzdGF0ZW1lbnQua2luZCA9PSBcIkxvY2FsRGVjbGFyYXRpb25cIikgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fSh2b2lkKSR7c3RhdGVtZW50Lm5hbWV9O1xcbmAsIHN0YXRlbWVudCwgcGF0aClcbiAgICB9XG4gICAgdGhpcy5zeW50aGV0aWMoYCR7aW5kZW50fS8qICR7bWFya2VyfSBlbmQgJHtwbGFuLmlkfSAke3NpZ25hdHVyZX0gKi9cXG5gLCBzdGF0ZW1lbnQsIHBhdGgpXG4gIH1cblxuICAvKipcbiAgICogRW1pdHMgZWFjaCBlYWdlciBzdGVwIG9yIGNvbmRpdGlvbmFsIFJIUyBhdCBpdHMgcGxhbm5lZCBsb2NhdGlvbi5cbiAgICogQHBhcmFtIHtQbGFubmVkU3RlcFtdfSBzdGVwcyAtIE9yZGVyZWQgcHJpdmF0ZSBzdGVwcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGluZGVudCAtIEN1cnJlbnQgaW5kZW50YXRpb24uXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc3RlcHMoc3RlcHMsIGluZGVudCkge1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgY29uc3Qge3Jlc3VsdCwgb3BlcmFuZHMsIHJpZ2h0U3RlcHN9ID0gc3RlcFxuICAgICAgY29uc3Qge2V4cHJlc3Npb24sIHBhdGgsIG5hbWV9ID0gcmVzdWx0XG4gICAgICBjb25zdCB0eXBlID0gZW1pdFNjYWxhclR5cGUoXCJjcHBcIiwge2tpbmQ6IFwiVHlwZVJlZmVyZW5jZVwiLCBuYW1lOiByZXN1bHQudHlwZX0pXG5cbiAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH0ke3R5cGV9ICR7bmFtZX0gPSBgLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgaWYgKHJpZ2h0U3RlcHMpIHtcbiAgICAgICAgdGhpcy52YWx1ZShvcGVyYW5kc1swXSlcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoYDtcXG4ke2luZGVudH1pZiAoYCwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgaWYgKGV4cHJlc3Npb24ua2luZCAhPSBcIkJpbmFyeUV4cHJlc3Npb25cIikgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb25kaXRpb25hbCBDKysgcGxhbi5cIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoYCR7ZXhwcmVzc2lvbi5vcGVyYXRpb24gPT0gXCJCb29sZWFuT3JcIiA/IFwiIVwiIDogXCJcIn0ke25hbWV9KSB7XFxuYCwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgdGhpcy5zdGVwcyhyaWdodFN0ZXBzLCBgJHtpbmRlbnR9ICAgIGApXG4gICAgICAgIHRoaXMuc3ludGhldGljKGAke2luZGVudH0gICAgJHtuYW1lfSA9ICgke25hbWV9IGAsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMubWFwcGVkKGV4cHJlc3Npb24ub3BlcmF0aW9uID09IFwiQm9vbGVhbk9yXCIgPyBcInx8XCIgOiBcIiYmXCIsIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMudmFsdWUob3BlcmFuZHNbMV0pXG4gICAgICAgIHRoaXMuc3ludGhldGljKGApO1xcbiR7aW5kZW50fX1cXG5gLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcGVyYXRpb24oc3RlcClcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCI7XFxuXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEVtaXRzIG9uZSBub250cml2aWFsIG9wZXJhdGlvbiB3aXRoIHB1cmUgb3BlcmFuZHMuXG4gICAqIEBwYXJhbSB7UGxhbm5lZFN0ZXB9IHN0ZXAgLSBFYWdlciBzdGVwLlxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIG9wZXJhdGlvbih7cmVzdWx0OiB7ZXhwcmVzc2lvbiwgcGF0aH0sIG9wZXJhbmRzfSkge1xuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJDYWxsRXhwcmVzc2lvblwiKSB7XG4gICAgICB0aGlzLm1hcHBlZChleHByZXNzaW9uLmNhbGxlZSwgZXhwcmVzc2lvbiwgcGF0aCwgXCJjYWxsZWVcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKFwiLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgb3BlcmFuZHMuZm9yRWFjaCgob3BlcmFuZCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4KSB0aGlzLnN5bnRoZXRpYyhcIiwgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICAgIHRoaXMudmFsdWUob3BlcmFuZClcbiAgICAgIH0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIilcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIlVuYXJ5RXhwcmVzc2lvblwiKSB7XG4gICAgICB0aGlzLm1hcHBlZChleHByZXNzaW9uLm9wZXJhdGlvbiA9PSBcIkludGVnZXJOZWdhdGVcIiA/IFwic2VtYW50aWZvbGRfaW50ZWdlcl9uZWdhdGVcIiA6IFwiIVwiLCBleHByZXNzaW9uLCBwYXRoLCBcIm9wZXJhdG9yXCIpXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIihcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgIHRoaXMudmFsdWUob3BlcmFuZHNbMF0pXG4gICAgICB0aGlzLnN5bnRoZXRpYyhcIilcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICB9IGVsc2UgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIkJpbmFyeUV4cHJlc3Npb25cIikge1xuICAgICAgY29uc3QgdG9rZW4gPSBiaW5hcnlUb2tlbnMuZ2V0KGV4cHJlc3Npb24ub3BlcmF0aW9uKVxuXG4gICAgICBpZiAoIXRva2VuKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBvcGVyYXRpb24gcGFzc2VkIEMrKyBwbGFubmluZy5cIilcbiAgICAgIGNvbnN0IGhlbHBlciA9IHRva2VuLnN0YXJ0c1dpdGgoXCJzZW1hbnRpZm9sZF9cIilcblxuICAgICAgaWYgKGhlbHBlcikgdGhpcy5tYXBwZWQodG9rZW4sIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgIHRoaXMuc3ludGhldGljKFwiKFwiLCBleHByZXNzaW9uLCBwYXRoKVxuICAgICAgdGhpcy52YWx1ZShvcGVyYW5kc1swXSlcbiAgICAgIGlmIChoZWxwZXIpIHRoaXMuc3ludGhldGljKFwiLCBcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGlzLnN5bnRoZXRpYyhcIiBcIiwgZXhwcmVzc2lvbiwgcGF0aClcbiAgICAgICAgdGhpcy5tYXBwZWQodG9rZW4sIGV4cHJlc3Npb24sIHBhdGgsIFwib3BlcmF0b3JcIilcbiAgICAgICAgdGhpcy5zeW50aGV0aWMoXCIgXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgICB9XG4gICAgICB0aGlzLnZhbHVlKG9wZXJhbmRzWzFdKVxuICAgICAgdGhpcy5zeW50aGV0aWMoXCIpXCIsIGV4cHJlc3Npb24sIHBhdGgpXG4gICAgfSBlbHNlIHRocm93IG5ldyBFcnJvcihcIlB1cmUgZXhwcmVzc2lvbiB3YXMgc2NoZWR1bGVkIGFzIGEgQ1BQIG9wZXJhdGlvbi5cIilcbiAgfVxuXG4gIC8qKlxuICAgKiBFbWl0cyBhIHB1cmUgb3BlcmFuZCB3aXRoIG9yaWdpbmFsIHRva2VuIHByb3ZlbmFuY2Ugb3IgYSBzeW50aGV0aWMgdGVtcG9yYXJ5IHVzZS5cbiAgICogQHBhcmFtIHtQbGFubmVkVmFsdWV9IHZhbHVlIC0gUGxhbm5lZCBwdXJlIG9wZXJhbmQuXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdmFsdWUoe2V4cHJlc3Npb24sIHBhdGgsIG5hbWV9KSB7XG4gICAgaWYgKG5hbWUpIHJldHVybiB0aGlzLnN5bnRoZXRpYyhuYW1lLCBleHByZXNzaW9uLCBwYXRoKVxuICAgIGlmIChleHByZXNzaW9uLmtpbmQgPT0gXCJJZGVudGlmaWVyRXhwcmVzc2lvblwiKSByZXR1cm4gdGhpcy5tYXBwZWQoZXhwcmVzc2lvbi5uYW1lLCBleHByZXNzaW9uLCBwYXRoLCBcIm5hbWVcIilcbiAgICBpZiAoZXhwcmVzc2lvbi5raW5kID09IFwiQm9vbGVhbkxpdGVyYWxcIikgcmV0dXJuIHRoaXMubWFwcGVkKFN0cmluZyhleHByZXNzaW9uLnZhbHVlKSwgZXhwcmVzc2lvbiwgcGF0aCwgXCJsaXRlcmFsXCIpXG4gICAgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIkludGVnZXJMaXRlcmFsXCIpIHJldHVybiB0aGlzLm1hcHBlZChgc3RkOjppbnQ2NF90KCR7ZXhwcmVzc2lvbi52YWx1ZX0pYCwgZXhwcmVzc2lvbiwgcGF0aCwgXCJsaXRlcmFsXCIpXG4gICAgaWYgKGV4cHJlc3Npb24ua2luZCA9PSBcIlN0cmluZ0xpdGVyYWxcIikge1xuICAgICAgY29uc3QgYnl0ZXMgPSBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUoZXhwcmVzc2lvbi52YWx1ZSlcbiAgICAgIGNvbnN0IGxpdGVyYWwgPSBBcnJheS5mcm9tKGJ5dGVzLCAoYnl0ZSkgPT4gYFxcXFwke2J5dGUudG9TdHJpbmcoOCkucGFkU3RhcnQoMywgXCIwXCIpfWApLmpvaW4oXCJcIilcblxuICAgICAgcmV0dXJuIHRoaXMubWFwcGVkKGBzdGQ6OnN0cmluZyhcIiR7bGl0ZXJhbH1cIiwgJHtieXRlcy5sZW5ndGh9KWAsIGV4cHJlc3Npb24sIHBhdGgsIFwibGl0ZXJhbFwiKVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnNlcXVlbmNlZCBleHByZXNzaW9uIHBhc3NlZCBDKysgcGxhbm5pbmcuXCIpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Emits one deterministic two-file C# project candidate.
3
+ * @param {{filename?: string, mapDirective?: unknown, module: import("../semantic/types.js").SemanticModule, sourceMapFilename?: unknown, sources?: {filename: string, content: string, language?: import("../semantic/types.js").SemanticLanguage}[]}} input - Backend request.
4
+ * @returns {{artifacts: import("../semantic/types.js").GeneratedSetArtifact[], target: string}} Candidate artifact set.
5
+ */
6
+ export declare function generateCSharpProject({ filename, mapDirective, module, sourceMapFilename, sources }: {
7
+ filename?: string;
8
+ mapDirective?: unknown;
9
+ module: import("../semantic/types.js").SemanticModule;
10
+ sourceMapFilename?: unknown;
11
+ sources?: {
12
+ filename: string;
13
+ content: string;
14
+ language?: import("../semantic/types.js").SemanticLanguage;
15
+ }[];
16
+ }): {
17
+ artifacts: import("../semantic/types.js").GeneratedSetArtifact[];
18
+ target: string;
19
+ };
20
+ //# sourceMappingURL=csharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../src/backends/csharp.js"],"names":[],"mappings":"AAsCA;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAC,EAHvF;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,sBAAsB,EAAE,cAAc,CAAC;IAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,sBAAsB,EAAE,gBAAgB,CAAA;KAAC,EAAE,CAAA;CAGpJ,GAFrF;IAAC,SAAS,EAAE,OAAO,sBAAsB,EAAE,oBAAoB,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAsC9F"}