@aztec/merkle-tree 0.7.10 → 0.8.5

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 (39) hide show
  1. package/dest/standard_indexed_tree/standard_indexed_tree.js +2 -2
  2. package/package.json +57 -5
  3. package/src/standard_indexed_tree/standard_indexed_tree.ts +2 -2
  4. package/.eslintrc.cjs +0 -1
  5. package/.tsbuildinfo +0 -1
  6. package/dest/sparse_tree/sparse_tree.test.d.ts +0 -2
  7. package/dest/sparse_tree/sparse_tree.test.d.ts.map +0 -1
  8. package/dest/sparse_tree/sparse_tree.test.js +0 -133
  9. package/dest/standard_indexed_tree/test/standard_indexed_tree.test.d.ts +0 -2
  10. package/dest/standard_indexed_tree/test/standard_indexed_tree.test.d.ts.map +0 -1
  11. package/dest/standard_indexed_tree/test/standard_indexed_tree.test.js +0 -336
  12. package/dest/standard_tree/standard_tree.test.d.ts +0 -2
  13. package/dest/standard_tree/standard_tree.test.d.ts.map +0 -1
  14. package/dest/standard_tree/standard_tree.test.js +0 -58
  15. package/dest/test/standard_based_test_suite.d.ts +0 -6
  16. package/dest/test/standard_based_test_suite.d.ts.map +0 -1
  17. package/dest/test/standard_based_test_suite.js +0 -87
  18. package/dest/test/test_suite.d.ts +0 -6
  19. package/dest/test/test_suite.d.ts.map +0 -1
  20. package/dest/test/test_suite.js +0 -119
  21. package/dest/test/utils/append_leaves.d.ts +0 -5
  22. package/dest/test/utils/append_leaves.d.ts.map +0 -1
  23. package/dest/test/utils/append_leaves.js +0 -14
  24. package/dest/test/utils/create_mem_down.d.ts +0 -3
  25. package/dest/test/utils/create_mem_down.d.ts.map +0 -1
  26. package/dest/test/utils/create_mem_down.js +0 -3
  27. package/dest/test/utils/pedersen_with_counter.d.ts +0 -24
  28. package/dest/test/utils/pedersen_with_counter.d.ts.map +0 -1
  29. package/dest/test/utils/pedersen_with_counter.js +0 -31
  30. package/package.local.json +0 -3
  31. package/src/sparse_tree/sparse_tree.test.ts +0 -179
  32. package/src/standard_indexed_tree/test/standard_indexed_tree.test.ts +0 -476
  33. package/src/standard_tree/standard_tree.test.ts +0 -76
  34. package/src/test/standard_based_test_suite.ts +0 -142
  35. package/src/test/test_suite.ts +0 -165
  36. package/src/test/utils/append_leaves.ts +0 -15
  37. package/src/test/utils/create_mem_down.ts +0 -3
  38. package/src/test/utils/pedersen_with_counter.ts +0 -30
  39. package/tsconfig.json +0 -20
