@logixjs/sandbox 0.0.1 → 0.0.2

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 (248) hide show
  1. package/LICENSE +201 -0
  2. package/package.json +3 -1
  3. package/public/sandbox/chunks/chunk-2AUQRESB.js +1114 -0
  4. package/public/sandbox/chunks/chunk-2F72LQKW.js +194 -0
  5. package/public/sandbox/chunks/chunk-2PYDGDD3.js +4071 -0
  6. package/public/sandbox/chunks/chunk-2UGKSXDZ.js +16 -0
  7. package/public/sandbox/chunks/chunk-2XVE7F26.js +153 -0
  8. package/public/sandbox/chunks/chunk-3A7TFNZN.js +219 -0
  9. package/public/sandbox/chunks/chunk-3BHC6JAV.js +1070 -0
  10. package/public/sandbox/chunks/chunk-3U4CAKCX.js +61 -0
  11. package/public/sandbox/chunks/chunk-3VU3JLZO.js +272 -0
  12. package/public/sandbox/chunks/chunk-4CPONKWY.js +1170 -0
  13. package/public/sandbox/chunks/chunk-4GMUQTWH.js +850 -0
  14. package/public/sandbox/chunks/chunk-4KIYG5E4.js +749 -0
  15. package/public/sandbox/chunks/chunk-4MY35XR3.js +175 -0
  16. package/public/sandbox/chunks/chunk-5DNHJMHA.js +69 -0
  17. package/public/sandbox/chunks/chunk-5EC4S7X6.js +42 -0
  18. package/public/sandbox/chunks/chunk-5FB7QFSH.js +227 -0
  19. package/public/sandbox/chunks/chunk-5GEYCJW2.js +206 -0
  20. package/public/sandbox/chunks/chunk-5PT7Q5SS.js +373 -0
  21. package/public/sandbox/chunks/chunk-5WN5IGKA.js +166 -0
  22. package/public/sandbox/chunks/chunk-5XOBKSOT.js +213 -0
  23. package/public/sandbox/chunks/chunk-67RVISUC.js +313 -0
  24. package/public/sandbox/chunks/chunk-6ELJEKZS.js +12 -0
  25. package/public/sandbox/chunks/chunk-6FKWRVP4.js +85 -0
  26. package/public/sandbox/chunks/chunk-6JRP52YT.js +34 -0
  27. package/public/sandbox/chunks/chunk-6JYAC3G6.js +42 -0
  28. package/public/sandbox/chunks/chunk-6TUOP63Q.js +86 -0
  29. package/public/sandbox/chunks/{chunk-A6JFUNQQ.js → chunk-74C5VW7Z.js} +2 -2
  30. package/public/sandbox/chunks/chunk-75DQFC5M.js +16 -0
  31. package/public/sandbox/chunks/{chunk-UCFEP3BH.js → chunk-7GPAF2UK.js} +1 -1
  32. package/public/sandbox/chunks/chunk-7KQFTS2Y.js +135 -0
  33. package/public/sandbox/chunks/chunk-7POKWYE3.js +112 -0
  34. package/public/sandbox/chunks/chunk-7VUEF5F3.js +395 -0
  35. package/public/sandbox/chunks/chunk-7W5APZS2.js +77 -0
  36. package/public/sandbox/chunks/chunk-A6OFCXDQ.js +397 -0
  37. package/public/sandbox/chunks/chunk-A7HLOSO6.js +216 -0
  38. package/public/sandbox/chunks/chunk-AGF4RRCB.js +408 -0
  39. package/public/sandbox/chunks/chunk-ASJSJAAL.js +122 -0
  40. package/public/sandbox/chunks/chunk-ASVMK364.js +283 -0
  41. package/public/sandbox/chunks/chunk-AUDTI2BQ.js +895 -0
  42. package/public/sandbox/chunks/chunk-B2SZTA3M.js +16 -0
  43. package/public/sandbox/chunks/chunk-B6YS2UMV.js +372 -0
  44. package/public/sandbox/chunks/chunk-BCEO3MGD.js +244 -0
  45. package/public/sandbox/chunks/chunk-BCOO65D4.js +373 -0
  46. package/public/sandbox/chunks/chunk-BJOWSSEL.js +38 -0
  47. package/public/sandbox/chunks/chunk-BS2WBFW4.js +373 -0
  48. package/public/sandbox/chunks/chunk-BUVHG3NJ.js +439 -0
  49. package/public/sandbox/chunks/chunk-BVE33AN6.js +42 -0
  50. package/public/sandbox/chunks/chunk-BWTGJZVP.js +19 -0
  51. package/public/sandbox/chunks/chunk-BXD7GZC3.js +1025 -0
  52. package/public/sandbox/chunks/chunk-BZH4EUUD.js +164 -0
  53. package/public/sandbox/chunks/{chunk-HFV5GJPK.js → chunk-C2MYMMO4.js} +3 -3
  54. package/public/sandbox/chunks/chunk-CRE4NJJ6.js +271 -0
  55. package/public/sandbox/chunks/chunk-CVZPRIDB.js +706 -0
  56. package/public/sandbox/chunks/chunk-CWOXD5NG.js +991 -0
  57. package/public/sandbox/chunks/chunk-D6DOC3BJ.js +373 -0
  58. package/public/sandbox/chunks/chunk-DEPSGFSY.js +1698 -0
  59. package/public/sandbox/chunks/chunk-DM7C5NP5.js +819 -0
  60. package/public/sandbox/chunks/chunk-DN33LMOF.js +1112 -0
  61. package/public/sandbox/chunks/{chunk-S46P7MC6.js → chunk-DT7YIIWE.js} +2 -2
  62. package/public/sandbox/chunks/chunk-DVB5WRCI.js +260 -0
  63. package/public/sandbox/chunks/{chunk-TOHCFMQS.js → chunk-E3EVW7NR.js} +11 -18
  64. package/public/sandbox/chunks/chunk-E5BV567Q.js +417 -0
  65. package/public/sandbox/chunks/chunk-E7BIWMQQ.js +203 -0
  66. package/public/sandbox/chunks/chunk-EAKGPSOQ.js +83 -0
  67. package/public/sandbox/chunks/chunk-EGUYL2ER.js +75 -0
  68. package/public/sandbox/chunks/chunk-EP5GQYZ5.js +85 -0
  69. package/public/sandbox/chunks/chunk-ET6CJEHC.js +221 -0
  70. package/public/sandbox/chunks/chunk-EU67YZHZ.js +1070 -0
  71. package/public/sandbox/chunks/{chunk-PTSJJANP.js → chunk-EYNDQLSB.js} +1 -1
  72. package/public/sandbox/chunks/{chunk-CEGSWZ5S.js → chunk-EZTMVCJF.js} +1 -1
  73. package/public/sandbox/chunks/chunk-F5CLVIS6.js +907 -0
  74. package/public/sandbox/chunks/chunk-F743SKYD.js +85 -0
  75. package/public/sandbox/chunks/chunk-FEGFZ5OX.js +86 -0
  76. package/public/sandbox/chunks/chunk-FG5B7ZX3.js +373 -0
  77. package/public/sandbox/chunks/chunk-FKZPYMDG.js +373 -0
  78. package/public/sandbox/chunks/chunk-FNLXHWIU.js +220 -0
  79. package/public/sandbox/chunks/chunk-FQRUTYAD.js +1991 -0
  80. package/public/sandbox/chunks/{chunk-VLYP4WUS.js → chunk-FY5A73NK.js} +5 -5
  81. package/public/sandbox/chunks/chunk-G7FAOG3O.js +221 -0
  82. package/public/sandbox/chunks/chunk-GFXHUC7Y.js +73 -0
  83. package/public/sandbox/chunks/chunk-GIPXUIZQ.js +534 -0
  84. package/public/sandbox/chunks/chunk-GP37MEGJ.js +52 -0
  85. package/public/sandbox/chunks/chunk-GXL5QCMF.js +4511 -0
  86. package/public/sandbox/chunks/chunk-GZ2NSE6A.js +177 -0
  87. package/public/sandbox/chunks/chunk-GZATW4YD.js +69 -0
  88. package/public/sandbox/chunks/chunk-H4EBXROQ.js +166 -0
  89. package/public/sandbox/chunks/chunk-HETCPK6Z.js +153 -0
  90. package/public/sandbox/chunks/chunk-HGUFQ2QC.js +4431 -0
  91. package/public/sandbox/chunks/chunk-HGV3VNH3.js +255 -0
  92. package/public/sandbox/chunks/chunk-HIJ67QWR.js +5397 -0
  93. package/public/sandbox/chunks/chunk-IDHERBKW.js +1114 -0
  94. package/public/sandbox/chunks/chunk-IDTK4FIY.js +102 -0
  95. package/public/sandbox/chunks/chunk-ILFVY7H5.js +164 -0
  96. package/public/sandbox/chunks/chunk-ISGSRYGO.js +57 -0
  97. package/public/sandbox/chunks/chunk-J45VPU24.js +408 -0
  98. package/public/sandbox/chunks/chunk-JAUIM3O5.js +42 -0
  99. package/public/sandbox/chunks/chunk-JB7OQEM6.js +373 -0
  100. package/public/sandbox/chunks/chunk-JCKW6NHD.js +15 -0
  101. package/public/sandbox/chunks/chunk-JMA7GY7Z.js +221 -0
  102. package/public/sandbox/chunks/chunk-JY46J6IL.js +836 -0
  103. package/public/sandbox/chunks/{chunk-X72PZOFA.js → chunk-K2MQ66O7.js} +1 -1
  104. package/public/sandbox/chunks/chunk-KA7PZA6F.js +464 -0
  105. package/public/sandbox/chunks/chunk-KDEQTUID.js +102 -0
  106. package/public/sandbox/chunks/chunk-KDJR27JV.js +1696 -0
  107. package/public/sandbox/chunks/chunk-KFE3JO6N.js +77 -0
  108. package/public/sandbox/chunks/chunk-KLDSYWT5.js +536 -0
  109. package/public/sandbox/chunks/chunk-KQWWFYBF.js +203 -0
  110. package/public/sandbox/chunks/chunk-KTFZSXOW.js +6473 -0
  111. package/public/sandbox/chunks/chunk-KXVIC55U.js +108 -0
  112. package/public/sandbox/chunks/{chunk-HNEDTEGQ.js → chunk-L4PNO2H6.js} +1 -1
  113. package/public/sandbox/chunks/{chunk-WE4STGO2.js → chunk-L4ZNW5DI.js} +2 -2
  114. package/public/sandbox/chunks/chunk-LBUINGZ4.js +836 -0
  115. package/public/sandbox/chunks/chunk-LIYPPU6I.js +112 -0
  116. package/public/sandbox/chunks/chunk-LJHTOJXW.js +221 -0
  117. package/public/sandbox/chunks/{chunk-BWSNPKO5.js → chunk-LQL23SWJ.js} +2 -2
  118. package/public/sandbox/chunks/chunk-LTFCYZQ6.js +46 -0
  119. package/public/sandbox/chunks/chunk-LTWLVCKQ.js +166 -0
  120. package/public/sandbox/chunks/chunk-LWI7BXFN.js +395 -0
  121. package/public/sandbox/chunks/chunk-LYBBX6WM.js +225 -0
  122. package/public/sandbox/chunks/chunk-MXE7HIBM.js +474 -0
  123. package/public/sandbox/chunks/chunk-MYBDYNK4.js +6004 -0
  124. package/public/sandbox/chunks/chunk-NC2MIWZX.js +732 -0
  125. package/public/sandbox/chunks/chunk-NE447XAF.js +597 -0
  126. package/public/sandbox/chunks/chunk-NEAYV5C2.js +255 -0
  127. package/public/sandbox/chunks/chunk-NMGFJZ4I.js +26 -0
  128. package/public/sandbox/chunks/chunk-NWCJJZNQ.js +71 -0
  129. package/public/sandbox/chunks/chunk-O57OZBDR.js +214 -0
  130. package/public/sandbox/chunks/chunk-OJJT664Q.js +731 -0
  131. package/public/sandbox/chunks/chunk-OKTBUTCH.js +1175 -0
  132. package/public/sandbox/chunks/chunk-OQ4SYV5D.js +534 -0
  133. package/public/sandbox/chunks/chunk-OTVVIHJD.js +219 -0
  134. package/public/sandbox/chunks/chunk-OWTMSCF7.js +1052 -0
  135. package/public/sandbox/chunks/chunk-P5ZQNFC3.js +122 -0
  136. package/public/sandbox/chunks/chunk-PBPT2U2N.js +1698 -0
  137. package/public/sandbox/chunks/chunk-PHBJLCP3.js +836 -0
  138. package/public/sandbox/chunks/chunk-PHV4HYHB.js +397 -0
  139. package/public/sandbox/chunks/chunk-PIXQ6SOX.js +4071 -0
  140. package/public/sandbox/chunks/chunk-PKJL6YLK.js +73 -0
  141. package/public/sandbox/chunks/chunk-PKPOITIU.js +221 -0
  142. package/public/sandbox/chunks/{chunk-NQW73ACJ.js → chunk-PMXBOYQI.js} +1 -1
  143. package/public/sandbox/chunks/chunk-PQLZD7NR.js +836 -0
  144. package/public/sandbox/chunks/chunk-QEESVOZU.js +16 -0
  145. package/public/sandbox/chunks/chunk-QGIM3FQK.js +159 -0
  146. package/public/sandbox/chunks/chunk-QL5JNEDO.js +69 -0
  147. package/public/sandbox/chunks/chunk-QQOZ3RMH.js +867 -0
  148. package/public/sandbox/chunks/chunk-QUMEVT2F.js +194 -0
  149. package/public/sandbox/chunks/chunk-QVZBXYVY.js +102 -0
  150. package/public/sandbox/chunks/chunk-R5HQS6RB.js +135 -0
  151. package/public/sandbox/chunks/chunk-R75Q2CTT.js +900 -0
  152. package/public/sandbox/chunks/chunk-RBB6SHW2.js +253 -0
  153. package/public/sandbox/chunks/chunk-RDHNRWQP.js +383 -0
  154. package/public/sandbox/chunks/chunk-RIWOEI3T.js +1101 -0
  155. package/public/sandbox/chunks/chunk-RS5FFPUV.js +103 -0
  156. package/public/sandbox/chunks/chunk-RYSSJBGX.js +203 -0
  157. package/public/sandbox/chunks/chunk-S3KBAE5Z.js +1114 -0
  158. package/public/sandbox/chunks/chunk-S6ZZHV6G.js +244 -0
  159. package/public/sandbox/chunks/chunk-SFXJ24HY.js +499 -0
  160. package/public/sandbox/chunks/chunk-SH7TP5CJ.js +1109 -0
  161. package/public/sandbox/chunks/chunk-SI5OKFFY.js +317 -0
  162. package/public/sandbox/chunks/chunk-SIXNQNIR.js +86 -0
  163. package/public/sandbox/chunks/chunk-ST353BOX.js +42 -0
  164. package/public/sandbox/chunks/chunk-SYEHKMLP.js +1140 -0
  165. package/public/sandbox/chunks/chunk-SZ4KQUJU.js +69 -0
  166. package/public/sandbox/chunks/{chunk-5SOP6EKV.js → chunk-SZI65PSP.js} +5 -10
  167. package/public/sandbox/chunks/chunk-T7RLTSMX.js +78 -0
  168. package/public/sandbox/chunks/chunk-TJ2RLUTW.js +57 -0
  169. package/public/sandbox/chunks/chunk-TJB73XPN.js +4071 -0
  170. package/public/sandbox/chunks/chunk-TXJCYO56.js +4046 -0
  171. package/public/sandbox/chunks/chunk-U5J3LCYI.js +731 -0
  172. package/public/sandbox/chunks/chunk-UABFN3NH.js +208 -0
  173. package/public/sandbox/chunks/chunk-UBMUY7WO.js +13 -0
  174. package/public/sandbox/chunks/chunk-UC27CE32.js +69 -0
  175. package/public/sandbox/chunks/chunk-UJGVDFZN.js +147 -0
  176. package/public/sandbox/chunks/chunk-UNVLTK4N.js +122 -0
  177. package/public/sandbox/chunks/chunk-UQKQ6V3V.js +208 -0
  178. package/public/sandbox/chunks/chunk-UZZBHWIO.js +703 -0
  179. package/public/sandbox/chunks/chunk-VKZIJERL.js +1114 -0
  180. package/public/sandbox/chunks/chunk-VQQEAGID.js +372 -0
  181. package/public/sandbox/chunks/{chunk-3LX3KIQQ.js → chunk-W365QUZ5.js} +3 -5
  182. package/public/sandbox/chunks/chunk-WJY2LSWG.js +1052 -0
  183. package/public/sandbox/chunks/chunk-WNOBN3DX.js +391 -0
  184. package/public/sandbox/chunks/chunk-X2Z5VYG3.js +245 -0
  185. package/public/sandbox/chunks/chunk-X74KU74D.js +959 -0
  186. package/public/sandbox/chunks/chunk-XE7ULSGQ.js +46 -0
  187. package/public/sandbox/chunks/chunk-XRXUJZ3X.js +431 -0
  188. package/public/sandbox/chunks/chunk-XWHIN7CC.js +85 -0
  189. package/public/sandbox/chunks/chunk-Y2TVGGVL.js +527 -0
  190. package/public/sandbox/chunks/chunk-YMVMZA3U.js +1395 -0
  191. package/public/sandbox/chunks/chunk-YOBLFWDV.js +431 -0
  192. package/public/sandbox/chunks/chunk-YR2RFEZA.js +11 -0
  193. package/public/sandbox/chunks/chunk-YTD6A35P.js +836 -0
  194. package/public/sandbox/chunks/chunk-Z5L7EZXS.js +81 -0
  195. package/public/sandbox/chunks/chunk-Z65I5ET2.js +108 -0
  196. package/public/sandbox/chunks/chunk-Z6LV34RO.js +390 -0
  197. package/public/sandbox/chunks/chunk-ZAKUP6QG.js +1634 -0
  198. package/public/sandbox/chunks/chunk-ZHNYE2YH.js +731 -0
  199. package/public/sandbox/chunks/chunk-ZHQX3B3Y.js +867 -0
  200. package/public/sandbox/chunks/chunk-ZIXDFRHJ.js +731 -0
  201. package/public/sandbox/chunks/chunk-ZPZ2MZ4D.js +528 -0
  202. package/public/sandbox/chunks/chunk-ZQD6NZXB.js +373 -0
  203. package/public/sandbox/chunks/chunk-ZVVBP7ON.js +16 -0
  204. package/public/sandbox/chunks/chunk-ZWE3P6X2.js +11 -0
  205. package/public/sandbox/logix-core/Bound.js +14 -14
  206. package/public/sandbox/logix-core/Debug.js +12 -10
  207. package/public/sandbox/logix-core/EffectOp.js +3 -4
  208. package/public/sandbox/logix-core/Env.js +5 -2
  209. package/public/sandbox/logix-core/ExternalStore.js +239 -0
  210. package/public/sandbox/logix-core/Flow.js +7 -8
  211. package/public/sandbox/logix-core/Kernel.js +7 -4
  212. package/public/sandbox/logix-core/Link.js +33 -25
  213. package/public/sandbox/logix-core/Middleware.js +13 -11
  214. package/public/sandbox/logix-core/Module.js +93 -30
  215. package/public/sandbox/logix-core/ModuleTag.js +28 -25
  216. package/public/sandbox/logix-core/Observability.js +21 -19
  217. package/public/sandbox/logix-core/Process.js +27 -22
  218. package/public/sandbox/logix-core/ReadQuery.js +7 -11
  219. package/public/sandbox/logix-core/Reflection.js +173 -53
  220. package/public/sandbox/logix-core/Resource.js +6 -3
  221. package/public/sandbox/logix-core/Root.js +7 -3
  222. package/public/sandbox/logix-core/Runtime.js +54 -40
  223. package/public/sandbox/logix-core/ScopeRegistry.js +6 -3
  224. package/public/sandbox/logix-core/StateTrait.js +17 -14
  225. package/public/sandbox/logix-core/TraitLifecycle.js +8 -8
  226. package/public/sandbox/logix-core/Workflow.js +332 -0
  227. package/public/sandbox/logix-core.js +11133 -6622
  228. package/public/sandbox/logix-core.manifest.json +4 -2
  229. package/public/sandbox/worker.js +3 -3
  230. package/public/sandbox/chunks/chunk-4LRLOTMA.js +0 -1698
  231. package/public/sandbox/chunks/chunk-CDLXJHXY.js +0 -120
  232. package/public/sandbox/chunks/chunk-CZRI7MHA.js +0 -46
  233. package/public/sandbox/chunks/chunk-EJDFUZ4B.js +0 -408
  234. package/public/sandbox/chunks/chunk-IP63FME6.js +0 -282
  235. package/public/sandbox/chunks/chunk-JIXTOQXJ.js +0 -1103
  236. package/public/sandbox/chunks/chunk-MPUSOFJ3.js +0 -1928
  237. package/public/sandbox/chunks/chunk-ON2LY6HJ.js +0 -135
  238. package/public/sandbox/chunks/chunk-POIBXAH5.js +0 -995
  239. package/public/sandbox/chunks/chunk-PQ652ULI.js +0 -6359
  240. package/public/sandbox/chunks/chunk-RJQ4PG2F.js +0 -77
  241. package/public/sandbox/chunks/chunk-S4EXG3OS.js +0 -533
  242. package/public/sandbox/chunks/chunk-SUXDGXVE.js +0 -390
  243. package/public/sandbox/chunks/chunk-TOQ6SJ6O.js +0 -244
  244. package/public/sandbox/chunks/chunk-UKYAF3NL.js +0 -1036
  245. package/public/sandbox/chunks/chunk-UMVN3AWO.js +0 -395
  246. package/public/sandbox/chunks/chunk-WFV5PPWJ.js +0 -194
  247. package/public/sandbox/chunks/chunk-YF6IO732.js +0 -206
  248. package/public/sandbox/chunks/chunk-ZUBABAAO.js +0 -86
