@peerbit/shared-log 8.0.7-aa577a5 → 8.0.7-cccc078

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 (49) hide show
  1. package/dist/benchmark/get-samples.d.ts +2 -0
  2. package/dist/benchmark/get-samples.d.ts.map +1 -0
  3. package/dist/benchmark/get-samples.js +69 -0
  4. package/dist/benchmark/get-samples.js.map +1 -0
  5. package/dist/benchmark/index.js +15 -16
  6. package/dist/benchmark/index.js.map +1 -1
  7. package/dist/benchmark/replication-prune.d.ts +2 -0
  8. package/dist/benchmark/replication-prune.d.ts.map +1 -0
  9. package/dist/benchmark/replication-prune.js +103 -0
  10. package/dist/benchmark/replication-prune.js.map +1 -0
  11. package/dist/benchmark/replication.d.ts +2 -0
  12. package/dist/benchmark/replication.d.ts.map +1 -0
  13. package/dist/benchmark/replication.js +91 -0
  14. package/dist/benchmark/replication.js.map +1 -0
  15. package/dist/src/blocks.js +1 -1
  16. package/dist/src/blocks.js.map +1 -1
  17. package/dist/src/cpu.js.map +1 -1
  18. package/dist/src/exchange-heads.d.ts +1 -1
  19. package/dist/src/exchange-heads.d.ts.map +1 -1
  20. package/dist/src/exchange-heads.js +8 -8
  21. package/dist/src/exchange-heads.js.map +1 -1
  22. package/dist/src/index.d.ts +53 -47
  23. package/dist/src/index.d.ts.map +1 -1
  24. package/dist/src/index.js +513 -365
  25. package/dist/src/index.js.map +1 -1
  26. package/dist/src/pid.d.ts.map +1 -1
  27. package/dist/src/pid.js +20 -20
  28. package/dist/src/pid.js.map +1 -1
  29. package/dist/src/ranges.d.ts +9 -12
  30. package/dist/src/ranges.d.ts.map +1 -1
  31. package/dist/src/ranges.js +528 -133
  32. package/dist/src/ranges.js.map +1 -1
  33. package/dist/src/replication.d.ts +70 -12
  34. package/dist/src/replication.d.ts.map +1 -1
  35. package/dist/src/replication.js +258 -17
  36. package/dist/src/replication.js.map +1 -1
  37. package/dist/src/role.d.ts +1 -38
  38. package/dist/src/role.d.ts.map +1 -1
  39. package/dist/src/role.js +92 -116
  40. package/dist/src/role.js.map +1 -1
  41. package/package.json +11 -10
  42. package/src/blocks.ts +1 -1
  43. package/src/cpu.ts +4 -4
  44. package/src/exchange-heads.ts +18 -18
  45. package/src/index.ts +797 -550
  46. package/src/pid.ts +23 -22
  47. package/src/ranges.ts +693 -147
  48. package/src/replication.ts +271 -19
  49. package/src/role.ts +63 -83
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=get-samples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-samples.d.ts","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":""}
@@ -0,0 +1,69 @@
1
+ import { Ed25519Keypair } from "@peerbit/crypto";
2
+ import { create as createIndex } from "@peerbit/indexer-sqlite3";
3
+ import B from "benchmark";
4
+ import { getSamples } from "../src/ranges.js";
5
+ import { ReplicationRangeIndexable } from "../src/replication.js";
6
+ // Run with "node --loader ts-node/esm ./benchmark/get-samples.ts"
7
+ let create = async (...rects) => {
8
+ const indices = await createIndex();
9
+ const index = await indices.init({ schema: ReplicationRangeIndexable });
10
+ await indices.start();
11
+ for (const rect of rects) {
12
+ await index.put(rect);
13
+ }
14
+ return [index, indices];
15
+ };
16
+ let a = (await Ed25519Keypair.create()).publicKey;
17
+ let b = (await Ed25519Keypair.create()).publicKey;
18
+ let c = (await Ed25519Keypair.create()).publicKey;
19
+ let ranges = [];
20
+ let rangeCount = 1000;
21
+ for (let i = 0; i < rangeCount; i++) {
22
+ ranges.push(...[
23
+ new ReplicationRangeIndexable({
24
+ publicKey: a,
25
+ length: 0.2 / rangeCount,
26
+ offset: (0 + rangeCount / i) % 1,
27
+ timestamp: 0n,
28
+ }),
29
+ new ReplicationRangeIndexable({
30
+ publicKey: b,
31
+ length: 0.4 / rangeCount,
32
+ offset: (0.333 + rangeCount / i) % 1,
33
+ timestamp: 0n,
34
+ }),
35
+ new ReplicationRangeIndexable({
36
+ publicKey: c,
37
+ length: 0.6 / rangeCount,
38
+ offset: (0.666 + rangeCount / i) % 1,
39
+ timestamp: 0n,
40
+ }),
41
+ new ReplicationRangeIndexable({
42
+ publicKey: c,
43
+ length: 0.6 / rangeCount,
44
+ offset: (0.666 + rangeCount / i) % 1,
45
+ timestamp: 0n,
46
+ }),
47
+ ]);
48
+ }
49
+ const [index, indices] = await create(...ranges);
50
+ const suite = new B.Suite();
51
+ suite
52
+ .add("getSamples", {
53
+ fn: async (deferred) => {
54
+ await getSamples(Math.random(), index, 2, 0);
55
+ deferred.resolve();
56
+ },
57
+ defer: true,
58
+ })
59
+ .on("cycle", (event) => {
60
+ console.log(String(event.target));
61
+ })
62
+ .on("error", (err) => {
63
+ throw err;
64
+ })
65
+ .on("complete", async function () {
66
+ await indices.drop();
67
+ })
68
+ .run();
69
+ //# sourceMappingURL=get-samples.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-samples.js","sourceRoot":"","sources":["../../benchmark/get-samples.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,15 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import B from "benchmark";
11
10
  import { deserialize, field, option, serialize, variant } from "@dao-xyz/borsh";
