cojson 0.7.35 → 0.8.3

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 (222) hide show
  1. package/.turbo/turbo-build.log +2 -7
  2. package/.turbo/turbo-lint.log +4 -0
  3. package/CHANGELOG.md +13 -0
  4. package/dist/{PeerState.js → native/PeerState.js} +13 -5
  5. package/dist/native/PeerState.js.map +1 -0
  6. package/dist/native/PriorityBasedMessageQueue.js.map +1 -0
  7. package/dist/native/base64url.js.map +1 -0
  8. package/dist/native/base64url.test.js.map +1 -0
  9. package/dist/native/coValue.js.map +1 -0
  10. package/dist/{coValueCore.js → native/coValueCore.js} +0 -6
  11. package/dist/native/coValueCore.js.map +1 -0
  12. package/dist/{coValues → native/coValues}/account.js +2 -3
  13. package/dist/native/coValues/account.js.map +1 -0
  14. package/dist/native/coValues/coList.js.map +1 -0
  15. package/dist/native/coValues/coMap.js.map +1 -0
  16. package/dist/native/coValues/coStream.js.map +1 -0
  17. package/dist/{coValues → native/coValues}/group.js +8 -8
  18. package/dist/native/coValues/group.js.map +1 -0
  19. package/dist/native/coreToCoValue.js.map +1 -0
  20. package/dist/{crypto → native/crypto}/PureJSCrypto.js +4 -0
  21. package/dist/native/crypto/PureJSCrypto.js.map +1 -0
  22. package/dist/{crypto → native/crypto}/crypto.js +4 -1
  23. package/dist/native/crypto/crypto.js.map +1 -0
  24. package/dist/native/ids.js.map +1 -0
  25. package/dist/{index.js → native/index.native.js} +4 -6
  26. package/dist/native/index.native.js.map +1 -0
  27. package/dist/native/jsonStringify.js.map +1 -0
  28. package/dist/{jsonValue.js.map → native/jsonValue.js.map} +1 -1
  29. package/dist/{localNode.js → native/localNode.js} +44 -38
  30. package/dist/native/localNode.js.map +1 -0
  31. package/dist/native/media.js.map +1 -0
  32. package/dist/native/permissions.js.map +1 -0
  33. package/dist/native/priority.js.map +1 -0
  34. package/dist/native/storage/FileSystem.js.map +1 -0
  35. package/dist/{storage → native/storage}/chunksAndKnownStates.js +1 -1
  36. package/dist/native/storage/chunksAndKnownStates.js.map +1 -0
  37. package/dist/native/storage/index.js.map +1 -0
  38. package/dist/native/streamUtils.js.map +1 -0
  39. package/dist/native/sync.js.map +1 -0
  40. package/dist/native/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
  41. package/dist/native/typeUtils/expectGroup.js.map +1 -0
  42. package/dist/native/typeUtils/isAccountID.js.map +1 -0
  43. package/dist/native/typeUtils/isCoValue.js.map +1 -0
  44. package/dist/web/PeerState.js +66 -0
  45. package/dist/web/PeerState.js.map +1 -0
  46. package/dist/web/PriorityBasedMessageQueue.js +51 -0
  47. package/dist/web/PriorityBasedMessageQueue.js.map +1 -0
  48. package/dist/web/base64url.js +59 -0
  49. package/dist/web/base64url.js.map +1 -0
  50. package/dist/web/base64url.test.js +25 -0
  51. package/dist/web/base64url.test.js.map +1 -0
  52. package/dist/web/coValue.js +19 -0
  53. package/dist/web/coValue.js.map +1 -0
  54. package/dist/web/coValueCore.js +693 -0
  55. package/dist/web/coValueCore.js.map +1 -0
  56. package/dist/web/coValues/account.js +96 -0
  57. package/dist/web/coValues/account.js.map +1 -0
  58. package/dist/web/coValues/coList.js +393 -0
  59. package/dist/web/coValues/coList.js.map +1 -0
  60. package/dist/web/coValues/coMap.js +197 -0
  61. package/dist/web/coValues/coMap.js.map +1 -0
  62. package/dist/web/coValues/coStream.js +220 -0
  63. package/dist/web/coValues/coStream.js.map +1 -0
  64. package/dist/web/coValues/group.js +250 -0
  65. package/dist/web/coValues/group.js.map +1 -0
  66. package/dist/web/coreToCoValue.js +42 -0
  67. package/dist/web/coreToCoValue.js.map +1 -0
  68. package/dist/web/crypto/PureJSCrypto.js +93 -0
  69. package/dist/web/crypto/PureJSCrypto.js.map +1 -0
  70. package/dist/{crypto → web/crypto}/WasmCrypto.js +3 -0
  71. package/dist/web/crypto/WasmCrypto.js.map +1 -0
  72. package/dist/web/crypto/crypto.js +154 -0
  73. package/dist/web/crypto/crypto.js.map +1 -0
  74. package/dist/web/ids.js +17 -0
  75. package/dist/web/ids.js.map +1 -0
  76. package/dist/web/index.web.js +40 -0
  77. package/dist/web/index.web.js.map +1 -0
  78. package/dist/web/jsonStringify.js +57 -0
  79. package/dist/web/jsonStringify.js.map +1 -0
  80. package/dist/web/jsonValue.js +2 -0
  81. package/dist/web/jsonValue.js.map +1 -0
  82. package/dist/web/localNode.js +442 -0
  83. package/dist/web/localNode.js.map +1 -0
  84. package/dist/web/media.js +2 -0
  85. package/dist/web/media.js.map +1 -0
  86. package/dist/web/permissions.js +206 -0
  87. package/dist/web/permissions.js.map +1 -0
  88. package/dist/web/priority.js +31 -0
  89. package/dist/web/priority.js.map +1 -0
  90. package/dist/web/storage/FileSystem.js +58 -0
  91. package/dist/web/storage/FileSystem.js.map +1 -0
  92. package/dist/web/storage/chunksAndKnownStates.js +100 -0
  93. package/dist/web/storage/chunksAndKnownStates.js.map +1 -0
  94. package/dist/web/storage/index.js +348 -0
  95. package/dist/web/storage/index.js.map +1 -0
  96. package/dist/web/streamUtils.js +41 -0
  97. package/dist/web/streamUtils.js.map +1 -0
  98. package/dist/web/sync.js +504 -0
  99. package/dist/web/sync.js.map +1 -0
  100. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js +5 -0
  101. package/dist/web/typeUtils/accountOrAgentIDfromSessionID.js.map +1 -0
  102. package/dist/web/typeUtils/expectGroup.js +13 -0
  103. package/dist/web/typeUtils/expectGroup.js.map +1 -0
  104. package/dist/web/typeUtils/isAccountID.js +4 -0
  105. package/dist/web/typeUtils/isAccountID.js.map +1 -0
  106. package/dist/web/typeUtils/isCoValue.js +11 -0
  107. package/dist/web/typeUtils/isCoValue.js.map +1 -0
  108. package/package.json +25 -8
  109. package/src/PeerState.ts +18 -7
  110. package/src/coValue.ts +1 -1
  111. package/src/coValueCore.ts +9 -14
  112. package/src/coValues/account.ts +12 -7
  113. package/src/coValues/coList.ts +4 -4
  114. package/src/coValues/coMap.ts +3 -3
  115. package/src/coValues/coStream.ts +8 -8
  116. package/src/coValues/group.ts +15 -11
  117. package/src/crypto/PureJSCrypto.ts +5 -0
  118. package/src/crypto/WasmCrypto.ts +4 -0
  119. package/src/crypto/crypto.ts +11 -1
  120. package/src/ids.ts +2 -2
  121. package/src/{index.ts → index.native.ts} +7 -8
  122. package/src/index.web.ts +152 -0
  123. package/src/localNode.ts +75 -67
  124. package/src/permissions.ts +5 -5
  125. package/src/storage/chunksAndKnownStates.ts +1 -1
  126. package/src/storage/index.ts +1 -1
  127. package/src/tests/account.test.ts +1 -2
  128. package/src/tests/coList.test.ts +1 -1
  129. package/src/tests/coMap.test.ts +1 -1
  130. package/src/tests/coStream.test.ts +2 -1
  131. package/src/tests/cryptoImpl.test.ts +24 -2
  132. package/src/tests/group.test.ts +6 -8
  133. package/src/tests/permissions.test.ts +90 -43
  134. package/src/tests/priority.test.ts +44 -15
  135. package/src/tests/sync.test.ts +8 -8
  136. package/src/tests/testUtils.ts +1 -2
  137. package/src/typeUtils/accountOrAgentIDfromSessionID.ts +3 -3
  138. package/src/typeUtils/isAccountID.ts +2 -2
  139. package/tsconfig.json +5 -4
  140. package/tsconfig.native.json +12 -0
  141. package/tsconfig.web.json +11 -0
  142. package/dist/PeerState.js.map +0 -1
  143. package/dist/PriorityBasedMessageQueue.js.map +0 -1
  144. package/dist/base64url.js.map +0 -1
  145. package/dist/base64url.test.js.map +0 -1
  146. package/dist/coValue.js.map +0 -1
  147. package/dist/coValueCore.js.map +0 -1
  148. package/dist/coValues/account.js.map +0 -1
  149. package/dist/coValues/coList.js.map +0 -1
  150. package/dist/coValues/coMap.js.map +0 -1
  151. package/dist/coValues/coStream.js.map +0 -1
  152. package/dist/coValues/group.js.map +0 -1
  153. package/dist/coreToCoValue.js.map +0 -1
  154. package/dist/crypto/PureJSCrypto.js.map +0 -1
  155. package/dist/crypto/WasmCrypto.js.map +0 -1
  156. package/dist/crypto/crypto.js.map +0 -1
  157. package/dist/ids.js.map +0 -1
  158. package/dist/index.js.map +0 -1
  159. package/dist/jsonStringify.js.map +0 -1
  160. package/dist/localNode.js.map +0 -1
  161. package/dist/media.js.map +0 -1
  162. package/dist/permissions.js.map +0 -1
  163. package/dist/priority.js.map +0 -1
  164. package/dist/storage/FileSystem.js.map +0 -1
  165. package/dist/storage/chunksAndKnownStates.js.map +0 -1
  166. package/dist/storage/index.js.map +0 -1
  167. package/dist/streamUtils.js.map +0 -1
  168. package/dist/sync.js.map +0 -1
  169. package/dist/tests/PeerState.test.js +0 -80
  170. package/dist/tests/PeerState.test.js.map +0 -1
  171. package/dist/tests/PriorityBasedMessageQueue.test.js +0 -97
  172. package/dist/tests/PriorityBasedMessageQueue.test.js.map +0 -1
  173. package/dist/tests/account.test.js +0 -59
  174. package/dist/tests/account.test.js.map +0 -1
  175. package/dist/tests/coList.test.js +0 -76
  176. package/dist/tests/coList.test.js.map +0 -1
  177. package/dist/tests/coMap.test.js +0 -136
  178. package/dist/tests/coMap.test.js.map +0 -1
  179. package/dist/tests/coStream.test.js +0 -205
  180. package/dist/tests/coStream.test.js.map +0 -1
  181. package/dist/tests/coValueCore.test.js +0 -124
  182. package/dist/tests/coValueCore.test.js.map +0 -1
  183. package/dist/tests/crypto.test.js +0 -118
  184. package/dist/tests/crypto.test.js.map +0 -1
  185. package/dist/tests/cryptoImpl.test.js +0 -113
  186. package/dist/tests/cryptoImpl.test.js.map +0 -1
  187. package/dist/tests/group.test.js +0 -34
  188. package/dist/tests/group.test.js.map +0 -1
  189. package/dist/tests/permissions.test.js +0 -1060
  190. package/dist/tests/permissions.test.js.map +0 -1
  191. package/dist/tests/priority.test.js +0 -61
  192. package/dist/tests/priority.test.js.map +0 -1
  193. package/dist/tests/sync.test.js +0 -1187
  194. package/dist/tests/sync.test.js.map +0 -1
  195. package/dist/tests/testUtils.js +0 -60
  196. package/dist/tests/testUtils.js.map +0 -1
  197. package/dist/typeUtils/accountOrAgentIDfromSessionID.js.map +0 -1
  198. package/dist/typeUtils/expectGroup.js.map +0 -1
  199. package/dist/typeUtils/isAccountID.js.map +0 -1
  200. package/dist/typeUtils/isCoValue.js.map +0 -1
  201. /package/dist/{PriorityBasedMessageQueue.js → native/PriorityBasedMessageQueue.js} +0 -0
  202. /package/dist/{base64url.js → native/base64url.js} +0 -0
  203. /package/dist/{base64url.test.js → native/base64url.test.js} +0 -0
  204. /package/dist/{coValue.js → native/coValue.js} +0 -0
  205. /package/dist/{coValues → native/coValues}/coList.js +0 -0
  206. /package/dist/{coValues → native/coValues}/coMap.js +0 -0
  207. /package/dist/{coValues → native/coValues}/coStream.js +0 -0
  208. /package/dist/{coreToCoValue.js → native/coreToCoValue.js} +0 -0
  209. /package/dist/{ids.js → native/ids.js} +0 -0
  210. /package/dist/{jsonStringify.js → native/jsonStringify.js} +0 -0
  211. /package/dist/{jsonValue.js → native/jsonValue.js} +0 -0
  212. /package/dist/{media.js → native/media.js} +0 -0
  213. /package/dist/{permissions.js → native/permissions.js} +0 -0
  214. /package/dist/{priority.js → native/priority.js} +0 -0
  215. /package/dist/{storage → native/storage}/FileSystem.js +0 -0
  216. /package/dist/{storage → native/storage}/index.js +0 -0
  217. /package/dist/{streamUtils.js → native/streamUtils.js} +0 -0
  218. /package/dist/{sync.js → native/sync.js} +0 -0
  219. /package/dist/{typeUtils → native/typeUtils}/accountOrAgentIDfromSessionID.js +0 -0
  220. /package/dist/{typeUtils → native/typeUtils}/expectGroup.js +0 -0
  221. /package/dist/{typeUtils → native/typeUtils}/isAccountID.js +0 -0
  222. /package/dist/{typeUtils → native/typeUtils}/isCoValue.js +0 -0