@@ -0,0 +1,81 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ isJsonValue
5
+ } from "./chunk-RYSSJBGX.js";
6
+
7
+ // ../logix-core/src/internal/observability/evidence.ts
8
+ var OBSERVABILITY_PROTOCOL_VERSION = "v1";
9
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
10
+ var asNonEmptyString = (value) => typeof value === "string" && value.length > 0 ? value : void 0;
11
+ var asFiniteNumber = (value) => typeof value === "number" && Number.isFinite(value) ? value : void 0;
12
+ var asPositiveInt = (value) => {
13
+ if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
14
+ const n = Math.floor(value);
15
+ return n >= 1 ? n : void 0;
16
+ };
17
+ var exportEvidencePackage = (options) => {
18
+ const protocolVersion = options.protocolVersion ?? OBSERVABILITY_PROTOCOL_VERSION;
19
+ return {
20
+ protocolVersion,
21
+ runId: options.runId,
22
+ createdAt: options.createdAt ?? Date.now(),
23
+ source: options.source,
24
+ events: options.events.slice().sort((a, b) => a.seq - b.seq),
25
+ summary: options.summary
26
+ };
27
+ };
28
+ var importEvidencePackage = (input) => {
29
+ const fallback = {
30
+ protocolVersion: OBSERVABILITY_PROTOCOL_VERSION,
31
+ runId: "unknown",
32
+ createdAt: Date.now(),
33
+ source: { host: "unknown" },
34
+ events: []
35
+ };
36
+ if (!isRecord(input)) return fallback;
37
+ const protocolVersion = asNonEmptyString(input.protocolVersion) ?? fallback.protocolVersion;
38
+ const runId = asNonEmptyString(input.runId) ?? fallback.runId;
39
+ const createdAt = asFiniteNumber(input.createdAt) ?? fallback.createdAt;
40
+ const sourceRaw = input.source;
41
+ const source = isRecord(sourceRaw) ? {
42
+ host: asNonEmptyString(sourceRaw.host) ?? "unknown",
43
+ label: typeof sourceRaw.label === "string" ? sourceRaw.label : void 0
44
+ } : fallback.source;
45
+ const eventsRaw = Array.isArray(input.events) ? input.events : [];
46
+ const events = [];
47
+ for (const e of eventsRaw) {
48
+ if (!isRecord(e)) continue;
49
+ const seq = asPositiveInt(e.seq);
50
+ const timestamp = asFiniteNumber(e.timestamp);
51
+ const type = asNonEmptyString(e.type);
52
+ const payloadRaw = e.payload;
53
+ if (!seq || timestamp === void 0 || !type || !isJsonValue(payloadRaw)) {
54
+ continue;
55
+ }
56
+ events.push({
57
+ protocolVersion: asNonEmptyString(e.protocolVersion) ?? protocolVersion,
58
+ runId: asNonEmptyString(e.runId) ?? runId,
59
+ seq,
60
+ timestamp,
61
+ type,
62
+ payload: payloadRaw
63
+ });
64
+ }
65
+ const summary = isJsonValue(input.summary) ? input.summary : void 0;
66
+ return {
67
+ protocolVersion,
68
+ runId,
69
+ createdAt,
70
+ source,
71
+ events: events.sort((a, b) => a.seq - b.seq),
72
+ summary
73
+ };
74
+ };
75
+
76
+ export {
77
+ OBSERVABILITY_PROTOCOL_VERSION,
78
+ exportEvidencePackage,
79
+ importEvidencePackage
80
+ };
81
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvb2JzZXJ2YWJpbGl0eS9ldmlkZW5jZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgaXNKc29uVmFsdWUsIHR5cGUgSnNvblZhbHVlIH0gZnJvbSBcIi4vanNvblZhbHVlLmpzXCJcblxuZXhwb3J0IGNvbnN0IE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTiA9IFwidjFcIlxuXG5leHBvcnQgaW50ZXJmYWNlIE9ic2VydmF0aW9uRW52ZWxvcGUge1xuICByZWFkb25seSBwcm90b2NvbFZlcnNpb246IHN0cmluZ1xuICByZWFkb25seSBydW5JZDogc3RyaW5nXG4gIHJlYWRvbmx5IHNlcTogbnVtYmVyXG4gIHJlYWRvbmx5IHRpbWVzdGFtcDogbnVtYmVyXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZ1xuICByZWFkb25seSBwYXlsb2FkOiBKc29uVmFsdWVcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmlkZW5jZVBhY2thZ2VTb3VyY2Uge1xuICByZWFkb25seSBob3N0OiBzdHJpbmdcbiAgcmVhZG9ubHkgbGFiZWw/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmlkZW5jZVBhY2thZ2Uge1xuICByZWFkb25seSBwcm90b2NvbFZlcnNpb246IHN0cmluZ1xuICByZWFkb25seSBydW5JZDogc3RyaW5nXG4gIHJlYWRvbmx5IGNyZWF0ZWRBdDogbnVtYmVyXG4gIHJlYWRvbmx5IHNvdXJjZTogRXZpZGVuY2VQYWNrYWdlU291cmNlXG4gIHJlYWRvbmx5IGV2ZW50czogUmVhZG9ubHlBcnJheTxPYnNlcnZhdGlvbkVudmVsb3BlPlxuICByZWFkb25seSBzdW1tYXJ5PzogSnNvblZhbHVlXG59XG5cbmNvbnN0IGlzUmVjb3JkID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKVxuXG5jb25zdCBhc05vbkVtcHR5U3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwID8gdmFsdWUgOiB1bmRlZmluZWRcblxuY29uc3QgYXNGaW5pdGVOdW1iZXIgPSAodmFsdWU6IHVua25vd24pOiBudW1iZXIgfCB1bmRlZmluZWQgPT5cbiAgdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZFxuXG5jb25zdCBhc1Bvc2l0aXZlSW50ID0gKHZhbHVlOiB1bmtub3duKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJudW1iZXJcIiB8fCAhTnVtYmVyLmlzRmluaXRlKHZhbHVlKSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBuID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgcmV0dXJuIG4gPj0gMSA/IG4gOiB1bmRlZmluZWRcbn1cblxuZXhwb3J0IGNvbnN0IGV4cG9ydEV2aWRlbmNlUGFja2FnZSA9IChvcHRpb25zOiB7XG4gIHJlYWRvbmx5IHJ1bklkOiBzdHJpbmdcbiAgcmVhZG9ubHkgc291cmNlOiBFdmlkZW5jZVBhY2thZ2VTb3VyY2VcbiAgcmVhZG9ubHkgZXZlbnRzOiBSZWFkb25seUFycmF5PE9ic2VydmF0aW9uRW52ZWxvcGU+XG4gIHJlYWRvbmx5IGNyZWF0ZWRBdD86IG51bWJlclxuICByZWFkb25seSBwcm90b2NvbFZlcnNpb24/OiBzdHJpbmdcbiAgcmVhZG9ubHkgc3VtbWFyeT86IEpzb25WYWx1ZVxufSk6IEV2aWRlbmNlUGFja2FnZSA9PiB7XG4gIGNvbnN0IHByb3RvY29sVmVyc2lvbiA9IG9wdGlvbnMucHJvdG9jb2xWZXJzaW9uID8/IE9CU0VSVkFCSUxJVFlfUFJPVE9DT0xfVkVSU0lPTlxuICByZXR1cm4ge1xuICAgIHByb3RvY29sVmVyc2lvbixcbiAgICBydW5JZDogb3B0aW9ucy5ydW5JZCxcbiAgICBjcmVhdGVkQXQ6IG9wdGlvbnMuY3JlYXRlZEF0ID8/IERhdGUubm93KCksXG4gICAgc291cmNlOiBvcHRpb25zLnNvdXJjZSxcbiAgICBldmVudHM6IG9wdGlvbnMuZXZlbnRzLnNsaWNlKCkuc29ydCgoYSwgYikgPT4gYS5zZXEgLSBiLnNlcSksXG4gICAgc3VtbWFyeTogb3B0aW9ucy5zdW1tYXJ5LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBpbXBvcnRFdmlkZW5jZVBhY2thZ2UgPSAoaW5wdXQ6IHVua25vd24pOiBFdmlkZW5jZVBhY2thZ2UgPT4ge1xuICBjb25zdCBmYWxsYmFjazogRXZpZGVuY2VQYWNrYWdlID0ge1xuICAgIHByb3RvY29sVmVyc2lvbjogT0JTRVJWQUJJTElUWV9QUk9UT0NPTF9WRVJTSU9OLFxuICAgIHJ1bklkOiBcInVua25vd25cIixcbiAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgc291cmNlOiB7IGhvc3Q6IFwidW5rbm93blwiIH0sXG4gICAgZXZlbnRzOiBbXSxcbiAgfVxuXG4gIGlmICghaXNSZWNvcmQoaW5wdXQpKSByZXR1cm4gZmFsbGJhY2tcblxuICBjb25zdCBwcm90b2NvbFZlcnNpb24gPSBhc05vbkVtcHR5U3RyaW5nKGlucHV0LnByb3RvY29sVmVyc2lvbikgPz8gZmFsbGJhY2sucHJvdG9jb2xWZXJzaW9uXG4gIGNvbnN0IHJ1bklkID0gYXNOb25FbXB0eVN0cmluZyhpbnB1dC5ydW5JZCkgPz8gZmFsbGJhY2sucnVuSWRcbiAgY29uc3QgY3JlYXRlZEF0ID0gYXNGaW5pdGVOdW1iZXIoaW5wdXQuY3JlYXRlZEF0KSA/PyBmYWxsYmFjay5jcmVhdGVkQXRcblxuICBjb25zdCBzb3VyY2VSYXcgPSBpbnB1dC5zb3VyY2VcbiAgY29uc3Qgc291cmNlOiBFdmlkZW5jZVBhY2thZ2VTb3VyY2UgPSBpc1JlY29yZChzb3VyY2VSYXcpXG4gICAgPyB7XG4gICAgICAgIGhvc3Q6IGFzTm9uRW1wdHlTdHJpbmcoc291cmNlUmF3Lmhvc3QpID8/IFwidW5rbm93blwiLFxuICAgICAgICBsYWJlbDogdHlwZW9mIHNvdXJjZVJhdy5sYWJlbCA9PT0gXCJzdHJpbmdcIiA/IHNvdXJjZVJhdy5sYWJlbCA6IHVuZGVmaW5lZCxcbiAgICAgIH1cbiAgICA6IGZhbGxiYWNrLnNvdXJjZVxuXG4gIGNvbnN0IGV2ZW50c1JhdyA9IEFycmF5LmlzQXJyYXkoaW5wdXQuZXZlbnRzKSA/IGlucHV0LmV2ZW50cyA6IFtdXG4gIGNvbnN0IGV2ZW50czogT2JzZXJ2YXRpb25FbnZlbG9wZVtdID0gW11cblxuICBmb3IgKGNvbnN0IGUgb2YgZXZlbnRzUmF3KSB7XG4gICAgaWYgKCFpc1JlY29yZChlKSkgY29udGludWVcblxuICAgIGNvbnN0IHNlcSA9IGFzUG9zaXRpdmVJbnQoZS5zZXEpXG4gICAgY29uc3QgdGltZXN0YW1wID0gYXNGaW5pdGVOdW1iZXIoZS50aW1lc3RhbXApXG4gICAgY29uc3QgdHlwZSA9IGFzTm9uRW1wdHlTdHJpbmcoZS50eXBlKVxuICAgIGNvbnN0IHBheWxvYWRSYXcgPSBlLnBheWxvYWRcblxuICAgIGlmICghc2VxIHx8IHRpbWVzdGFtcCA9PT0gdW5kZWZpbmVkIHx8ICF0eXBlIHx8ICFpc0pzb25WYWx1ZShwYXlsb2FkUmF3KSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBldmVudHMucHVzaCh7XG4gICAgICBwcm90b2NvbFZlcnNpb246IGFzTm9uRW1wdHlTdHJpbmcoZS5wcm90b2NvbFZlcnNpb24pID8/IHByb3RvY29sVmVyc2lvbixcbiAgICAgIHJ1bklkOiBhc05vbkVtcHR5U3RyaW5nKGUucnVuSWQpID8/IHJ1bklkLFxuICAgICAgc2VxLFxuICAgICAgdGltZXN0YW1wLFxuICAgICAgdHlwZSxcbiAgICAgIHBheWxvYWQ6IHBheWxvYWRSYXcsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHN1bW1hcnkgPSBpc0pzb25WYWx1ZShpbnB1dC5zdW1tYXJ5KSA/IGlucHV0LnN1bW1hcnkgOiB1bmRlZmluZWRcblxuICByZXR1cm4ge1xuICAgIHByb3RvY29sVmVyc2lvbixcbiAgICBydW5JZCxcbiAgICBjcmVhdGVkQXQsXG4gICAgc291cmNlLFxuICAgIGV2ZW50czogZXZlbnRzLnNvcnQoKGEsIGIpID0+IGEuc2VxIC0gYi5zZXEpLFxuICAgIHN1bW1hcnksXG4gIH1cbn1cblxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7OztBQUVPLElBQU0saUNBQWlDO0FBeUI5QyxJQUFNLFdBQVcsQ0FBQyxVQUNoQixPQUFPLFVBQVUsWUFBWSxVQUFVLFFBQVEsQ0FBQyxNQUFNLFFBQVEsS0FBSztBQUVyRSxJQUFNLG1CQUFtQixDQUFDLFVBQ3hCLE9BQU8sVUFBVSxZQUFZLE1BQU0sU0FBUyxJQUFJLFFBQVE7QUFFMUQsSUFBTSxpQkFBaUIsQ0FBQyxVQUN0QixPQUFPLFVBQVUsWUFBWSxPQUFPLFNBQVMsS0FBSyxJQUFJLFFBQVE7QUFFaEUsSUFBTSxnQkFBZ0IsQ0FBQyxVQUF1QztBQUM1RCxNQUFJLE9BQU8sVUFBVSxZQUFZLENBQUMsT0FBTyxTQUFTLEtBQUssRUFBRyxRQUFPO0FBQ2pFLFFBQU0sSUFBSSxLQUFLLE1BQU0sS0FBSztBQUMxQixTQUFPLEtBQUssSUFBSSxJQUFJO0FBQ3RCO0FBRU8sSUFBTSx3QkFBd0IsQ0FBQyxZQU9mO0FBQ3JCLFFBQU0sa0JBQWtCLFFBQVEsbUJBQW1CO0FBQ25ELFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxPQUFPLFFBQVE7QUFBQSxJQUNmLFdBQVcsUUFBUSxhQUFhLEtBQUssSUFBSTtBQUFBLElBQ3pDLFFBQVEsUUFBUTtBQUFBLElBQ2hCLFFBQVEsUUFBUSxPQUFPLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUc7QUFBQSxJQUMzRCxTQUFTLFFBQVE7QUFBQSxFQUNuQjtBQUNGO0FBRU8sSUFBTSx3QkFBd0IsQ0FBQyxVQUFvQztBQUN4RSxRQUFNLFdBQTRCO0FBQUEsSUFDaEMsaUJBQWlCO0FBQUEsSUFDakIsT0FBTztBQUFBLElBQ1AsV0FBVyxLQUFLLElBQUk7QUFBQSxJQUNwQixRQUFRLEVBQUUsTUFBTSxVQUFVO0FBQUEsSUFDMUIsUUFBUSxDQUFDO0FBQUEsRUFDWDtBQUVBLE1BQUksQ0FBQyxTQUFTLEtBQUssRUFBRyxRQUFPO0FBRTdCLFFBQU0sa0JBQWtCLGlCQUFpQixNQUFNLGVBQWUsS0FBSyxTQUFTO0FBQzVFLFFBQU0sUUFBUSxpQkFBaUIsTUFBTSxLQUFLLEtBQUssU0FBUztBQUN4RCxRQUFNLFlBQVksZUFBZSxNQUFNLFNBQVMsS0FBSyxTQUFTO0FBRTlELFFBQU0sWUFBWSxNQUFNO0FBQ3hCLFFBQU0sU0FBZ0MsU0FBUyxTQUFTLElBQ3BEO0FBQUEsSUFDRSxNQUFNLGlCQUFpQixVQUFVLElBQUksS0FBSztBQUFBLElBQzFDLE9BQU8sT0FBTyxVQUFVLFVBQVUsV0FBVyxVQUFVLFFBQVE7QUFBQSxFQUNqRSxJQUNBLFNBQVM7QUFFYixRQUFNLFlBQVksTUFBTSxRQUFRLE1BQU0sTUFBTSxJQUFJLE1BQU0sU0FBUyxDQUFDO0FBQ2hFLFFBQU0sU0FBZ0MsQ0FBQztBQUV2QyxhQUFXLEtBQUssV0FBVztBQUN6QixRQUFJLENBQUMsU0FBUyxDQUFDLEVBQUc7QUFFbEIsVUFBTSxNQUFNLGNBQWMsRUFBRSxHQUFHO0FBQy9CLFVBQU0sWUFBWSxlQUFlLEVBQUUsU0FBUztBQUM1QyxVQUFNLE9BQU8saUJBQWlCLEVBQUUsSUFBSTtBQUNwQyxVQUFNLGFBQWEsRUFBRTtBQUVyQixRQUFJLENBQUMsT0FBTyxjQUFjLFVBQWEsQ0FBQyxRQUFRLENBQUMsWUFBWSxVQUFVLEdBQUc7QUFDeEU7QUFBQSxJQUNGO0FBRUEsV0FBTyxLQUFLO0FBQUEsTUFDVixpQkFBaUIsaUJBQWlCLEVBQUUsZUFBZSxLQUFLO0FBQUEsTUFDeEQsT0FBTyxpQkFBaUIsRUFBRSxLQUFLLEtBQUs7QUFBQSxNQUNwQztBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQSxTQUFTO0FBQUEsSUFDWCxDQUFDO0FBQUEsRUFDSDtBQUVBLFFBQU0sVUFBVSxZQUFZLE1BQU0sT0FBTyxJQUFJLE1BQU0sVUFBVTtBQUU3RCxTQUFPO0FBQUEsSUFDTDtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0EsUUFBUSxPQUFPLEtBQUssQ0FBQyxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRztBQUFBLElBQzNDO0FBQUEsRUFDRjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -0,0 +1,108 @@
1
+ // @logix/core subpath bundles for @logix/sandbox
2
+
3
+ import {
4
+ isDevEnv
5
+ } from "./chunk-LTFCYZQ6.js";
6
+
7
+ // ../logix-core/src/internal/resource.ts
8
+ import { Context, Layer } from "../effect.js";
9
+ var stableStringify = (value) => {
10
+ const seen = /* @__PURE__ */ new WeakSet();
11
+ const encode = (input) => {
12
+ if (input === null) return null;
13
+ if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
14
+ return input;
15
+ }
16
+ if (typeof input === "bigint") return input.toString();
17
+ if (typeof input === "undefined") return "__undefined__";
18
+ if (typeof input === "symbol") return `__symbol__:${String(input)}`;
19
+ if (typeof input === "function") return "__function__";
20
+ if (Array.isArray(input)) {
21
+ return input.map((v) => encode(v));
22
+ }
23
+ if (input instanceof Date) {
24
+ return `__date__:${input.toISOString()}`;
25
+ }
26
+ if (input instanceof Error) {
27
+ return {
28
+ _tag: "Error",
29
+ name: input.name,
30
+ message: input.message
31
+ };
32
+ }
33
+ if (input && typeof input === "object") {
34
+ const obj = input;
35
+ if (seen.has(obj)) return "__cycle__";
36
+ seen.add(obj);
37
+ const record = input;
38
+ const keys = Object.keys(record).sort();
39
+ const out = {};
40
+ for (const k of keys) {
41
+ out[k] = encode(record[k]);
42
+ }
43
+ return out;
44
+ }
45
+ return String(input);
46
+ };
47
+ try {
48
+ return JSON.stringify(encode(value));
49
+ } catch {
50
+ return String(value);
51
+ }
52
+ };
53
+ var keyHash = (key) => stableStringify(key);
54
+ var Snapshot = {
55
+ idle: () => ({
56
+ status: "idle",
57
+ keyHash: void 0,
58
+ data: void 0,
59
+ error: void 0
60
+ }),
61
+ loading: (params) => ({
62
+ status: "loading",
63
+ keyHash: params.keyHash,
64
+ data: void 0,
65
+ error: void 0
66
+ }),
67
+ success: (params) => ({
68
+ status: "success",
69
+ keyHash: params.keyHash,
70
+ data: params.data,
71
+ error: void 0
72
+ }),
73
+ error: (params) => ({
74
+ status: "error",
75
+ keyHash: params.keyHash,
76
+ data: void 0,
77
+ error: params.error
78
+ })
79
+ };
80
+ var ResourceRegistryTag = class extends Context.Tag("@logix/core/ResourceRegistry")() {
81
+ };
82
+ var internal = {
83
+ ResourceRegistryTag
84
+ };
85
+ var make = (spec) => spec;
86
+ var layer = (specs) => Layer.succeed(
87
+ ResourceRegistryTag,
88
+ (() => {
89
+ const map = /* @__PURE__ */ new Map();
90
+ for (const spec of specs) {
91
+ if (isDevEnv() && map.has(spec.id) && map.get(spec.id) !== spec) {
92
+ throw new Error(`[Resource.layer] Duplicate resource id "${spec.id}" detected in the same runtime scope`);
93
+ }
94
+ map.set(spec.id, spec);
95
+ }
96
+ return { specs: map };
97
+ })()
98
+ );
99
+
100
+ export {
101
+ keyHash,
102
+ Snapshot,
103
+ ResourceRegistryTag,
104
+ internal,
105
+ make,
106
+ layer
107
+ };
108
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vbG9naXgtY29yZS9zcmMvaW50ZXJuYWwvcmVzb3VyY2UudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IENvbnRleHQsIExheWVyIH0gZnJvbSAnZWZmZWN0J1xuaW1wb3J0IHsgaXNEZXZFbnYgfSBmcm9tICcuL3J1bnRpbWUvY29yZS9lbnYuanMnXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VTcGVjPEtleSwgT3V0LCBFcnIsIEVudj4ge1xuICByZWFkb25seSBpZDogc3RyaW5nXG4gIHJlYWRvbmx5IGtleVNjaGVtYTogaW1wb3J0KCdlZmZlY3QnKS5TY2hlbWEuU2NoZW1hPEtleSwgYW55PlxuICByZWFkb25seSBsb2FkOiAoa2V5OiBLZXkpID0+IGltcG9ydCgnZWZmZWN0JykuRWZmZWN0LkVmZmVjdDxPdXQsIEVyciwgRW52PlxuICByZWFkb25seSBtZXRhPzoge1xuICAgIHJlYWRvbmx5IGNhY2hlR3JvdXA/OiBzdHJpbmdcbiAgICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZ1xuICAgIHJlYWRvbmx5IFtrOiBzdHJpbmddOiB1bmtub3duXG4gIH1cbn1cblxuZXhwb3J0IHR5cGUgQW55UmVzb3VyY2VTcGVjID0gUmVzb3VyY2VTcGVjPGFueSwgYW55LCBhbnksIGFueT5cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VTdGF0dXMgPSAnaWRsZScgfCAnbG9hZGluZycgfCAnc3VjY2VzcycgfCAnZXJyb3InXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VTbmFwc2hvdDxEYXRhID0gdW5rbm93biwgRXJyID0gdW5rbm93bj4ge1xuICByZWFkb25seSBzdGF0dXM6IFJlc291cmNlU3RhdHVzXG4gIHJlYWRvbmx5IGtleUhhc2g/OiBzdHJpbmdcbiAgcmVhZG9ubHkgZGF0YT86IERhdGFcbiAgcmVhZG9ubHkgZXJyb3I/OiBFcnJcbn1cblxuY29uc3Qgc3RhYmxlU3RyaW5naWZ5ID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc2VlbiA9IG5ldyBXZWFrU2V0PG9iamVjdD4oKVxuICBjb25zdCBlbmNvZGUgPSAoaW5wdXQ6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgICBpZiAoaW5wdXQgPT09IG51bGwpIHJldHVybiBudWxsXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGlucHV0ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgaW5wdXQgPT09ICdib29sZWFuJykge1xuICAgICAgcmV0dXJuIGlucHV0XG4gICAgfVxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdiaWdpbnQnKSByZXR1cm4gaW5wdXQudG9TdHJpbmcoKVxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICd1bmRlZmluZWQnKSByZXR1cm4gJ19fdW5kZWZpbmVkX18nXG4gICAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ3N5bWJvbCcpIHJldHVybiBgX19zeW1ib2xfXzoke1N0cmluZyhpbnB1dCl9YFxuICAgIGlmICh0eXBlb2YgaW5wdXQgPT09ICdmdW5jdGlvbicpIHJldHVybiAnX19mdW5jdGlvbl9fJ1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoaW5wdXQpKSB7XG4gICAgICByZXR1cm4gaW5wdXQubWFwKCh2KSA9PiBlbmNvZGUodikpXG4gICAgfVxuICAgIGlmIChpbnB1dCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgIHJldHVybiBgX19kYXRlX186JHtpbnB1dC50b0lTT1N0cmluZygpfWBcbiAgICB9XG4gICAgaWYgKGlucHV0IGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIF90YWc6ICdFcnJvcicsXG4gICAgICAgIG5hbWU6IGlucHV0Lm5hbWUsXG4gICAgICAgIG1lc3NhZ2U6IGlucHV0Lm1lc3NhZ2UsXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpbnB1dCAmJiB0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG4gICAgICBjb25zdCBvYmogPSBpbnB1dCBhcyBvYmplY3RcbiAgICAgIGlmIChzZWVuLmhhcyhvYmopKSByZXR1cm4gJ19fY3ljbGVfXydcbiAgICAgIHNlZW4uYWRkKG9iailcblxuICAgICAgY29uc3QgcmVjb3JkID0gaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhyZWNvcmQpLnNvcnQoKVxuICAgICAgY29uc3Qgb3V0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9XG4gICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICBvdXRba10gPSBlbmNvZGUocmVjb3JkW2tdKVxuICAgICAgfVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgICByZXR1cm4gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW5jb2RlKHZhbHVlKSlcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIFN0cmluZyh2YWx1ZSlcbiAgfVxufVxuXG5leHBvcnQgY29uc3Qga2V5SGFzaCA9IChrZXk6IHVua25vd24pOiBzdHJpbmcgPT4gc3RhYmxlU3RyaW5naWZ5KGtleSlcblxuZXhwb3J0IGNvbnN0IFNuYXBzaG90ID0ge1xuICBpZGxlOiA8RGF0YSA9IG5ldmVyLCBFcnIgPSBuZXZlcj4oKTogUmVzb3VyY2VTbmFwc2hvdDxEYXRhLCBFcnI+ID0+ICh7XG4gICAgc3RhdHVzOiAnaWRsZScsXG4gICAga2V5SGFzaDogdW5kZWZpbmVkLFxuICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICB9KSxcbiAgbG9hZGluZzogPERhdGEgPSBuZXZlciwgRXJyID0gbmV2ZXI+KHBhcmFtczogeyByZWFkb25seSBrZXlIYXNoOiBzdHJpbmcgfSk6IFJlc291cmNlU25hcHNob3Q8RGF0YSwgRXJyPiA9PiAoe1xuICAgIHN0YXR1czogJ2xvYWRpbmcnLFxuICAgIGtleUhhc2g6IHBhcmFtcy5rZXlIYXNoLFxuICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICB9KSxcbiAgc3VjY2VzczogPERhdGE+KHBhcmFtczogeyByZWFkb25seSBrZXlIYXNoOiBzdHJpbmc7IHJlYWRvbmx5IGRhdGE6IERhdGEgfSk6IFJlc291cmNlU25hcHNob3Q8RGF0YSwgbmV2ZXI+ID0+ICh7XG4gICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAga2V5SGFzaDogcGFyYW1zLmtleUhhc2gsXG4gICAgZGF0YTogcGFyYW1zLmRhdGEsXG4gICAgZXJyb3I6IHVuZGVmaW5lZCxcbiAgfSksXG4gIGVycm9yOiA8RXJyPihwYXJhbXM6IHsgcmVhZG9ubHkga2V5SGFzaDogc3RyaW5nOyByZWFkb25seSBlcnJvcjogRXJyIH0pOiBSZXNvdXJjZVNuYXBzaG90PG5ldmVyLCBFcnI+ID0+ICh7XG4gICAgc3RhdHVzOiAnZXJyb3InLFxuICAgIGtleUhhc2g6IHBhcmFtcy5rZXlIYXNoLFxuICAgIGRhdGE6IHVuZGVmaW5lZCxcbiAgICBlcnJvcjogcGFyYW1zLmVycm9yLFxuICB9KSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVJlZ2lzdHJ5IHtcbiAgcmVhZG9ubHkgc3BlY3M6IFJlYWRvbmx5TWFwPHN0cmluZywgQW55UmVzb3VyY2VTcGVjPlxufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VSZWdpc3RyeVRhZyBleHRlbmRzIENvbnRleHQuVGFnKCdAbG9naXgvY29yZS9SZXNvdXJjZVJlZ2lzdHJ5Jyk8XG4gIFJlc291cmNlUmVnaXN0cnlUYWcsXG4gIFJlc291cmNlUmVnaXN0cnlcbj4oKSB7fVxuXG5leHBvcnQgY29uc3QgaW50ZXJuYWwgPSB7XG4gIFJlc291cmNlUmVnaXN0cnlUYWcsXG59XG5cbmV4cG9ydCB0eXBlIFNwZWM8S2V5LCBPdXQsIEVyciwgRW52PiA9IFJlc291cmNlU3BlYzxLZXksIE91dCwgRXJyLCBFbnY+XG5cbmV4cG9ydCBjb25zdCBtYWtlID0gPEtleSwgT3V0LCBFcnIsIEVudj4oc3BlYzogUmVzb3VyY2VTcGVjPEtleSwgT3V0LCBFcnIsIEVudj4pOiBSZXNvdXJjZVNwZWM8S2V5LCBPdXQsIEVyciwgRW52PiA9PlxuICBzcGVjXG5cbmV4cG9ydCBjb25zdCBsYXllciA9IChzcGVjczogUmVhZG9ubHlBcnJheTxBbnlSZXNvdXJjZVNwZWM+KTogTGF5ZXIuTGF5ZXI8UmVzb3VyY2VSZWdpc3RyeVRhZywgbmV2ZXIsIG5ldmVyPiA9PlxuICBMYXllci5zdWNjZWVkKFxuICAgIFJlc291cmNlUmVnaXN0cnlUYWcsXG4gICAgKCgpID0+IHtcbiAgICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBBbnlSZXNvdXJjZVNwZWM+KClcbiAgICAgIGZvciAoY29uc3Qgc3BlYyBvZiBzcGVjcykge1xuICAgICAgICBpZiAoaXNEZXZFbnYoKSAmJiBtYXAuaGFzKHNwZWMuaWQpICYmIG1hcC5nZXQoc3BlYy5pZCkgIT09IHNwZWMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFtSZXNvdXJjZS5sYXllcl0gRHVwbGljYXRlIHJlc291cmNlIGlkIFwiJHtzcGVjLmlkfVwiIGRldGVjdGVkIGluIHRoZSBzYW1lIHJ1bnRpbWUgc2NvcGVgKVxuICAgICAgICB9XG4gICAgICAgIG1hcC5zZXQoc3BlYy5pZCwgc3BlYylcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHNwZWNzOiBtYXAgfVxuICAgIH0pKCksXG4gIClcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7QUFBQSxTQUFTLFNBQVMsYUFBYTtBQXlCL0IsSUFBTSxrQkFBa0IsQ0FBQyxVQUEyQjtBQUNsRCxRQUFNLE9BQU8sb0JBQUksUUFBZ0I7QUFDakMsUUFBTSxTQUFTLENBQUMsVUFBNEI7QUFDMUMsUUFBSSxVQUFVLEtBQU0sUUFBTztBQUMzQixRQUFJLE9BQU8sVUFBVSxZQUFZLE9BQU8sVUFBVSxZQUFZLE9BQU8sVUFBVSxXQUFX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