12
- import { TestSession } from "@peerbit/test-utils";
13
11
  import {} from "@peerbit/program";
14
- import { v4 as uuid } from "uuid";
15
- import crypto from "crypto";
16
12
  import { Program } from "@peerbit/program";
13
+ import { TestSession } from "@peerbit/test-utils";
14
+ import B from "benchmark";
15
+ import crypto from "crypto";
16
+ import { v4 as uuid } from "uuid";
17
17
  import { SharedLog } from "../src/index.js";
18
- // Run with "node --loader ts-node/esm ./src/__benchmark__/index.ts"
18
+ // Run with "node --loader ts-node/esm ./benchmark/index.ts"
19
19
  // put x 5,843 ops/sec ±4.50% (367 runs sampled)
20
20
  let Document = class Document {
21
21
  id;
@@ -62,8 +62,8 @@ let TestStore = class TestStore extends Program {
62
62
  ...options,
63
63
  encoding: {
64
64
  decoder: (bytes) => deserialize(bytes, Document),
65
- encoder: (data) => serialize(data)
66
- }
65
+ encoder: (data) => serialize(data),
66
+ },
67
67
  });
68
68
  }
69
69
  };
@@ -79,15 +79,14 @@ const peersCount = 1;
79
79
  const session = await TestSession.connected(peersCount);
80
80
  const store = new TestStore({
81
81
  logs: new SharedLog({
82
- id: new Uint8Array(32)
83
- })
82
+ id: new Uint8Array(32),
83
+ }),
84
84
  });
85
85
  const client = session.peers[0];
86
86
  await client.open(store, {
87
87
  args: {
88
- role: {
89
- type: "replicator",
90
- factor: 1
88
+ replicate: {
89
+ factor: 1,
91
90
  },
92
91
  trim: { type: "length", to: 100 },
93
92
  onChange: (change) => {
@@ -96,8 +95,8 @@ await client.open(store, {
96
95
  resolver.get(doc.id)();
97
96
  resolver.delete(doc.id);
98
97
  });
99
- }
100
- }
98
+ },
99
+ },
101
100
  });
102
101
  const resolver = new Map();
103
102
  const suite = new B.Suite();
@@ -108,7 +107,7 @@ suite
108
107
  id: uuid(),
109
108
  name: "hello",
110
109
  number: 1n,
111
- bytes: crypto.randomBytes(1200)
110
+ bytes: crypto.randomBytes(1200),
112
111
  });