@@ -1,336 +0,0 @@
1
- import { CircuitsWasm } from '@aztec/circuits.js';
2
- import { toBufferBE } from '@aztec/foundation/bigint-buffer';
3
- import { SiblingPath } from '@aztec/types';
4
- import { default as levelup } from 'levelup';
5
- import { INITIAL_LEAF, Pedersen, loadTree, newTree } from '../../index.js';
6
- import { treeTestSuite } from '../../test/test_suite.js';
7
- import { createMemDown } from '../../test/utils/create_mem_down.js';
8
- import { StandardIndexedTreeWithAppend } from './standard_indexed_tree_with_append.js';
9
- const createDb = async (levelUp, hasher, name, depth, prefilledSize = 1) => {
10
- return await newTree(StandardIndexedTreeWithAppend, levelUp, hasher, name, depth, prefilledSize);
11
- };
12
- const createFromName = async (levelUp, hasher, name) => {
13
- return await loadTree(StandardIndexedTreeWithAppend, levelUp, hasher, name);
14
- };
15
- const createIndexedTreeLeaf = (value, nextIndex, nextValue) => {
16
- return [toBufferBE(BigInt(value), 32), toBufferBE(BigInt(nextIndex), 32), toBufferBE(BigInt(nextValue), 32)];
17
- };
18
- const verifyCommittedState = async (tree, root, siblingPathIndex, emptySiblingPath) => {
19
- expect(tree.getRoot(false)).toEqual(root);
20
- expect(tree.getNumLeaves(false)).toEqual(1n);
21
- expect(await tree.getSiblingPath(siblingPathIndex, false)).toEqual(emptySiblingPath);
22
- };
23
- const TEST_TREE_DEPTH = 3;
24
- treeTestSuite('StandardIndexedTree', createDb, createFromName);
25
- describe('StandardIndexedTreeSpecific', () => {
26
- let wasm;
27
- let pedersen;
28
- beforeEach(async () => {
29
- wasm = await CircuitsWasm.get();
30
- pedersen = new Pedersen(wasm);
31
- });
32
- it('produces the correct roots and sibling paths', async () => {
33
- // Create a depth-3 indexed merkle tree
34
- const db = levelup(createMemDown());
35
- const tree = await createDb(db, pedersen, 'test', 3);
36
- /**
37
- * Initial state:
38
- *
39
- * index 0 1 2 3 4 5 6 7
40
- * ---------------------------------------------------------------------
41
- * val 0 0 0 0 0 0 0 0
42
- * nextIdx 0 0 0 0 0 0 0 0
43
- * nextVal 0 0 0 0 0 0 0 0.
44
- */
45
- const initialLeafHash = pedersen.compressInputs(createIndexedTreeLeaf(0, 0, 0));
46
- const level1ZeroHash = pedersen.compress(INITIAL_LEAF, INITIAL_LEAF);
47
- const level2ZeroHash = pedersen.compress(level1ZeroHash, level1ZeroHash);
48
- let index0Hash = initialLeafHash;
49
- // Each element is named by the level followed by the index on that level. E.g. e10 -> level 1, index 0, e21 -> level 2, index 1
50
- let e10 = pedersen.compress(index0Hash, INITIAL_LEAF);
51
- let e20 = pedersen.compress(e10, level1ZeroHash);
52
- const initialE20 = e20; // Kept for calculating committed state later
53
- const initialE10 = e10;
54
- let root = pedersen.compress(e20, level2ZeroHash);
55
- const initialRoot = root;
56
- const emptySiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]);
57
- expect(tree.getRoot(true)).toEqual(root);
58
- expect(tree.getNumLeaves(true)).toEqual(1n);
59
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]));
60
- await verifyCommittedState(tree, initialRoot, 0n, emptySiblingPath);
61
- /**
62
- * Add new value 30:
63
- *
64
- * index 0 1 2 3 4 5 6 7
65
- * ---------------------------------------------------------------------
66
- * val 0 30 0 0 0 0 0 0
67
- * nextIdx 1 0 0 0 0 0 0 0
68
- * nextVal 30 0 0 0 0 0 0 0.
69
- */
70
- index0Hash = pedersen.compressInputs(createIndexedTreeLeaf(0, 1, 30));
71
- let index1Hash = pedersen.compressInputs(createIndexedTreeLeaf(30, 0, 0));
72
- e10 = pedersen.compress(index0Hash, index1Hash);
73
- e20 = pedersen.compress(e10, level1ZeroHash);
74
- root = pedersen.compress(e20, level2ZeroHash);
75
- await tree.appendLeaves([toBufferBE(30n, 32)]);
76
- expect(tree.getRoot(true)).toEqual(root);
77
- expect(tree.getNumLeaves(true)).toEqual(2n);
78
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index0Hash, level1ZeroHash, level2ZeroHash]));
79
- // ensure the committed state is correct
80
- const initialSiblingPath = new SiblingPath(TEST_TREE_DEPTH, [initialLeafHash, level1ZeroHash, level2ZeroHash]);
81
- await verifyCommittedState(tree, initialRoot, 1n, initialSiblingPath);
82
- /**
83
- * Add new value 10:
84
- *
85
- * index 0 1 2 3 4 5 6 7
86
- * ---------------------------------------------------------------------
87
- * val 0 30 10 0 0 0 0 0
88
- * nextIdx 2 0 1 0 0 0 0 0
89
- * nextVal 10 0 30 0 0 0 0 0.
90
- */
91
- index0Hash = pedersen.compressInputs(createIndexedTreeLeaf(0, 2, 10));
92
- let index2Hash = pedersen.compressInputs(createIndexedTreeLeaf(10, 1, 30));
93
- e10 = pedersen.compress(index0Hash, index1Hash);
94
- let e11 = pedersen.compress(index2Hash, INITIAL_LEAF);
95
- e20 = pedersen.compress(e10, e11);
96
- root = pedersen.compress(e20, level2ZeroHash);
97
- await tree.appendLeaves([toBufferBE(10n, 32)]);
98
- expect(tree.getRoot(true)).toEqual(root);
99
- expect(tree.getNumLeaves(true)).toEqual(3n);
100
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e10, level2ZeroHash]));
101
- // ensure the committed state is correct
102
- await verifyCommittedState(tree, initialRoot, 2n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, initialE10, level2ZeroHash]));
103
- /**
104
- * Add new value 20:
105
- *
106
- * index 0 1 2 3 4 5 6 7
107
- * ---------------------------------------------------------------------
108
- * val 0 30 10 20 0 0 0 0
109
- * nextIdx 2 0 3 1 0 0 0 0
110
- * nextVal 10 0 20 30 0 0 0 0.
111
- */
112
- e10 = pedersen.compress(index0Hash, index1Hash);
113
- index2Hash = pedersen.compressInputs(createIndexedTreeLeaf(10, 3, 20));
114
- const index3Hash = pedersen.compressInputs(createIndexedTreeLeaf(20, 1, 30));
115
- e11 = pedersen.compress(index2Hash, index3Hash);
116
- e20 = pedersen.compress(e10, e11);
117
- root = pedersen.compress(e20, level2ZeroHash);
118
- await tree.appendLeaves([toBufferBE(20n, 32)]);
119
- expect(tree.getRoot(true)).toEqual(root);
120
- expect(tree.getNumLeaves(true)).toEqual(4n);
121
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index2Hash, e10, level2ZeroHash]));
122
- // ensure the committed state is correct
123
- await verifyCommittedState(tree, initialRoot, 3n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, initialE10, level2ZeroHash]));
124
- /**
125
- * Add new value 50:
126
- *
127
- * index 0 1 2 3 4 5 6 7
128
- * ---------------------------------------------------------------------
129
- * val 0 30 10 20 50 0 0 0
130
- * nextIdx 2 4 3 1 0 0 0 0
131
- * nextVal 10 50 20 30 0 0 0 0.
132
- */
133
- index1Hash = pedersen.compressInputs(createIndexedTreeLeaf(30, 4, 50));
134
- const index4Hash = pedersen.compressInputs(createIndexedTreeLeaf(50, 0, 0));
135
- e10 = pedersen.compress(index0Hash, index1Hash);
136
- e20 = pedersen.compress(e10, e11);
137
- const e12 = pedersen.compress(index4Hash, INITIAL_LEAF);
138
- const e21 = pedersen.compress(e12, level1ZeroHash);
139
- root = pedersen.compress(e20, e21);
140
- await tree.appendLeaves([toBufferBE(50n, 32)]);
141
- expect(tree.getRoot(true)).toEqual(root);
142
- expect(tree.getNumLeaves(true)).toEqual(5n);
143
- // ensure the committed state is correct
144
- await verifyCommittedState(tree, initialRoot, 4n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, initialE20]));
145
- // check all uncommitted hash paths
146
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index1Hash, e11, e21]));
147
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index0Hash, e11, e21]));
148
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index3Hash, e10, e21]));
149
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index2Hash, e10, e21]));
150
- expect(await tree.getSiblingPath(4n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, e20]));
151
- expect(await tree.getSiblingPath(5n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index4Hash, level1ZeroHash, e20]));
152
- expect(await tree.getSiblingPath(6n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e12, e20]));
153
- expect(await tree.getSiblingPath(7n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e12, e20]));
154
- // check all committed hash paths
155
- expect(await tree.getSiblingPath(0n, false)).toEqual(emptySiblingPath);
156
- expect(await tree.getSiblingPath(1n, false)).toEqual(initialSiblingPath);
157
- expect(await tree.getSiblingPath(2n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, initialE10, level2ZeroHash]));
158
- expect(await tree.getSiblingPath(3n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, initialE10, level2ZeroHash]));
159
- const e2SiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, initialE20]);
160
- expect(await tree.getSiblingPath(4n, false)).toEqual(e2SiblingPath);
161
- expect(await tree.getSiblingPath(5n, false)).toEqual(e2SiblingPath);
162
- expect(await tree.getSiblingPath(6n, false)).toEqual(e2SiblingPath);
163
- expect(await tree.getSiblingPath(7n, false)).toEqual(e2SiblingPath);
164
- await tree.commit();
165
- // check all committed hash paths equal uncommitted hash paths
166
- for (let i = 0; i < 8; i++) {
167
- expect(await tree.getSiblingPath(BigInt(i), false)).toEqual(await tree.getSiblingPath(BigInt(i), true));
168
- }
169
- });
170
- it('Can append empty leaves and handle insertions', async () => {
171
- // Create a depth-3 indexed merkle tree
172
- const db = levelup(createMemDown());
173
- const tree = await createDb(db, pedersen, 'test', 3);
174
- /**
175
- * Initial state:
176
- *
177
- * index 0 1 2 3 4 5 6 7
178
- * ---------------------------------------------------------------------
179
- * val 0 0 0 0 0 0 0 0
180
- * nextIdx 0 0 0 0 0 0 0 0
181
- * nextVal 0 0 0 0 0 0 0 0.
182
- */
183
- const INITIAL_LEAF = toBufferBE(0n, 32);
184
- const initialLeafHash = pedersen.compressInputs(createIndexedTreeLeaf(0, 0, 0));
185
- const level1ZeroHash = pedersen.compress(INITIAL_LEAF, INITIAL_LEAF);
186
- const level2ZeroHash = pedersen.compress(level1ZeroHash, level1ZeroHash);
187
- let index0Hash = initialLeafHash;
188
- let e10 = pedersen.compress(index0Hash, INITIAL_LEAF);
189
- let e20 = pedersen.compress(e10, level1ZeroHash);
190
- const inite10 = e10;
191
- const inite20 = e20;
192
- let root = pedersen.compress(e20, level2ZeroHash);
193
- const initialRoot = root;
194
- const emptySiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]);
195
- const initialSiblingPath = new SiblingPath(TEST_TREE_DEPTH, [initialLeafHash, level1ZeroHash, level2ZeroHash]);
196
- expect(tree.getRoot(true)).toEqual(root);
197
- expect(tree.getNumLeaves(true)).toEqual(1n);
198
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, level2ZeroHash]));
199
- await verifyCommittedState(tree, initialRoot, 0n, emptySiblingPath);
200
- /**
201
- * Add new value 30:
202
- *
203
- * index 0 1 2 3 4 5 6 7
204
- * ---------------------------------------------------------------------
205
- * val 0 30 0 0 0 0 0 0
206
- * nextIdx 1 0 0 0 0 0 0 0
207
- * nextVal 30 0 0 0 0 0 0 0.
208
- */
209
- index0Hash = pedersen.compressInputs(createIndexedTreeLeaf(0, 1, 30));
210
- let index1Hash = pedersen.compressInputs(createIndexedTreeLeaf(30, 0, 0));
211
- e10 = pedersen.compress(index0Hash, index1Hash);
212
- e20 = pedersen.compress(e10, level1ZeroHash);
213
- root = pedersen.compress(e20, level2ZeroHash);
214
- await tree.appendLeaves([toBufferBE(30n, 32)]);
215
- expect(tree.getRoot(true)).toEqual(root);
216
- expect(tree.getNumLeaves(true)).toEqual(2n);
217
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index0Hash, level1ZeroHash, level2ZeroHash]));
218
- // ensure the committed state is correct
219
- await verifyCommittedState(tree, initialRoot, 1n, initialSiblingPath);
220
- /**
221
- * Add new value 10:
222
- *
223
- * index 0 1 2 3 4 5 6 7
224
- * ---------------------------------------------------------------------
225
- * val 0 30 10 0 0 0 0 0
226
- * nextIdx 2 0 1 0 0 0 0 0
227
- * nextVal 10 0 30 0 0 0 0 0.
228
- */
229
- index0Hash = pedersen.compressInputs(createIndexedTreeLeaf(0, 2, 10));
230
- let index2Hash = pedersen.compressInputs(createIndexedTreeLeaf(10, 1, 30));
231
- e10 = pedersen.compress(index0Hash, index1Hash);
232
- let e11 = pedersen.compress(index2Hash, INITIAL_LEAF);
233
- e20 = pedersen.compress(e10, e11);
234
- root = pedersen.compress(e20, level2ZeroHash);
235
- await tree.appendLeaves([toBufferBE(10n, 32)]);
236
- expect(tree.getRoot(true)).toEqual(root);
237
- expect(tree.getNumLeaves(true)).toEqual(3n);
238
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e10, level2ZeroHash]));
239
- // ensure the committed state is correct
240
- await verifyCommittedState(tree, initialRoot, 2n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, inite10, level2ZeroHash]));
241
- /**
242
- * Add new value 20:
243
- *
244
- * index 0 1 2 3 4 5 6 7
245
- * ---------------------------------------------------------------------
246
- * val 0 30 10 20 0 0 0 0
247
- * nextIdx 2 0 3 1 0 0 0 0
248
- * nextVal 10 0 20 30 0 0 0 0.
249
- */
250
- e10 = pedersen.compress(index0Hash, index1Hash);
251
- index2Hash = pedersen.compressInputs(createIndexedTreeLeaf(10, 3, 20));
252
- const index3Hash = pedersen.compressInputs(createIndexedTreeLeaf(20, 1, 30));
253
- e11 = pedersen.compress(index2Hash, index3Hash);
254
- e20 = pedersen.compress(e10, e11);
255
- root = pedersen.compress(e20, level2ZeroHash);
256
- await tree.appendLeaves([toBufferBE(20n, 32)]);
257
- expect(tree.getRoot(true)).toEqual(root);
258
- expect(tree.getNumLeaves(true)).toEqual(4n);
259
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index2Hash, e10, level2ZeroHash]));
260
- // ensure the committed state is correct
261
- await verifyCommittedState(tree, initialRoot, 3n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, inite10, level2ZeroHash]));
262
- // Add 2 empty values
263
- const emptyLeaves = [toBufferBE(0n, 32), toBufferBE(0n, 32)];
264
- await tree.appendLeaves(emptyLeaves);
265
- // The root should be the same but the size should have increased
266
- expect(tree.getRoot(true)).toEqual(root);
267
- expect(tree.getNumLeaves(true)).toEqual(6n);
268
- /**
269
- * Add new value 50:
270
- *
271
- * index 0 1 2 3 4 5 6 7
272
- * --------------------------------------------------------------------
273
- * val 0 30 10 20 0 0 50 0
274
- * nextIdx 2 6 3 1 0 0 0 0
275
- * nextVal 10 50 20 30 0 0 0 0.
276
- */
277
- index1Hash = pedersen.compressInputs(createIndexedTreeLeaf(30, 6, 50));
278
- const index6Hash = pedersen.compressInputs(createIndexedTreeLeaf(50, 0, 0));
279
- e10 = pedersen.compress(index0Hash, index1Hash);
280
- e20 = pedersen.compress(e10, e11);
281
- const e13 = pedersen.compress(index6Hash, INITIAL_LEAF);
282
- const e21 = pedersen.compress(level1ZeroHash, e13);
283
- root = pedersen.compress(e20, e21);
284
- await tree.appendLeaves([toBufferBE(50n, 32)]);
285
- expect(tree.getRoot(true)).toEqual(root);
286
- expect(tree.getNumLeaves(true)).toEqual(7n);
287
- // ensure the committed state is correct
288
- await verifyCommittedState(tree, initialRoot, 6n, new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, inite20]));
289
- // // check all uncommitted hash paths
290
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index1Hash, e11, e21]));
291
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index0Hash, e11, e21]));
292
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index3Hash, e10, e21]));
293
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index2Hash, e10, e21]));
294
- expect(await tree.getSiblingPath(4n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e13, e20]));
295
- expect(await tree.getSiblingPath(5n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, e13, e20]));
296
- expect(await tree.getSiblingPath(6n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, e20]));
297
- expect(await tree.getSiblingPath(7n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [index6Hash, level1ZeroHash, e20]));
298
- // check all committed hash paths
299
- expect(await tree.getSiblingPath(0n, false)).toEqual(emptySiblingPath);
300
- expect(await tree.getSiblingPath(1n, false)).toEqual(initialSiblingPath);
301
- expect(await tree.getSiblingPath(2n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, inite10, level2ZeroHash]));
302
- expect(await tree.getSiblingPath(3n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, inite10, level2ZeroHash]));
303
- const e2SiblingPath = new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash, inite20]);
304
- expect(await tree.getSiblingPath(4n, false)).toEqual(e2SiblingPath);
305
- expect(await tree.getSiblingPath(5n, false)).toEqual(e2SiblingPath);
306
- expect(await tree.getSiblingPath(6n, false)).toEqual(e2SiblingPath);
307
- expect(await tree.getSiblingPath(7n, false)).toEqual(e2SiblingPath);
308
- await tree.commit();
309
- // check all committed hash paths equal uncommitted hash paths
310
- for (let i = 0; i < 8; i++) {
311
- expect(await tree.getSiblingPath(BigInt(i), false)).toEqual(await tree.getSiblingPath(BigInt(i), true));
312
- }
313
- });
314
- // For varying orders of insertions assert the local batch insertion generator creates the correct proofs
315
- it.each([
316
- // These are arbitrary but it needs to be higher than the constant `INITIAL_NULLIFIER_TREE_SIZE` and `KERNEL_NEW_NULLIFIERS_LENGTH * 2`
317
- [[1003, 1002, 1001, 1000, 0, 0, 0, 0]],
318
- [[1003, 1004, 1005, 1006, 0, 0, 0, 0]],
319
- [[1234, 1098, 0, 0, 99999, 1096, 1054, 0]],
320
- [[1970, 1980, 1040, 0, 99999, 1880, 100001, 9000000]],
321
- ])('performs nullifier tree batch insertion correctly', async (nullifiers) => {
322
- const leaves = nullifiers.map(i => toBufferBE(BigInt(i), 32));
323
- const TREE_HEIGHT = 16; // originally from NULLIFIER_TREE_HEIGHT
324
- const INITIAL_TREE_SIZE = 8; // originally from INITIAL_NULLIFIER_TREE_SIZE
325
- const SUBTREE_HEIGHT = 5; // originally from BaseRollupInputs.NULLIFIER_SUBTREE_HEIGHT
326
- // Create a depth-3 indexed merkle tree
327
- const appendTree = await createDb(levelup(createMemDown()), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE);
328
- const insertTree = await createDb(levelup(createMemDown()), pedersen, 'test', TREE_HEIGHT, INITIAL_TREE_SIZE);
329
- await appendTree.appendLeaves(leaves);
330
- await insertTree.batchInsert(leaves, SUBTREE_HEIGHT);
331
- const expectedRoot = appendTree.getRoot(true);
332
- const actualRoot = insertTree.getRoot(true);
333
- expect(actualRoot).toEqual(expectedRoot);
334
- });
335
- });
336
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfaW5kZXhlZF90cmVlLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhbmRhcmRfaW5kZXhlZF90cmVlL3Rlc3Qvc3RhbmRhcmRfaW5kZXhlZF90cmVlLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU3RCxPQUFPLEVBQVUsV0FBVyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRW5ELE9BQU8sRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQWMsUUFBUSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRXZGLE1BQU0sUUFBUSxHQUFHLEtBQUssRUFBRSxPQUF3QixFQUFFLE1BQWMsRUFBRSxJQUFZLEVBQUUsS0FBYSxFQUFFLGFBQWEsR0FBRyxDQUFDLEVBQUUsRUFBRTtJQUNsSCxPQUFPLE1BQU0sT0FBTyxDQUFDLDZCQUE2QixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxhQUFhLENBQUMsQ0FBQztBQUNuRyxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsT0FBd0IsRUFBRSxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDdEYsT0FBTyxNQUFNLFFBQVEsQ0FBQyw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlFLENBQUMsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxTQUFpQixFQUFFLEVBQUU7SUFDcEYsT0FBTyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0csQ0FBQyxDQUFDO0FBRUYsTUFBTSxvQkFBb0IsR0FBRyxLQUFLLEVBQ2hDLElBQWdCLEVBQ2hCLElBQVksRUFDWixnQkFBd0IsRUFDeEIsZ0JBQWdDLEVBQ2hDLEVBQUU7SUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkYsQ0FBQyxDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQUcsQ0FBQyxDQUFDO0FBRTFCLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFFL0QsUUFBUSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtJQUMzQyxJQUFJLElBQWlCLENBQUM7SUFDdEIsSUFBSSxRQUFrQixDQUFDO0lBRXZCLFVBQVUsQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNwQixJQUFJLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDaEMsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzVELHVDQUF1QztRQUN2QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRDs7Ozs7Ozs7V0FRRztRQUVILE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXpFLElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQztRQUNqQyxnSUFBZ0k7UUFDaEksSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdEQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFakQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLENBQUMsNkNBQTZDO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQztRQUV2QixJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUNsRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFFekIsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFFMUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDakYsQ0FBQztRQUVGLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUVwRTs7Ozs7Ozs7V0FRRztRQUNILFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzdDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUMvRSxDQUFDO1FBRUYsd0NBQXdDO1FBQ3hDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQy9HLE1BQU0sb0JBQW9CLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUV0RTs7Ozs7Ozs7V0FRRztRQUNILFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDdEQsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUN0RSxDQUFDO1FBRUYsd0NBQXdDO1FBQ3hDLE1BQU0sb0JBQW9CLENBQ3hCLElBQUksRUFDSixXQUFXLEVBQ1gsRUFBRSxFQUNGLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztRQUVGOzs7Ozs7OztXQVFHO1FBQ0gsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUU5QyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUUvQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUNwRSxDQUFDO1FBRUYsd0NBQXdDO1FBQ3hDLE1BQU0sb0JBQW9CLENBQ3hCLElBQUksRUFDSixXQUFXLEVBQ1gsRUFBRSxFQUNGLElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztRQUVGOzs7Ozs7OztXQVFHO1FBQ0gsVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixDQUN4QixJQUFJLEVBQ0osV0FBVyxFQUNYLEVBQUUsRUFDRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFFRixtQ0FBbUM7UUFDbkMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FDdEUsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSCxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVoSCxpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNsRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzdFLENBQUM7UUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25HLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLDhEQUE4RDtRQUM5RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzdELHVDQUF1QztRQUN2QyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLElBQUksR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVyRDs7Ozs7Ozs7V0FRRztRQUVILE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEYsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDckUsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDekUsSUFBSSxVQUFVLEdBQUcsZUFBZSxDQUFDO1FBRWpDLElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRWpELE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztRQUNwQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUM7UUFFcEIsSUFBSSxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDbEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBRXpCLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBRS9HLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ2pGLENBQUM7UUFFRixNQUFNLG9CQUFvQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFFcEU7Ozs7Ozs7O1dBUUc7UUFDSCxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUUsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM3QyxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDL0UsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFdEU7Ozs7Ozs7O1dBUUc7UUFDSCxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDM0UsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RELEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDdEUsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixDQUN4QixJQUFJLEVBQ0osV0FBVyxFQUNYLEVBQUUsRUFDRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFFRjs7Ozs7Ozs7V0FRRztRQUNILEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0UsR0FBRyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ2hELEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNsQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDcEUsQ0FBQztRQUVGLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixDQUN4QixJQUFJLEVBQ0osV0FBVyxFQUNYLEVBQUUsRUFDRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFFRixxQkFBcUI7UUFDckIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFckMsaUVBQWlFO1FBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVDOzs7Ozs7OztXQVFHO1FBQ0gsVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVFLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoRCxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbEMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDeEQsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRW5DLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLHdDQUF3QztRQUN4QyxNQUFNLG9CQUFvQixDQUN4QixJQUFJLEVBQ0osV0FBVyxFQUNYLEVBQUUsRUFDRixJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFFRixzQ0FBc0M7UUFDdEMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUcsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEgsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEgsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FDdEUsQ0FBQztRQUNGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQ3BFLENBQUM7UUFFRixpQ0FBaUM7UUFDakMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNsRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzFFLENBQUM7UUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUMxRSxDQUFDO1FBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXBFLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLDhEQUE4RDtRQUM5RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUN6RztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgseUdBQXlHO0lBQ3pHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTix1SUFBdUk7UUFDdkksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN0QyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztLQUM3QyxDQUFDLENBQUMsbURBQW1ELEVBQUUsS0FBSyxFQUFDLFVBQVUsRUFBQyxFQUFFO1FBQ2xGLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUMsd0NBQXdDO1FBQ2hFLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxDQUFDLENBQUMsOENBQThDO1FBQzNFLE1BQU0sY0FBYyxHQUFHLENBQUMsQ0FBQyxDQUFDLDREQUE0RDtRQUV0Rix1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsTUFBTSxRQUFRLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUM5RyxNQUFNLFVBQVUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRTlHLE1BQU0sVUFBVSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRXJELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzNDLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=standard_tree.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standard_tree.test.d.ts","sourceRoot":"","sources":["../../src/standard_tree/standard_tree.test.ts"],"names":[],"mappings":""}
@@ -1,58 +0,0 @@
1
- import { CircuitsWasm } from '@aztec/circuits.js';
2
- import { randomBytes } from '@aztec/foundation/crypto';
3
- import { default as levelup } from 'levelup';
4
- import { loadTree } from '../load_tree.js';
5
- import { newTree } from '../new_tree.js';
6
- import { standardBasedTreeTestSuite } from '../test/standard_based_test_suite.js';
7
- import { treeTestSuite } from '../test/test_suite.js';
8
- import { createMemDown } from '../test/utils/create_mem_down.js';
9
- import { PedersenWithCounter } from '../test/utils/pedersen_with_counter.js';
10
- import { INITIAL_LEAF } from '../tree_base.js';
11
- import { StandardTree } from './standard_tree.js';
12
- const createDb = async (levelUp, hasher, name, depth) => {
13
- return await newTree(StandardTree, levelUp, hasher, name, depth);
14
- };
15
- const createFromName = async (levelUp, hasher, name) => {
16
- return await loadTree(StandardTree, levelUp, hasher, name);
17
- };
18
- treeTestSuite('StandardTree', createDb, createFromName);
19
- standardBasedTreeTestSuite('StandardTree', createDb);
20
- describe('StandardTree_batchAppend', () => {
21
- let wasm;
22
- let pedersen;
23
- beforeAll(async () => {
24
- wasm = await CircuitsWasm.get();
25
- pedersen = new PedersenWithCounter(wasm);
26
- });
27
- afterEach(() => {
28
- pedersen.resetCounter();
29
- });
30
- it('correctly computes root when batch appending and calls compress function expected num times', async () => {
31
- const db = levelup(createMemDown());
32
- const tree = await createDb(db, pedersen, 'test', 3);
33
- const leaves = Array.from({ length: 5 }, _ => randomBytes(32));
34
- pedersen.resetCounter();
35
- await tree.appendLeaves(leaves);
36
- // We append 5 leaves so to update values we do the following hashing on each level:
37
- // level2Node0 level2Node1 level2Node2
38
- // LEVEL2: [newLeaf0, newLeaf1], [newLeaf2, newLeaf3], [newLeaf4, INITIAL_LEAF].
39
- // level1Node0 level1Node1
40
- // LEVEL1: [level2Node0, level2Node1], [level2Node2, level2ZeroHash].
41
- // ROOT
42
- // LEVEL0: [level1Node0, level1Node1].
43
- const level2NumHashing = 3;
44
- const level1NumHashing = 2;
45
- const level0NumHashing = 1;
46
- const expectedNumHashing = level2NumHashing + level1NumHashing + level0NumHashing;
47
- expect(pedersen.compressCounter).toEqual(expectedNumHashing);
48
- const level2Node0 = pedersen.compress(leaves[0], leaves[1]);
49
- const level2Node1 = pedersen.compress(leaves[2], leaves[3]);
50
- const level2Node2 = pedersen.compress(leaves[4], INITIAL_LEAF);
51
- const level2ZeroHash = pedersen.compress(INITIAL_LEAF, INITIAL_LEAF);
52
- const level1Node0 = pedersen.compress(level2Node0, level2Node1);
53
- const level1Node1 = pedersen.compress(level2Node2, level2ZeroHash);
54
- const root = pedersen.compress(level1Node0, level1Node1);
55
- expect(tree.getRoot(true)).toEqual(root);
56
- });
57
- });
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfdHJlZS50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YW5kYXJkX3RyZWUvc3RhbmRhcmRfdHJlZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJdkQsT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFbEQsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLE9BQXdCLEVBQUUsTUFBYyxFQUFFLElBQVksRUFBRSxLQUFhLEVBQUUsRUFBRTtJQUMvRixPQUFPLE1BQU0sT0FBTyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNuRSxDQUFDLENBQUM7QUFFRixNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsT0FBd0IsRUFBRSxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUU7SUFDdEYsT0FBTyxNQUFNLFFBQVEsQ0FBQyxZQUFZLEVB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
@@ -1,6 +0,0 @@
1
- import { Hasher } from '@aztec/types';
2
- import { default as levelup } from 'levelup';
3
- import { AppendOnlyTree } from '../interfaces/append_only_tree.js';
4
- import { UpdateOnlyTree } from '../interfaces/update_only_tree.js';
5
- export declare const standardBasedTreeTestSuite: (testName: string, createDb: (levelup: levelup.LevelUp<import("abstract-leveldown").AbstractLevelDOWN<any, any>, import("abstract-leveldown").AbstractIterator<any, any>>, hasher: Hasher, name: string, depth: number) => Promise<AppendOnlyTree | UpdateOnlyTree>) => void;
6
- //# sourceMappingURL=standard_based_test_suite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"standard_based_test_suite.d.ts","sourceRoot":"","sources":["../../src/test/standard_based_test_suite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAMnE,eAAO,MAAM,0BAA0B,aAC3B,MAAM,kKAGN,MAAM,QACR,MAAM,SACL,MAAM,KACV,QAAQ,cAAc,GAAG,cAAc,CAAC,SAuH9C,CAAC"}
@@ -1,87 +0,0 @@
1
- import { CircuitsWasm } from '@aztec/circuits.js';
2
- import { SiblingPath } from '@aztec/types';
3
- import { randomBytes } from 'crypto';
4
- import { default as levelup } from 'levelup';
5
- import { INITIAL_LEAF, Pedersen } from '../index.js';
6
- import { appendLeaves } from './utils/append_leaves.js';
7
- import { createMemDown } from './utils/create_mem_down.js';
8
- const TEST_TREE_DEPTH = 2;
9
- export const standardBasedTreeTestSuite = (testName, createDb) => {
10
- describe(testName, () => {
11
- let wasm;
12
- let pedersen;
13
- const values = [];
14
- beforeAll(async () => {
15
- wasm = await CircuitsWasm.get();
16
- pedersen = new Pedersen(wasm);
17
- for (let i = 0; i < 4; ++i) {
18
- const v = Buffer.alloc(32, i + 1);
19
- v.writeUInt32BE(i, 28);
20
- values[i] = v;
21
- }
22
- });
23
- it('should have correct empty tree root for depth 32', async () => {
24
- const db = levelup(createMemDown());
25
- const tree = await createDb(db, pedersen, 'test', 32);
26
- const root = tree.getRoot(false);
27
- expect(root.toString('hex')).toEqual('20efbe2c7b675f26ab71689279908bbab33a6963e7e0dcb80e4c46583d094113');
28
- });
29
- it('should throw when appending beyond max index', async () => {
30
- const db = levelup(createMemDown());
31
- const tree = await createDb(db, pedersen, 'test', 2);
32
- const leaves = Array.from({ length: 5 }, _ => randomBytes(32));
33
- await expect(appendLeaves(tree, leaves)).rejects.toThrow();
34
- });
35
- it('should have correct root and sibling paths', async () => {
36
- const db = levelup(createMemDown());
37
- const tree = await createDb(db, pedersen, 'test', 2);
38
- const level1ZeroHash = pedersen.compress(INITIAL_LEAF, INITIAL_LEAF);
39
- expect(tree.getNumLeaves(false)).toEqual(0n);
40
- expect(tree.getRoot(false)).toEqual(pedersen.compress(level1ZeroHash, level1ZeroHash));
41
- expect(await tree.getSiblingPath(0n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
42
- await appendLeaves(tree, [values[0]]);
43
- expect(tree.getNumLeaves(true)).toEqual(1n);
44
- expect(tree.getNumLeaves(false)).toEqual(0n);
45
- expect(tree.getRoot(true)).toEqual(pedersen.compress(pedersen.compress(values[0], INITIAL_LEAF), level1ZeroHash));
46
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
47
- expect(tree.getRoot(false)).toEqual(pedersen.compress(level1ZeroHash, level1ZeroHash));
48
- expect(await tree.getSiblingPath(0n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
49
- await appendLeaves(tree, [values[1]]);
50
- expect(tree.getNumLeaves(true)).toEqual(2n);
51
- expect(tree.getRoot(true)).toEqual(pedersen.compress(pedersen.compress(values[0], values[1]), level1ZeroHash));
52
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[0], level1ZeroHash]));
53
- expect(tree.getNumLeaves(false)).toEqual(0n);
54
- expect(tree.getRoot(false)).toEqual(pedersen.compress(level1ZeroHash, level1ZeroHash));
55
- expect(await tree.getSiblingPath(1n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
56
- await appendLeaves(tree, [values[2]]);
57
- expect(tree.getNumLeaves(true)).toEqual(3n);
58
- expect(tree.getRoot(true)).toEqual(pedersen.compress(pedersen.compress(values[0], values[1]), pedersen.compress(values[2], INITIAL_LEAF)));
59
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, pedersen.compress(values[0], values[1])]));
60
- expect(tree.getNumLeaves(false)).toEqual(0n);
61
- expect(tree.getRoot(false)).toEqual(pedersen.compress(level1ZeroHash, level1ZeroHash));
62
- expect(await tree.getSiblingPath(2n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
63
- await appendLeaves(tree, [values[3]]);
64
- expect(tree.getNumLeaves(true)).toEqual(4n);
65
- expect(tree.getRoot(true)).toEqual(pedersen.compress(pedersen.compress(values[0], values[1]), pedersen.compress(values[2], values[3])));
66
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[2], pedersen.compress(values[0], values[1])]));
67
- expect(tree.getNumLeaves(false)).toEqual(0n);
68
- expect(tree.getRoot(false)).toEqual(pedersen.compress(level1ZeroHash, level1ZeroHash));
69
- expect(await tree.getSiblingPath(3n, false)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [INITIAL_LEAF, level1ZeroHash]));
70
- // Lifted from memory_tree.test.cpp to ensure consistency.
71
- //expect(root.toString('hex')).toEqual('0bf2e78afd70f72b0e6eafb03c41faef167a82441b05e517cdf35d813302061f');
72
- expect(await tree.getSiblingPath(0n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[1], pedersen.compress(values[2], values[3])]));
73
- expect(await tree.getSiblingPath(1n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[0], pedersen.compress(values[2], values[3])]));
74
- expect(await tree.getSiblingPath(2n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[3], pedersen.compress(values[0], values[1])]));
75
- expect(await tree.getSiblingPath(3n, true)).toEqual(new SiblingPath(TEST_TREE_DEPTH, [values[2], pedersen.compress(values[0], values[1])]));
76
- await tree.commit();
77
- // now committed state should equal uncommitted state
78
- expect(await tree.getSiblingPath(0n, false)).toEqual(await tree.getSiblingPath(0n, true));
79
- expect(await tree.getSiblingPath(1n, false)).toEqual(await tree.getSiblingPath(1n, true));
80
- expect(await tree.getSiblingPath(2n, false)).toEqual(await tree.getSiblingPath(2n, true));
81
- expect(await tree.getSiblingPath(3n, false)).toEqual(await tree.getSiblingPath(3n, true));
82
- expect(tree.getNumLeaves(false)).toEqual(tree.getNumLeaves(true));
83
- expect(tree.getRoot(false)).toEqual(tree.getRoot(true));
84
- });
85
- });
86
- };
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmRfYmFzZWRfdGVzdF9zdWl0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90ZXN0L3N0YW5kYXJkX2Jhc2VkX3Rlc3Rfc3VpdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRWxELE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU3QyxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUN4QyxRQUFnQixFQUNoQixRQUs2QyxFQUM3QyxFQUFFO0lBQ0YsUUFBUSxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdEIsSUFBSSxJQUFpQixDQUFDO1FBQ3RCLElBQUksUUFBa0IsQ0FBQztRQUN2QixNQUFNLE1BQU0sR0FBYSxFQUFFLENBQUM7UUFFNUIsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ25CLElBQUksR0FBRyxNQUFNLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDMUIsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsa0RBQWtELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDaEUsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7WUFDcEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxRQUFRLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxrRUFBa0UsQ0FBQyxDQUFDO1FBQzNHLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3JELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMvRCxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFELE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1lBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sUUFBUSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRXJELE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxDQUFDO1lBQ3JFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2xELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1lBRUYsTUFBTSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDbEgsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN2RixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ2pFLENBQUM7WUFFRixNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUMvRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQzlELENBQUM7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNsRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FDakUsQ0FBQztZQUVGLE1BQU0sWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2hDLFFBQVEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FDdkcsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUMxRixDQUFDO1lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUN2RixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDbEQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsWUFBWSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQ2pFLENBQUM7WUFFRixNQUFNLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNoQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3BHLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkYsQ0FBQztZQUNGLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDdkYsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2xELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLFlBQVksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1lBQ0YsMERBQTBEO1lBQzFELDJHQUEyRztZQUMzRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkYsQ0FBQztZQUNGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRCxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN2RixDQUFDO1lBQ0YsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ2pELElBQUksV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3ZGLENBQUM7WUFDRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FDakQsSUFBSSxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdkYsQ0FBQztZQUVGLE1BQU0sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLHFEQUFxRDtZQUNyRCxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUYsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzFGLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxRixNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDMUYsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDIn0=
@@ -1,6 +0,0 @@
1
- import { Hasher } from '@aztec/types';
2
- import { default as levelup } from 'levelup';
3
- import { AppendOnlyTree } from '../interfaces/append_only_tree.js';
4
- import { UpdateOnlyTree } from '../interfaces/update_only_tree.js';
5
- export declare const treeTestSuite: (testName: string, createDb: (levelup: levelup.LevelUp<import("abstract-leveldown").AbstractLevelDOWN<any, any>, import("abstract-leveldown").AbstractIterator<any, any>>, hasher: Hasher, name: string, depth: number) => Promise<AppendOnlyTree | UpdateOnlyTree>, createFromName: (levelup: levelup.LevelUp<import("abstract-leveldown").AbstractLevelDOWN<any, any>, import("abstract-leveldown").AbstractIterator<any, any>>, hasher: Hasher, name: string) => Promise<AppendOnlyTree | UpdateOnlyTree>) => void;
6
- //# sourceMappingURL=test_suite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test_suite.d.ts","sourceRoot":"","sources":["../../src/test/test_suite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAe,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,SAAS,CAAC;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAoBnE,eAAO,MAAM,aAAa,aACd,MAAM,kKAGN,MAAM,QACR,MAAM,SACL,MAAM,KACV,QAAQ,cAAc,GAAG,cAAc,CAAC,wKACM,MAAM,QAAQ,MAAM,KAAK,QAAQ,cAAc,GAAG,cAAc,CAAC,SAgIrH,CAAC"}