@@ -1,124 +0,0 @@
1
- import { expect, test, vi } from "vitest";
2
- import { LocalNode } from "../localNode.js";
3
- import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
4
- import { stableStringify } from "../jsonStringify.js";
5
- import { WasmCrypto } from "../crypto/WasmCrypto.js";
6
- const Crypto = await WasmCrypto.create();
7
- test("Can create coValue with new agent credentials and add transaction to it", () => {
8
- const [account, sessionID] = randomAnonymousAccountAndSessionID();
9
- const node = new LocalNode(account, sessionID, Crypto);
10
- const coValue = node.createCoValue({
11
- type: "costream",
12
- ruleset: { type: "unsafeAllowAll" },
13
- meta: null,
14
- ...Crypto.createdNowUnique(),
15
- });
16
- const transaction = {
17
- privacy: "trusting",
18
- madeAt: Date.now(),
19
- changes: stableStringify([
20
- {
21
- hello: "world",
22
- },
23
- ]),
24
- };
25
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.currentSessionID, [transaction]);
26
- expect(coValue
27
- .tryAddTransactions(node.currentSessionID, [transaction], expectedNewHash, Crypto.sign(account.currentSignerSecret(), expectedNewHash))
28
- ._unsafeUnwrap()).toBe(true);
29
- });
30
- test("transactions with wrong signature are rejected", () => {
31
- const wrongAgent = Crypto.newRandomAgentSecret();
32
- const [agentSecret, sessionID] = randomAnonymousAccountAndSessionID();
33
- const node = new LocalNode(agentSecret, sessionID, Crypto);
34
- const coValue = node.createCoValue({
35
- type: "costream",
36
- ruleset: { type: "unsafeAllowAll" },
37
- meta: null,
38
- ...Crypto.createdNowUnique(),
39
- });
40
- const transaction = {
41
- privacy: "trusting",
42
- madeAt: Date.now(),
43
- changes: stableStringify([
44
- {
45
- hello: "world",
46
- },
47
- ]),
48
- };
49
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.currentSessionID, [transaction]);
50
- // eslint-disable-next-line neverthrow/must-use-result
51
- coValue
52
- .tryAddTransactions(node.currentSessionID, [transaction], expectedNewHash, Crypto.sign(Crypto.getAgentSignerSecret(wrongAgent), expectedNewHash))
53
- ._unsafeUnwrapErr({ withStackTrace: true });
54
- });
55
- test("transactions with correctly signed, but wrong hash are rejected", () => {
56
- const [account, sessionID] = randomAnonymousAccountAndSessionID();
57
- const node = new LocalNode(account, sessionID, Crypto);
58
- const coValue = node.createCoValue({
59
- type: "costream",
60
- ruleset: { type: "unsafeAllowAll" },
61
- meta: null,
62
- ...Crypto.createdNowUnique(),
63
- });
64
- const transaction = {
65
- privacy: "trusting",
66
- madeAt: Date.now(),
67
- changes: stableStringify([
68
- {
69
- hello: "world",
70
- },
71
- ]),
72
- };
73
- const { expectedNewHash } = coValue.expectedNewHashAfter(node.currentSessionID, [
74
- {
75
- privacy: "trusting",
76
- madeAt: Date.now(),
77
- changes: stableStringify([
78
- {
79
- hello: "wrong",
80
- },
81
- ]),
82
- },
83
- ]);
84
- // eslint-disable-next-line neverthrow/must-use-result
85
- coValue
86
- .tryAddTransactions(node.currentSessionID, [transaction], expectedNewHash, Crypto.sign(account.currentSignerSecret(), expectedNewHash))
87
- ._unsafeUnwrapErr({ withStackTrace: true });
88
- });
89
- test("New transactions in a group correctly update owned values, including subscriptions", async () => {
90
- const [account, sessionID] = randomAnonymousAccountAndSessionID();
91
- const node = new LocalNode(account, sessionID, Crypto);
92
- const group = node.createGroup();
93
- const timeBeforeEdit = Date.now();
94
- await new Promise((resolve) => setTimeout(resolve, 10));
95
- const map = group.createMap();
96
- map.set("hello", "world");
97
- const listener = vi.fn();
98
- map.subscribe(listener);
99
- expect(listener.mock.calls[0][0].get("hello")).toBe("world");
100
- const resignationThatWeJustLearnedAbout = {
101
- privacy: "trusting",
102
- madeAt: timeBeforeEdit,
103
- changes: stableStringify([
104
- {
105
- op: "set",
106
- key: account.id,
107
- value: "revoked",
108
- },
109
- ]),
110
- };
111
- const { expectedNewHash } = group.core.expectedNewHashAfter(sessionID, [
112
- resignationThatWeJustLearnedAbout,
113
- ]);
114
- const signature = Crypto.sign(node.account.currentSignerSecret(), expectedNewHash);
115
- expect(map.core.getValidSortedTransactions().length).toBe(1);
116
- const manuallyAdddedTxSuccess = group.core
117
- .tryAddTransactions(node.currentSessionID, [resignationThatWeJustLearnedAbout], expectedNewHash, signature)
118
- ._unsafeUnwrap({ withStackTrace: true });
119
- expect(manuallyAdddedTxSuccess).toBe(true);
120
- expect(listener.mock.calls.length).toBe(2);
121
- expect(listener.mock.calls[1][0].get("hello")).toBe(undefined);
122
- expect(map.core.getValidSortedTransactions().length).toBe(0);
123
- });
124
- //# sourceMappingURL=coValueCore.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"coValueCore.test.js","sourceRoot":"","sources":["../../src/tests/coValueCore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AAEzC,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACjF,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,GAAG,MAAM,CAAC,gBAAgB,EAAE;KAC/B,CAAC,CAAC;IAEH,MAAM,WAAW,GAAgB;QAC7B,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,eAAe,CAAC;YACrB;gBACI,KAAK,EAAE,OAAO;aACjB;SACJ,CAAC;KACL,CAAC;IAEF,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,oBAAoB,CACpD,IAAI,CAAC,gBAAgB,EACrB,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,MAAM,CACF,OAAO;SACF,kBAAkB,CACf,IAAI,CAAC,gBAAgB,EACrB,CAAC,WAAW,CAAC,EACb,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,eAAe,CAAC,CAC9D;SACA,aAAa,EAAE,CACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,UAAU,GAAG,MAAM,CAAC,oBAAoB,EAAE,CAAC;IACjD,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IACtE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAE3D,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,GAAG,MAAM,CAAC,gBAAgB,EAAE;KAC/B,CAAC,CAAC;IAEH,MAAM,WAAW,GAAgB;QAC7B,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,eAAe,CAAC;YACrB;gBACI,KAAK,EAAE,OAAO;aACjB;SACJ,CAAC;KACL,CAAC;IAEF,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,oBAAoB,CACpD,IAAI,CAAC,gBAAgB,EACrB,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,sDAAsD;IACtD,OAAO;SACF,kBAAkB,CACf,IAAI,CAAC,gBAAgB,EACrB,CAAC,WAAW,CAAC,EACb,eAAe,EACf,MAAM,CAAC,IAAI,CACP,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,EACvC,eAAe,CAClB,CACJ;SACA,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;IACzE,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE;QACnC,IAAI,EAAE,IAAI;QACV,GAAG,MAAM,CAAC,gBAAgB,EAAE;KAC/B,CAAC,CAAC;IAEH,MAAM,WAAW,GAAgB;QAC7B,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;QAClB,OAAO,EAAE,eAAe,CAAC;YACrB;gBACI,KAAK,EAAE,OAAO;aACjB;SACJ,CAAC;KACL,CAAC;IAEF,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,oBAAoB,CACpD,IAAI,CAAC,gBAAgB,EACrB;QACI;YACI,OAAO,EAAE,UAAU;YACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE;YAClB,OAAO,EAAE,eAAe,CAAC;gBACrB;oBACI,KAAK,EAAE,OAAO;iBACjB;aACJ,CAAC;SACL;KACJ,CACJ,CAAC;IAEF,sDAAsD;IACtD,OAAO;SACF,kBAAkB,CACf,IAAI,CAAC,gBAAgB,EACrB,CAAC,WAAW,CAAC,EACb,eAAe,EACf,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,eAAe,CAAC,CAC9D;SACA,gBAAgB,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oFAAoF,EAAE,KAAK,IAAI,EAAE;IAClG,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,kCAAkC,EAAE,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAExD,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAE9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1B,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;IAEzB,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAExB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAE7D,MAAM,iCAAiC,GAAG;QACtC,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,cAAc;QACtB,OAAO,EAAE,eAAe,CAAC;YACrB;gBACI,EAAE,EAAE,KAAK;gBACT,GAAG,EAAE,OAAO,CAAC,EAAE;gBACf,KAAK,EAAE,SAAS;aAC6B;SACpD,CAAC;KACiB,CAAC;IAExB,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;QACnE,iCAAiC;KACpC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAClC,eAAe,CAClB,CAAC;IAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE7D,MAAM,uBAAuB,GAAG,KAAK,CAAC,IAAI;SACrC,kBAAkB,CACf,IAAI,CAAC,gBAAgB,EACrB,CAAC,iCAAiC,CAAC,EACnC,eAAe,EACf,SAAS,CACZ;SACA,aAAa,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC,CAAC"}
@@ -1,118 +0,0 @@
1
- import { expect, test } from "vitest";
2
- import { WasmCrypto } from "../crypto/WasmCrypto.js";
3
- import { base58, base64url } from "@scure/base";
4
- import { x25519 } from "@noble/curves/ed25519";
5
- import { xsalsa20_poly1305 } from "@noble/ciphers/salsa";
6
- import { blake3 } from "@noble/hashes/blake3";
7
- import { stableStringify } from "../jsonStringify.js";
8
- const Crypto = await WasmCrypto.create();
9
- test("Signatures round-trip and use stable stringify", () => {
10
- const data = { b: "world", a: "hello" };
11
- const signer = Crypto.newRandomSigner();
12
- const signature = Crypto.sign(signer, data);
13
- expect(signature).toMatch(/^signature_z/);
14
- expect(Crypto.verify(signature, { a: "hello", b: "world" }, Crypto.getSignerID(signer))).toBe(true);
15
- });
16
- test("Invalid signatures don't verify", () => {
17
- const data = { b: "world", a: "hello" };
18
- const signer = Crypto.newRandomSigner();
19
- const signer2 = Crypto.newRandomSigner();
20
- const wrongSignature = Crypto.sign(signer2, data);
21
- expect(Crypto.verify(wrongSignature, data, Crypto.getSignerID(signer))).toBe(false);
22
- });
23
- test("encrypting round-trips, but invalid receiver can't unseal", () => {
24
- const data = { b: "world", a: "hello" };
25
- const sender = Crypto.newRandomSealer();
26
- const sealer = Crypto.newRandomSealer();
27
- const wrongSealer = Crypto.newRandomSealer();
28
- const nOnceMaterial = {
29
- in: "co_zTEST",
30
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
31
- };
32
- const sealed = Crypto.seal({
33
- message: data,
34
- from: sender,
35
- to: Crypto.getSealerID(sealer),
36
- nOnceMaterial,
37
- });
38
- expect(Crypto.unseal(sealed, sealer, Crypto.getSealerID(sender), nOnceMaterial)).toEqual(data);
39
- expect(() => Crypto.unseal(sealed, wrongSealer, Crypto.getSealerID(sender), nOnceMaterial)).toThrow(/Wrong tag/);
40
- // trying with wrong sealer secret, by hand
41
- const nOnce = blake3(new TextEncoder().encode(stableStringify(nOnceMaterial))).slice(0, 24);
42
- const sealer3priv = base58.decode(wrongSealer.substring("sealerSecret_z".length));
43
- const senderPub = base58.decode(Crypto.getSealerID(sender).substring("sealer_z".length));
44
- const sealedBytes = base64url.decode(sealed.substring("sealed_U".length));
45
- const sharedSecret = x25519.getSharedSecret(sealer3priv, senderPub);
46
- expect(() => {
47
- const _ = xsalsa20_poly1305(sharedSecret, nOnce).decrypt(sealedBytes);
48
- }).toThrow("Wrong tag");
49
- });
50
- test("Hashing is deterministic", () => {
51
- expect(Crypto.secureHash({ b: "world", a: "hello" })).toEqual(Crypto.secureHash({ a: "hello", b: "world" }));
52
- expect(Crypto.shortHash({ b: "world", a: "hello" })).toEqual(Crypto.shortHash({ a: "hello", b: "world" }));
53
- });
54
- test("Encryption for transactions round-trips", () => {
55
- const { secret } = Crypto.newRandomKeySecret();
56
- const encrypted1 = Crypto.encryptForTransaction({ a: "hello" }, secret, {
57
- in: "co_zTEST",
58
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
59
- });
60
- const encrypted2 = Crypto.encryptForTransaction({ b: "world" }, secret, {
61
- in: "co_zTEST",
62
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
63
- });
64
- const decrypted1 = Crypto.decryptForTransaction(encrypted1, secret, {
65
- in: "co_zTEST",
66
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
67
- });
68
- const decrypted2 = Crypto.decryptForTransaction(encrypted2, secret, {
69
- in: "co_zTEST",
70
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
71
- });
72
- expect([decrypted1, decrypted2]).toEqual([{ a: "hello" }, { b: "world" }]);
73
- });
74
- test("Encryption for transactions doesn't decrypt with a wrong key", () => {
75
- const { secret } = Crypto.newRandomKeySecret();
76
- const { secret: secret2 } = Crypto.newRandomKeySecret();
77
- const encrypted1 = Crypto.encryptForTransaction({ a: "hello" }, secret, {
78
- in: "co_zTEST",
79
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
80
- });
81
- const encrypted2 = Crypto.encryptForTransaction({ b: "world" }, secret, {
82
- in: "co_zTEST",
83
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
84
- });
85
- const decrypted1 = Crypto.decryptForTransaction(encrypted1, secret2, {
86
- in: "co_zTEST",
87
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 0 },
88
- });
89
- const decrypted2 = Crypto.decryptForTransaction(encrypted2, secret2, {
90
- in: "co_zTEST",
91
- tx: { sessionID: "co_zTEST_session_zTEST", txIndex: 1 },
92
- });
93
- expect([decrypted1, decrypted2]).toEqual([undefined, undefined]);
94
- });
95
- test("Encryption of keySecrets round-trips", () => {
96
- const toEncrypt = Crypto.newRandomKeySecret();
97
- const encrypting = Crypto.newRandomKeySecret();
98
- const keys = {
99
- toEncrypt,
100
- encrypting,
101
- };
102
- const encrypted = Crypto.encryptKeySecret(keys);
103
- const decrypted = Crypto.decryptKeySecret(encrypted, encrypting.secret);
104
- expect(decrypted).toEqual(toEncrypt.secret);
105
- });
106
- test("Encryption of keySecrets doesn't decrypt with a wrong key", () => {
107
- const toEncrypt = Crypto.newRandomKeySecret();
108
- const encrypting = Crypto.newRandomKeySecret();
109
- const encryptingWrong = Crypto.newRandomKeySecret();
110
- const keys = {
111
- toEncrypt,
112
- encrypting,
113
- };
114
- const encrypted = Crypto.encryptKeySecret(keys);
115
- const decrypted = Crypto.decryptKeySecret(encrypted, encryptingWrong.secret);
116
- expect(decrypted).toBeUndefined();
117
- });
118
- //# sourceMappingURL=crypto.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.test.js","sourceRoot":"","sources":["../../src/tests/crypto.test.ts"],"names":[],"mappings":"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"}
@@ -1,113 +0,0 @@
1
- import { WasmCrypto } from "../crypto/WasmCrypto.js";
2
- import { PureJSCrypto } from "../crypto/PureJSCrypto.js";
3
- import { describe, test, expect } from "vitest";
4
- describe.each([
5
- { impl: await WasmCrypto.create(), name: "Wasm" },
6
- { impl: await PureJSCrypto.create(), name: "PureJS" },
7
- ])("Crypto $name", ({ impl }) => {
8
- test("randomBytes", () => {
9
- expect(impl.randomBytes(32).length).toEqual(32);
10
- });
11
- test("blake3HashOnce", () => {
12
- const data = new Uint8Array([1, 2, 3, 4, 5]);
13
- const hash = impl.blake3HashOnce(data);
14
- // prettier-ignore
15
- expect(hash).toEqual(new Uint8Array([2, 79, 103, 192, 66, 90, 61, 192, 47, 186, 245, 140, 185, 61, 229, 19, 46, 61, 117, 197, 25, 250, 160, 186, 218, 33, 73, 29, 136, 201, 112, 87]));
16
- });
17
- test("blake3HashOnceWithContext", () => {
18
- const data = new Uint8Array([1, 2, 3, 4, 5]);
19
- const context = new Uint8Array([6, 7, 8, 9, 10]);
20
- const hash = impl.blake3HashOnceWithContext(data, { context });
21
- // prettier-ignore
22
- expect(hash).toEqual(new Uint8Array([26, 197, 20, 5, 159, 115, 36, 109, 188, 32, 237, 183, 252, 248, 89, 48, 212, 51, 102, 180, 94, 56, 201, 33, 196, 52, 222, 121, 103, 112, 153, 98]));
23
- });
24
- test("incrementalBlake3", () => {
25
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
26
- const state = impl.emptyBlake3State();
27
- const data = new Uint8Array([1, 2, 3, 4, 5]);
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
- const state2 = impl.blake3IncrementalUpdate(state, data);
30
- expect(impl.blake3DigestForState(state2)).toEqual(
31
- // prettier-ignore
32
- new Uint8Array([2, 79, 103, 192, 66, 90, 61, 192, 47, 186, 245, 140, 185, 61, 229, 19, 46, 61, 117, 197, 25, 250, 160, 186, 218, 33, 73, 29, 136, 201, 112, 87]));
33
- const data2 = new Uint8Array([6, 7, 8, 9, 10]);
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- const state3 = impl.blake3IncrementalUpdate(state2, data2);
36
- expect(impl.blake3DigestForState(state3)).toEqual(
37
- // prettier-ignore
38
- new Uint8Array([165, 131, 141, 69, 2, 69, 39, 236, 196, 244, 180, 213, 147, 124, 222, 39, 68, 223, 54, 176, 242, 97, 200, 101, 204, 79, 21, 233, 56, 51, 1, 199]));
39
- });
40
- test("newEd25519SigningKey", () => {
41
- expect(impl.newEd25519SigningKey().length).toEqual(32);
42
- });
43
- test("getSignerID", () => {
44
- const secret = impl.signerSecretFromBytes(new Uint8Array(Array.from({ length: 32 }, (_, i) => i * 2)));
45
- const id = impl.getSignerID(secret);
46
- expect(id).toEqual("signer_z8wDhwtSA2twZvmz8J3Df63TdCBxC7ta9hFASV9cZC9xw");
47
- });
48
- test("sign and verify", () => {
49
- const secret = impl.signerSecretFromBytes(new Uint8Array(Array.from({ length: 32 }, (_, i) => i * 2)));
50
- const wrongSecret = impl.signerSecretFromBytes(new Uint8Array(Array.from({ length: 32 }, (_, i) => (i === 0 ? 1 : i * 2))));
51
- const message = { foo: "bar" };
52
- const wrongMessage = { foo: "baz" };
53
- const signature = impl.sign(secret, message);
54
- const wrongSignature = impl.sign(wrongSecret, message);
55
- expect(signature).toEqual("signature_zHH7trJJ4iJFgYv9B8QtF96qcG7PbPJcfojy9ACtJc6z9FqzbJNM6xeqVLxCEK1oSj1oSYAgy2V3CW5SzjYDh8ax");
56
- expect(impl.verify(signature, message, impl.getSignerID(secret))).toBeTruthy();
57
- expect(impl.verify(wrongSignature, message, impl.getSignerID(secret))).toBeFalsy();
58
- expect(impl.verify(signature, wrongMessage, impl.getSignerID(secret))).toBeFalsy();
59
- });
60
- test("newX25519StaticSecret", () => {
61
- expect(impl.newX25519StaticSecret().length).toEqual(32);
62
- });
63
- test("getSealerID", () => {
64
- const secret = impl.sealerSecretFromBytes(new Uint8Array(Array.from({ length: 32 }, (_, i) => i * 2)));
65
- const id = impl.getSealerID(secret);
66
- expect(id).toEqual("sealer_zBvzQipsgJZwgy4rN5dfnWQWQNrV4PnJpWfDjZkJ5iYqy");
67
- });
68
- test("encrypt and decrypt", () => {
69
- const secret = "keySecret_zyRhQCZGM3LwEjB2nXTktyBQ56JiDBHbRtYjjddiugjT";
70
- const data = { foo: "bar" };
71
- const nOnceMaterial = { bar: "foo" };
72
- const encrypted = impl.encrypt(data, secret, nOnceMaterial);
73
- expect(encrypted).toEqual("encrypted_UDrVbWTATlj-ECtLqJQ==");
74
- const decrypted = impl.decrypt(encrypted, secret, nOnceMaterial);
75
- expect(decrypted).toEqual(data);
76
- const wrongSecret = "keySecret_zyRhQCZGM3LwEjB2nXTktyBQ56JiDBHbRtYjjddingjT";
77
- expect(impl.decrypt(encrypted, wrongSecret, nOnceMaterial)).toBeUndefined();
78
- const wrongNOnceMaterial = { bar: "baz" };
79
- expect(impl.decrypt(encrypted, secret, wrongNOnceMaterial)).toBeUndefined();
80
- });
81
- test("seal and unseal", () => {
82
- const senderSecret = "sealerSecret_zFffKAY7Ln5ouAbmC6K21N6uPs1RQXyhpcuQzK3kPWhhg";
83
- const recipientSecret = "sealerSecret_z3K6m9AHmEJeTrCQW4zY5vicneorj9sVQasA7E8FYvDQa";
84
- const message = { foo: "bar" };
85
- const nOnceMaterial = {
86
- in: "co_zSomeCoValue",
87
- tx: {
88
- sessionID: "co_zSomeAccount_session_zSomeSession",
89
- txIndex: 42,
90
- },
91
- };
92
- const sealed = impl.seal({
93
- message,
94
- from: senderSecret,
95
- to: impl.getSealerID(recipientSecret),
96
- nOnceMaterial,
97
- });
98
- expect(sealed).toEqual("sealed_UtuddAQjop6zMR47aI7HOqj-f0kR2tdFvRxzDe4I=");
99
- const unsealed = impl.unseal(sealed, recipientSecret, impl.getSealerID(senderSecret), nOnceMaterial);
100
- expect(unsealed).toEqual(message);
101
- const wrongRecipientSecret = "sealerSecret_zHV1Y1VPbc31B8bi7yw4oL5CPPnPFspKwUjkFErgJFuoB";
102
- expect(() => impl.unseal(sealed, wrongRecipientSecret, impl.getSealerID(senderSecret), nOnceMaterial)).toThrow();
103
- const wrongNOnceMaterial = {
104
- in: "co_zSomeCoValue",
105
- tx: {
106
- sessionID: "co_zSomeAccount_session_zSomeSession",
107
- txIndex: 43,
108
- },
109
- };
110
- expect(() => impl.unseal(sealed, recipientSecret, impl.getSealerID(senderSecret), wrongNOnceMaterial)).toThrow();
111
- });
112
- });
113
- //# sourceMappingURL=cryptoImpl.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cryptoImpl.test.js","sourceRoot":"","sources":["../../src/tests/cryptoImpl.test.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import { expect, test } from "vitest";
2
- import { LocalNode, RawCoMap, RawCoList, RawCoStream, RawBinaryCoStream, WasmCrypto, } from "../index.js";
3
- import { randomAnonymousAccountAndSessionID } from "./testUtils.js";
4
- const Crypto = await WasmCrypto.create();
5
- test("Can create a RawCoMap in a group", () => {
6
- const node = new LocalNode(...randomAnonymousAccountAndSessionID(), Crypto);
7
- const group = node.createGroup();
8
- const map = group.createMap();
9
- expect(map.core.getCurrentContent().type).toEqual("comap");
10
- expect(map instanceof RawCoMap).toEqual(true);
11
- });
12
- test("Can create a CoList in a group", () => {
13
- const node = new LocalNode(...randomAnonymousAccountAndSessionID(), Crypto);
14
- const group = node.createGroup();
15
- const list = group.createList();
16
- expect(list.core.getCurrentContent().type).toEqual("colist");
17
- expect(list instanceof RawCoList).toEqual(true);
18
- });
19
- test("Can create a CoStream in a group", () => {
20
- const node = new LocalNode(...randomAnonymousAccountAndSessionID(), Crypto);
21
- const group = node.createGroup();
22
- const stream = group.createStream();
23
- expect(stream.core.getCurrentContent().type).toEqual("costream");
24
- expect(stream instanceof RawCoStream).toEqual(true);
25
- });
26
- test("Can create a BinaryCoStream in a group", () => {
27
- const node = new LocalNode(...randomAnonymousAccountAndSessionID(), Crypto);
28
- const group = node.createGroup();
29
- const stream = group.createBinaryStream();
30
- expect(stream.core.getCurrentContent().type).toEqual("costream");
31
- expect(stream.headerMeta.type).toEqual("binary");
32
- expect(stream instanceof RawBinaryCoStream).toEqual(true);
33
- });
34
- //# sourceMappingURL=group.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group.test.js","sourceRoot":"","sources":["../../src/tests/group.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACH,SAAS,EACT,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,UAAU,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kCAAkC,EAAE,MAAM,gBAAgB,CAAC;AAEpE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;AAEzC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,kCAAkC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAE9B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,YAAY,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IACxC,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,kCAAkC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IAEhC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,YAAY,SAAS,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC1C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,kCAAkC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;IAChD,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,kCAAkC,EAAE,EAAE,MAAM,CAAC,CAAC;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;IAE1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,YAAY,iBAAiB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC"}