113
112
  resolver.set(doc.id, () => {
114
113
  deferred.resolve();
@@ -116,7 +115,7 @@ suite
116
115
  await store.logs.append(doc, { meta: { next: [] } });
117
116
  },
118
117
  minSamples: 300,
119
- defer: true
118
+ defer: true,
120
119
  })
121
120
  .on("cycle", (event) => {
122
121
  console.log(String(event.target));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../benchmark/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication-prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-prune.d.ts","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { deserialize } from "@dao-xyz/borsh";
2
+ import { Ed25519Keypair } from "@peerbit/crypto";
3
+ import { TestSession } from "@peerbit/test-utils";
4
+ import { waitForResolved } from "@peerbit/time";
5
+ import { expect } from "chai";
6
+ import { AbsoluteReplicas } from "../src/replication.js";
7
+ import { EventStore } from "../test/utils/stores/event-store.js";
8
+ // Run with "node --loader ts-node/esm ./benchmark/replication-prune.ts"
9
+ let session = await TestSession.connected(3, [
10
+ {
11
+ libp2p: {
12
+ peerId: await deserialize(new Uint8Array([
13
+ 0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
14
+ 27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
15
+ 244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
16
+ 244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
17
+ 154, 27, 63, 15,
18
+ ]), Ed25519Keypair).toPeerId(),
19
+ },
20
+ },
21
+ {
22
+ libp2p: {
23
+ peerId: await deserialize(new Uint8Array([
24
+ 0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
25
+ 215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
26
+ 75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
27
+ 227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
28
+ 184, 34, 141, 45, 242,
29
+ ]), Ed25519Keypair).toPeerId(),
30
+ },
31
+ },
32
+ {
33
+ libp2p: {
34
+ peerId: await deserialize(new Uint8Array([
35
+ 0, 0, 193, 202, 95, 29, 8, 42, 238, 188, 32, 59, 103, 187, 192, 93,
36
+ 202, 183, 249, 50, 240, 175, 84, 87, 239, 94, 92, 9, 207, 165, 88, 38,
37
+ 234, 216, 0, 183, 243, 219, 11, 211, 12, 61, 235, 154, 68, 205, 124,
38
+ 143, 217, 234, 222, 254, 15, 18, 64, 197, 13, 62, 84, 62, 133, 97, 57,
39
+ 150, 187, 247, 215,
40
+ ]), Ed25519Keypair).toPeerId(),
41
+ },
42
+ },
43
+ ]);
44
+ let db1, db2, db3;
45
+ const init = async (min, max) => {
46
+ db1 = await session.peers[0].open(new EventStore(), {
47
+ args: {
48
+ replicas: {
49
+ min,
50
+ max,
51
+ },
52
+ replicate: false,
53
+ },
54
+ });
55
+ db2 = (await EventStore.open(db1.address, session.peers[1], {
56
+ args: {
57
+ replicas: {
58
+ min,
59
+ max,
60
+ },
61
+ },
62
+ }));
63
+ db3 = (await EventStore.open(db1.address, session.peers[2], {
64
+ args: {
65
+ replicas: {
66
+ min,
67
+ max,
68
+ },
69
+ },
70
+ }));
71
+ await db1.waitFor(session.peers[1].peerId);
72
+ await db2.waitFor(session.peers[0].peerId);
73
+ await db2.waitFor(session.peers[2].peerId);
74
+ await db3.waitFor(session.peers[0].peerId);
75
+ };
76
+ let minReplicas = 1;
77
+ let maxReplicas = 1;
78
+ await init(minReplicas, maxReplicas);
79
+ const entryCount = 1e3;
80
+ for (let i = 0; i < entryCount; i++) {
81
+ await db1.add("hello", {
82
+ replicas: new AbsoluteReplicas(100), // will be overriden by 'maxReplicas' above
83
+ meta: { next: [] },
84
+ });
85
+ }
86
+ try {
87
+ await waitForResolved(() => {
88
+ expect(db1.log.log.length).equal(0); // because db1 is not replicating at all, but just pruning once it knows entries are replicated elsewhere
89
+ let total = db2.log.log.length + db3.log.log.length;
90
+ expect(total).greaterThanOrEqual(entryCount);
91
+ expect(total).lessThan(entryCount * 2);
92
+ expect(db2.log.log.length).greaterThan(entryCount * 0.2);
93
+ expect(db3.log.log.length).greaterThan(entryCount * 0.2);
94
+ }, { timeout: 2e4 });
95
+ }
96
+ catch (error) {
97
+ console.log("Failed to assert replication done");
98
+ console.log([db1, db2, db3].map((x) => x.log.log.length));
99
+ }
100
+ finally {
101
+ await session.stop();
102
+ }
103
+ //# sourceMappingURL=replication-prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication-prune.js","sourceRoot":"","sources":["../../benchmark/replication-prune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=replication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.d.ts","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":""}
@@ -0,0 +1,91 @@
1
+ import { deserialize } from "@dao-xyz/borsh";
2
+ import { Ed25519Keypair } from "@peerbit/crypto";
3
+ import { TestSession } from "@peerbit/test-utils";
4
+ import { AbortError,
5
+ /* waitFor */
6
+ } from "@peerbit/time";
7
+ import B from "benchmark";
8
+ import { v4 as uuid } from "uuid";
9
+ import { EventStore } from "../test/utils/stores/event-store.js";
10
+ // Run with "node --loader ts-node/esm ./benchmark/replication.ts"
11
+ let session = await TestSession.connected(2, [
12
+ {
13
+ libp2p: {
14
+ peerId: await deserialize(new Uint8Array([
15
+ 0, 0, 235, 231, 83, 185, 72, 206, 24, 154, 182, 109, 204, 158, 45, 46,
16
+ 27, 15, 0, 173, 134, 194, 249, 74, 80, 151, 42, 219, 238, 163, 44, 6,
17
+ 244, 93, 0, 136, 33, 37, 186, 9, 233, 46, 16, 89, 240, 71, 145, 18,
18
+ 244, 158, 62, 37, 199, 0, 28, 223, 185, 206, 109, 168, 112, 65, 202,
19
+ 154, 27, 63, 15,
20
+ ]), Ed25519Keypair).toPeerId(),
21
+ },
22
+ },
23
+ {
24
+ libp2p: {
25
+ peerId: await deserialize(new Uint8Array([
26
+ 0, 0, 132, 56, 63, 72, 241, 115, 159, 73, 215, 187, 97, 34, 23, 12,
27
+ 215, 160, 74, 43, 159, 235, 35, 84, 2, 7, 71, 15, 5, 210, 231, 155,
28
+ 75, 37, 0, 15, 85, 72, 252, 153, 251, 89, 18, 236, 54, 84, 137, 152,
29
+ 227, 77, 127, 108, 252, 59, 138, 246, 221, 120, 187, 239, 56, 174,
30
+ 184, 34, 141, 45, 242,
31
+ ]), Ed25519Keypair).toPeerId(),
32
+ },
33
+ },
34
+ ]);
35
+ let db1, db2;
36
+ let abortController = new AbortController();
37
+ let resolvers = new Map();
38
+ db1 = await session.peers[0].open(new EventStore(), {
39
+ args: {
40
+ replicate: {
41
+ factor: 1,
42
+ },
43
+ },
44
+ });
45
+ db2 = (await EventStore.open(db1.address, session.peers[1], {
46
+ args: {
47
+ replicate: {
48
+ factor: 1,
49
+ },
50
+ onChange: async (change) => {
51
+ for (const entry of change.added) {
52
+ try {
53
+ resolvers
54
+ .get(entry.hash) /* || await waitFor(() => resolvers.get(entry.hash), { signal: abortController.signal }))? */
55
+ .resolve();
56
+ resolvers.delete(entry.hash);
57
+ }
58
+ catch (error) {
59
+ if (error instanceof AbortError) {
60
+ return;
61
+ }
62
+ return;
63
+ /* throw error; */
64
+ }
65
+ }
66
+ },
67
+ },
68
+ }));
69
+ await db1.waitFor(session.peers[1].peerId);
70
+ await db2.waitFor(session.peers[0].peerId);
71
+ const suite = new B.Suite();
72
+ suite
73
+ .add("replication", {
74
+ fn: async (deferred) => {
75
+ const { entry } = await db1.add(uuid(), { meta: { next: [] } });
76
+ resolvers.set(entry.hash, deferred);
77
+ },
78
+ defer: true,
79
+ })
80
+ .on("cycle", (event) => {
81
+ console.log(String(event.target));
82
+ })
83
+ .on("error", (err) => {
84
+ throw err;
85
+ })
86
+ .on("complete", async function () {
87
+ await abortController.abort();
88
+ await session.stop();
89
+ })
90
+ .run();
91
+ //# sourceMappingURL=replication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replication.js","sourceRoot":"","sources":["../../benchmark/replication.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { field, variant } from "@dao-xyz/borsh";
11
- import { BlockRequest, BlockResponse, BlockMessage as IBlockMessage } from "@peerbit/blocks";
11
+ import { BlockRequest, BlockResponse, BlockMessage as IBlockMessage, } from "@peerbit/blocks";
12
12
  import { TransportMessage } from "./message.js";
13
13
  let BlocksMessage = class BlocksMessage extends TransportMessage {
14
14
  message;
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,aAAa,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGzC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IAElD,OAAO,CAA+B;IAEtC,YAAY,OAAqC;QAChD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD,CAAA;AAPA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;8CACO;AAF1B,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,aAAa,CASzB"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/blocks.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,YAAY,IAAI,aAAa,GAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGzC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IAElD,OAAO,CAA+B;IAEtC,YAAY,OAAqC;QAChD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;CACD,CAAA;AAPA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;;8CACO;AAF1B,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,aAAa,CASzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,OAAO,mBAAmB;IAMrB;IALV,EAAE,GAAa,EAAE,CAAC;IAClB,QAAQ,CAAkC;IAC1C,GAAG,GAAW,CAAC,CAAC;IAEhB,YACU,aAIL,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;QAJrD,eAAU,GAAV,UAAU,CAI2C;IAC3D,CAAC;IACG,IAAI;QACX,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,KAAK;QACJ,OAAO,CACN,IAAI,CAAC,GAAG,CACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAC7B,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CACjC,CAAC,CAAC,8CAA8C;IAClD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAC5B,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAErE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAG,CAAC;YAC7B,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,GAAG,GAAG,CAAC;QACV,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACD"}
1
+ {"version":3,"file":"cpu.js","sourceRoot":"","sources":["../../src/cpu.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AAEH,MAAM,OAAO,mBAAmB;IAMrB;IALV,EAAE,GAAa,EAAE,CAAC;IAClB,QAAQ,CAAkC;IAC1C,GAAG,GAAW,CAAC,CAAC;IAEhB,YACU,aAIL,EAAE,UAAU,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE;QAJrD,eAAU,GAAV,UAAU,CAI2C;IAC5D,CAAC;IACI,IAAI;QACX,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,KAAK;QACJ,OAAO,CACN,IAAI,CAAC,GAAG,CACP,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,EACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAC7B,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CACjC,CAAC,CAAC,8CAA8C;IAClD,CAAC;IAED,KAAK;QACJ,IAAI,CAAC,EAAE,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,UAAU,CAAC,YAAY,CAC5B,CAAC;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAErE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAG,CAAC;YAC7B,MAAM,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,EAAE,GAAG,GAAG,CAAC;QACV,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACH,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACD"}
@@ -1,7 +1,7 @@
1
+ import { Cache } from "@peerbit/cache";
1
2
  import { Entry } from "@peerbit/log";
2
3
  import { Log } from "@peerbit/log";
3
4
  import { TransportMessage } from "./message.js";
4
- import { Cache } from "@peerbit/cache";
5
5
  /**
6
6
  * This thing allows use to faster sync since we can provide
7
7
  * references that can be read concurrently to
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAIvC;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAIhD;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,iBAAkB,SAAQ,gBAAgB;IAEtD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAID,eAAO,MAAM,2BAA2B,QAClC,IAAI,GAAG,CAAC,SACN,MAAM,GAAG,CAAC,EAAE,kBACH,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,KACjC,QAAQ,qBAAqB,GAAG,CAAC,EAAE,CAiDrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAC/B,IAAI,GAAG,CAAC,SACN,MAAM,GAAG,CAAC,kBACD,MAAM,MAAM,GAAG,CAAC,EAAE,CAAC,KACjC,QAAQ,MAAM,GAAG,CAAC,EAAE,CAsCtB,CAAC"}
1
+ {"version":3,"file":"exchange-heads.d.ts","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAgC,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIhD;;;;GAIG;AACH,qBACa,aAAa,CAAC,CAAC;IAE3B,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAGhB,YAAY,EAAE,MAAM,EAAE,CAAC;gBAEX,UAAU,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE;CAInE;AAED,qBACa,oBAAoB,CAAC,CAAC,CAAE,SAAQ,gBAAgB;IAE5D,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IAG1B,QAAQ,EAAE,UAAU,CAAqB;gBAE7B,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;KAAE;CAIhD;AAED,qBACa,gBAAiB,SAAQ,gBAAgB;IAErD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,iBAAkB,SAAQ,gBAAgB;IAEtD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,aAAc,SAAQ,gBAAgB;IAGlD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAED,qBACa,cAAe,SAAQ,gBAAgB;IAGnD,MAAM,EAAE,MAAM,EAAE,CAAC;gBAEL,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;CAIvC;AAID,eAAO,MAAM,2BAA2B,QAClC,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,EAAE,kBACH,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAiDrC,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAC/B,GAAG,CAAC,GAAG,CAAC,SACN,KAAK,CAAC,GAAG,CAAC,kBACD,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KACjC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAsCtB,CAAC"}
@@ -7,12 +7,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { variant, field, vec, fixedArray } from "@dao-xyz/borsh";
10
+ import { field, fixedArray, variant, vec } from "@dao-xyz/borsh";
11
+ import { Cache } from "@peerbit/cache";
11
12
  import { Entry, EntryType } from "@peerbit/log";
12
13
  import { Log } from "@peerbit/log";
13
14
  import { logger as loggerFn } from "@peerbit/logger";
14
15
  import { TransportMessage } from "./message.js";
15
- import { Cache } from "@peerbit/cache";
16
16
  const logger = loggerFn({ module: "exchange-heads" });
17
17
  /**
18
18
  * This thing allows use to faster sync since we can provide
@@ -149,13 +149,13 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
149
149
  }
150
150
  current.push(new EntryWithRefs({
151
151
  entry: fromHead,
152
- gidRefrences: refs.map((x) => x.meta.gid)
152
+ gidRefrences: refs.map((x) => x.meta.gid),
153
153
  }));
154
154
  size += fromHead.size;
155
155
  if (size > MAX_EXCHANGE_MESSAGE_SIZE) {
156
156
  size = 0;
157
157
  messages.push(new ExchangeHeadsMessage({
158
- heads: current
158
+ heads: current,
159
159
  }));
160
160
  current = [];
161
161
  continue;
@@ -163,7 +163,7 @@ export const createExchangeHeadsMessages = async (log, heads, gidParentCache) =>
163
163
  }
164
164
  if (current.length > 0) {
165
165
  messages.push(new ExchangeHeadsMessage({
166
- heads: current
166
+ heads: current,
167
167
  }));
168
168
  }
169
169
  return messages;
@@ -183,13 +183,13 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
183
183
  map.set(element.meta.gid, element);
184
184
  if (element.meta.type === EntryType.APPEND) {
185
185
  for (const next of element.meta.next) {
186
- const indexedEntry = log.entryIndex.getShallow(next);
186
+ const indexedEntry = await log.entryIndex.getShallow(next);
187
187
  if (!indexedEntry) {
188
188
  logger.error("Failed to find indexed entry for hash when fetching references: " +
189
189
  next);
190
190
  }
191
191
  else {
192
- nexts.push(indexedEntry);
192
+ nexts.push(indexedEntry.value);
193
193
  }
194
194
  }
195
195
  }
@@ -198,7 +198,7 @@ export const allEntriesWithUniqueGids = async (log, entry, gidParentCache) => {
198
198
  }
199
199
  }
200
200
  const value = [
201
- ...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash))))
201
+ ...(await Promise.all([...map.values()].map((x) => log.entryIndex.get(x.hash)))),
202
202
  ].filter((x) => !!x);
203
203
  gidParentCache.add(entry.hash, value);
204
204
  return value;
@@ -1 +1 @@
1
- {"version":3,"file":"exchange-heads.js","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exchange-heads.js","sourceRoot":"","sources":["../../src/exchange-heads.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAqB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAEtD;;;;GAIG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAa;IAEzB,KAAK,CAAW;IAGhB,YAAY,CAAW,CAAC,gCAAgC;IAExD,YAAY,UAAuD;QAClE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;IAC7C,CAAC;CACD,CAAA;AATA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;8BAChB,KAAK;4CAAI;AAGhB;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;mDACR;AALX,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC;;GACE,aAAa,CAWzB;;AAGM,IAAM,oBAAoB,GAA1B,MAAM,oBAAwB,SAAQ,gBAAgB;IAE5D,KAAK,CAAqB;IAG1B,QAAQ,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAEzC,YAAY,KAAoC;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;CACD,CAAA;AATA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;;mDACV;AAG1B;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;8BAC3B,UAAU;sDAAqB;AAL7B,oBAAoB;IADhC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,oBAAoB,CAWhC;;AAGM,IAAM,gBAAgB,GAAtB,MAAM,gBAAiB,SAAQ,gBAAgB;IAErD,MAAM,CAAW;IAEjB,YAAY,KAA2B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;gDACd;AAFL,gBAAgB;IAD5B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,gBAAgB,CAQ5B;;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,gBAAgB;IAEtD,MAAM,CAAW;IAEjB,YAAY,KAA2B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;iDACd;AAFL,iBAAiB;IAD7B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,iBAAiB,CAQ7B;;AAGM,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,gBAAgB;IAClD,+BAA+B;IAE/B,MAAM,CAAW;IAEjB,YAAY,KAA2B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;6CACd;AAHL,aAAa;IADzB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,aAAa,CASzB;;AAGM,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,gBAAgB;IACnD,+BAA+B;IAE/B,MAAM,CAAW;IAEjB,YAAY,KAA2B;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,CAAC;CACD,CAAA;AANA;IADC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;;8CACd;AAHL,cAAc;IAD1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;GACH,cAAc,CAS1B;;AAED,MAAM,yBAAyB,GAAG,GAAG,CAAC,CAAC,oEAAoE;AAE3G,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAC/C,GAAa,EACb,KAAmB,EACnB,cAAmC,EACI,EAAE;IACzC,MAAM,QAAQ,GAAgC,EAAE,CAAC;IACjD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,OAAO,GAAyB,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC9B,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhC,iDAAiD;QACjD,4EAA4E;QAC5E,MAAM,IAAI,GAAG,CACZ,MAAM,wBAAwB,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAC7D,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACd,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,OAAO,KAAK,CAAC;YACd,CAAC;YACD,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACb,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CACX,IAAI,aAAa,CAAC;YACjB,KAAK,EAAE,QAAQ;YACf,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;SACzC,CAAC,CACF,CAAC;QAEF,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC;QACtB,IAAI,IAAI,GAAG,yBAAyB,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,CAAC;YACT,QAAQ,CAAC,IAAI,CACZ,IAAI,oBAAoB,CAAC;gBACxB,KAAK,EAAE,OAAO;aACd,CAAC,CACF,CAAC;YACF,OAAO,GAAG,EAAE,CAAC;YACb,SAAS;QACV,CAAC;IACF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,QAAQ,CAAC,IAAI,CACZ,IAAI,oBAAoB,CAAC;YACxB,KAAK,EAAE,OAAO;SACd,CAAC,CACF,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC5C,GAAa,EACb,KAAiB,EACjB,cAAmC,EACX,EAAE;IAC1B,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,qBAAqB;IACrB,MAAM,GAAG,GAA2C,IAAI,GAAG,EAAE,CAAC;IAC9D,IAAI,IAAI,GAAkC,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAkC,EAAE,CAAC;QAChD,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACnC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;oBAC5C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBACtC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;4BACnB,MAAM,CAAC,KAAK,CACX,kEAAkE;gCACjE,IAAI,CACL,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACP,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;wBAChC,CAAC;oBACF,CAAC;gBACF,CAAC;YACF,CAAC;YACD,IAAI,GAAG,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IACD,MAAM,KAAK,GAAG;QACb,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CACpB,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACxD,CAAC;KACF,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAiB,CAAC;IACrC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}